wai: wasmQ, an OpenQASM 3 program and the WebAssembly its externs call, run the same everywhere, metered and receipted #659

Closed
dcharlot wants to merge 25 commits from wai/quantum-wasmq into main

2026-11-09

Transaction Science
wai: the reference package's test pattern named before its size, which the vanity check read as a count of tests
Some checks failed
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 10m4s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m22s
wai-quantum service / service energy · linux packages (pull_request) Successful in 1m38s
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m56s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 27s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m25s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 6m28s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Successful in 4m43s
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Successful in 4m33s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m29s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 7m20s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 59s
wai-quantum service / service · linux (pull_request) Successful in 8m32s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 4m10s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 18m18s
wai-quantum views in agent hosts / views · a scripted host (pull_request) Successful in 6m50s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 10m21s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Failing after 6m6s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 6m32s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 2m44s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 19m15s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 6m36s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 4m45s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 12m23s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 21m1s
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Successful in 23m13s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 21m3s
wai-quantum-landscape-fpga reference design / the member against the model of the logic, and the logic against the model · linux, release (pull_request) Successful in 33m17s
wai-quantum command line / command line · linux (pull_request) Successful in 45m16s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Failing after 2h9m50s
"a 320 × 180 test pattern" (browser-sink §14.6's reference package and wai-web's
compose/README.md, from main's 5df961d52) matched check-no-vanity-metrics.sh's
"<number> tests" and failed repository checks on main and on every branch that merges
it. The same words with the size after the pattern say the same and match nothing.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 13:15:27 -05:00
Transaction Science
wasmQ: its names accounted for, its form built with the receipts, the modules' lockfile re-pinned
- check-wai-quantum-names found 182 strings of wasmQ that nothing accounted for. The
  profile `wai.quantum.wasmq/1` is listed as a contract revision, the result
  `wai.quantum.wasmq.result/1` as a document with no schema file, and
  `wai.quantum.wasmq/2`, `wai.quantum.wasmq/1x` and `wai.quantum.wasmx` as strings the
  tests and the receipts corpus give a reader to see them refused. The registry export
  and REGISTRY.md are regenerated.
- engine::wasmq reads job::same and receipt::canonical, which are compiled only with
  quantum_receipt, so the engine alone (`--no-default-features --features
  quantum_engine`) no longer built. The module is compiled with quantum_receipt, as job
  and receipt are; job::check, its one reader in the crate, is too. The wasmQ workflow
  now builds the engine with the receipts and without them, warnings denied.
- modules.json pinned the modules' Cargo.lock as it was before wai-quantum 0.9.0. The
  merge of main that moved the lock changed one line, wai-quantum's version, and the
  modules rebuild on x86_64 Linux to the same bytes as their modules of record; only the
  lock's SHA-256 in modules.json moves.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 13:11:43 -05:00
Transaction Science
wasmQ round 5: the reader's nesting from main, verification within bounds, rules 32 to 35
Some checks failed
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-sink-android native sink library / does this change touch it (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / does this change touch it (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
WAI Studio / does this change touch it (pull_request) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-int-module WAISM module of record / does this change touch it (pull_request) Successful in 13s
wai-int-module WAISM module of record / linux · both checkers, wasmtime (Cranelift, Winch), Wasmi and Node (pull_request) Has been skipped
wai-int-module WAISM module of record / linux-arm64 · both checkers, wasmtime (Cranelift, Winch), Wasmi and Node (pull_request) Has been skipped
wai-int-module WAISM module of record / the module of record in Chromium (pull_request) Has been skipped
wai-ops integer operators / does this change touch it (pull_request) Successful in 30s
wai key · Windows / does this change touch it (pull_request) Successful in 31s
wai-ops integer operators / linux-aarch64 (pull_request) Has been skipped
wai-ops integer operators / linux-x86_64 (pull_request) Has been skipped
wai-ops integer operators / macos-arm64 (pull_request) Has been skipped
wai-ops integer operators / wasm32-wasip2 (wasmtime) (pull_request) Has been skipped
wai-ops integer operators / wasm32 under Node (pull_request) Has been skipped
wai-ops integer operators / independent checker (Python) (pull_request) Has been skipped
wai key · Windows / wai key and the toolchain's tests · windows (pull_request) Has been skipped
The review of d8281364 found 24 (3 refuted). Each fix has a test that fails on that head
for the reason stated.

The shared reader (6, 7, 24) landed on main as its own commit, 15ae7d457, and is merged
here. Its §4.8 row now says what it counts: operator, index and `++` chains, brackets in
types, `else if` ladders at their `if`'s depth, and bodies read in place of their calls.
Every program within Q130 and Q209 reads on a 1 MiB stack, natively and on wasm32.

Verification cost (5, 22, 23, 10):
- A job is checked with one reading held at a time. The strict tree is dropped before the
  value is built, and the value is reused by everything after it.
- A surface bounds a job's values beside its bytes: one value, plus one for each `,` `:`
  `[` `{` outside strings, counted in one pass. too_large states both (`read_at_most`:
  `bytes`, `values`).
- `wai-quantum verify` reads 384 MiB and 2^22 values on every host, wasm32 among them, and
  gives a verdict at that bound.
- The service reads 4 MiB and 2^19 values. Its check runs in spawn_blocking, two at a time,
  together with the bounds check of a re-run's program.
- A sealed algorithm answer whose program is a 2000-term sum gets its verdict. The service
  stays up.

Rules (1, 2, 3, 4, 12, 13, 14, 15):
- Rule 20 holds the most one call used to a returned call when it exceeds the stopped
  call's.
- Rule 21 counts 3 per prior passed, the export a lifecycle fault shows, and the set the
  fault stopped.
- Rule 25 adds the stopped call's fuel on top.
- Rule 29 measures a name in characters.
- Rule 30 counts 4097 per call made.
- Rule 31 is the envelope's whole length: magic, manifest, contract and frames.
- New rules 32 to 35:
  - 32: the calls per shot (2^21 steps);
  - 33: a prior passed whole fits one per_instance;
  - 34: a fault's least fuel by its reason (1; bad_result 2; stack_exhausted 788);
  - 35: with no call returned, the transcript is the run's end.
- Rule 12 takes qubits from 1.
- §6.5 says plainly what it leaves free, and why: a program's and a module's least length,
  and an extern's spelling among them.
- The writer takes the transcript's prefix from the engine.
- The second verifier was brought to the text by a reader who has not seen the reference.

Mutants (16, 17, 18, 19):
- A rules case tells P0115 apart.
- The generator adds `extreme`, the most of many read as the least, with a case at rule 29
  where it shows.
- The four false EQUIVALENT entries are gone.

Answers (8, 9, 11, 20, 21):
- An estimate whose request runs nowhere is not valid and says why (`rerun_error`) on
  every surface.
- `/mcp` reads a message in bounded chunks and answers a verify call past the service's
  bound with too_large, by its id.
- A job given parsed to a view, an MCP tool or the service is `unreadable` past 127,
  however deep, judged before the message is read whole.
- The command line's MCP server answers a line that is not UTF-8 with -32700 and reads on.
- A debug build of `run` no longer refuses its own flags: two groups shared one name.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 10:45:39 -05:00
Transaction Science
Merge main: the reader's nesting bound, counted as the text nests (15ae7d457)
Main now counts the reader's nesting (Q130) as §4.8 defines it: operator, index and `++`
chains, brackets in types, `else if` ladders at their `if`'s depth, and a call's body read
in its place. The merge takes main's parser and elaborator whole. It threads the call
depths through this branch's callout reader (`read_callouts_within`, `elaborate_callouts`)
and keeps `Parser::at`, the extern signatures and Q324. A reading test of wasmQ's §4.8
bounds now counts an index's indexed value one deeper, as main does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 10:44:59 -05:00

2026-11-08

Transaction Science
wasmQ round four: the cases that hold the engine's last weakenings, and their record
Some checks failed
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 16m42s
wai-quantum energy-landscape GPU members / members · jetson-hub (pull_request) Failing after 1m0s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Failing after 2m40s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 3m29s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 6m13s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m47s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 30s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 7m17s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Failing after 3m16s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 16s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m50s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 42s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m47s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Failing after 4m20s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m48s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 32s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 27s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m24s
wai-quantum-landscape-fpga reference design / the board's code on the board's processor's architecture · linux-arm64, release (pull_request) Successful in 1m23s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 32s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 4m10s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m25s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m8s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Failing after 1m57s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 27s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 20m25s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m54s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m6s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (pull_request) Successful in 7m34s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 2h16m19s
Seven rules-stage cases where a member's own rule and another's both read it (per_job
2^53 alike in the result, a module's blake3 in upper case alike, a module named 1 read as
1.0 by the result and by a fault, a job-state fault in shot 0.5, a fault in shot 0.5 after
a call), which catch the engine's weakenings that only one rule's reading showed. The ten
engine weakenings and the one of the second verifier that no input can tell from the text
are listed in wasmq_mutants.py, each with its reason. Section 9 names the new vectors and
the receipts that break each rule alone. A closure clippy flags is the function itself.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-08 16:42:36 -05:00
Transaction Science
Merge main into wasmQ for round four
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-08 15:31:32 -05:00
Transaction Science
wasmQ round four: every tie the writer keeps is a rule, weakenings drive the evidence, one answer for every kind of job
Rules from the writer. Section 6.5 gains rules 20 to 31, each a property the runner
guarantees between members: a returned call used 1 to the most one call used and the
stopped one the fault's fuel; each shot's instances passed their priors; a call's fault is
in its callout's module, a prior's in a module that has one, a bad_result in a call or a
prior; a lifecycle fault is within the instances' fuel, in shot 0 for one instance a run,
and before any call in shot 0; a fuel fault used its whole limit; and section 4.8's
products and sums over what a receipt shows (a shot's bits, the shots' bits, the work, the
frames). Section 6.5 says what it leaves free and why. Rules 6, 8, 14 and 18 no longer
repeat what other rules hold. Every problem names its rule. The corpus holds a receipt for
each of rules 2 to 31 that breaks that rule alone, and the two hand-written expectations
that called contradictions valid are flipped; SPEC-GAP W9 is gone.

Evidence the verifiers agree. tools/wasmq_mutants.py weakens each rule in each verifier
from its code (a check dropped, a comparison moved by one, a count or a digest read
loosely, null read as absent and absent as null), and the differential must catch each.
The differential compares the rules each verifier states broken on every case; its rules
stage holds every member of each genuine job given a value of another kind; and a labelled
stage runs the second verifier's own hand-labelled cases through the reference. Nightly in
CI.

The outcome. Section 6.1 gives a shot's outcome as every bit the program declares at its top
level, written or not; a block's own bits are in no outcome; a measurement with no bit in a
program that calls externs is refused (Q324). Three vectors pin them.

One answer. An estimate or an algorithm's answer with no receipt, or that is no job, is that
reason alone on every surface, and is run again only once its receipt holds
(job::answer_of); the service runs an algorithm's answer again, its tool alike for text, a
job and members. POST /v1/verify and /mcp read 64 MiB, and a longer job is too_large; a job
127 deep reaches its verdict through a view or an MCP call; verify prints every verdict;
Python gives a verdict for every str and dict.

Text and API. The OpenAPI document says 200 for every body; Q209 keeps its released meaning
and nesting past 128 is Q130; Breaking lines for the 200, the nesting refusal and Python's
str.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-08 15:31:20 -05:00
Transaction Science
Merge main into wasmQ for round four
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-08 12:15:53 -05:00
Transaction Science
Merge main into wasmQ: wai-quantum 0.9.0, the reader memory test on a deep stack, re-pinned
Some checks failed
wai-quantum command line / command line · linux (pull_request) Successful in 46m42s
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Successful in 25m40s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m47s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 1m19s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m54s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 19m29s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 19s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 25m29s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 53s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 3m56s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 7m3s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 1m33s
wai-quantum service / service energy · linux packages (pull_request) Successful in 4m28s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 1m5s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 16m25s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 4m14s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 43s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 32s
wai-quantum-landscape-fpga reference design / the board's code on the board's processor's architecture · linux-arm64, release (pull_request) Successful in 2m33s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 2m3s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 2m14s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 4m55s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 3m51s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 11m35s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 33s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Failing after 2m27s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 33m55s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 5m49s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 52m55s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 2h14m3s
wai-wasmq takes wai-quantum 0.9.0; its lockfile and its modules' move with it, and the modules
still build their modules of record.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-08 08:17:21 -05:00
Transaction Science
wasmQ: a fault outside a call is held to its instance budget by a test of its own
The stopped-call rule and rule 14 together hold a call fault to the call budget, so the
sweep tests no longer catch the phase-budget check removed; an init fault past per_instance does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-08 08:15:42 -05:00

2026-11-07

Transaction Science
wasmQ round three: every review finding, each with a test that fails first
The reader's loop ranges are made as reached on main (2c8044b1a), merged here. Beside it:

- The form (engine::wasmq): rule 1's walk is linear however long a member's name; a whole
  number past 2^53 - 1 is no count however a reader holds it; a stopped call is one of the
  calls made (its callout's fuel counts it, and its largest call is at least what it used);
  a member is present whatever its value, null among them.
- Writer and verifiers agree: each budget is at most 2^39 when packed (W017, MAX_BUDGET in
  the engine, read by both); the program's qubits are defined for physical qubits and the
  bits' order for several registers, pinned by a new vector (80 vectors, digest bcc36fe0…);
  a hybrid reading's refusal for controls offers no method it cannot use.
- One verdict for every body on every surface: unreadable text, no job and no receipt are
  verdicts with that reason alone from job::verdict and verdict_of_text, so the command
  line, both MCP tools, the service (a 200 verdict, not a 400), Python, the desktop app, a
  page and a view agree; the service's tool reads the body it is given; Python judges a dict
  as its text and reads a marked string as text; job::has_own_verifier routes a wasmQ job to
  its own form whatever else its result names.
- The command line: --lines reads each line on its own (a line not UTF-8, or blank, is its
  own unreadable; a file of no line is refused); verify says a job it did not judge was not
  judged, runs no envelope for it, and --json --bundle keeps its schema.
- The second verifier (written from the text by readers who had not seen the reference):
  the stopped-call clause and the wasmq statement beside each verdict.
- The differential's rules stage: 67 cases at the bounds of the form's rules, sealed again,
  each verdict written by hand; it catches all 25 of the review's verdict-changing defects
  of the second verifier and each weakening of the engine's checks.
- The text: which surfaces read text and which a parsed job; fuel.callouts lists what was
  called; a present member; the budget bound; the qubits; --lines; what is reported alone.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 12:42:15 -05:00
Transaction Science
wai-quantum-cli: the agent docs regenerated after the merge
Some checks failed
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 3m43s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 27m29s
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Successful in 14s
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Successful in 20s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 23m1s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 3m6s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 7m32s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 46s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Failing after 5m5s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 9m44s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 11m3s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 17m26s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 3m30s
wai-quantum command line / command line · linux (pull_request) Successful in 42m0s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 2m13s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 8m55s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m42s
wai-quantum-landscape-fpga reference design / the board's code on the board's processor's architecture · linux-arm64, release (pull_request) Successful in 1m36s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 56s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m11s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 20m12s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 31s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Failing after 2m17s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 4m30s
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Successful in 15m19s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 16m25s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 38m4s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 6m5s
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Successful in 23m8s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 38m24s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 08:15:18 -05:00
Transaction Science
Merge main into wasmQ again
The reader keeps both: main's gates held whole (read_whole, its whole and held fields) and
this branch's callouts and bounds, through one constructor that takes both flags. Q208 and
Q210 say what main says; Q209 keeps the nesting bound of 128. Path lists are the union.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 07:43:40 -05:00
Transaction Science
wasmQ on the one verify path: one verdict on every surface, and wasmQ receipts in the corpus
A wasmQ job is checked where every job is (engine::job::check): the engine holds it to
the profile's form (engine::wasmq, quantum-wasmq section 6.5, now nineteen numbered
rules), and the provider protocol's section 8.4 gains the reason wasmq_form. So
`wai-quantum verify` and its --json and --lines, the service, both MCP servers, the
Python package, the desktop app, a view and a page give a wasmQ job one verdict, its
text read as section 8.2 reads every job's. Beside the verdict, `wasmq` states the
outcome, each rule broken, and the host's unsealed words, which change no verdict.

- The command line no longer dispatches a wasmQ job before reading it: the UTF-8 check,
  --lines, text_refusal and --json apply as to every job; --history is refused for one,
  with or without --json; --bundle adds `bundle` and `reproduced` to the JSON verdict,
  and compares the contract in its canonical form (4.0 is 4).
- The MCP tool's wasmQ branch, and its schema branch, are gone: job::verdict answers.
- wai-wasmq's verify is a view of the engine's check, and the runner takes the
  profile's constants from the engine, so a run writes what a verifier holds it to.
- The receipts corpus holds six wasmQ jobs the command line sealed and fourteen crafted
  from them; the second verifier gains wasmq_form, written in Python from section 6.5
  without the reference, and a plant (wasmq-unchecked) the differential catches.

Each change has a test that fails on the merge commit: the engine's wasmq_verdict, the
command line's verify and wasmq tests, the view's, the page build's, the desktop app's,
the Python package's corpus test, wai-wasmq's respelt bundle, and the differential.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-07 07:41:40 -05:00

2026-11-06

Transaction Science
Merge main into wasmQ: #660 single verify path, keeping the bounded read
Conflicts resolved by taking both sides; wasmQ joins the single path in the commits that follow.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-06 23:42:31 -05:00
Transaction Science
wasmq: a verdict is the sealed content's, with the host's unsealed words noted beside it, and verify reads a job within a size
All checks were successful
WAI examples / WAI examples · portable · linux (pull_request) Successful in 1h3m14s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 1h12m4s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m46s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 53s
wai-quantum service / service energy · linux packages (pull_request) Successful in 1m38s
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Successful in 1m4s
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Successful in 25m49s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m43s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 42s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m42s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 5m23s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 14s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m3s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m28s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 18m42s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 26m26s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 3m10s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m7s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 39s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 23m20s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 51s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m27s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 37s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 2m2s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 2m29s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 3m41s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 4m22s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m39s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h39m55s
- A body's status and method, and any member nothing seals, are the host's word: the verdict
  takes nothing from them, so that every surface that checks a job gives the same one. Where
  they differ from what is sealed, or are missing, verify and the MCP tool say so beside the
  verdict ("the host's unsealed status says "done"; the sealed result says "fault""), and the
  outcome reported is the sealed result's. A receipt's other members were already ignored.
  §6.4 and §6.5 say so.
- verify reads at most 1 GiB, more than any job holds, and refuses a file past it by its
  length before reading it, whatever the job's kind; standard input is read no further.
- mutations.py covers both: 82 checks.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-06 08:45:37 -05:00
Transaction Science
wasmq: a reader bounds a program as it reads it, verify holds the contract and the seal to their forms, and every fault has a vector
Some checks failed
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · a scripted host (pull_request) Has been cancelled
wai-quantum wasmQ / does this change touch it (pull_request) Has been cancelled
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · linux (pull_request) Has been cancelled
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · macos (pull_request) Has been cancelled
wai-quantum wasmQ / the reference modules rebuild to their modules of record · linux (pull_request) Has been cancelled
wai-quantum wasmQ / interpreter and vectors under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Has been cancelled
wai-sink-android native sink library / does this change touch it (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / does this change touch it (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI Studio / does this change touch it (pull_request) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
A second review of #659 found ways for one envelope to still have two outcomes, for a host
to be asked more than it could do before anything was refused, and for verify to call a job
of any contract one of the profile's. Each has a test that failed on the reviewed code and
passes here; the text, the vectors and the code change together.

The reader
- A program is read within bounds checked as it is read (§4.8): its text (1 MiB), its nesting
  (128, for every reading of a program: a bracket nested 100,000 deep overflowed the stack),
  its qubits, its bits and any one value's (2^20), its steps (2^21), the bits its calls pass
  (2^23), and the work of reading it (2^26). On the reviewed code a one-line program held
  4 GiB, another 2 GiB, a third took twelve minutes to read, and none was refused.
- A program that measures nothing has its own bits as its outcome; no qubit is read for it.

What a run asks of its host
- The modules of a bundle hold at most 512 KiB among them, a body at most 16 KiB: thirty
  modules of 4 MiB held gigabytes on any engine, and the native engine compiled a 3 MB body
  with 1.6 GB. The interpreter prepares nothing it does not run.
- The work counts each call a callout makes into its module, its bits, each instance's
  calls and bytes, the modules' compiling, and the most fuel a run may be given. A page a
  module grows is charged 1024 fuel, as zeroing it costs; the default run budget is 2^34.
- A determined measurement is the sign of the stabilizers' product, found a machine word of
  rows at a time: 6 ms where it took 9.6 s at the most qubits, the same outcome.
- The native engine makes a run's calls on one thread, not a thread for each.
- A frame's weight counts the operands its body holds: 3840 results of calls held across a
  call ran the native stack out before the profile's limit.

verify
- A job is read from its text strictly: a member twice, or a number a double does not hold
  exactly, is refused. The contract is held to §2.2, the receipt to the seal's form, and the
  fuel to what the instances, the calls and a fault's phase could be given. The seal is
  checked by the receipt alone, and only in its form: a key of other characters panicked.
- The MCP server's verify_quantum_result judges a wasmQ job as the command line does.
- --history is refused for a wasmQ job; a program's flags are refused with an envelope, and
  an envelope's with a program, where each was ignored. A transcript is written and replayed
  a call at a time, its lines bounded, and a replay states the record's digest.

Vectors and tests
- 20 more run vectors: every fault reason, phase and budget, cabi_post, each way a list
  result is not one, a signed argument, two modules made in order, a program that measures
  nothing. A refusal's line carries the code the host computed.
- tests/reading.rs counts what a reader holds; the review tests reach the engines they
  name; a module at the profile's limits is compiled and run on every engine.
- mutations.py removes each of 81 checks in turn and names the test that then fails.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-06 07:59:32 -05:00

2026-11-05

Transaction Science
wasmq: a host can hold and finish what it opens, and verify holds a result to its form under any key
All checks were successful
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Successful in 9m10s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 23m7s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 28s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m43s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m46s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 2m56s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 25m4s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m13s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Successful in 19m38s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 3m47s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 16m14s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 16m22s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m38s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 34s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 18m35s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 16m13s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 2m0s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 11m45s
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Successful in 36s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m32s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Successful in 33m39s
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Successful in 28s
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Successful in 1m23s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m50s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m24s
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Successful in 3m21s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Successful in 2m46s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 19m17s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 25m14s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h39m43s
A sweep of the families a review found, beyond what it found. Each has a test that failed
first, or a measurement; the text, the vectors and the code change together.

What fuel does not count
- One envelope still had two outcomes. Twenty modules of 256 MiB sealed `ok` on a native host
  and ended with no receipt on wasm32. A register of a million bits and 4096 shots, under 900
  bytes, made a job of 4 GB from 15 GB of memory on a native host and aborted on wasm32. A
  prior of 1.5 GiB packed on one and aborted the other.
- A run could ask for more than any host would finish, at no fuel: a random measurement at
  the most qubits takes about 4 ms, and a program may hold millions of them, for each of a
  million shots.
- A reader now bounds these from the bundle alone, before anything runs (§2.3, §4.7, §4.8): 128
  MiB for an envelope, 4096 pages among a bundle's modules, 2^21 steps for a program, 2^28 bits
  of results, and 2^42 operations of work, whose weights are measured: a call into a module is
  2^16, for the thread the native engine gives it. A test holds the interpreter to every limit
  at once under wasm32, and at a 64th of the work limit the reference would take at most about
  two hours at it. A module's old instance is dropped before its next is made.

A job under any key
- verify called 42 of 45 results this profile never writes "a job the profile writes", when
  sealed under another key: another shots or seed than the contract's, members the text does not
  define, fuel that did not add up, a fault of no phase or module. It now holds the request and
  the result to exactly what §6.4 and §6.2 give, and to the contract. Counts that add past 2^64
  no longer panic where overflow is checked.

A record
- A replay took a shot the run does not have, and shots out of order. It refuses them, and
  states the record's digest, the one a receipt seals, since each call shows only itself and a
  record with a call left out still replays.
- A transcript's line with a member missing or of another type was read as shot 0 and no fuel. It
  is refused. A file past a limit is refused before it is read whole.

Tests
- tests/sweep.rs, and a seeded fuzz of jobs and records in tests/fuzz.rs: a changed job does not
  hold with its envelope, and neither panics.
- 59 vectors: four more refusals, each one defect from one that is accepted.
- 56 mutations of the checks are each caught. Four survived a first run because their tests could
  not fail for the check named, and those tests were repaired.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-05 18:12:23 -05:00
Transaction Science
wasmq: the command line's README runs its wasmQ example, and its translation holds the section
The documentation check failed on this branch: the README's wasmQ block neither ran nor
said why it could not, and the zh-CN page lacked the section, so its code differed from
the English page's. The example now runs on the conformance vectors' run in the open, and
the vectors hold the parity checks its decoder reads, so a reader has every file it names.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-05 17:26:06 -05:00
Transaction Science
wasmq: one envelope gives one receipt on every engine, verify names the signer, and the profile refuses what it cannot run the same
Some checks failed
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum verdicts and repairs / the intent set and the verdict under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Has been cancelled
wai-quantum views in agent hosts / views · a scripted host (pull_request) Has been cancelled
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · linux (pull_request) Has been cancelled
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · macos (pull_request) Has been cancelled
wai-quantum wasmQ / the reference modules rebuild to their modules of record · linux (pull_request) Has been cancelled
wai-quantum wasmQ / interpreter and vectors under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-quantum for Python / python · linux (pull_request) Has been cancelled
wai-quantum verdicts and repairs / verdicts, repairs and the intent set · linux (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · GPU, Vulkan (thor) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Has been cancelled
A review of the profile found ways for one envelope to seal two receipts, for an edit
outside the signature to verify, and for malformed input to end in a panic. Each has a
test that failed on the reviewed code and passes here (tests/review.rs, tests/fuzz.rs).

One envelope, one receipt
- The host reaches a module's memory only through the export named `memory`, on every
  engine; a bundle whose callouts or priors need a memory the host cannot reach, or lack
  `cabi_realloc`, is refused on reading (W015). Exports the host calls have exact types
  (W012), and a contract names exactly one callout for each extern, in the order declared.
- The call-depth count is replaced by a weighted stack: each call adds the calling
  function's weight (576 + parameters + results + locals + the bytes of its code entry),
  the limit is 2^23, and the fault is `stack_exhausted`. An indirect call adds the weight
  before the table is read, so the reason is the same on every engine. The native engine
  runs each call on a thread with a stack of its own, and a test holds it to eight bytes
  for each unit of weight.
- The interpreter reads an argument as a value of its parameter's type, and refuses a body
  that does not end.
- Profile v1 is the Clifford gates and the `stabilizer` method, to 32,768 qubits; a program
  outside that is refused on reading (W016). The state-vector method is left out of the
  profile, and the text says so. A measurement or reset draws from the shot's integer
  stream only when its outcome is random, and the text states it.

What a receipt says, and what verify checks
- verify names the signer (did:key) and the outcome, holds the job body to the members the
  text defines, and refuses a body whose status or method differs from the signed result.
- A fault's free text and the accuracy note are out of the signed result; a prepared
  module's digest is out too, since the text does not determine its bytes.

Malformed input
- profile::check scans a module without a validator, then validates it under the pinned
  feature set and finishes every body; a module, envelope or program changed at random is
  refused or runs the same on every engine, and none ends in a panic.
- Limits are explicit and each is tested at its largest value and one more (W010); what
  pack accepts, every engine can instantiate.
- A program input, seed or budget a double cannot hold is refused (W017), not changed.

Command line
- Builds again without the `providers` feature. `pack-wasmq` takes the global `--input`
  and orders callouts itself; `verify` prints the signer and the outcome.

Vectors and CI
- 55 vectors: every code W001 to W017 has a refusal vector, each refusal has a repaired
  twin that is accepted, and the committed files must equal the ones generated.
- The wasmQ workflow runs on a change to the simulators, and checks that every test file
  ran; the command line's workflow runs on a change to the wasmQ crate or its vectors.
- The text no longer describes other systems; the comparative-prose check gains the
  pattern that sentence passed.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-11-05 16:50:28 -05:00
Transaction Science
wasmq: the deepest frames the profile allows are shown to be real, and the verbs are in the command line's README
Some checks failed
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been cancelled
wai-pack / wai-pack · dependency licences (pull_request) Has been cancelled
wai-quantum command line / command line · macos (pull_request) Has been cancelled
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Has been cancelled
wai-quantum editors / editors · macos (pull_request) Has been cancelled
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Has been cancelled
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum Metal member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Has been cancelled
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · linux-arm64 (pull_request) Has been cancelled
wai-quantum pulse and dynamics / the same bits · macos (pull_request) Has been cancelled
wai-quantum for Python / python · macos (pull_request) Has been cancelled
wai-quantum-qpu / credentials in the keychain (macos) (pull_request) Has been cancelled
wai-quantum extension points / the registry and the example · linux-arm64 (pull_request) Has been cancelled
wai-quantum service / service · macos (pull_request) Has been cancelled
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been cancelled
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been cancelled
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux-arm64, release (pull_request) Has been cancelled
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been cancelled
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · macos (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Has been cancelled
- The call-depth test now holds 4000 locals live across each call (read from memory the
  callee writes, so no compiler can make them again after the call), at the full depth, on
  both engines, and shows that the native engine's own limit, set to 1 MiB, stops the same
  call: the stack limit the profile sets is what lets it through.
- The command line's README and header describe pack-wasmq, check-wasmq, run and verify of
  an envelope.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-11-05 15:00:27 -05:00
Transaction Science
wai: wasmQ, an OpenQASM 3 program and the WebAssembly its externs call, run the same everywhere, metered and receipted
A new capability, wai.quantum.wasmq (extensions/quantum-wasmq.md, its WIT beside it): one
WAI1 envelope carries an OpenQASM 3 program, the WebAssembly modules that define its
`extern` functions and their priors, each pinned by BLAKE3 in a canonical contract.

- The profile: a core Lime1 module that imports nothing, bounds its memory and has no start
  function, threads, vectors, references or growing table, each rule a refusal code.
- The prepared module meters its own fuel at the start of each run of instructions, counts
  its own call depth and returns only canonical NaNs, so any engine runs it alike. The fuel
  equals the pinned wasmtime's own default count.
- Two engines, the pinned wasmtime and an interpreter of the crate's own that also runs on
  wasm32, agree on every instruction, charge, trap and fault.
- The reader takes extern calls as steps when asked (qasm::read_callouts); its existing
  types are unchanged.
- A run seals the engine's job receipt with the fuel, the modules' digests, a digest of
  every call and the fault; a callout over budget ends in a signed fault receipt.
- wai-quantum pack-wasmq, check-wasmq, run ENVELOPE.wai (--engine, --transcript, --replay)
  and verify --bundle.
- Reference modules from the engine's own decoder and atom planner, modules of record built
  on x86_64 Linux; vectors in quantum-conformance/wasmq/; a workflow that runs them on
  linux, macOS and wasm32, and rebuilds the modules.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-05 14:47:47 -05:00