π€ AI text below π€
Elevator pitch
Provide the native job API once so SDK batching can progress without inheriting compiler or execution-capability changes.
Current state
The low-level multi-program contract has been extracted from #2226 into #2373 targeting v4.1. Payload descriptors, compiler integration, and SDK consumers remain separate. The draft passes local native, Python, minimum-dependency, stub, and lint checks; hosted CI and review remain gates.
Work and decisions
- Use the enum-based QDMI #509 contract. Preserve existing single-program entry points as one-element submissions.
- Add ordered text and byte-program submission, one shared optional shot setting, and indexed results in the Client/bindings.
- Update the bundled driver and devices, exports, generated stubs, examples, and installation consumers required by that ABI.
- Preserve byte-exact payloads, optional shots, result ordering, and current job lifetime/cancellation behavior.
- Keep capability descriptors, compiler target models, SDK dynamic-control work, and replaceable-driver changes out of this PR.
Dependencies and release boundary
Parent: β¨ Adopt native multi-program QDMI jobs across Core and SDK plugins. Contract: Munich-Quantum-Software-Stack/QDMI#509. Extraction source: #2226. Implementation: #2373.
Acceptance and validation
- Tests cover one/many/zero programs, unsupported cardinality, invalid index, mutation-after-set ownership, failed-set rollback, and aggregate terminal states.
- Binary payloads retain embedded NUL bytes; optional shots are not replaced with invented values.
- Retrieval and failure behavior match the standard and do not claim unavailable partial results.
- Run focused C++/Python QDMI tests, supported/minimum sessions, generated stubs, uvx nox -s lint, and uvx nox -s cpp-lint.
Non-goals
SDK grouping policies; provider-specific batch emulation; new format descriptors or QDMI driver replacement.
Provider validation
Pair the low-level consumer in #2373 with provider evidence through #2359. A test provider validates the Client contract, but it does not establish aggregate-job support in a production provider. Preserve unsupported-cardinality behavior and the concurrent single-program path.
π€ AI text below π€
Elevator pitch
Provide the native job API once so SDK batching can progress without inheriting compiler or execution-capability changes.
Current state
The low-level multi-program contract has been extracted from #2226 into #2373 targeting
v4.1. Payload descriptors, compiler integration, and SDK consumers remain separate. The draft passes local native, Python, minimum-dependency, stub, and lint checks; hosted CI and review remain gates.Work and decisions
Dependencies and release boundary
Parent: β¨ Adopt native multi-program QDMI jobs across Core and SDK plugins. Contract: Munich-Quantum-Software-Stack/QDMI#509. Extraction source: #2226. Implementation: #2373.
Acceptance and validation
Non-goals
SDK grouping policies; provider-specific batch emulation; new format descriptors or QDMI driver replacement.
Provider validation
Pair the low-level consumer in #2373 with provider evidence through #2359. A test provider validates the Client contract, but it does not establish aggregate-job support in a production provider. Preserve unsupported-cardinality behavior and the concurrent single-program path.