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
Owner

Re-landed on main as one commit, 2593c1f94 (2026-11-09), under the land-it model. It had five review rounds; the last found no high or critical issue, and its mediums were fixed on the branch. The four CI reds at 849b814dc were fixed in 39fdb517a; the jetson-hub GPU leg was main's CUDA/wgpu bug, fixed by afe90420d. One conflict with main's reaction clock, in estimate::verify: evaluate and clock_of are combined, and a failure goes through this PR's rerun_error verdict. Passed on the Framework before the push: the wai-wasmq tests; 83 vectors on all three engines with one digest; clippy -D warnings; the engine built with quantum_engine alone and with quantum_receipt; the wai-quantum library's 1,421 tests; the CLI tests; build.sh --check and --sources; wai-rs cli_registry. Main's CI runs on the push. Closed.


A hybrid quantum program runs classical code between its gates: it decodes a syndrome, plans atom moves, updates a parameter. OpenQASM 3 declares such a function with extern and leaves its body, binary form and linking outside the language. This adds wasmQ (wai.quantum.wasmq), which packs the program and the WebAssembly that defines its externs into one content-addressed WAI envelope. A run gives the same result bytes and fuel on every host and seals the engine's job receipt.

What runs

  • extensions/quantum-wasmq.md (normative) and extensions/quantum-wasmq.wit.
  • wai/wai-wasmq:
    • the profile: Lime1, nothing imported, bounded memory, a module of at most 512 KiB and a body of at most 16 KiB, refusal codes W001–W017;
    • what a run asks of its host, bounded from the bundle alone before anything runs (§4.8): a program is read within bounds checked as it is read (its text, nesting, qubits, bits, steps, the bits its calls pass, and the work of reading it); the memory and code among a bundle's modules; an envelope's size; the result; and the work of the steps, the calls into modules, the instances, compiling and the most fuel a run may be given. So an envelope that opens on one host opens and finishes on every host, a 32-bit one among them;
    • fuel defined on the module as written (a page grown charged at what zeroing it costs), and a weighted stack whose frames count the operands a body holds; the fault is stack_exhausted;
    • the prepared module, which charges its own fuel, weighs its own stack and canonicalises NaNs;
    • two engines: the pinned wasmtime 50.0.1, its run's calls on one thread, and an interpreter of the crate's own that also runs on wasm32;
    • the envelope, the runner, receipts, transcript replay, the reference programs and the vectors.
  • Profile v1 is the Clifford gates and the stabilizer method, to 32,768 qubits. The tableau finds a determined outcome a machine word of rows at a time: milliseconds where it took seconds at the most qubits, the same outcome.
  • The reader takes extern calls as steps when asked (qasm::read_callouts, and read_callouts_within with bounds); the nesting bound (Q130) is main's, landed there as its own commit (15ae7d457) and merged here: every program within it and Q209 reads on a 1 MiB stack, natively and on wasm32; Q209 keeps its released meaning.
  • The CLI:
    • wai-quantum pack-wasmq and check-wasmq;
    • run ENVELOPE.wai with --engine, --transcript and --replay, each record written and read a call at a time; flags of the other kind of run are refused;
    • verify JOB --bundle ENVELOPE.wai, which also runs the envelope again and compares byte for byte (with --json, the verdict says bundle and reproduced).
  • One verdict on every surface. A wasmQ job is checked on the one path every job is (engine::job::check, #660's), so wai-quantum verify and its --json and --lines, POST /v1/verify, both MCP servers, the Python package, the desktop app, a view and a page give it the same verdict. Its text is read as the provider protocol's §8.2 reads every job's. §8.4 gains the reason wasmq_form: the job breaks one of quantum-wasmq §6.5's thirty-five numbered rules, which hold the contract, the result, the fuel, the fault, the counts and every tie the writer keeps between them to the profile by what is sealed alone, under whichever key. Beside the verdict, wasmq states the outcome, each problem with the rule it breaks and the host's unsealed words (notes, which change no verdict). The form lives in the engine (engine::wasmq); the runner takes the profile's constants from there.
  • Receipts of record. The receipts corpus holds six wasmQ jobs the command line sealed and forty-four crafted from them: forty each breaking the one rule of §6.5 it names and no other, one rule each from 2 to 35 at least (rule 1 cannot be broken alone, nor rule 27, which rule 32 holds too), two breaking two, and two the same sealed content respelt or under another envelope. The second verifier states wasmq_form and the wasmq statement, each written in Python from §6.5 by a reader who had not seen the reference, with a plant (wasmq-unchecked) the differential catches.
  • What backs "the two verifiers agree". A change of one member is caught by the seal before any rule of the form is read, so the one-member stage alone cannot hold the verifiers to the form's rules. Four stages do, each comparing the set of rules each verifier states broken as well as its reasons: the corpus (each crafted receipt that names one rule breaks that rule alone in both); the rules stage, 1140 sealed cases (212 at the bounds of the 35 rules, each verdict written by hand, and 928 members of each genuine job given a value of another kind: half a unit off, below 0, past 2^53 − 1, null, a digest in upper case); the labelled stage, the second verifier's own 261 hand-labelled cases run through the reference; and the 12,802 one-member changes. Weakenings: tools/wasmq_mutants.py weakens each rule in each verifier from its code (each check dropped, each comparison moved by one, a count or a digest read loosely, a null member read as absent and the reverse, the most of many read as the least), and the differential catches every one but those no input can tell from the text, each listed in the tool with its reason: the second verifier's 277 are all caught; the engine's 185 are all caught but twelve (a bound one past 2^53 − 1, which a count never reaches; a check inside a rule that another check of the same rule already makes; the fault, read only as an object, so that null and absent are both none). None survives.
  • Reference modules built from the engine's own code: the qLDPC decoder and the atom rearrangement planner, modules of record built on x86_64 Linux that CI rebuilds and compares.
  • The registry entry, with SPEC §5, REGISTRY.md, capabilities.json and vocab regenerated.
  • scripts/check-wasmtime-pin.py also requires every crate under wai/ that embeds wasmtime to pin =50.0.1.
  • A workflow, wai-quantum-wasmq.yml, runs the crate on linux and macOS, runs the interpreter and the vectors under wasm32-wasip2 on the pinned wasmtime, rebuilds the modules of record, and checks that every test file ran.

Proved, across hosts. wasmq_vectors verify over the 83 vectors gives the same computed digest, ba6eef1d…0664, on the native engine and the interpreter, on the module as written and prepared, on macOS arm64, Linux x86_64 and Linux aarch64; and one wasm32-wasip2 binary (sha256 1621e2ca…f485) under wasmtime 50.0.1 on Linux x86_64 and on macOS arm64. The new vectors: bits nothing writes, a block's own bit, and a measure with no bit refused.

Tests, at the head before the push:

  • Linux x86_64: the wai-quantum library with --features full (1404) and its 73 integration tests, reader_stack under wasm32 as well; wai-wasmq (92); the command line (127, and its flags checked in a debug build); the service (52); the view (5). None failing.
  • macOS arm64: the library (1405) and its 73 integration tests, wai-wasmq (92), the command line (125, and its flags in a debug build), the service (54), the view (5). None failing.
  • The receipts differential, on both: 206 receipts and the manifest agree three ways; the 40 one-rule receipts each break their rule alone in both; 1140 rules-stage cases and 261 labelled cases as written, the same rules broken by both; 12,802 one-member changes agree. The second verifier's self-test: 739 checks, none failing.
  • The weakenings, on Linux aarch64 and macOS arm64 alike: the second verifier's 277 all caught; the engine's 185 all caught but the twelve listed.
  • Under wasm32-wasip2 (wasmtime 50.0.1): every program at the reader's bounds reads; verify at its bound (384 MiB, 2^22 values) and one past it gives the native build's verdict, byte for byte. Natively it holds 780 MiB at 384 MiB of text and 310 MiB at 2^22 values.

Round five. The review of d8281364 found 24 (3 refuted). Each fix has a test that fails on that head, run on Thor against d82813645 with round five's tests, cases and corpus:

  • the command line's MCP server ends its session on a line that is not UTF-8;
  • verify calls a job one byte past its new bound valid;
  • the service ends on a sealed gradient of a 2000-term sum and on a plain one;
  • the round-four verifiers give 70 disagreements with round five's rules cases.

The fixes:

  • The shared reader (6, 7, 24), on main first (15ae7d457), merged here.
    • Nesting is counted as the text nests: operator, index and ++ chains, brackets in types, and a call's body read in its place, its deepest point charged at the call.
    • An else if ladder is read in a loop at its if's depth (1024 arms at most).
    • Binary operators are read by precedence climbing.
    • Every program within Q130 and Q209 reads on a 1 MiB thread in a release build and under wasm32. The deepest needs about 455 KiB.
  • Verification cost (5, 22, 23, 10).
    • A check holds one reading at a time: the strict tree is dropped before the value is built, and the value is reused.
    • A surface bounds a job's values beside its bytes (one, and 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, and gives the native build's verdict at that bound under wasm32. CI checks it there too.
    • The service reads 4 MiB and 2^19 values. Its check, and a re-run's reading of its program, run in spawn_blocking, two at a time.
  • Rules (1, 2, 3, 4, 12, 13, 14, 15).
    • Rule 20: the most one call used belongs to a returned call when it exceeds the stopped call's.
    • Rule 21: 3 per prior passed, plus the export a lifecycle fault shows and the set the fault stopped.
    • Rule 25: the stopped call's fuel on top.
    • Rule 29: a name's length counts characters.
    • Rule 30: 4097 for each call made.
    • Rule 31: the envelope's whole length.
    • New rules:
      • 32: calls per shot;
      • 33: a prior passed whole fits one per_instance;
      • 34: a fault's least fuel by its reason (1; 2 for bad_result; 788 for stack_exhausted);
      • 35: with no call returned, the transcript is the run's end.
    • Rule 12: qubits from 1.
    • §6.5 says what it leaves free, and why. 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 rule-29 case where it shows.
    • Rule 29 counts code points in both verifiers.
    • 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 bound with too_large by its id.
    • A job given parsed is unreadable past 127 however deep, judged before the message is read whole: through a view, either MCP server, or the service's members form.
    • The command line's MCP server answers a non-UTF-8 line with -32700 and reads on.
  • Also: a debug build of run refused its own flags (two flag groups shared one name).

Round four. The review found 22 (1 refuted); each is fixed with a test that fails on round three's merge of main (48d381ca0), each for its own reason (the base run's log: every new test fails there, the reader's with Q209 for Q130 and a bare measure read, the command line's with "not JSON" and the research tools' reader, the service's with 400, 422 and not_a_job for a job given as an object):

  • Rules from the writer (§6.5 rules 20 to 31). Every tie the runner keeps between members is a numbered rule: 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 (SPEC-GAP W9 is gone), a prior's in a module with one, a bad_result in a call or a prior; a lifecycle fault within the instances' fuel, in shot 0 for one instance a run, before any call in shot 0; a fuel fault used its whole limit; and §4.8's products and sums over what a receipt shows (a shot's bits, the shots' bits, the work, the frames). §6.5 says what it leaves free, and why. The two hand-written expectations that called contradictions valid are flipped. Rule 6, 8, 14 and 18 no longer repeat bounds other rules hold. Every problem names its rule (rule 19: ...) in both verifiers.
  • One receipt per rule. The corpus has a crafted receipt for each of rules 2 to 31, each breaking that rule alone: the differential holds the reference to that rule alone, and the second verifier to stating only it.
  • Evidence, driven by weakenings. tools/wasmq_mutants.py weakens each rule in each verifier from its code (each check dropped, each comparison moved by one, a count or a digest read loosely, a null member read as absent and an absent one as null): on Linux x86_64 and macOS arm64 alike, the second verifier's 244 weakenings are all caught but one no input can tell from the text (rule 7's len(callouts) > 0: rule 7's naming of every module by a callout already refuses a contract with none); the engine's 170 are all caught but ten no input can tell, each listed in the tool with its reason (a bound one past 2^53 − 1, which a count never reaches; a check inside a rule that another check of the same rule already makes; the fault, read only as an object, so that null and absent are both none). None survives. The differential now compares the set of rules each verifier states broken on every case, and its rules stage holds every member of each genuine job given a value of another kind (half a unit off, below 0, past 2^53 − 1, null, a digest in upper case), sealed again. The second verifier's own 215 hand-labelled cases (receipt_verify.py --wasmq-cases) run through the reference in a labelled stage, and the engine's cases are in the rules stage: one labelled corpus binds both. Nightly in CI.
  • The outcome, exactly (§6.1). A shot's outcome is every bit the program declares at its top level, written or not; a block's own bits are in none; a measurement in a program that calls externs names its bit (Q324). Vectors pin bits nothing writes and a block's bit, and refuse a measure with no bit: 83 vectors, digest ba6eef1d…0664.
  • One answer, every kind of job. An estimate or an algorithm's answer with no receipt, or no job, is that reason alone on the command line, its MCP tool, POST /v1/verify and the service's tool; one is run again only once its receipt holds (job::answer_of), and the service runs an algorithm's answer again as the command line does, its tool alike given text, the job or its members. POST /v1/verify and /mcp read 64 MiB, and a longer job is too_large (§8.4), as is a file past verify's 1 GiB. A job 127 deep reaches its verdict through a view's request and an MCP call; a parsed job deeper is unreadable. verify prints the verdict of text that does not read and of no job. The Python package gives a verdict for every str and dict, lone surrogates among them.
  • Text and API. The OpenAPI document says 200 for every body; Q209 keeps its released meaning and nesting past 128 is Q130; three Breaking: lines (the 200, the nesting refusal, Python's str).
The weakenings, per rule
rule second verifier: made / caught / equivalent engine: made / caught / equivalent
1 16 / 16 / 0 1 / 1 / 0
2 2 / 2 / 0 2 / 2 / 0
3 9 / 9 / 0 —
4 1 / 1 / 0 1 / 1 / 0
5 7 / 7 / 0 7 / 7 / 0
6 19 / 19 / 0 13 / 11 / 2
7 12 / 12 / 0 6 / 6 / 0
8 11 / 11 / 0 12 / 11 / 1
9 1 / 1 / 0 —
10 3 / 3 / 0 1 / 1 / 0
11 9 / 9 / 0 2 / 2 / 0
12 4 / 4 / 0 5 / 5 / 0
13 15 / 15 / 0 6 / 6 / 0
14 12 / 12 / 0 13 / 12 / 1
15 12 / 12 / 0 4 / 4 / 0
16 8 / 8 / 0 5 / 4 / 1
17 15 / 15 / 0 5 / 5 / 0
18 35 / 35 / 0 31 / 29 / 2
19 15 / 15 / 0 6 / 5 / 1
20 37 / 37 / 0 8 / 8 / 0
21 22 / 22 / 0 5 / 5 / 0
22 15 / 15 / 0 1 / 1 / 0
23 11 / 11 / 0 2 / 2 / 0
24 5 / 5 / 0 1 / 1 / 0
25 12 / 12 / 0 3 / 3 / 0
26 8 / 8 / 0 3 / 3 / 0
27 9 / 9 / 0 5 / 5 / 0
28 23 / 23 / 0 6 / 6 / 0
29 8 / 8 / 0 6 / 6 / 0
30 8 / 8 / 0 3 / 3 / 0
31 13 / 13 / 0 2 / 2 / 0
32 12 / 12 / 0 3 / 3 / 0
33 7 / 7 / 0 2 / 2 / 0
34 11 / 11 / 0 2 / 2 / 0
35 16 / 16 / 0 4 / 2 / 2
20 to 35: the fault, read once for all — 5 / 3 / 2

Round three. The review found 22; each is fixed with a test that fails on round two's head (ebc130948):

  • the shared reader held each for loop's whole range before its first statement: fixed on main as its own commit (2c8044b1a), merged here;
  • rule 1's walk was quadratic in a member's name: linear now; a whole number past 2^53 - 1 counted as a count: no longer;
  • a stopped call is one of the calls made (two contradictions §6.4 forbids are now rules);
  • the writer packed budgets past 2^39 that every verifier refuses: refused at pack time (W017);
  • the program's qubits and the order of its bits are defined, and a vector pins both;
  • unreadable text, no job and no receipt are one verdict on every surface (the service gives a 200 verdict, the desktop app and the page a verdict, not an error); the service's tool reads the body it is given; Python judges a dict as its text and reads a marked string as text;
  • --lines reads each line on its own; verify says a job it did not judge was not judged and runs no envelope for it, and --json --bundle keeps its schema;
  • a wasmQ job that names another schema still goes to its own form; the hybrid reading's refusal for controls offers no method it cannot use;
  • the text says which surfaces read text and which get a parsed job, that a member is present whatever its value, and what fuel.callouts lists.

Main merged. For #660 (4b7ad27f5); before round two's landing (c8f4eca3a); for the reader's loop fix (a1fbe2e2a); for wai-quantum 0.9.0 (7a029243c), to which wai-wasmq is re-pinned: the reader keeps main's gates held whole beside this branch's callouts and bounds, one constructor taking both; twice for round four, before it (48d381ca0) and before its push (fbd335355); and once for round five, after the reader's nesting landed on main (15ae7d457), its counting taken whole and threaded through this branch's callout reader.

Failing first. Each item has a test that fails on the first merge of main (4b7ad27f5), each for its own reason: verify --json printed the text report for a wasmQ job (the differential could not read it); --lines printed the text report for a file of one wasmQ job, and judged a job whose counts fall short valid; 32.0 for a sealed 32 was refused by wasmQ's own reader where every other surface reads it as the same number; the MCP tool, the view, the page build, the service and the engine itself found the crafted wasmQ jobs valid. mutations.py removes each of 98 checks in turn, the form's among them where they moved to the engine. A full run caught 97: the instance-budget check of a fault survived, because the stopped-call rule and rule 14 now hold a call fault to the call budget and its tests made only call faults; a test of a fault in an init holds it now, and that entry is caught: 98 of 98.

Not done. Nothing here runs on a provider's machine; the bring-your-own-quantum boundary is unchanged, and run --provider refuses an envelope. The receipt reads no energy meter; fuel is the measure of work, not time. verify names the key that signed and leaves whether to trust it to the reader, as the engine's job receipt does; without the envelope it checks a job's form and agreement with its contract, and only running the envelope again shows that a result is the one it gives. The frame bound of the native engine is held by a test over the heaviest constructs, not proved for every module.

🤖 Generated with Claude Code

**Re-landed on main as one commit, 2593c1f94 (2026-11-09), under the land-it model.** It had five review rounds; the last found no high or critical issue, and its mediums were fixed on the branch. The four CI reds at 849b814dc were fixed in 39fdb517a; the jetson-hub GPU leg was main's CUDA/wgpu bug, fixed by afe90420d. One conflict with main's reaction clock, in estimate::verify: evaluate and clock_of are combined, and a failure goes through this PR's rerun_error verdict. Passed on the Framework before the push: the wai-wasmq tests; 83 vectors on all three engines with one digest; clippy -D warnings; the engine built with quantum_engine alone and with quantum_receipt; the wai-quantum library's 1,421 tests; the CLI tests; build.sh --check and --sources; wai-rs cli_registry. Main's CI runs on the push. Closed. --- A hybrid quantum program runs classical code between its gates: it decodes a syndrome, plans atom moves, updates a parameter. OpenQASM 3 declares such a function with `extern` and leaves its body, binary form and linking outside the language. This adds **wasmQ** (`wai.quantum.wasmq`), which packs the program and the WebAssembly that defines its externs into one content-addressed WAI envelope. A run gives the same result bytes and fuel on every host and seals the engine's job receipt. **What runs** - `extensions/quantum-wasmq.md` (normative) and `extensions/quantum-wasmq.wit`. - `wai/wai-wasmq`: - the profile: Lime1, nothing imported, bounded memory, a module of at most 512 KiB and a body of at most 16 KiB, refusal codes W001–W017; - what a run asks of its host, bounded from the bundle alone before anything runs (§4.8): a program is read within bounds checked as it is read (its text, nesting, qubits, bits, steps, the bits its calls pass, and the work of reading it); the memory and code among a bundle's modules; an envelope's size; the result; and the work of the steps, the calls into modules, the instances, compiling and the most fuel a run may be given. So an envelope that opens on one host opens and finishes on every host, a 32-bit one among them; - fuel defined on the module as written (a page grown charged at what zeroing it costs), and a weighted stack whose frames count the operands a body holds; the fault is `stack_exhausted`; - the prepared module, which charges its own fuel, weighs its own stack and canonicalises NaNs; - two engines: the pinned wasmtime 50.0.1, its run's calls on one thread, and an interpreter of the crate's own that also runs on wasm32; - the envelope, the runner, receipts, transcript replay, the reference programs and the vectors. - Profile v1 is the Clifford gates and the `stabilizer` method, to 32,768 qubits. The tableau finds a determined outcome a machine word of rows at a time: milliseconds where it took seconds at the most qubits, the same outcome. - The reader takes extern calls as steps when asked (`qasm::read_callouts`, and `read_callouts_within` with bounds); the nesting bound (`Q130`) is main's, landed there as its own commit (`15ae7d457`) and merged here: every program within it and `Q209` reads on a 1 MiB stack, natively and on wasm32; `Q209` keeps its released meaning. - The CLI: - `wai-quantum pack-wasmq` and `check-wasmq`; - `run ENVELOPE.wai` with `--engine`, `--transcript` and `--replay`, each record written and read a call at a time; flags of the other kind of run are refused; - `verify JOB --bundle ENVELOPE.wai`, which also runs the envelope again and compares byte for byte (with `--json`, the verdict says `bundle` and `reproduced`). - **One verdict on every surface.** A wasmQ job is checked on the one path every job is (`engine::job::check`, #660's), so `wai-quantum verify` and its `--json` and `--lines`, `POST /v1/verify`, both MCP servers, the Python package, the desktop app, a view and a page give it the same verdict. Its text is read as the provider protocol's §8.2 reads every job's. §8.4 gains the reason `wasmq_form`: the job breaks one of quantum-wasmq §6.5's thirty-five numbered rules, which hold the contract, the result, the fuel, the fault, the counts and every tie the writer keeps between them to the profile by what is sealed alone, under whichever key. Beside the verdict, `wasmq` states the outcome, each problem with the rule it breaks and the host's unsealed words (notes, which change no verdict). The form lives in the engine (`engine::wasmq`); the runner takes the profile's constants from there. - **Receipts of record.** The receipts corpus holds six wasmQ jobs the command line sealed and forty-four crafted from them: forty each breaking the one rule of §6.5 it names and no other, one rule each from 2 to 35 at least (rule 1 cannot be broken alone, nor rule 27, which rule 32 holds too), two breaking two, and two the same sealed content respelt or under another envelope. The second verifier states `wasmq_form` and the `wasmq` statement, each written in Python from §6.5 by a reader who had not seen the reference, with a plant (`wasmq-unchecked`) the differential catches. - **What backs "the two verifiers agree".** A change of one member is caught by the seal before any rule of the form is read, so the one-member stage alone cannot hold the verifiers to the form's rules. Four stages do, each comparing the set of rules each verifier states broken as well as its reasons: the corpus (each crafted receipt that names one rule breaks that rule alone in both); the **rules stage**, 1140 sealed cases (212 at the bounds of the 35 rules, each verdict written by hand, and 928 members of each genuine job given a value of another kind: half a unit off, below 0, past 2^53 − 1, null, a digest in upper case); the **labelled stage**, the second verifier's own 261 hand-labelled cases run through the reference; and the 12,802 one-member changes. **Weakenings**: `tools/wasmq_mutants.py` weakens each rule in each verifier from its code (each check dropped, each comparison moved by one, a count or a digest read loosely, a null member read as absent and the reverse, the most of many read as the least), and the differential catches every one but those no input can tell from the text, each listed in the tool with its reason: the second verifier's 277 are all caught; the engine's 185 are all caught but twelve (a bound one past 2^53 − 1, which a count never reaches; a check inside a rule that another check of the same rule already makes; the fault, read only as an object, so that null and absent are both none). None survives. - Reference modules built from the engine's own code: the qLDPC decoder and the atom rearrangement planner, modules of record built on x86_64 Linux that CI rebuilds and compares. - The registry entry, with SPEC §5, REGISTRY.md, capabilities.json and vocab regenerated. - `scripts/check-wasmtime-pin.py` also requires every crate under `wai/` that embeds wasmtime to pin `=50.0.1`. - A workflow, `wai-quantum-wasmq.yml`, runs the crate on linux and macOS, runs the interpreter and the vectors under wasm32-wasip2 on the pinned wasmtime, rebuilds the modules of record, and checks that every test file ran. **Proved, across hosts.** `wasmq_vectors verify` over the 83 vectors gives the same computed digest, `ba6eef1d…0664`, on the native engine and the interpreter, on the module as written and prepared, on macOS arm64, Linux x86_64 and Linux aarch64; and one wasm32-wasip2 binary (sha256 `1621e2ca…f485`) under wasmtime 50.0.1 on Linux x86_64 and on macOS arm64. The new vectors: bits nothing writes, a block's own bit, and a measure with no bit refused. **Tests**, at the head before the push: - Linux x86_64: the wai-quantum library with `--features full` (1404) and its 73 integration tests, `reader_stack` under wasm32 as well; wai-wasmq (92); the command line (127, and its flags checked in a debug build); the service (52); the view (5). None failing. - macOS arm64: the library (1405) and its 73 integration tests, wai-wasmq (92), the command line (125, and its flags in a debug build), the service (54), the view (5). None failing. - The receipts differential, on both: 206 receipts and the manifest agree three ways; the 40 one-rule receipts each break their rule alone in both; 1140 rules-stage cases and 261 labelled cases as written, the same rules broken by both; 12,802 one-member changes agree. The second verifier's self-test: 739 checks, none failing. - The weakenings, on Linux aarch64 and macOS arm64 alike: the second verifier's 277 all caught; the engine's 185 all caught but the twelve listed. - Under wasm32-wasip2 (wasmtime 50.0.1): every program at the reader's bounds reads; `verify` at its bound (384 MiB, 2^22 values) and one past it gives the native build's verdict, byte for byte. Natively it holds 780 MiB at 384 MiB of text and 310 MiB at 2^22 values. **Round five.** The review of `d8281364` found 24 (3 refuted). Each fix has a test that fails on that head, run on Thor against `d82813645` with round five's tests, cases and corpus: - the command line's MCP server ends its session on a line that is not UTF-8; - `verify` calls a job one byte past its new bound valid; - the service ends on a sealed gradient of a 2000-term sum and on a plain one; - the round-four verifiers give 70 disagreements with round five's rules cases. The fixes: - **The shared reader (6, 7, 24)**, on main first (`15ae7d457`), merged here. - Nesting is counted as the text nests: operator, index and `++` chains, brackets in types, and a call's body read in its place, its deepest point charged at the call. - An `else if` ladder is read in a loop at its `if`'s depth (1024 arms at most). - Binary operators are read by precedence climbing. - Every program within `Q130` and `Q209` reads on a 1 MiB thread in a release build and under wasm32. The deepest needs about 455 KiB. - **Verification cost (5, 22, 23, 10).** - A check holds one reading at a time: the strict tree is dropped before the value is built, and the value is reused. - A surface bounds a job's values beside its bytes (one, and 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, and gives the native build's verdict at that bound under wasm32. CI checks it there too. - The service reads 4 MiB and 2^19 values. Its check, and a re-run's reading of its program, run in `spawn_blocking`, two at a time. - **Rules (1, 2, 3, 4, 12, 13, 14, 15).** - Rule 20: the most one call used belongs to a returned call when it exceeds the stopped call's. - Rule 21: 3 per prior passed, plus the export a lifecycle fault shows and the set the fault stopped. - Rule 25: the stopped call's fuel on top. - Rule 29: a name's length counts characters. - Rule 30: 4097 for each call made. - Rule 31: the envelope's whole length. - New rules: - 32: calls per shot; - 33: a prior passed whole fits one `per_instance`; - 34: a fault's least fuel by its reason (1; 2 for `bad_result`; 788 for `stack_exhausted`); - 35: with no call returned, the transcript is the run's end. - Rule 12: `qubits` from 1. - §6.5 says what it leaves free, and why. 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 rule-29 case where it shows. - Rule 29 counts code points in both verifiers. - 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 bound with `too_large` by its id. - A job given parsed is `unreadable` past 127 however deep, judged before the message is read whole: through a view, either MCP server, or the service's members form. - The command line's MCP server answers a non-UTF-8 line with -32700 and reads on. - **Also:** a debug build of `run` refused its own flags (two flag groups shared one name). **Round four.** The review found 22 (1 refuted); each is fixed with a test that fails on round three's merge of main (`48d381ca0`), each for its own reason (the base run's log: every new test fails there, the reader's with `Q209` for `Q130` and a bare measure read, the command line's with "not JSON" and the research tools' reader, the service's with 400, 422 and `not_a_job` for a job given as an object): - **Rules from the writer (§6.5 rules 20 to 31).** Every tie the runner keeps between members is a numbered rule: 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 (SPEC-GAP W9 is gone), a prior's in a module with one, a `bad_result` in a call or a prior; a lifecycle fault within the instances' fuel, in shot 0 for one instance a run, before any call in shot 0; a fuel fault used its whole limit; and §4.8's products and sums over what a receipt shows (a shot's bits, the shots' bits, the work, the frames). §6.5 says what it leaves free, and why. The two hand-written expectations that called contradictions valid are flipped. Rule 6, 8, 14 and 18 no longer repeat bounds other rules hold. Every problem names its rule (`rule 19: ...`) in both verifiers. - **One receipt per rule.** The corpus has a crafted receipt for each of rules 2 to 31, each breaking that rule alone: the differential holds the reference to that rule alone, and the second verifier to stating only it. - **Evidence, driven by weakenings.** `tools/wasmq_mutants.py` weakens each rule in each verifier from its code (each check dropped, each comparison moved by one, a count or a digest read loosely, a null member read as absent and an absent one as null): on Linux x86_64 and macOS arm64 alike, the second verifier's 244 weakenings are all caught but one no input can tell from the text (rule 7's `len(callouts) > 0`: rule 7's naming of every module by a callout already refuses a contract with none); the engine's 170 are all caught but ten no input can tell, each listed in the tool with its reason (a bound one past 2^53 − 1, which a count never reaches; a check inside a rule that another check of the same rule already makes; the fault, read only as an object, so that null and absent are both none). None survives. The differential now compares the set of rules each verifier states broken on every case, and its rules stage holds every member of each genuine job given a value of another kind (half a unit off, below 0, past 2^53 − 1, null, a digest in upper case), sealed again. The second verifier's own 215 hand-labelled cases (`receipt_verify.py --wasmq-cases`) run through the reference in a labelled stage, and the engine's cases are in the rules stage: one labelled corpus binds both. Nightly in CI. - **The outcome, exactly (§6.1).** A shot's outcome is every bit the program declares at its top level, written or not; a block's own bits are in none; a measurement in a program that calls externs names its bit (`Q324`). Vectors pin bits nothing writes and a block's bit, and refuse a measure with no bit: 83 vectors, digest `ba6eef1d…0664`. - **One answer, every kind of job.** An estimate or an algorithm's answer with no receipt, or no job, is that reason alone on the command line, its MCP tool, `POST /v1/verify` and the service's tool; one is run again only once its receipt holds (`job::answer_of`), and the service runs an algorithm's answer again as the command line does, its tool alike given text, the job or its members. `POST /v1/verify` and `/mcp` read 64 MiB, and a longer job is `too_large` (§8.4), as is a file past `verify`'s 1 GiB. A job 127 deep reaches its verdict through a view's request and an MCP call; a parsed job deeper is `unreadable`. `verify` prints the verdict of text that does not read and of no job. The Python package gives a verdict for every str and dict, lone surrogates among them. - **Text and API.** The OpenAPI document says 200 for every body; `Q209` keeps its released meaning and nesting past 128 is `Q130`; three **Breaking:** lines (the 200, the nesting refusal, Python's str). <details><summary>The weakenings, per rule</summary> | rule | second verifier: made / caught / equivalent | engine: made / caught / equivalent | |---|---|---| | 1 | 16 / 16 / 0 | 1 / 1 / 0 | | 2 | 2 / 2 / 0 | 2 / 2 / 0 | | 3 | 9 / 9 / 0 | — | | 4 | 1 / 1 / 0 | 1 / 1 / 0 | | 5 | 7 / 7 / 0 | 7 / 7 / 0 | | 6 | 19 / 19 / 0 | 13 / 11 / 2 | | 7 | 12 / 12 / 0 | 6 / 6 / 0 | | 8 | 11 / 11 / 0 | 12 / 11 / 1 | | 9 | 1 / 1 / 0 | — | | 10 | 3 / 3 / 0 | 1 / 1 / 0 | | 11 | 9 / 9 / 0 | 2 / 2 / 0 | | 12 | 4 / 4 / 0 | 5 / 5 / 0 | | 13 | 15 / 15 / 0 | 6 / 6 / 0 | | 14 | 12 / 12 / 0 | 13 / 12 / 1 | | 15 | 12 / 12 / 0 | 4 / 4 / 0 | | 16 | 8 / 8 / 0 | 5 / 4 / 1 | | 17 | 15 / 15 / 0 | 5 / 5 / 0 | | 18 | 35 / 35 / 0 | 31 / 29 / 2 | | 19 | 15 / 15 / 0 | 6 / 5 / 1 | | 20 | 37 / 37 / 0 | 8 / 8 / 0 | | 21 | 22 / 22 / 0 | 5 / 5 / 0 | | 22 | 15 / 15 / 0 | 1 / 1 / 0 | | 23 | 11 / 11 / 0 | 2 / 2 / 0 | | 24 | 5 / 5 / 0 | 1 / 1 / 0 | | 25 | 12 / 12 / 0 | 3 / 3 / 0 | | 26 | 8 / 8 / 0 | 3 / 3 / 0 | | 27 | 9 / 9 / 0 | 5 / 5 / 0 | | 28 | 23 / 23 / 0 | 6 / 6 / 0 | | 29 | 8 / 8 / 0 | 6 / 6 / 0 | | 30 | 8 / 8 / 0 | 3 / 3 / 0 | | 31 | 13 / 13 / 0 | 2 / 2 / 0 | | 32 | 12 / 12 / 0 | 3 / 3 / 0 | | 33 | 7 / 7 / 0 | 2 / 2 / 0 | | 34 | 11 / 11 / 0 | 2 / 2 / 0 | | 35 | 16 / 16 / 0 | 4 / 2 / 2 | | 20 to 35: the fault, read once for all | — | 5 / 3 / 2 | </details> **Round three.** The review found 22; each is fixed with a test that fails on round two's head (`ebc130948`): - the shared reader held each `for` loop's whole range before its first statement: fixed on main as its own commit (`2c8044b1a`), merged here; - rule 1's walk was quadratic in a member's name: linear now; a whole number past 2^53 - 1 counted as a count: no longer; - a stopped call is one of the calls made (two contradictions §6.4 forbids are now rules); - the writer packed budgets past 2^39 that every verifier refuses: refused at pack time (`W017`); - the program's qubits and the order of its bits are defined, and a vector pins both; - unreadable text, no job and no receipt are one verdict on every surface (the service gives a 200 verdict, the desktop app and the page a verdict, not an error); the service's tool reads the body it is given; Python judges a dict as its text and reads a marked string as text; - `--lines` reads each line on its own; `verify` says a job it did not judge was not judged and runs no envelope for it, and `--json --bundle` keeps its schema; - a wasmQ job that names another schema still goes to its own form; the hybrid reading's refusal for controls offers no method it cannot use; - the text says which surfaces read text and which get a parsed job, that a member is present whatever its value, and what `fuel.callouts` lists. **Main merged.** For #660 (`4b7ad27f5`); before round two's landing (`c8f4eca3a`); for the reader's loop fix (`a1fbe2e2a`); for wai-quantum 0.9.0 (`7a029243c`), to which wai-wasmq is re-pinned: the reader keeps main's gates held whole beside this branch's callouts and bounds, one constructor taking both; twice for round four, before it (`48d381ca0`) and before its push (`fbd335355`); and once for round five, after the reader's nesting landed on main (`15ae7d457`), its counting taken whole and threaded through this branch's callout reader. **Failing first.** Each item has a test that fails on the first merge of main (`4b7ad27f5`), each for its own reason: `verify --json` printed the text report for a wasmQ job (the differential could not read it); `--lines` printed the text report for a file of one wasmQ job, and judged a job whose counts fall short valid; `32.0` for a sealed 32 was refused by wasmQ's own reader where every other surface reads it as the same number; the MCP tool, the view, the page build, the service and the engine itself found the crafted wasmQ jobs valid. `mutations.py` removes each of 98 checks in turn, the form's among them where they moved to the engine. A full run caught 97: the instance-budget check of a fault survived, because the stopped-call rule and rule 14 now hold a call fault to the call budget and its tests made only call faults; a test of a fault in an init holds it now, and that entry is caught: 98 of 98. **Not done.** Nothing here runs on a provider's machine; the bring-your-own-quantum boundary is unchanged, and `run --provider` refuses an envelope. The receipt reads no energy meter; fuel is the measure of work, not time. `verify` names the key that signed and leaves whether to trust it to the reader, as the engine's job receipt does; without the envelope it checks a job's form and agreement with its contract, and only running the envelope again shows that a result is the one it gives. The frame bound of the native engine is held by a test over the heaviest constructs, not proved for every module. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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]>
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
4d3862abdd
- 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]>
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
5170e0f1ef
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]>
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]>
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
0dabb9f1cc
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]>
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
c149358858
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]>
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
3e61a8e66b
- 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]>
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]>
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]>
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]>
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
ebc1309483
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
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]>
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]>
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
7a029243ce
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]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
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]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
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
d828136450
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]>
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]>
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
849b814dc5
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]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- 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]>
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
39fdb517aa
"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]>
dcharlot closed this pull request 2026-11-09 13:32:10 -05:00
Some checks failed
WAI examples / WAI examples · does this change touch them (pull_request) Successful in 21s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 31s
wai-quantum energy-landscape GPU members / does this change touch it (pull_request) Successful in 20s
wai-quantum energy-landscape jobs / does this change touch it (pull_request) Successful in 7s
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (pull_request) Successful in 1m25s
wai-quantum energy-landscape GPU members / members · jetson-hub (pull_request) Failing after 1m18s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Failing after 1m23s
wai-quantum wasmQ / does this change touch it (pull_request) Successful in 12s
wai-quantum energy-landscape GPU members / members · mac-studio (pull_request) Successful in 1m54s
wai-quantum energy-landscape GPU members / members · framework-128gb (pull_request) Successful in 1m54s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Failing after 1m59s
wai-quantum on every processor / emulated · i686-unknown-linux-gnu (pull_request) Successful in 2m25s
wai-quantum wasmQ / the reference modules rebuild to their modules of record · linux (pull_request) Successful in 28s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 4m20s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 4m28s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 4m49s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (pull_request) Successful in 3m34s
wai-quantum energy-landscape jobs / the same bits · macos (pull_request) Successful in 3m46s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · macos (pull_request) Successful in 2m22s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (pull_request) Successful in 4m15s
wai-quantum on every processor / emulated · powerpc64le-unknown-linux-gnu (pull_request) Successful in 5m5s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 6m42s
wai-quantum wasmQ / interpreter and vectors under wasm32-wasip2 (wasmtime) (pull_request) Successful in 3m51s
wai-quantum on every processor / emulated · loongarch64-unknown-linux-gnu (pull_request) Successful in 6m37s
wai-quantum on every processor / emulated · armv7-unknown-linux-gnueabihf (pull_request) Successful in 6m55s
wai-quantum wasmQ / profile, engines, reference modules, adversarial, vectors · linux (pull_request) Successful in 4m35s
wai-quantum on every processor / emulated · s390x-unknown-linux-gnu (pull_request) Successful in 7m48s
wai-quantum on every processor / emulated · powerpc64-unknown-linux-gnu (pull_request) Successful in 8m1s
wai-quantum on every processor / emulated · aarch64-unknown-linux-gnu (pull_request) Successful in 8m19s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m53s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (pull_request) Successful in 9m53s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (pull_request) Successful in 7m38s
wai-quantum on every processor / emulated · sparc64-unknown-linux-gnu (pull_request) Successful in 10m48s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 11m45s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 12m54s
wai-quantum on every processor / emulated · riscv64gc-unknown-linux-gnu (pull_request) Successful in 13m22s
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 13m6s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (pull_request) Successful in 13s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 9s
wai-app and Create / wai-app · does this change touch it (pull_request) Successful in 19s
wai-audit collector and player integration / does this change touch it (pull_request) Successful in 14s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 21s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 18s
wai cross-architecture byte-equality / does this change touch it (pull_request) Successful in 14s
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Has been skipped
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Has been skipped
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Has been skipped
WAI energy receipts / does this change touch it (pull_request) Successful in 13s
wai cross-architecture byte-equality / windows-x86_64 (pull_request) Has been skipped
WAI operation catalogue / does this change touch it (pull_request) Successful in 16s
WAI conformance / does this change touch it (pull_request) Successful in 15s
wai-fleet service / does this change touch it (pull_request) Successful in 8s
wai-ledger service / does this change touch it (pull_request) Successful in 13s
WAI JPEG-AI whole decode (pinned inputs, required) / does this change touch it (pull_request) Successful in 16s
wai-key-proxy / does this change touch it (pull_request) Successful in 16s
WAI HTTP delivery / WAI HTTP · does this change touch it (pull_request) Successful in 19s
wai-key-proxy / proxy · linux (pull_request) Has been skipped
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Has been skipped
WAI neural decoders end-to-end / does this change touch it (pull_request) Successful in 24s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Has been skipped
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Has been skipped
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Has been skipped
WAI neural sink gates / does this change touch it (pull_request) Successful in 22s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 22s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Has been skipped
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Successful in 21s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been skipped
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been skipped
wai-quantum command line / does this change touch it (pull_request) Successful in 20s
wai-quantum contract / does this change touch it (pull_request) Successful in 16s
wai-quantum CUDA member / does this change touch it (pull_request) Successful in 13s
wai-quantum dataflow member / does this change touch it (pull_request) Successful in 11s
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 9s
wai-quantum signal processor / does this change touch it (pull_request) Successful in 12s
wai-quantum editors / does this change touch it (pull_request) Successful in 12s
wai-quantum resource estimation / does this change touch it (pull_request) Successful in 11s
wai-quantum other formats / does this change touch it (pull_request) Successful in 9s
wai-quantum for JavaScript / does this change touch it (pull_request) Successful in 12s
wai-quantum HIP member / does this change touch it (pull_request) Successful in 13s
wai-quantum FPGA member / does this change touch it (pull_request) Successful in 13s
wai-quantum-landscape-fpga reference design / does this change touch it (pull_request) Successful in 11s
wai-quantum OpenQASM reader / does this change touch it (pull_request) Successful in 11s
wai-quantum neural-processor member / does this change touch it (pull_request) Successful in 18s
wai-quantum npu-cores member / does this change touch it (pull_request) Successful in 20s
wai-quantum Metal member / does this change touch it (pull_request) Successful in 22s
wai-quantum OpenCL member / does this change touch it (pull_request) Successful in 10s
wai-quantum for Python / does this change touch it (pull_request) Successful in 10s
wai-quantum pulse and dynamics / does this change touch it (pull_request) Successful in 11s
wai-quantum error correction and mitigation / does this change touch it (pull_request) Successful in 11s
wai-quantum-qpu / does this change touch it (pull_request) Successful in 8s
wai-quantum service / does this change touch it (pull_request) Successful in 11s
wai-quantum matrix-extension member / does this change touch it (pull_request) Successful in 11s
wai-quantum extension points / does this change touch it (pull_request) Successful in 14s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 10s
wai-quantum tensor-engine member / does this change touch it (pull_request) Successful in 10s
wai-quantum portable tensor program / does this change touch it (pull_request) Successful in 11s
wai-quantum variational and algorithm library / does this change touch it (pull_request) Successful in 11s
wai-quantum CPU vector units / does this change touch it (pull_request) Successful in 15s
wai-quantum views in agent hosts / does this change touch it (pull_request) Successful in 19s
wai-quantum verdicts and repairs / does this change touch it (pull_request) Successful in 10s
wai-quantum WebGPU member / does this change touch it (pull_request) Successful in 19s
WAI Studio / does this change touch it (pull_request) Successful in 17s
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Successful in 23s
wai-sink-swift native sink package / does this change touch it (pull_request) Successful in 18s
wai-sink-android native sink library / does this change touch it (pull_request) Successful in 11s
wai-vector vector graphics / does this change touch it (pull_request) Successful in 18s
wai-vector vector graphics / linux-aarch64 (pull_request) Has been skipped
wai-vector vector graphics / linux-x86_64 (pull_request) Has been skipped
wai-vector vector graphics / macos-arm64 (pull_request) Has been skipped
wai-web wasm32 / does this change touch it (pull_request) Successful in 16s
wai-vector vector graphics / wasm32-wasip2 (wasmtime) (pull_request) Has been skipped
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 16s
wai-vector vector graphics / wasm32 under Node (pull_request) Has been skipped
wai-vector vector graphics / wasm32 in three browser engines (pull_request) Has been skipped
wai-vector vector graphics / fuzz, peak allocation, comparison count (pull_request) Has been skipped
wai-vector vector graphics / independent checker (Python) (pull_request) Has been skipped
joule-moq-remote host agent / joule-moq-remote, every target (macos) (pull_request) Successful in 51s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (pull_request) Successful in 1m35s
WAI energy receipts / energy receipts · macos (pull_request) Failing after 41s
WAI conformance / cargo-class corpora · macos (pull_request) Failing after 43s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 25s
wai-fleet service / service · macos (pull_request) Successful in 40s
WAI neural sink gates / the neural-processor path refuses a bit-exact decode (macOS) (pull_request) Successful in 34s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (pull_request) Successful in 37s
wai-ledger service / service · macos (pull_request) Successful in 1m4s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 1m58s
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Successful in 26s
WAI conformance / fast integer kernels, every x86_64 kernel set (AVX-512 silicon) (pull_request) Failing after 29s
wai-audit collector and player integration / collector · linux (pull_request) Successful in 1m36s
WAI energy receipts / energy receipts · linux (pull_request) Failing after 1m34s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (pull_request) Successful in 6m55s
WAI operation catalogue / the catalogue and every door · linux (pull_request) Failing after 2m5s
wai-quantum HIP member / member · HIP (framework-128gb) (pull_request) Successful in 1m19s
wai-quantum editors / editors · macos (pull_request) Successful in 1m46s
wai-quantum command line / command line · macos (pull_request) Successful in 2m15s
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Successful in 1m16s
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Successful in 25s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 49s
WAI conformance / cargo-class corpora · linux (pull_request) Failing after 1m59s
wai-quantum Metal member / member · Metal (macos) (pull_request) Successful in 33s
wai-pack / wai-pack · macos (pull_request) Successful in 3m20s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 2m19s
wai-quantum-qpu / credentials in the keychain (macos) (pull_request) Successful in 30s
wai-quantum npu-cores member / member · npu-cores, neural processor (framework-128gb silicon) (pull_request) Successful in 1m23s
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Successful in 15s
wai-quantum pulse and dynamics / the same bits · macos (pull_request) Successful in 1m9s
wai-quantum OpenCL member / member · OpenCL GPU (framework-128gb) (pull_request) Successful in 27s
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Successful in 18s
wai-ledger service / service · linux (pull_request) Successful in 2m5s
WAI conformance / faces from keypoints under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m46s
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Successful in 14s
wai-quantum contract / the policy is linked, and the deprecations page reads (pull_request) Successful in 6s
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Successful in 17s
wai-quantum for Python / python · macos (pull_request) Successful in 2m20s
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Successful in 20s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 2m41s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 4m1s
WAI neural sink gates / the exact JPEG-AI decoder reports its path (pinned inputs, required) (pull_request) Successful in 2m42s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 10m39s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m35s
wai-pack / wai-pack · linux (pull_request) Successful in 3m31s
wai-fleet service / service · linux (pull_request) Successful in 4m24s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Successful in 4m26s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 13s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m9s
wai-quantum service / service · macos (pull_request) Successful in 3m57s
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Successful in 2m45s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Failing after 2m18s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 13m54s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 4m28s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 2m49s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Successful in 4m30s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 6m15s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Failing after 2m6s
wai-quantum contract / API compatibility · linux (pull_request) Successful in 6m24s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 24s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 19s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Successful in 5m31s
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Successful in 30s
wai-quantum other formats / the set under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m37s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 7m19s
wai-quantum editors / editors · linux (pull_request) Successful in 4m4s
wai-quantum CUDA member / member · CUDA (thor) (pull_request) Successful in 2m1s
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Successful in 27s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 51s
wai-quantum OpenQASM reader / corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 44s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 5m4s
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Successful in 30s
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Successful in 42s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (thor) (pull_request) Successful in 57s
wai-quantum other formats / readers, writers and the set · linux (pull_request) Successful in 3m51s
wai-quantum OpenQASM reader / reader and corpus · linux (pull_request) Successful in 2m37s
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Successful in 8m27s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m46s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 4m38s
wai-quantum contract / schemas and the committed tool lists · linux (pull_request) Successful in 9m34s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs · linux, release (pull_request) Successful in 1m53s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Successful in 1m5s
wai-quantum resource estimation / estimation and calibration · linux, release (pull_request) Successful in 7m46s
wai-quantum pulse and dynamics / reader, simulator and pulse jobs under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m21s
wai-quantum for Python / python · linux (pull_request) Successful in 3m16s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 3m55s
wai-quantum error correction and mitigation / codes, decoders, texts and mitigation · linux, release (pull_request) Successful in 3m23s
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Successful in 1m7s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 33s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Successful in 38s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 10m3s
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Successful in 31s
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Successful in 21s
wai-quantum extension points / the registry under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m10s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Successful in 1m27s
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Successful in 47s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m53s
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Successful in 1m32s
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Successful in 25s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 11m5s
wai-quantum views in agent hosts / views · the page and its engine (pull_request) Failing after 26s
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Successful in 1m7s
wai-quantum variational and algorithm library / parameters, gradients, optimisers, VQE, QAOA and builders · linux, release (pull_request) Successful in 2m7s
wai-quantum extension points / the registry and the example · linux (pull_request) Successful in 3m9s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Successful in 1m48s
wai-quantum studio and desktop / studio · browser (pull_request) Failing after 3m49s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Successful in 41s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 1m13s
wai-quantum npu-cores member / member · npu-cores 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 1m57s
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

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!659
No description provided.