open-standards/wai/quantum-ops-conformance
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 75898a5b97
Some checks failed
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 21s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 15s
wai-app and Create / wai-app · does this change touch it (push) Successful in 22s
wai-audit collector and player integration / does this change touch it (push) Successful in 18s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 1m2s
wai-quantum command line / does this change touch it (push) Successful in 22s
wai-ledger service / does this change touch it (push) Successful in 36s
wai-quantum editors / does this change touch it (push) Successful in 13s
wai-quantum other formats / does this change touch it (push) Successful in 14s
WAI operation catalogue / does this change touch it (push) Successful in 43s
wai-quantum contract / does this change touch it (push) Successful in 21s
wai-fleet service / does this change touch it (push) Successful in 42s
wai-quantum error correction and mitigation / does this change touch it (push) Successful in 17s
wai-quantum qudit jobs / does this change touch it (push) Successful in 23s
wai-quantum studio and desktop / does this change touch it (push) Successful in 16s
wai-quantum extension points / does this change touch it (push) Successful in 24s
wai-quantum verdicts and repairs / does this change touch it (push) Successful in 12s
wai-sink-android native sink library / does this change touch it (push) Successful in 16s
wai-sink-swift native sink package / does this change touch it (push) Successful in 15s
wai-quantum views in agent hosts / does this change touch it (push) Successful in 17s
WAI Studio / does this change touch it (push) Successful in 12s
wai-quantum docs, course and locales / does this change touch it (push) Successful in 1m33s
wai-quantum resource estimation / does this change touch it (push) Successful in 1m27s
wai-quantum pulse and dynamics / does this change touch it (push) Successful in 1m10s
wai-quantum OpenQASM reader / does this change touch it (push) Successful in 1m13s
wai-quantum service / does this change touch it (push) Successful in 59s
wai-quantum variational and algorithm library / does this change touch it (push) Successful in 54s
wai-quantum for Python / does this change touch it (push) Successful in 1m10s
wai-quantum for JavaScript / does this change touch it (push) Successful in 1m25s
wai-quantum service / service energy · linux packages (push) Successful in 2m4s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 2m22s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (push) Successful in 2m46s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 7m5s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (push) Successful in 3m19s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 5m8s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 6m52s
wai-quantum extension points / the registry and the example · linux-arm64 (push) Successful in 6m26s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 27s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 33s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 24s
wai-quantum contract / the policy is linked, and the deprecations page reads (push) Successful in 16s
wai-quantum other formats / the set under wasm32-wasip2 (wasmtime) (push) Successful in 3m10s
wai-audit collector and player integration / collector · linux (push) Successful in 3m58s
wai-quantum wasmQ / does this change touch it (push) Successful in 11s
wai-ledger service / service · linux (push) Successful in 3m45s
wai-quantum other formats / readers, writers and the set · linux (push) Successful in 4m46s
wai-quantum qudit jobs / the module and the conformance set under wasm32-wasip2 (wasmtime) (push) Successful in 2m29s
wai-quantum contract / API compatibility · linux (push) Successful in 5m16s
wai-quantum error correction and mitigation / codes, decoders, texts and mitigation · linux, release (push) Successful in 3m20s
wai-fleet service / service · linux (push) Successful in 6m2s
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (push) Successful in 2m10s
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (push) Successful in 2m21s
wai-quantum editors / editors · linux (push) Successful in 8m41s
wai-quantum extension points / the registry and the example · linux (push) Successful in 4m40s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 9m15s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m16s
wai-quantum qudit jobs / the module, the job, the conformance set, the referee and the verb · linux (push) Failing after 6m56s
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (push) Successful in 3m20s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (push) Successful in 31s
wai-quantum contract / schemas and the committed tool lists · linux (push) Successful in 9m12s
wai-quantum studio and desktop / studio · browser (push) Successful in 6m53s
wai-quantum views in agent hosts / views · the page and its engine (push) Successful in 4m12s
wai-quantum OpenQASM reader / corpus under wasm32-wasip2 (wasmtime) (push) Successful in 53s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs under wasm32-wasip2 (wasmtime) (push) Successful in 1m12s
wai-quantum docs, course and locales / the course and the command line's languages · linux (push) Successful in 3m32s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 12m52s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs · linux, release (push) Successful in 3m15s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (push) Successful in 3m50s
wai-quantum for Python / python · linux (push) Successful in 4m23s
wai-quantum for JavaScript / javascript · linux (push) Successful in 4m19s
wai-quantum OpenQASM reader / reader and corpus · linux (push) Successful in 6m2s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 12m42s
wai-quantum service / service · linux (push) Failing after 6m41s
wai-quantum views in agent hosts / views · a scripted host (push) Successful in 10m12s
WAI Studio / Studio in WebKit · linux (push) Successful in 12m36s
wai-quantum resource estimation / estimation and calibration · linux, release (push) Successful in 12m48s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 10m15s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 3m45s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 4m21s
wai-quantum command line / command line · macos (push) Successful in 3m3s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 10m0s
wai-quantum command line / command line · linux (push) Failing after 52m54s
wai-fleet service / service · macos (push) Successful in 57s
wai-ledger service / service · macos (push) Successful in 2m37s
wai-quantum editors / editors · macos (push) Successful in 2m11s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (push) Successful in 45m7s
wai-quantum qudit jobs / the same bits · macos (push) Successful in 3m43s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Failing after 2m15s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 5m55s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 7m55s
wai-quantum pulse and dynamics / the same bits · macos (push) Successful in 3m9s
wai-quantum wasmQ / the reference modules rebuild to their modules of record · linux (push) Successful in 46s
wai-quantum for Python / python · macos (push) Successful in 3m28s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 16m57s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 9m9s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · linux (push) Successful in 4m15s
wai-quantum wasmQ / interpreter and vectors under wasm32-wasip2 (wasmtime) (push) Successful in 4m10s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 8m51s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 9m44s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 11m9s
wai-quantum service / service · macos (push) Successful in 8m15s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 17m35s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 20m53s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 7m25s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · macos (push) Successful in 2m12s
quantum-ops: the encoding in the text, four more records registered, and an unmetered form that never reads zero joules
quantum-ops named its records' fields and deferred everything else to the reference, so no
verifier could be written from the text, and it allowed `0` as the unmetered marker, which
quantum-landscape and wasmQ/2 forbid.

- extensions/quantum-ops.md §3, written from quantum_ops.rs and quantum_energy.rs: the
  primitives and their framing (§3.1), reading a receipt's JSON (§3.2), each kind's payload
  and Merkle leaves (§3.3), the identity (§3.4), the energy forms (§3.5), the reasons a
  verifier gives (§3.6), and the links and content hashes (§3.7). What is read and decides
  nothing is named: the written receipt_hash, a decode/compile/rearrange receipt's written
  merkle_root, an evidence summary (not sealed), members no text names.
- Registered: wai.quantum.mitigate, .decode, .compile, .rearrange (SPEC §5, quantum-ops §1.3
  to §1.6; registry.rs, the export regenerated). wai.quantum.qbom and .fabric are stated not
  to be part of the standard (quantum-ops §8) and stay unregistered with that reason. §5 of
  the text no longer names third-party tools.
- The unmetered form (quantum-ops §3.5, energy-measurement §2.8): quantum_energy::Unmetered,
  for every Labellable family (calibration, job, mitigation, decode, compile, rearrange,
  circuit, phasor, sparse-Pauli, resource). Under the 0x02 domain the figure 0 is followed by
  tag 0 and the reason (u32 BE length, UTF-8); its JSON writes joules_micro null beside
  energy_unmetered. MaybeLabelled gains the variant and unmetered()/joules_micro(), the
  latter never Some(0); an unlabelled 0 still verifies and reads as unmetered (legacy).
  wai_quantum_meter and wai-quantum-serve seal unmetered runs in the new form, and serve's
  POST /verify verdict says why. quantum-sim's receipt text says so.
- Reading tightened where the JSON showed what the seal does not say: a member named twice
  (sig::unique_members), a kind of another family, rounds/swaps/atoms_moved past u32 (read
  before as their low 32 bits), a funds_ceiling that is no count and an optional hash that is
  no string (each read before as none) no longer read; a str()-framed string holding U+0000
  no longer verifies (two receipts could sign the same bytes).

Vectors (wai/quantum-ops-conformance): 12 receipts the reference made, every kind and every
energy form (the three earlier ones byte-identical), and 49 crafted by generate.py, each one
defect away or one change that decides nothing, with hand-written reasons. ops_verify.py,
written from §3 alone and sharing no code with the engine, gives the 12 their identities and
the 49 their exact reasons; wai_quantum_ops_vectors verify gives all 61 their verdicts and
stages. CI: the corpus's verify in cargo-classes as before; ops_verify.py and
generate.py --check as a new independent verifier (verifiers/quantum-ops.sh).

Failing first: the crafted receipts given to the reader before this change (origin/main
1f5bc7225, a scratch test over MaybeLabelled::from_json and verify) verified nine of the
defects this change refuses: a member named twice (plain and escaped), a calibration whose
kind is a job's, one with no kind, rounds of 2^32 + 1 sealed as 1, a funds_ceiling "50"
sealed as none, a parent_receipt_hash of 0 sealed as none, and a device_id and a grant
capability holding U+0000. The six crafted receipts of the unmetered form did not read
there, since the form did not exist.

Tested on the build host: wai-quantum --features full --lib --tests (lib 1560 passed, 26
ignored; every integration test passed, landscape_conformance's 54 among them); default
features (127), quantum_ops alone (51), quantum_receipt alone (50); wai-rs with the
energy-receipts workflow's feature set, --lib --bins --test video_receipt (906, 4, 15, 130);
wai-rs codecs::registry (15) and `wai registry export --check`; wai-quantum-serve (12);
wai-quantum-cli's test build; wai-web cargo check; wai_quantum_ops_vectors verify and
ops_verify.py on the corpus; clippy: no finding on a changed file of wai-quantum, serve or
the two wai-rs bins. Locally: check-wai-section-refs, check-spec-refs,
check-wai-quantum-names, check-public-names --maintainer-products-only,
changelog-assemble --check, check-tests-in-ci, check-wai-core-freeze,
wai-conformance-lists check, check-wai-corpus-licences: clean. wai breaking against main:
the two breaks the changelog entry acknowledges.

quantum_ops.rs is one of the sources the wasmQ modules of record pin
(quantum-conformance/wasmq/modules/modules.json): its digest is updated, and on x86_64
Linux (build.sh --check) both modules still build byte for byte as committed.

Rebased on 15b7f810d: the registry export is up to date, and the registry, ops, energy,
pins and sig tests, serve's tests and wai_quantum_ops_vectors verify pass again.

Changelog entry: wai/changes/2026-11-10-quantum-ops-encoding-and-unmetered-form.md

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-10 15:30:53 -05:00
..
artifacts quantum-ops: the encoding in the text, four more records registered, and an unmetered form that never reads zero joules 2026-11-10 15:30:53 -05:00
crafted quantum-ops: the encoding in the text, four more records registered, and an unmetered form that never reads zero joules 2026-11-10 15:30:53 -05:00
vectors quantum-ops: the encoding in the text, four more records registered, and an unmetered form that never reads zero joules 2026-11-10 15:30:53 -05:00
expected_hashes.json quantum-ops: the encoding in the text, four more records registered, and an unmetered form that never reads zero joules 2026-11-10 15:30:53 -05:00
generate.py quantum-ops: the encoding in the text, four more records registered, and an unmetered form that never reads zero joules 2026-11-10 15:30:53 -05:00
ops_verify.py quantum-ops: the encoding in the text, four more records registered, and an unmetered form that never reads zero joules 2026-11-10 15:30:53 -05:00
README.md quantum-ops: the encoding in the text, four more records registered, and an unmetered form that never reads zero joules 2026-11-10 15:30:53 -05:00

quantum-ops-conformance — the quantum-ops records

The corpus of the quantum-ops extension: its six records (wai.quantum.calibration, .job, .mitigate, .decode, .compile, .rearrange), portable JSON signed with Ed25519 over a binary payload that binds a BLAKE3 Merkle root, in each energy form of §3.5 there: a figure (unlabelled, or labelled with its class), the unmetered form with its reason, and the legacy unmetered marker 0.

path what
vectors/ receipts the reference made (wai_quantum_ops_vectors gen), one or more of every kind and every form
expected_hashes.json each made receipt's kind, form, identity (receipt_hash), figure (null when unmetered), its unmetered reason (legacy for an unlabelled 0), the artifacts its hashes bind, and its links (parent, calibration_ref)
artifacts/ the bytes the receipts content-address
crafted/ receipts generate.py derives from vectors/, each one defect away from one of them, or one change §3.2 says decides nothing; crafted/manifest.json gives each the reasons §3.6 gives it (none when valid), written by hand from the text, and the stage the reference refuses it at (read or verify)
ops_verify.py a second verifier, written from §3 alone and sharing no code with the engine
generate.py writes crafted/; --check holds the committed files to what it writes

The crafted half covers each rule of §3.2 (a member named twice, a lone surrogate, a kind of another family, each member's form, a count past its field, an optional member of another type, each energy member's form) and of §3.6 (string_nul, merkle_root, ceiling, energy, bad_key, bad_signature), each alone where the defect is inside the seal, by sealing the changed receipt again with its kind's demo key; and the changes that decide nothing (an evidence summary, the written identity, a decode's written root, a member no text names, the members' order and spacing).

Provenance. Generated here from pinned demonstration signing keys and fixed content. No media.

cd ../wai-rs
cargo run --no-default-features --features quantum_ops --bin wai_quantum_ops_vectors -- gen ../quantum-ops-conformance
python3 -I ../quantum-ops-conformance/generate.py
cargo run --no-default-features --features quantum_ops --bin wai_quantum_ops_vectors -- verify ../quantum-ops-conformance
python3 -I ../quantum-ops-conformance/ops_verify.py ../quantum-ops-conformance

verify holds the reference to every receipt: each made one verifies with its pinned identity, form and figure, binds its artifacts and links, and is written as the reference writes it; each crafted one is valid or refused at its manifest's stage. ops_verify.py holds the second verifier to every receipt and to each crafted one's exact reasons. CI runs the first in the cargo-classes job of wai-conformance.yml and the second among the independent verifiers (.github/wai-conformance/verifiers/quantum-ops.sh).