munich-quantum-toolkit / munich-quantum-toolkit/core
✨ Extract QDMI multi-program Client and bundled-device support
@burgholzer is already working on this.
Since Sep 4, 2026.
- Dominant language
- C++
- Stars
- 133
- Forks
- 73
- Avg merge
- 17h 34m
- Merged PRs (30d)
- 261
Description
🤖 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: https://github.com/Munich-Quantum-Software-Stack/QDMI/pull/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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.