Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 94 additions & 93 deletions .agent/plans/1687-ct-01-compiler-target.md

Large diffs are not rendered by default.

47 changes: 24 additions & 23 deletions .agent/plans/1687-iqm-01-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ and command-line integration belong to later changes.
## Surprises & Discoveries

- Observation: the SC schema already represents optional per-qubit T1/T2 and
optional per-locus duration/fidelity. It only lacks the optional site name
that QDMI already exposes through `QDMI_SITE_PROPERTY_NAME`.
optional per-site-tuple duration/fidelity. It only lacks the optional site
name that QDMI already exposes through `QDMI_SITE_PROPERTY_NAME`.
- Observation: the IQM provider obtains site names from the ordered `qubits`
array of the static architecture response and assigns the array position as
the QDMI site index. IQM qubits in these captures use `QB1` through `QB20` for
Expand All @@ -88,8 +88,8 @@ and command-line integration belong to later changes.
`api/v1/quantum-computers/%s/artifacts/static-quantum-architectures`,
`api/v1/calibration-sets/%s/%s/dynamic-quantum-architecture`, and
`api/v1/calibration-sets/%s/%s/metrics`. The first two select the computer and
return names/topology, the third returns default-calibration operation loci,
and the fourth returns T1/T2 and fidelity metrics.
return names/topology, the third returns default-calibration operation site
tuples, and the fourth returns T1/T2 and fidelity metrics.
- Observation: CTest registers the individual GoogleTest cases, not targets
named after the three executables. A target-name regular expression therefore
selected no tests; running each built executable directly exercised 171 tests.
Expand All @@ -115,7 +115,7 @@ and command-line integration belong to later changes.
nanosecond-level coherence precision through unit `us` with scale factor
`0.001`. Date/Author: 2026-08-03, Codex.
- Decision: do not add any duration field. Rationale: neither the captured
provider data nor the IQM QDMI interface supplied operation durations.
device data nor the IQM QDMI interface supplied operation durations.
Date/Author: 2026-08-03, Codex.
- Decision: extend `mqt_configure_qdmi_device` with a `CONFIGURATIONS` list
whose entries pair a stable registry ID with the basename of an existing
Expand Down Expand Up @@ -176,24 +176,25 @@ entry has exactly an ID and filename and that the filename is among
loops then package all three SC JSON files.

Expand configuration tests to assert the model names, qubit and edge counts,
exact operation names, calibration coverage, locus-fidelity counts, site-name
endpoints, and complete absence of operation durations. Add schema coverage for
name-only overrides and empty-name rejection. Expand provider tests to prove
configured names are queryable and absent names remain unsupported. Expand
registry and driver tests to prove that five built-in definitions exist, both
stable IDs use packaged configuration files, and both models can be opened.
exact operation names, calibration coverage, per-site-tuple fidelity counts,
site-name endpoints, and complete absence of operation durations. Add schema
coverage for name-only overrides and empty-name rejection. Expand provider tests
to prove configured names are queryable and absent names remain unsupported.
Expand registry and driver tests to prove that five built-in definitions exist,
both stable IDs use packaged configuration files, and both models can be opened.

Update `docs/qdmi/sc_device.md` to describe optional names and the two shared
models. Record that topology and site names came from the static architecture,
operation loci from the default dynamic architecture, and T1/T2/fidelities from
default calibration-set quality metrics retrieved on 2 August 2026. State that
the files contain no credentials or calibration identifiers and intentionally
omit unavailable durations. In this ExecPlan, pin the interpretation to
QDMI-on-IQM revision `5bef1d49245ae17877203618ad65865405fab361` and record its
source paths and the fact that no provider source, documentation text, or raw
service response is redistributed. Add one narrowly scoped `Unreleased`
changelog entry without inventing a pull request reference; add the reference in
a post-publication follow-up.
operation site tuples from the default dynamic architecture, and
T1/T2/fidelities from default calibration-set quality metrics retrieved on 2
August 2026. State that the files contain no credentials or calibration
identifiers and intentionally omit unavailable durations. In this ExecPlan, pin
the interpretation to QDMI-on-IQM revision
`5bef1d49245ae17877203618ad65865405fab361` and record its source paths and the
fact that no provider source, documentation text, or raw service response is
redistributed. Add one narrowly scoped `Unreleased` changelog entry without
inventing a pull request reference; add the reference in a post-publication
follow-up.

## Milestones

Expand Down Expand Up @@ -273,12 +274,12 @@ The implementation is accepted when:

- Garnet parses as 20 sites and 30 ordered topology edges, and Emerald parses as
54 sites and 90 ordered topology edges.
- Both assets expose exactly `r`, `cz`, and `measure`; all recorded per-locus
fidelities remain available.
- Both assets expose exactly `r`, `cz`, and `measure`; all recorded
per-site-tuple fidelities remain available.
- Garnet exposes 20 T1 and 20 T2 values. Emerald exposes 53 T1 and 54 T2 values.
- Site indices remain zero-based while reported names are `QB1` through `QB20`
or `QB54`, respectively.
- No operation or locus in either model reports a duration.
- No operation or site tuple in either model reports a duration.
- The IDs `mqt.sc.iqm.garnet` and `mqt.sc.iqm.emerald` resolve to the SC
provider plus the correct packaged JSON file in a build-tree registry.
- The two JSON files are included in the provider's runtime-file property and
Expand Down
22 changes: 11 additions & 11 deletions .agent/plans/1687-map-01-target-mapping.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ repository root.
After this change, callers can run the QCO `place-and-route` pass against an
immutable `mlir::CompilerTarget` instead of constructing a second graph wrapper
from a dense coupling set. The mapper uses the target's validated topology for
placement and routing, emits provider-defined site identifiers in `qco.static`
placement and routing, emits device-defined site identifiers in `qco.static`
operations, and continues to insert ordinary `qco.swap` operations without
making target-native gate or direction decisions.

