Skip to content

✨ Add multi-program jobs - #509

Open
burgholzer wants to merge 4 commits into
v1.4from
codex/multi-program-jobs
Open

✨ Add multi-program jobs#509
burgholzer wants to merge 4 commits into
v1.4from
codex/multi-program-jobs

Conversation

@burgholzer

@burgholzer burgholzer commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

🤖 AI text below 🤖

Description

Introduce native, ordered multi-program jobs independently of #508. This PR is based directly on v1.4 and retains the existing QDMI_Program_Format enum. No payload-capability descriptor is required.

  • Client and device job_set_programs atomically copy a list in one format, including the count-one path. The legacy PROGRAM setter is removed so both paths share the same contract.
  • One shot count, job ID, status, cancellation, wait, and failure state apply to the aggregate job.
  • Result index i corresponds to input program i; execution order is unspecified. PROGRAMSNUM also applies to retrieved jobs.
  • Preserve binary payloads byte-for-byte, validate text framing, and preserve calibration submission and optional shots.
  • Providers without an aggregate lifecycle/results contract may reject multi-program submission; concurrent single-program jobs remain a separate fallback.

No per-program formats, options, lifecycle, partial results, or execution-capability model are introduced. Core adoption is tracked in munich-quantum-toolkit/core#2359, with low-level extraction in munich-quantum-toolkit/core#2362. Target: QDMI 1.4 / Core 4.1; release artifacts require released dependency pins.

Validation

Independent release build (including device templates) and all 109 configured CTests passed: 89 passed and 20 expected read-only skips. uvx prek run -a passed. Hosted CI must be evaluated on the new head.

End-to-end acceptance

Before the interface change merges, link a working Core consumer and a demonstration with at least one existing provider, preferably both where applicable. Compatibility evidence suffices when a provider needs no changes. Development revisions may support these tests; published artifacts must use released dependencies. Validate aggregate identity, indexed results, cancellation, failure, and retrieval. A provider SDK's batch helper may only submit independent tasks; do not infer the aggregate contract from that helper alone.

Checklist

  • The pull request only contains commits that are focused and relevant to this change.
  • I have added appropriate tests that cover the new/changed functionality.
  • I have updated the documentation to reflect these changes.
  • I have added entries to the changelog for any noteworthy additions, changes, fixes, or removals.
  • I have added migration instructions to the upgrade guide (if needed).
  • The changes follow the project's style guidelines and introduce no new warnings.
  • The changes are fully tested and pass the CI checks.
  • I have reviewed my own code changes.

If PR contains AI-assisted content:

  • I have disclosed the use of AI tools in the PR description as per our AI Usage Guidelines.
  • AI-assisted commits include an Assisted-by: [Model Name] via [Tool Name] footer.
  • I confirm that I have personally reviewed and understood all AI-generated content, and accept full responsibility for it.

@burgholzer burgholzer added minor Changes that warrant a minor version release feature New feature or feature request labels Aug 23, 2026
@burgholzer burgholzer self-assigned this Aug 23, 2026
@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://Munich-Quantum-Software-Stack.github.io/QDMI/pr-preview/pr-509/

Built to branch gh-pages at 2026-08-24 12:44 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@burgholzer
burgholzer force-pushed the codex/multi-program-jobs branch from 12be7d7 to 50ed628 Compare August 23, 2026 19:58
@codecov

codecov Bot commented Aug 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.40000% with 7 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
examples/device/src/cxx_device.cpp 94.0% 7 Missing ⚠️

Impacted file tree graph

@@                         Coverage Diff                         @@
##           codex/program-format-capabilities    #509     +/-   ##
===================================================================
- Coverage                               91.1%   90.9%   -0.2%     
===================================================================
  Files                                      7       7             
  Lines                                    800     861     +61     
  Branches                                 164     181     +17     
===================================================================
+ Hits                                     729     783     +54     
- Misses                                    71      78      +7     
Flag Coverage Δ
cpp 90.9% <94.4%> (-0.2%) ⬇️
Files with missing lines Coverage Δ
examples/driver/qdmi_example_driver.cpp 93.5% <100.0%> (+0.1%) ⬆️
include/qdmi/constants.h 100.0% <ø> (ø)
examples/device/src/cxx_device.cpp 93.8% <94.0%> (-0.9%) ⬇️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@burgholzer burgholzer added this to the v1.4.0 milestone Aug 23, 2026
@burgholzer
burgholzer force-pushed the codex/multi-program-jobs branch from 50ed628 to 99ad870 Compare August 23, 2026 20:04
@burgholzer
burgholzer changed the base branch from develop to codex/program-format-capabilities August 24, 2026 10:39
@burgholzer burgholzer changed the title ✨ Add multi-program jobs ✨ Add multi-program jobs and a replaceable Client-driver ABI Aug 24, 2026
@burgholzer
burgholzer force-pushed the codex/multi-program-jobs branch from f469df0 to 8ced3f4 Compare August 24, 2026 10:59
@burgholzer burgholzer changed the title ✨ Add multi-program jobs and a replaceable Client-driver ABI ✨ Add multi-program jobs Aug 24, 2026

@burgholzer burgholzer left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is looking fine as well with the exception of one point that may need further addressing.

Comment thread include/qdmi/constants.h
Assisted-by: GPT-5.6 Sol via Codex
Add atomic ordered program lists, indexed result retrieval, aggregate lifecycle semantics, and exact legacy-setter behavior.

Assisted-by: GPT-5.6 Sol via Codex
Give clang-tidy the standalone device test compilation command and use NUL-terminated storage for text-program fixtures.

Assisted-by: GPT-5.6 Sol via Codex
Remove the legacy client and device program parameters so count-one and multi-program jobs use the same atomic setter. Update the examples, tests, migration guide, and Yannick Stade attribution.

Assisted-by: GPT-5.6 Sol via Codex
@burgholzer
burgholzer force-pushed the codex/multi-program-jobs branch from ff59f75 to 06711e1 Compare September 4, 2026 09:52
@burgholzer
burgholzer changed the base branch from codex/program-format-capabilities to develop September 4, 2026 09:52
@burgholzer
burgholzer changed the base branch from develop to v1.4 September 4, 2026 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or feature request minor Changes that warrant a minor version release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant