✨ Add typed QDMI device configuration transport - #1967
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
burgholzer
added a commit
that referenced
this pull request
Jul 30, 2026
Assisted-by: GPT-5.6 via Codex # Conflicts: # CHANGELOG.md
12 tasks
Assisted-by: GPT-5.6 via Codex
Apply the repository-required formatting and license header updates. Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
burgholzer
force-pushed
the
agent/qdmi-config-transport
branch
from
July 30, 2026 12:35
fd902ab to
91e6694
Compare
Assisted-by: GPT-5.6 via Codex
Record the published PR and latest-main integration in the living plan. Assisted-by: GPT-5.6 via Codex
11 tasks
burgholzer
marked this pull request as ready for review
July 30, 2026 14:15
11 tasks
burgholzer
added a commit
that referenced
this pull request
Jul 30, 2026
🤖 *AI text below* 🤖 ## Description This PR builds on the typed QDMI device-configuration transport merged in #1967 and exposes the enabled QDMI device IDs already registered with the Driver. It enables integrations to discover stable IDs without opening devices, loading native libraries, or receiving paths, prefixes, credentials, or session configuration. The change adds: - `Driver::registeredDeviceIds()` in C++, preserving deterministic registration order; - `registered_device_ids()` in the FoMaC Python API; - documentation for the load-free enumeration contract; and - C++ and Python tests covering runtime registrations, ordering, disabled IDs, and the absence of eager library loading. AI assistance was used to implement the API, tests, documentation, and validation. A human maintainer remains responsible for reviewing and accepting the contribution. ## Validation - Full release build - QDMI Driver tests: 112/112 - Python FoMaC tests: 185/185 - Python stub regeneration - Full repository lint session - `git diff --check` ## Checklist - [x] The pull request only contains commits that are focused and relevant to this change. - [x] I have added appropriate tests that cover the new functionality. - [x] I have updated the documentation to reflect these changes. - [x] I have added the assigned pull request number to the changelog. - [x] The changes follow the project style guidelines and introduce no new warnings. - [x] The changes are fully tested and pass the CI checks. - [x] I have reviewed my own code changes. **If PR contains AI-assisted content:** - [x] Any agent that created, edited, or submitted GitHub content was explicitly authorized for that scope. - [x] Every agent-authored public text body begins with the required visible disclosure. - [x] I have disclosed AI assistance in the PR description. - [x] I confirm that I have personally reviewed and understood all AI-generated content, and accept full responsibility for it.
burgholzer
added a commit
that referenced
this pull request
Jul 31, 2026
🤖 *AI text below* 🤖 ## Description This PR builds on the typed QDMI device-configuration transport merged in #1967 and makes the bundled neutral-atom QDMI provider configurable at runtime. Each session now strictly parses and owns its device description. Callers can supply schema-version-1 JSON inline through `CUSTOM1` or by file through `CUSTOM2`; without an explicit source, the provider loads its bundled configuration beside the shared library. This allows one provider library to expose multiple stable device IDs with independent configurations. The change also: - moves the neutral-atom model from generated global state into each session; - validates malformed, incomplete, oversized, and unknown configuration data; - preserves retry after failed initialization and rejects post-initialization mutation; - packages the default JSON as a relocatable runtime artifact; - removes the generated-header and generator-command pipeline; and - introduces a shared configuration-source loader intended for the later superconducting-provider migration. The superconducting provider is intentionally outside this PR. AI assistance was used to implement the provider migration, tests, documentation, and validation. A human maintainer remains responsible for reviewing and accepting the contribution. Fixes #1226 ## Validation - Full release build: 427/427 targets - Neutral-atom provider tests: 40 passed, 1 expected unsupported job-ID query skipped - QDMI Driver tests: 112/112 - Neutral-atom FoMaC C++ tests: 2/2 - Neutral-atom FoMaC Python tests: 12/12 - Imported-target and runtime-file CTest fixtures: 6/6 - Python stub regeneration with no tracked changes - Warning-as-error documentation build - Full repository lint session - `git diff --check` ## Checklist - [x] The pull request only contains commits that are focused and relevant to this change. - [x] I have added appropriate tests that cover the new functionality. - [x] I have updated the documentation to reflect these changes. - [x] I have added the assigned pull request number to the changelog. - [x] The changes follow the project style guidelines and introduce no new warnings. - [x] The changes are fully tested and pass the CI checks. - [x] I have reviewed my own code changes. **If PR contains AI-assisted content:** - [x] Any agent that created, edited, or submitted GitHub content was explicitly authorized for that scope. - [x] Every agent-authored public text body begins with the required visible disclosure. - [x] I have disclosed AI assistance in the PR description. - [x] I confirm that I have personally reviewed and understood all AI-generated content, and accept full responsibility for it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 AI text below 🤖
Description
This is the first change in a three-PR series for runtime-configurable QDMI
devices. It adds the generic transport layer while deliberately leaving the
neutral-atom and superconducting providers unchanged.
The change:
DeviceConfigurationSource;session.device-configatomically across registry layers;device_configanddevice_config_filearguments through FoMaC's Python API;
initialization;
RUNTIME_FILESmetadata so provider data files remain besidebuilt, installed, imported, and copied libraries;
integration coverage.
Inline and file sources replace one another as a unit, preventing a
higher-precedence file override from retaining inherited inline JSON. Raw
custom1orcustom2cannot be combined with the typed source because thoseslots form the QDMI v1 adapter seam.
The follow-up PRs will migrate the NA and SC providers onto this transport. They
will remain separate so provider schema, ownership, and calibration changes can
be reviewed independently.
AI assistance was used to reconstruct the change from the approved design,
implement tests and documentation, and run the validation listed below. A human
maintainer remains responsible for reviewing and accepting the contribution.
Validation
git diff --checkChecklist
this change.
changes, fixes, or removals.
this change is additive).
warnings.
If PR contains AI-assisted content:
authorized for that scope, as required by our AI Usage Guidelines.
visible disclosure
🤖 *AI text below* 🤖(titles are exempt).content, and accept full responsibility for it.