wai-ops: load step 8 in closed form; a lowered network loads once; SHA-256 on 64-bit Arm #271

Closed
dcharlot wants to merge 0 commits from wai/bounds-pass-speed into main
Owner

A single decode of an integer-codec payload no longer pays the lowering and load step 8 several times over. For the pretrained conditional-codec set, lowering and loading both networks took about 0.8 s natively and about 4–5 s in wasm32. That was more than the decode itself. It now takes about 30 ms natively and under 0.1 s in wasm32. Nothing a decode produces changes: the same certificates, the same verdicts and first failures, the same refusals in the same order, and byte-identical outputs. No golden, certificate digest, vector or fixture changed.

Where the time went (before, the pretrained set)

step native, 1-min load about 25 wasm32 (wasip2, size-optimised as wai-web is)
bounds pass, h_s / g_s 444 / 179 ms 2.7–4.9 / 1.3–1.5 s
of which conv / conv_transpose (timed per operator) 129 / 546 ms 0.97 / 2.9 s
igdn 17 ms 62 ms
lowering, h_s / g_s 106 / 45 ms 185–374 / 91–170 ms
each graph written and parsed again by int_ops::load about 40 ms about 95 ms
SHA-256 of the 24 MB set (per resolve) 69–77 ms 110–180 ms

The bounds pass folded every tap in 512-bit arithmetic with saturation after each operation. That is two 512-bit products and two 512-bit additions per weight, over 11.5 million weights.