Expand Down Expand Up @@ -49,7 +49,7 @@ pipeline integration task.
allocations and higher-arity unitaries before mutation, and reuses its
records for routing and placement.
- [x] (2026-08-03 13:09Z) Materialized only program qubits and vacant target
vertices used by the selected routing plan, with provider site IDs in
vertices used by the selected routing plan, with target site IDs in
output.
- [x] (2026-08-03 13:09Z) Added focused mapping, diagnostic, allocation,
sparse-workspace, empty-operation-set, and noncontiguous-ID tests while
Expand Down Expand Up @@ -131,7 +131,7 @@ pipeline integration task.
- Decision: use dense zero-based compiler vertices for `Layout`, A* search, and
restoration, and translate through `CompilerTarget::siteForVertex` only when
creating `qco.static`. Rationale: layout algorithms require dense indices,
while output IR must retain provider-defined identifiers. Date/Author:
while output IR must retain device-defined identifiers. Date/Author:
2026-08-03, Codex.
- Decision: route every one-qubit unitary directly and every two-qubit unitary
solely according to undirected target adjacency. Do not query operation
Expand Down Expand Up @@ -167,7 +167,7 @@ pipeline integration task.

Implementation and validation are complete. The mapper now owns a cheap
`CompilerTarget` value, uses its dense topology throughout placement and
routing, translates to provider site IDs only for `qco.static`, supports scalar
routing, translates to target site IDs only for `qco.static`, supports scalar
and mixed allocation forms, and materializes only active or preview-touched
workspace qubits. The single discovery/planning walk makes unsupported nested
allocations and higher-arity operations fail before mutation.
Expand All @@ -183,7 +183,7 @@ same result against the merged compiler-target foundation.

`mlir::CompilerTarget`, declared in `mlir/include/mlir/Compiler/Target.h` and
implemented in `mlir/lib/Compiler/Target.cpp`, is an immutable target model.
Provider site identifiers can be sparse or noncontiguous, but the target stores
Device site identifiers can be sparse or noncontiguous, but the target stores
them in a stable site order and exposes dense compiler vertices for algorithms.
An absent topology denotes all-to-all connectivity; an explicit topology is
validated as a connected undirected graph and has cached distances.
Expand Down Expand Up @@ -268,7 +268,7 @@ comments, pass documentation, and diagnostics so they describe target topology
and the supported one-/two-qubit boundary accurately.

Refactor the mapping test fixture to hold a `CompilerTarget`. Adapt executable
checking to translate static provider IDs back to dense vertices before testing
checking to translate static target IDs back to dense vertices before testing
adjacency. Preserve the existing nine-qubit grid and every current regression.
Add focused tests that demonstrate arbitrary one- and two-qubit unitary names
are routed without native-capability checks; nested higher-arity operations and
Expand Down Expand Up @@ -332,8 +332,8 @@ The implementation is accepted when the mapping test binary passes every
pre-existing test, including index-switch vote-and-restore, and the following
new behavior is observed.

A `CompilerTarget` with noncontiguous provider IDs maps using dense internal
vertices, while every emitted `qco.static` index is one of the provider IDs.
A `CompilerTarget` with noncontiguous target IDs maps using dense internal
vertices, while every emitted `qco.static` index is one of the target IDs.
Arbitrary one- and two-qubit QCO unitaries pass through the topology-only
mapper; two-qubit operations are adjacent after routing regardless of target
operation metadata or operand direction. Inserted routing operations remain
Expand Down Expand Up @@ -389,7 +389,7 @@ The current restack evidence is:
Patch comparison:
final range-diff differs only in this plan; non-plan stable patch IDs match
Current target API:
dense vertices plus provider site IDs, validated connected topology,
dense vertices plus target site IDs, validated connected topology,
cached adjacency, neighbours, distances, and maximum degree
Current mapper:
CompilerTarget directly, with no coupling-set overload or adapter
Expand Down Expand Up @@ -460,8 +460,8 @@ declares:

`MappingPass` owns a `CompilerTarget` value. It uses only `numQubits`,
`siteForVertex`, `areAdjacent`, `distanceBetween`, `forEachNeighbour`, and
`maxDegree` from that target. Operation-capability, native-gate, calibration,
duration, fidelity, and directed-locus APIs are deliberately out of scope.
`maxDegree` from that target. Operation capabilities, native gates, and
calibration metadata are deliberately out of scope.

`MLIRQCOTransforms` and `MQTCompilerPipeline` depend on `MQTCompilerTarget`. The
mapping test target also links the target library directly when needed. No new
Expand Down
Loading
Loading