Skip to content

🔀 Backport compatible main changes for MQT Core 3.9.0 - #2117

Merged
burgholzer merged 35 commits into
v3.xfrom
agent/backport-qdmi-slurm-v3
Aug 15, 2026
Merged

🔀 Backport compatible main changes for MQT Core 3.9.0#2117
burgholzer merged 35 commits into
v3.xfrom
agent/backport-qdmi-slurm-v3

Conversation

@burgholzer

@burgholzer burgholzer commented Aug 14, 2026

Copy link
Copy Markdown
Member

🤖 AI text below 🤖

Description

Backport the remaining suitable changes from main to v3.x for MQT Core 3.9.0. One pull request presents the complete stable-branch result and avoids repeated CI runs. Separate signed commits preserve upstream provenance, authorship, and revert boundaries.

The series includes:

v3 boundary

  • LLVM/MLIR remains optional and uses LLVM/MLIR 21.
  • The QDMI namespace and deprecated FoMaC aliases from ♻️ Establish the QDMI Python namespace (backport #2074) #2113 remain available for the v3 deprecation cycle.
  • QDMIBackend.from_device_id() retains the compatible session_parameters={...} mapping and rejects duplicate values supplied through typed keywords.
  • QDMISampler and QDMIEstimator no longer accept the generic options={...} mapping. Direct constructors and backend factories use explicit default_shots and default_precision arguments, as on main.
  • CompilerTarget.from_device_id() is omitted because v3 has no Python MLIR compiler-target binding.
  • Persistent qdmi.json configuration remains supported. The deprecated [tool.qdmi] parser and its vendored TOML dependency are removed.
  • The unused pybind11 binding helper is removed. The nanobind helper is now the sole add_mqt_python_binding function.
  • The Slurm API selects the device named by mutable SLURM_JOB_LICENSES metadata. Slurm licenses control admission. Provider credentials or operating-system isolation authorize access.
  • Compiler-target, QCO/QTensor, typed OpenQASM, newer QIR-runtime, and QIR-Runner changes are omitted because their source or runtime layers are not present on v3 or require LLVM/MLIR 22. The ZX removal from 🔥 Remove the ZX-calculus library from MQT Core #2082 remains v4-only.
  • Lock-only maintenance from ⬆️🔒️ Lock file maintenance #2033 is represented by the final aggregate lock.

Validation

  • complete non-MLIR release build with LLVM 21.1.8 llc: passed;
  • native CTest suite: 1,742 passed, with two intentional provider job-ID skips;
  • complete Python suite: 550 passed, with five documented optional-feature skips;
  • focused Python 3.10 QDMI and Qiskit suite: 420 passed, with two expected MLIR skips;
  • recursive stubs: passed without a tracked diff;
  • editable package build and installation: passed;
  • Sphinx documentation: passed with the existing v3 warning baseline and produced non-empty llms.txt and llms-full.txt;
  • complete lint, workflow, lock, type, signature, ancestry, and git diff --check gates: passed.

The privileged Slurm workflow remains an exact-head CI check because it requires Docker, systemd, cgroup v2, and two Slurm compute containers.

Checklist

  • The commits are focused and preserve upstream provenance.
  • Behavioral changes have tests and migration guidance.
  • Documentation and changelog entries describe the final v3 behavior.
  • Applicable local build, test, lint, stub, and documentation gates pass.
  • AI-assisted public text includes the required disclosure.

Codex assisted with the backport analysis, implementation, tests, documentation, validation, history reconstruction, and adversarial review. The author reviewed the resulting changes and remains responsible for them.

burgholzer and others added 24 commits August 14, 2026 17:55
Record the compatible scope, architecture exclusions, validation boundaries, and combined publication strategy for the remaining QDMI and Slurm functionality.

Assisted-by: GPT-5.6 via Codex
Expose optional device queue length and job queue position through the v3 driver, C++ wrappers, and QDMI Python namespace. Update the bundled QDMI revision and retain optional low-level job retrieval for provider compatibility.

Backports #2010.

Assisted-by: GPT-5.6 via Codex
Expose provider job retrieval by stable job ID through the v3 C++ wrappers and QDMI Python namespace. Keep the built-in devices explicit about their unsupported retrieval contract.

Backports #2008.

Assisted-by: GPT-5.6 via Codex
Expose provider-specific operation-handle arrays through the v3 C++ wrappers and QDMI Python namespace. Preserve unsupported, empty, malformed-payload, shared-handle, and lifetime semantics.

Backports #2042.

Assisted-by: GPT-5.6 via Codex
Add the mechanism-specific C++ and Python adapters that open the registered device named by one local Slurm license environment value. Preserve the selection-only trust boundary and provider-owned authorization.

Backports #2025.

Assisted-by: GPT-5.6 via Codex
Add the modern two-node Slurm admission workflow and trust-boundary tutorial for the v3 QDMI namespace. Build the test wheel with the v3 LLVM and MLIR 21 toolchain.

Backports #2043.

Assisted-by: GPT-5.6 via Codex
Replace generated neutral-atom provider state with strict session-owned JSON configuration. Preserve the v3 QDMI namespace, typed registry transport, job retrieval contract, and embedded-build device options.

Backports #1974.

Assisted-by: GPT-5.6 via Codex
Replace generated superconducting provider state with strict session-owned JSON configuration. Preserve job retrieval, custom-operation support, the v3 QDMI namespace, and independent per-session models.

Backports #1980.

Assisted-by: GPT-5.6 via Codex
Bundle strict runtime descriptions for IQM Garnet and Emerald with stable QDMI registry IDs. Reuse the superconducting provider library without loading it during registry discovery.

Backports #1992.

Assisted-by: GPT-5.6 via Codex
Advertise CPython 3.15, build its wheels without running dependency-limited tests, include the complete JSON device catalog in wheel tests, and update the reusable workflow revision while preserving the v3 MLIR presets.

Backports #2011.

Assisted-by: GPT-5.6 via Codex
Update the Markdown linter and formatter hook to v0.2.49.

Backports #2027.

Assisted-by: GPT-5.6 via Codex
Adopt scikit-build-core's standard dynamic-metadata table for setuptools-scm version discovery.

Backports #2065.

Assisted-by: GPT-5.6 via Codex
Update the build, stub-generation, lock, and clang-tidy environments to nanobind 2.14.0.

Backports #2073.

Assisted-by: GPT-5.6 via Codex
Build only the extension modules required by recursive stub generation using a small non-optimized unity build and reuse the worktree-local environment. Keep the v3 documentation session unchanged.

Backports #2075.

Assisted-by: GPT-5.6 via Codex
Enable unity builds for ordinary v3 builds, keep lint non-unity with interface-header verification, and reduce the routine C++ matrix to one Debug and one Release job per operating system while retaining LLVM/MLIR 21.

Backports #2083.

Assisted-by: GPT-5.6 via Codex
Inline the Qiskit and PennyLane import checks while preserving the public availability flags, and remove the now-unused private compatibility helper and its tests.

Backports #2108.

Signed-off-by: simon1hofmann <119581649+simon1hofmann@users.noreply.github.com>

Assisted-by: GPT-5.6 via Codex
Enable the Sphinx-LLM text builder and require the first release that generates the llms.txt sitemap. Refresh the v3 dependency lock for the feature.

Backports the Sphinx-LLM changes from #1989 and #2046.

Assisted-by: GPT-5.6 via Codex
Verify multi-controlled X, Z, and RZ constructions against independent exact-unitary references before checking their ZX representations.

Backports #2029.

Assisted-by: GPT-5.6 via Codex
Remove the unused private typing compatibility module and its Ruff configuration. No v3 production code imports the module.

Backports #2059.

Assisted-by: GPT-5.6 via Codex
Update the release publishing actions, release drafter, uv lock hook, project-schema validator, Ruff, and ty to the compatible patch revisions already used on main.

Backports the compatible updates from #2019, #2020, #2021, and #2023. The newer rumdl update from #2027 is already present in this series.

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

Assisted-by: GPT-5.6 via Codex
Keep the v3 DD bindings and neutral-atom operation sources compatible with the unity builds enabled by the CI optimization. Main-only LLVM/MLIR documentation-build changes are intentionally not included.

Backports the applicable native fixes from #2047.

Assisted-by: GPT-5.6 via Codex
Correct the Markdown hook indentation, simplify two documentation links, and keep the QDMI installation snippet independent of a particular virtual-environment prompt.

Backports the remaining compatible maintenance changes from #1989.

Assisted-by: GPT-5.6 via Codex
Build Python packages through one aggregate target whose dependencies follow the enabled QDMI devices. This preserves the existing v3 wheel contents and lets stub and documentation builds disable unused providers without requesting absent targets.

Backports the applicable packaging target from #2074 and completes the #2075 optimization on v3.

Assisted-by: GPT-5.6 via Codex
Record the complete compatibility sweep and exact validation results. Adapt the Slurm workflow and runtime-configuration documentation to the v3 branch and documentation toolchain, and use current QDMI terminology throughout.

Assisted-by: GPT-5.6 via Codex
@burgholzer burgholzer added minor Minor version update QDMI Anything related to QDMI backport Changes that have been backported to a stable release branch labels Aug 14, 2026
@burgholzer burgholzer self-assigned this Aug 14, 2026
@codecov

codecov Bot commented Aug 14, 2026

Copy link
Copy Markdown

Use the neutral-atom lattice scalar type for the determinant threshold and construct complete device session configurations in the backported tests. This avoids double-promotion and partial-aggregate diagnostics without changing runtime behavior.

Assisted-by: GPT-5.6 via Codex
burgholzer and others added 10 commits August 14, 2026 19:49
Exercise the compatibility paths that disable a plugin only when its top-level dependency is absent and propagate missing nested dependencies. Apply the same contract tests to the Qiskit and PennyLane plugins.

Assisted-by: GPT-5.6 via Codex
Add public session and job parameter TypedDicts and typed stable-ID keyword overrides while preserving the v3 session_parameters mapping. Keep PennyLane session and job mappings separate and retain runtime validation.

Backports the compatible configuration typing from #2084.

Assisted-by: GPT-5.6 via Codex
Record the registry ID when a backend opens a registered device. Allow already-open and specialized devices to supply an ID explicitly while keeping direct construction and the v3 session-parameter mapping valid.

Backports the compatible stable-ID behavior from #2084.

Assisted-by: GPT-5.6 via Codex
Read the live QDMI registry for each discovery call and open fresh backends only when requested. Add exact stable-ID lookup and sanitized warnings that skip unavailable devices without exposing configuration.

Backports the provider discovery behavior from #2084.

Assisted-by: GPT-5.6 via Codex
Add sampler and estimator factories to each QDMI backend and match #2084 by replacing the generic primitive options mapping with explicit shot and precision defaults.

Assisted-by: GPT-5.6 via Codex
Document the selected QDMI, Slurm, device, Qiskit, maintenance, build, and documentation changes. Record the explicit primitive-default migration and the main-only compiler, QCO, QIR, OpenQASM, and ZX boundaries.

Assisted-by: GPT-5.6 via Codex
Remove the unused pybind11 binding helper and make add_mqt_python_binding the sole nanobind helper. Update all v3 binding targets and document the downstream CMake migration.

Backports #2106.

Assisted-by: GPT-5.6 via Codex
Stop discovering QDMI device definitions from [tool.qdmi], remove the vendored toml++ dependency, and retain qdmi.json as the project-level configuration format.

Backports #2116 with v3-compatible tests and documentation.

Assisted-by: GPT-5.6 via Codex
Backport the final-design, concise writing, terminology, and contract-test guidance from #2072 to the v3 maintenance branch.

Assisted-by: GPT-5.6 via Codex
Remove the unused SVG conversion dependency and favor a fast debug build without IPO for the short-lived documentation environment. Preserve v3's optional MLIR architecture.

Assisted-by: GPT-5.6 via Codex
@burgholzer
burgholzer force-pushed the agent/backport-qdmi-slurm-v3 branch from d8d262f to 8831eb2 Compare August 14, 2026 21:00
@burgholzer burgholzer added c++ Anything related to C++ code python Anything related to Python code documentation Improvements or additions to documentation labels Aug 14, 2026
@burgholzer
burgholzer merged commit 9b43bf7 into v3.x Aug 15, 2026
36 checks passed
@burgholzer
burgholzer deleted the agent/backport-qdmi-slurm-v3 branch August 15, 2026 00:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport Changes that have been backported to a stable release branch c++ Anything related to C++ code documentation Improvements or additions to documentation minor Minor version update python Anything related to Python code QDMI Anything related to QDMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants