open-standards/.github/wai-conformance/verifiers/quantum-receipts.sh
Transaction Science 3fc116ef00
Some checks failed
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 31s
wai-audit collector and player integration / does this change touch it (push) Successful in 17s
wai-quantum command line / does this change touch it (push) Successful in 29s
WAI operation catalogue / does this change touch it (push) Successful in 30s
wai-quantum clippy / does this change touch it (push) Successful in 30s
wai-quantum contract / does this change touch it (push) Successful in 18s
wai-quantum docs, course and locales / does this change touch it (push) Successful in 56s
wai-quantum other formats / does this change touch it (push) Successful in 54s
wai-quantum resource estimation / does this change touch it (push) Successful in 54s
wai-quantum editors / does this change touch it (push) Successful in 56s
wai-quantum studio and desktop / does this change touch it (push) Successful in 22s
wai-quantum views in agent hosts / does this change touch it (push) Successful in 21s
wai-quantum variational and algorithm library / does this change touch it (push) Successful in 23s
wai-quantum verdicts and repairs / does this change touch it (push) Successful in 23s
wai-sink-swift native sink package / does this change touch it (push) Successful in 14s
wai-quantum on Windows / does this change touch it (push) Successful in 17s
wai-sink-android native sink library / does this change touch it (push) Successful in 17s
WAI Studio / does this change touch it (push) Successful in 16s
wai-quantum on Windows / job service · windows (push) Waiting to run
wai-quantum on Windows / python · windows (push) Waiting to run
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 7s
WAI examples / WAI examples · does this change touch them (push) Successful in 8s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 9s
wai-quantum for Python / does this change touch it (push) Successful in 3m30s
wai-quantum qudit jobs / does this change touch it (push) Successful in 3m28s
wai-quantum error correction and mitigation / does this change touch it (push) Successful in 3m29s
wai-quantum for JavaScript / does this change touch it (push) Successful in 3m38s
wai-quantum pulse and dynamics / does this change touch it (push) Successful in 3m37s
wai-quantum OpenQASM reader / does this change touch it (push) Successful in 3m38s
wai-quantum service / does this change touch it (push) Successful in 3m10s
wai-quantum extension points / does this change touch it (push) Successful in 3m28s
wai-quantum wasmQ / does this change touch it (push) Successful in 12s
wai-quantum service / service energy · linux packages (push) Failing after 7s
wai-quantum contract / the policy is linked, and the deprecations page reads (push) Successful in 8s
wai-audit collector and player integration / collector · linux (push) Successful in 4m39s
wai-quantum clippy / clippy, warnings denied, every feature set · linux (push) Successful in 4m31s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (push) Successful in 14s
wai-quantum docs, course and locales / the course and the command line's languages · linux (push) Successful in 4m39s
wai-quantum editors / editors · linux (push) Successful in 4m39s
wai-quantum contract / API compatibility · linux (push) Successful in 11m14s
wai-quantum other formats / the set under wasm32-wasip2 (wasmtime) (push) Successful in 2m23s
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (push) Successful in 1m55s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (push) Successful in 3m39s
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (push) Successful in 2m48s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 16m56s
wai-quantum contract / schemas and the committed tool lists · linux (push) Successful in 15m50s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m6s
wai-quantum resource estimation / estimation and calibration · linux, release (push) Successful in 7m45s
wai-quantum other formats / readers, writers and the set · linux (push) Successful in 7m19s
wai-quantum studio and desktop / studio · browser (push) Successful in 6m0s
wai-quantum views in agent hosts / views · a scripted host (push) Successful in 7m43s
wai-quantum views in agent hosts / views · the page and its engine (push) Successful in 8m13s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 11m44s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Failing after 6m54s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 3m38s
wai-quantum command line / command line · linux (push) Successful in 31m11s
wai-quantum for Python / python · linux (push) Failing after 5m24s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (push) Successful in 3m16s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 7m43s
wai-quantum qudit jobs / the module and the conformance set under wasm32-wasip2 (wasmtime) (push) Successful in 2m24s
WAI Studio / Studio in WebKit · linux (push) Successful in 20m40s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs under wasm32-wasip2 (wasmtime) (push) Successful in 1m29s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 10m32s
wai-quantum OpenQASM reader / corpus under wasm32-wasip2 (wasmtime) (push) Successful in 1m35s
wai-quantum qudit jobs / the module, the job, the conformance set, the referee and the verb · linux (push) Successful in 6m54s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 12m20s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 6m3s
wai-quantum wasmQ / the reference modules rebuild to their modules of record · linux (push) Successful in 31s
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (push) Successful in 1m49s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs · linux, release (push) Successful in 4m27s
wai-quantum error correction and mitigation / codes, decoders, texts and mitigation · linux, release (push) Successful in 9m51s
wai-quantum OpenQASM reader / reader and corpus · linux (push) Successful in 3m0s
wai-quantum for JavaScript / javascript · linux (push) Successful in 6m8s
WAI examples / WAI examples · portable · linux (push) Successful in 14m4s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (push) Successful in 2m38s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (push) Successful in 36m4s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 16m51s
wai-quantum extension points / the registry and the example · linux (push) Successful in 6m18s
wai-quantum extension points / the registry and the example · linux-arm64 (push) Successful in 5m50s
wai-quantum wasmQ / interpreter and vectors under wasm32-wasip2 (wasmtime) (push) Successful in 7m5s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 19m27s
WAI examples / WAI examples · android-app · linux-arm64 (push) Successful in 10m41s
wai-quantum command line / command line · macos (push) Successful in 3m21s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · linux (push) Successful in 11m24s
wai-quantum service / service · linux (push) Failing after 14m21s
wai-quantum editors / editors · macos (push) Successful in 1m47s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 5m12s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Failing after 14m47s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 23m35s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 9m47s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 8m25s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 15m4s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 8m11s
wai-quantum for Python / python · macos (push) Failing after 3m27s
wai-quantum pulse and dynamics / the same bits · macos (push) Successful in 1m26s
wai-quantum qudit jobs / the same bits · macos (push) Successful in 2m12s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · macos (push) Successful in 3m45s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (push) Successful in 17m14s
wai-quantum service / service · macos (push) Successful in 7m55s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 14m39s
wai-quantum on Windows / engine · windows (push) Failing after 17m39s
wai-quantum on Windows / command line · windows (push) Has started running
wai-quantum: a receipt seals when it was issued, a verifier is told whose keys to trust, and a job given as members is judged from text
A receipt sealed no time and the verifier left key trust to the reader, so a receipt
could be shown again for ever and no key could be revoked. And the MCP verify tools and
the views judged the value their reader had parsed, which no longer shows a member named
twice or a whole number past a double.