What changed

  • Load step 8 in closed form (wai_ops::bounds).
    • For each output channel of a conv, and each output channel and residue of a conv_transpose, the pass now reads four sums: the least and greatest weight, and the sums of the positive and of the negative weights.
    • A(K, b) = [min(0,b) + min(0,l)·S⁺ + max(0,h)·S⁻, max(0,b) + max(0,h)·S⁺ + min(0,l)·S⁻], and the term hull is the corner hull of [w_min, w_max] and [l, h].
    • These are the rule's integers wherever nothing in the rule's fold can saturate. The fold adds terms of one sign, so its partial sums lie between 0 and its result. The pass checks that condition: both input ends in i128 with l ≤ h, and the result within ±2^255. Anywhere else it folds tap by tap, through the same 512-bit code as before.
    • The sums are kept in i64 when n · max|w| ≤ 2^63 − 1, which puts every partial sum in i64, and in i128 otherwise.
    • An igdn row folds in i128 with checked operations. On any overflow that row falls back to 512 bits.
    • integer-operators §8.2 gains an informative note on the closed form.
  • The oracle. The pass as it stood is kept, test-only, as wai_ops::bounds_oracle; wai-rs's tests reach it through the new oracle feature, as a dev-dependency.
  • A lowered network loads once.
    • Builder::finish already writes the graph, parses it back, checks it equals the graph built, and plans it. It now returns the graph it parsed back.
    • whm1_net_loaded and wam1_net_loaded (new) then make load steps 7 and 8 on that graph (graph::load_lowered, crate-only). The result is graph::load's on the same bytes, refusal for refusal.
    • The int_hyper, splat and audio drivers use them.
    • The WHM1 and WAM1 lowerings move each layer's lists into the graph instead of cloning them.
    • maxabs (the lowering's X_ℓ inputs) works in u64.
    • The WHG1 writer adds a list's bytes at once and stores each value as one array.
    • The pass reads a node's weight range once, for w_bits and for the acc32 width condition.
  • SHA-256 on 64-bit Arm. wai-rs enables sha2's asm feature on aarch64 targets other than Windows: the processor's SHA-2 instructions, detected at run time. The digests are the same. The wasm32 build of wai-web is byte-identical with and without this change: the same SHA-256 of wai_web.wasm, built both ways on one tree. The seven lockfiles of workspaces that build wai-rs add sha2-asm 0.6.4 and nothing else (cargo update --workspace).

Differential (new against the oracle)

They must give equal passes node for node: every intermediate, result, saturation mark, parameter condition, K_c, width and flag, and every tensor's interval. They must give the same refusals, and the same first failure (graph, node, key, bits) under each profile.

  • Every committed graph: 30 lowered graphs and 81 graph vectors that parse and plan.
  • The pretrained set, with WAI_SOTA_INT_DIR.
  • wai-ops, random operators: conv (groups 1, cin and other divisors), conv_transpose (strides past the kernel), igdn, every rq form. Weights reach the ends of i64, 2^47 and 2^62. Input intervals reach the ends of i64 and i128 and one past them, ±2^k, up to the 2^255 cap, and l > h.
  • wai-ops, random graphs: chains of those with mul, add, relu, clamp and rescale, which carry intervals past i128 to saturation, with derived, clamp and check outputs.
  • wai-rs tests/int_ops_differential.rs: every graph the int_synth, splat, audio and int_hyper generators lower.
run cases outcome
wai-ops operators, per push (debug and release) 4,000 2,629 in the closed form, 1,371 folded tap by tap
wai-ops graphs, per push 1,500 154 refused by the pass, 32 acc32, 303 acc64 only, 1,011 neither; 183 with a saturated node
wai-rs random sets, per push (release) 3,000 cases, 12,557 graphs 15 refused, 2,580 acc32, 9,953 acc64 only, 9 neither
wai-ops operators, 300 s release, seed 20261015 39,810,972 26,134,119 closed form, 13,676,853 folded
wai-ops graphs, same run 17,496,948 1,788,528 refused, 414,956 acc32, 3,640,909 acc64 only, 11,652,555 neither; 2,017,529 saturated
wai-rs random sets, 300 s release, seed 20261015 2,146,820 cases, 8,982,430 graphs 11,741 refused, 1,846,510 acc32, 7,118,434 acc64 only, 5,745 neither

No disagreement anywhere. On the pretrained set the pass takes 9.5 ms (h_s) and 6.1 ms (g_s); the oracle takes 370 ms and 175 ms.

Falsifications (each red on the committed tree, then restored, git diff --quiet)

  1. Off by one: acc_closed's upper end +1.
    • wai-ops: 6 tests fail. The two hand-computed rule tests, and the oracle tests on committed graphs, on the pretrained set, on random operators and on random graphs.
    • wai-verify vectors verify exits 1: conv and conv_transpose vector lines differ, and the int_synth certificates (gradient, bloom, facade) differ.
    • The wai-rs random-set differential fails.
  2. A dropped tap: conv_transpose's closed form skips each kernel block's last tap.
    • wai-ops: 5 lib tests fail, and step-8 the_acc32_claim_set_loads_under_acc64_only fails (the verdict moved).
    • vectors verify exits 1, with run and conv_transpose lines and certificates differing.
    • The wai-rs differential fails.
  3. A narrower type that overflows: the i64 guard bounds n · max|w| by u64's range instead of i64's.
    • Every committed graph, the pretrained set, every certificate (vectors verify exits 0) and the wai-rs random-set differential (i16 weights) stay green.
    • The adversarial differential fails: in release with wrong sums ("seed 2092026652133221803 … differ at node 1"), and in debug with attempt to add with overflow at the i64 sum.
  4. The loaded path skips step 8: load_lowered plans and returns the graph without the pass, while load keeps its own steps.
    • int_ops_differential fails int_splat_, int_audio_ and int_hyper_planned_breaks_are_new_refusals. A set whose check range its producer cannot meet now decodes into FieldRange instead of being refused (ModelMismatch).

Single-decode time, the pretrained set (before 4d7b9e28, after this head)

Processes alternate before and after, three rounds. Each process gives the median of 5 decodes with the store off (one thread: 3), and of the later decodes with the store on (the decode with its set held). Every decode in every process gives eb1acd2159f8a966.

configuration round (1-min load at start) before: store off / held after: store off / held
native, all threads, resolve once 1 (43 / 61) 825 / 70 ms 153 / 109 ms
2 (56 / 39) 763 / 70 97 / 66
3 (31 / 26) 680 / 68 83 / 60
native, all threads, resolve per call 1 (47 / 61) 824 / 151 150 / 102
2 (55 / 39) 810 / 146 145 / 116
3 (30 / 26) 767 / 258 99 / 69
native, one thread, resolve per call 1 (48 / 61) 1348 / 623 584 / 540
2 (55 / 39) 1350 / 691 580 / 528
3 (31 / 25) 1218 / 525 507 / 471
wasm32 under Node, decodeWih1, store off (3 calls) 1 (50 / 59) 8491, 9376, 9952 4913, 4803, 4908
2 (52 / 38) 9345, 10165, 7815 4363, 4096, 4397
3 (31 / 25) 7266, 7051, 7035 4336, 4039, 4063
wasm32, store on, later calls 1–3 3.9–5.3 s 3.9–4.6 s

The set's key (the SHA-256 of its listing) was 59–76 ms; it is now 10–14 ms. In wasm32 a store-off decode now costs what a store-on decode does, within the host's noise. The browser demo, which decodes once per view, pays about the decode alone.

Gate

  • gate.sh bounds-final3 on the pushed head 2a616ff3: GREEN. That head merges main at f816552e. The steps: build, lib-tests, carriage, corpus loop 21/21, fast-kernels, byte-exact, wai-web wasm32 and neural gates. Earlier merged heads were also GREEN: eb6be888 (main = #268) and cbc3f973 (main = #266).
  • Also on cbc3f973, all exit 0. Its wai/ tree is the pushed head's: #269 changed only openpay/.
  • The battery:
    • the release fast-kernel step;
    • the random-set differential in debug: 3,000 cases, 12,557 graphs;
    • the pretrained-set step with WAI_REQUIRE_SOTA_VECTORS=1: all five named tests ran, and nothing was skipped;
    • neural_native_decode and neural_cost_limit;
    • wai-ops: debug, release, wasm32-wasip2 under wasmtime, and the recomputation under Node;
    • wai-verify: its tests and vectors verify ("every file verifies");
    • the four wai-verify bounds exit statuses (1, 1, 0, 0);
    • wai-web: natively, and its wasm32 tests (4 passed) with the pinned wasm-bindgen 0.2.127;
    • verify_int_payload_wasm, verify_int_synth_wasm, verify_int_hyper_wasm (pretrained set, eb1acd2159f8a966 = native) and verify_staged_wasm.
  • No tracked file changed after any build.
  • Kani: cargo kani --lib --only-codegen builds every harness, and proofs::plan::k15_lut16_index_is_total (through bounds::eval) verifies.
  • Local checks, all exit 0: comparative prose, vanity metrics, public names, section refs, tests in CI, lockfiles (38 current) and orphan sources.

This branch merged origin/main three times, keeping both sides of the CHANGELOG: #268 (f5dd8113, no tree change), #266 (3f6e9c1b) and #269 (f816552e, openpay/ only). Each lockfile differs from main only by sha2-asm.

🤖 Generated with Claude Code

A single decode of an integer-codec payload no longer pays the lowering and load step 8 several times over. For the pretrained conditional-codec set, lowering and loading both networks took about 0.8 s natively and about 4–5 s in wasm32. That was more than the decode itself. It now takes about 30 ms natively and under 0.1 s in wasm32. Nothing a decode produces changes: the same certificates, the same verdicts and first failures, the same refusals in the same order, and byte-identical outputs. No golden, certificate digest, vector or fixture changed. ## Where the time went (before, the pretrained set) | step | native, 1-min load about 25 | wasm32 (wasip2, size-optimised as wai-web is) | |---|---|---| | bounds pass, `h_s` / `g_s` | 444 / 179 ms | 2.7–4.9 / 1.3–1.5 s | | of which `conv` / `conv_transpose` (timed per operator) | 129 / 546 ms | 0.97 / 2.9 s | | `igdn` | 17 ms | 62 ms | | lowering, `h_s` / `g_s` | 106 / 45 ms | 185–374 / 91–170 ms | | each graph written and parsed again by `int_ops::load` | about 40 ms | about 95 ms | | SHA-256 of the 24 MB set (per `resolve`) | 69–77 ms | 110–180 ms | The bounds pass folded every tap in 512-bit arithmetic with saturation after each operation. That is two 512-bit products and two 512-bit additions per weight, over 11.5 million weights. ## What changed - **Load step 8 in closed form** (`wai_ops::bounds`). - For each output channel of a `conv`, and each output channel and residue of a `conv_transpose`, the pass now reads four sums: the least and greatest weight, and the sums of the positive and of the negative weights. - `A(K, b) = [min(0,b) + min(0,l)·S⁺ + max(0,h)·S⁻, max(0,b) + max(0,h)·S⁺ + min(0,l)·S⁻]`, and the term hull is the corner hull of `[w_min, w_max]` and `[l, h]`. - These are the rule's integers wherever nothing in the rule's fold can saturate. The fold adds terms of one sign, so its partial sums lie between 0 and its result. The pass checks that condition: both input ends in `i128` with `l ≤ h`, and the result within `±2^255`. Anywhere else it folds tap by tap, through the same 512-bit code as before. - The sums are kept in `i64` when `n · max|w| ≤ 2^63 − 1`, which puts every partial sum in `i64`, and in `i128` otherwise. - An `igdn` row folds in `i128` with checked operations. On any overflow that row falls back to 512 bits. - integer-operators §8.2 gains an informative note on the closed form. - **The oracle.** The pass as it stood is kept, test-only, as `wai_ops::bounds_oracle`; wai-rs's tests reach it through the new `oracle` feature, as a dev-dependency. - **A lowered network loads once.** - `Builder::finish` already writes the graph, parses it back, checks it equals the graph built, and plans it. It now returns the graph it parsed back. - `whm1_net_loaded` and `wam1_net_loaded` (new) then make load steps 7 and 8 on that graph (`graph::load_lowered`, crate-only). The result is `graph::load`'s on the same bytes, refusal for refusal. - The int_hyper, splat and audio drivers use them. - The `WHM1` and `WAM1` lowerings move each layer's lists into the graph instead of cloning them. - `maxabs` (the lowering's `X_ℓ` inputs) works in `u64`. - The `WHG1` writer adds a list's bytes at once and stores each value as one array. - The pass reads a node's weight range once, for `w_bits` and for the `acc32` width condition. - **SHA-256 on 64-bit Arm.** wai-rs enables sha2's `asm` feature on `aarch64` targets other than Windows: the processor's SHA-2 instructions, detected at run time. The digests are the same. The wasm32 build of wai-web is byte-identical with and without this change: the same SHA-256 of `wai_web.wasm`, built both ways on one tree. The seven lockfiles of workspaces that build wai-rs add `sha2-asm 0.6.4` and nothing else (`cargo update --workspace`). ## Differential (new against the oracle) They must give equal passes node for node: every intermediate, result, saturation mark, parameter condition, `K_c`, width and flag, and every tensor's interval. They must give the same refusals, and the same first failure (graph, node, key, bits) under each profile. - **Every committed graph:** 30 lowered graphs and 81 graph vectors that parse and plan. - **The pretrained set,** with `WAI_SOTA_INT_DIR`. - **wai-ops, random operators:** `conv` (groups 1, `cin` and other divisors), `conv_transpose` (strides past the kernel), `igdn`, every `rq` form. Weights reach the ends of `i64`, `2^47` and `2^62`. Input intervals reach the ends of `i64` and `i128` and one past them, `±2^k`, up to the `2^255` cap, and `l > h`. - **wai-ops, random graphs:** chains of those with `mul`, `add`, `relu`, `clamp` and `rescale`, which carry intervals past `i128` to saturation, with `derived`, `clamp` and `check` outputs. - **wai-rs `tests/int_ops_differential.rs`:** every graph the int_synth, splat, audio and int_hyper generators lower. | run | cases | outcome | |---|---|---| | wai-ops operators, per push (debug and release) | 4,000 | 2,629 in the closed form, 1,371 folded tap by tap | | wai-ops graphs, per push | 1,500 | 154 refused by the pass, 32 acc32, 303 acc64 only, 1,011 neither; 183 with a saturated node | | wai-rs random sets, per push (release) | 3,000 cases, 12,557 graphs | 15 refused, 2,580 acc32, 9,953 acc64 only, 9 neither | | wai-ops operators, 300 s release, seed 20261015 | 39,810,972 | 26,134,119 closed form, 13,676,853 folded | | wai-ops graphs, same run | 17,496,948 | 1,788,528 refused, 414,956 acc32, 3,640,909 acc64 only, 11,652,555 neither; 2,017,529 saturated | | wai-rs random sets, 300 s release, seed 20261015 | 2,146,820 cases, 8,982,430 graphs | 11,741 refused, 1,846,510 acc32, 7,118,434 acc64 only, 5,745 neither | No disagreement anywhere. On the pretrained set the pass takes 9.5 ms (`h_s`) and 6.1 ms (`g_s`); the oracle takes 370 ms and 175 ms. ## Falsifications (each red on the committed tree, then restored, `git diff --quiet`) 1. **Off by one:** `acc_closed`'s upper end +1. - wai-ops: 6 tests fail. The two hand-computed rule tests, and the oracle tests on committed graphs, on the pretrained set, on random operators and on random graphs. - `wai-verify vectors verify` exits 1: conv and conv_transpose vector lines differ, and the int_synth certificates (gradient, bloom, facade) differ. - The wai-rs random-set differential fails. 2. **A dropped tap:** `conv_transpose`'s closed form skips each kernel block's last tap. - wai-ops: 5 lib tests fail, and step-8 `the_acc32_claim_set_loads_under_acc64_only` fails (the verdict moved). - `vectors verify` exits 1, with run and conv_transpose lines and certificates differing. - The wai-rs differential fails. 3. **A narrower type that overflows:** the `i64` guard bounds `n · max|w|` by `u64`'s range instead of `i64`'s. - Every committed graph, the pretrained set, every certificate (`vectors verify` exits 0) and the wai-rs random-set differential (`i16` weights) stay green. - The adversarial differential fails: in release with wrong sums ("seed 2092026652133221803 … differ at node 1"), and in debug with `attempt to add with overflow` at the `i64` sum. 4. **The loaded path skips step 8:** `load_lowered` plans and returns the graph without the pass, while `load` keeps its own steps. - `int_ops_differential` fails `int_splat_`, `int_audio_` and `int_hyper_planned_breaks_are_new_refusals`. A set whose `check` range its producer cannot meet now decodes into `FieldRange` instead of being refused (`ModelMismatch`). ## Single-decode time, the pretrained set (before `4d7b9e28`, after this head) Processes alternate before and after, three rounds. Each process gives the median of 5 decodes with the store off (one thread: 3), and of the later decodes with the store on (the decode with its set held). Every decode in every process gives `eb1acd2159f8a966`. | configuration | round (1-min load at start) | before: store off / held | after: store off / held | |---|---|---|---| | native, all threads, `resolve` once | 1 (43 / 61) | 825 / 70 ms | 153 / 109 ms | | | 2 (56 / 39) | 763 / 70 | 97 / 66 | | | 3 (31 / 26) | 680 / 68 | 83 / 60 | | native, all threads, `resolve` per call | 1 (47 / 61) | 824 / 151 | 150 / 102 | | | 2 (55 / 39) | 810 / 146 | 145 / 116 | | | 3 (30 / 26) | 767 / 258 | 99 / 69 | | native, one thread, `resolve` per call | 1 (48 / 61) | 1348 / 623 | 584 / 540 | | | 2 (55 / 39) | 1350 / 691 | 580 / 528 | | | 3 (31 / 25) | 1218 / 525 | 507 / 471 | | wasm32 under Node, `decodeWih1`, store off (3 calls) | 1 (50 / 59) | 8491, 9376, 9952 | 4913, 4803, 4908 | | | 2 (52 / 38) | 9345, 10165, 7815 | 4363, 4096, 4397 | | | 3 (31 / 25) | 7266, 7051, 7035 | 4336, 4039, 4063 | | wasm32, store on, later calls | 1–3 | 3.9–5.3 s | 3.9–4.6 s | The set's key (the SHA-256 of its listing) was 59–76 ms; it is now 10–14 ms. In wasm32 a store-off decode now costs what a store-on decode does, within the host's noise. The browser demo, which decodes once per view, pays about the decode alone. ## Gate - **`gate.sh bounds-final3` on the pushed head `2a616ff3`: GREEN.** That head merges main at `f816552e`. The steps: build, lib-tests, carriage, corpus loop 21/21, fast-kernels, byte-exact, wai-web wasm32 and neural gates. Earlier merged heads were also GREEN: `eb6be888` (main = #268) and `cbc3f973` (main = #266). - **Also on `cbc3f973`, all exit 0.** Its `wai/` tree is the pushed head's: #269 changed only `openpay/`. - **The battery:** - the release fast-kernel step; - the random-set differential in debug: 3,000 cases, 12,557 graphs; - the pretrained-set step with `WAI_REQUIRE_SOTA_VECTORS=1`: all five named tests ran, and nothing was skipped; - `neural_native_decode` and `neural_cost_limit`; - wai-ops: debug, release, wasm32-wasip2 under wasmtime, and the recomputation under Node; - wai-verify: its tests and `vectors verify` ("every file verifies"); - the four `wai-verify bounds` exit statuses (1, 1, 0, 0); - wai-web: natively, and its wasm32 tests (4 passed) with the pinned wasm-bindgen 0.2.127; - `verify_int_payload_wasm`, `verify_int_synth_wasm`, `verify_int_hyper_wasm` (pretrained set, `eb1acd2159f8a966` = native) and `verify_staged_wasm`. - **No tracked file changed after any build.** - **Kani:** `cargo kani --lib --only-codegen` builds every harness, and `proofs::plan::k15_lut16_index_is_total` (through `bounds::eval`) verifies. - **Local checks, all exit 0:** comparative prose, vanity metrics, public names, section refs, tests in CI, lockfiles (38 current) and orphan sources. This branch merged origin/main three times, keeping both sides of the CHANGELOG: #268 (`f5dd8113`, no tree change), #266 (`3f6e9c1b`) and #269 (`f816552e`, `openpay/` only). Each lockfile differs from main only by `sha2-asm`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Each convolution's term hull and partial-sum interval come from four sums per
output channel (least and greatest weight, sum of the positive and of the
negative weights; per residue for conv_transpose), and each igdn row folds in
i128, wherever no operation of the rule's fold can saturate; elsewhere the
rule folds tap by tap as before. The pass before this change is kept,
test-only (feature `oracle` for other crates), as bounds_oracle, with a
differential over the committed graphs, the pretrained set when present, and
random and adversarial operators and graphs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
maxabs finds the largest |x| over u64 and widens it once, rather than forming
an I512 per weight. The writer reserves each integer list and writes the usual
widths as the unsigned integer of that width (the same low bytes), and writes
each operator's parameters in place after their length, rather than into a
second vector copied after. Same bytes; a unit test holds each width to the
low bytes it wrote before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Builder::finish already writes the graph's bytes, parses them back to an equal
graph and plans it; it now returns that parsed graph, the one graph::load of
those bytes holds. graph::load_lowered (crate-only) makes load steps 7 and 8
on it, so whm1_net_loaded and wam1_net_loaded give load's result, refusal for
refusal, without writing and parsing the bytes a second time. The WHM1 and
WAM1 lowerings move each layer's lists into the graph instead of cloning them
(whm1_net and wam1_net, which borrow, clone the network once). The
int_hyper, splat and audio drivers load through them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Every graph the int_synth, splat, audio and int_hyper generators lower is
passed by wai_ops::bounds and by wai_ops::bounds_oracle (a dev-dependency with
the oracle feature): equal passes or the same refusal, and the same first
failure under each profile; every verdict is reached.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The closed forms accumulate a tap set's sums in i64 when n·max|w| ≤ 2^63 − 1
(every partial sum then lies in i64), and in i128 otherwise. The pass finds a
node's weight range once, for w_bits and for the acc32 width condition (a list
fits i32 exactly when its least and greatest do). The WHG1 writer adds an
integer list's bytes at once and stores each byte, where a copy of a few bytes
is a call on wasm32.

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]>
cargo update --workspace in each: sha2-asm added, nothing else moves.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
§8.6's note no longer says the bounds pass can cost more than a decode: the
lowering and the load read the whole set again, which is what a kept set
saves.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
main is #268 merged (f5dd8113), this branch's base; the tree does not change.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
main now has wai-quantum 0.6.0 (#266). CHANGELOG: both sides kept, this
branch's section first. The lockfiles merged with sha2-asm as their only
difference from main.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge remote-tracking branch 'origin/main' into wai/bounds-pass-speed
Some checks failed
wai formal verification (integer core) / kani (plan) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (sound) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (stage) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (rans64-t2) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (stage-long) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (integer-core) (pull_request) Has been cancelled
WAI energy receipts / does this change touch it (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / does this change touch it (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
wai cross-architecture byte-equality / does this change touch it (pull_request) Has been cancelled
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Has been cancelled
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Has been cancelled
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Has been cancelled
standards workspaces build + test / which workspaces this change touches (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
2a616ff368
main now has #269 (openpay only); nothing under wai/ changes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot closed this pull request 2026-10-16 02:19:34 -04:00
Some checks failed
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 12m3s
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-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 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-quantum WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (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 · discrete GPU, Vulkan (jetson-hub) (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-pack / wai-pack · does this change touch it (pull_request) Has been cancelled
wai-pack / wai-pack · linux (pull_request) Has been cancelled
wai-pack / wai-pack · linux-arm64 (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been cancelled
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-ops integer operators / does this change touch it (pull_request) Has been cancelled
wai-ops integer operators / linux-aarch64 (pull_request) Has been cancelled
wai-ops integer operators / linux-x86_64 (pull_request) Has been cancelled
wai-ops integer operators / macos-arm64 (pull_request) Has been cancelled
wai-ops integer operators / wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-ops integer operators / wasm32 under Node (pull_request) Has been cancelled
wai-ops integer operators / independent checker (Python) (pull_request) Has been cancelled
WAI neural sink gates / does this change touch it (pull_request) Has been cancelled
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Has been cancelled
WAI JPEG-AI whole decode (pinned inputs, required) / does this change touch it (pull_request) Has been cancelled
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Has been cancelled
WAI HTTP delivery / WAI HTTP · does this change touch it (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Has been cancelled
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Has been cancelled
wai formal verification (integer core) / does this change touch it (pull_request) Has been cancelled
wai formal verification (integer core) / every harness in one shard (pull_request) Has been cancelled
wai formal verification (integer core) / kani (arith) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (isqrt512) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (plan) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (sound) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (stage) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (rans64-t2) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (stage-long) (pull_request) Has been cancelled
wai formal verification (integer core) / kani (integer-core) (pull_request) Has been cancelled
WAI energy receipts / does this change touch it (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / does this change touch it (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
wai cross-architecture byte-equality / does this change touch it (pull_request) Has been cancelled
wai cross-architecture byte-equality / linux-aarch64 (pull_request) Has been cancelled
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Has been cancelled
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Has been cancelled
standards workspaces build + test / which workspaces this change touches (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled

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!271
No description provided.