The time (quantum-providers section 8.2). A receipt may carry `time`: `issued_ms` and,
optionally, `not_after_ms`, by its signer's clock. It is inside the digest, under the
domain byte 0x03 with its canonical text after the result's, so it cannot be changed,
taken off or put on. The request and the result are untouched: no job's answer, set leaf
or replay digest moves. A host with no clock seals none, and none writes a placeholder.
The job service seals a time on every receipt (WAI_QSVC_RECEIPT_TIME=none turns it off;
WAI_QSVC_RECEIPT_VALID_S adds an end); the command line seals none unless asked
(WAI_QUANTUM_RECEIPT_TIME), so the same key and job still give the same bytes. Every
receipt sealed before verifies as it did, and its verdict says no time is sealed.

Whose key, and when (section 8.8, new). `verify --trust KEYS.json --at MS|now --skew-ms
MS`, the local MCP tool's trust, at_ms and skew_ms, and the second verifier's --trust,
--at and --skew-ms hold a receipt to a trust list, which is a key set as the job service
publishes it with `revoked_from_ms` added, and to a time. Five reasons: key_untrusted,
key_window, key_revoked, expired, issued_later. A receipt with no time passes a window
with no end and fails one that ends, and any revocation. A list that does not read is
refused whole (status 2, no verdict). `wai-quantum-service revoke-key KEY [FROM_MS]`
marks a retired key.

Judged from text (section 9). The command line's and the service's MCP verify tools, and
the views' engine, judge a job given as members as their message's text writes it, read
as section 8.2 reads a job, and every such verdict says how the job was given: text,
members, or parsed with what it could not see.

Both verifiers (the engine, and receipt_verify.py written from the text) agreed with the
manifest on the corpus's 451 receipts held to nothing, 40 judgements of receipts held to a
list or a time, 30 trust lists (7 read, 23 refused whole), and 34,332 one-member changes
of the valid receipts, on the tree before main's second-version landscape receipts joined
the corpus; with them the second verifier agrees with the manifest on all 500, and the
command line's workflow holds the engine to them. Three planted defects of the second
verifier are each caught. The views' page is rebuilt with the engine that knows the time.

A verifier from before this text reports digest_mismatch on a receipt that seals a time:
it fails closed. A deployment whose readers still run one sets WAI_QSVC_RECEIPT_TIME=none
until they have updated.

Co-Authored-By: Claude Fable 5.2 <[email protected]>
2026-11-11 10:01:30 -05:00

21 lines
1.9 KiB
Shell

# step: quantum job receipts · receipt_verify.py
# order: 701
# paths: wai/extensions/quantum-providers.md wai/extensions/quantum-wasmq.md wai/extensions/quantum-landscape.md wai/extensions/quantum-landscape-2.md
# working-directory: .
# independent: quantum-receipts media python3 -I quantum-conformance/tools/receipt_differential.py --second-only --corpus quantum-conformance/receipts
#
# Job receipts (wai.quantum.provider/1 section 8, wai/quantum-conformance/receipts/): the
# corpus's crafted half is what generate.py writes; receipt_verify.py, written in Python from
# section 8 alone and sharing no code with the engine (its BLAKE3, Ed25519, RFC 8785 text and
# strict reader its own, standard library only), passes its self-test against published
# answers and the number texts a JavaScript engine wrote, and, in the step of every independent
# verifier above, gives every receipt of the corpus exactly the reasons the manifest gives; and
# here each of its planted defects makes that fail. The reference's half of the differential,
# `wai-quantum verify` on every receipt and on every one-member change of each valid one, runs
# in wai-quantum-cli.yml beside the build of the binary. Run isolated (-I).
python3 -I wai/quantum-conformance/receipts/generate.py --check
python3 -I wai/quantum-conformance/receipts/generate.py --self-test
python3 -I wai/quantum-conformance/tools/receipt_verify.py --self-test wai/wai-quantum/src/engine/testdata/es-number-tostring.txt
for plant in lenient-key no-alg last-duplicate no-inexact measured-simulator whole-cap lax-small-order-r no-canonical-spelling set-seal-only names-layout-only route-unchecked choice-unchecked distance-unchecked wasmq-unchecked landscape-unchecked landscape2-unchecked time-outside-digest window-end-inside untimed-anywhere; do
python3 -I wai/quantum-conformance/tools/receipt_differential.py --second-only --plant "$plant" | tail -1
done