wai-ops/1-npu on a neural processor: exact on every subset vector, and where the unit is not (G2) #440

Closed
dcharlot wants to merge 0 commits from wai/ops-npu into main
Owner

G2: wai-ops/1-npu (integer-operators §9.2) runs on a neural processor. On the device of PCI 0x1022:0x17f0, every graph vector in the subset gave the committed result and the interpreter's. Where the device's own arithmetic is not exact, the text says which step fails and why, as measured. Based on #428's head (793bd478b).

What is in it

  • wai/wai-ops-npu, a new crate with no dependency but wai-ops and its own lockfile.
    • The kernel (src/kernel/ops_npu.cc) runs on one compute core of a tile array. It is built at run time with the array's open toolchain (design.py) into a cache keyed by its sources and the toolchain. Its host side (host.cpp) is compiled against the device runtime and loaded with dlopen.

    • The interpreter's Kernels. wai_ops::run_with runs each graph and asks the core for every operator that computes values:

      • conv and conv_transpose as sums over taps. The host gathers the taps, with zeros where padding or the transposed stride leaves no input. The core accumulates from the pre bias. 8- and 16-bit operands go into 32-bit accumulator lanes and 32-bit operands into 64-bit lanes, the width read from the certificate's mac record. A long sum is split, and each part's accumulators carry into the next.
      • rescale, chscale and mul through the vector unit's multiply and shift-round step.
      • add, chunk_add, clamp, relu, abs and leaky.
      • lut16, one 4,096-entry table block at a time.

      The plan, the checks, the policies, the movement operators and the state stay the interpreter's. So the device adds no refusal.

    • Tests, none of which passes on a skip (WAI_OPS_NPU_REQUIRE, WAI_OPS_NPU_EXPECT):

      • corpus.rs: every subset vector, against the committed results and the interpreter. It also requires the set it runs to equal npu.jsonl's.
      • probe.rs: the unit's ten rounding modes at shifts 0–63; saturation; the accumulator lanes; and the kernel's requantisation on 786,432 cases.
      • mutants.rs: twelve kernel edits, each its own program, each of which the corpus must catch.
      • width.rs: graphs outside the subset by acc32 alone are not all exact here.
    • ops-npu-bench: time and energy, with every device result checked against the interpreter's first.

  • ops-conformance/npu.jsonl (new §14.5) gives each graph vector's place in the subset, from its own graph's verdict.
    • wai-verify vectors gen writes it, so vectors verify holds it to its bytes. The independent Python checker writes it again from its own bounds pass. 733 of the 1,635 vectors that load are in the subset.
    • vectors verify now recomputes only files under vectors/, stage/ and graphs/. It took every .jsonl for a vector file before.
  • integer-operators §9.5 (new, informative): how the implementation runs; the unit's arithmetic as measured; results by neural processor; time and energy; and the Web Neural Network API, operator by operator. §9.2 and the header point to it.
  • determinism-tiers §5 and §6: the device run is recorded. No decoder runs its graphs on a neural processor yet, so the tier is not claimed for a decode there. SPEC §6.5's tier sentence and the CHANGELOG are updated too.
  • CI: wai-ops-npu.yml
    • linux-amd: the device suite, with the device declared and required. It uses the same user-space toolchain venv as the npu-cores job, and no driver or system package.
    • linux-arm64: the crate builds, and the device tests are SKIPPED without WAI_OPS_NPU_REQUIRE and fail with it.
    • The corpus README gives the same command to run by hand.

Measured on the device (2026-10-22, release, rustc 1.98.0, device runtime 2.21.75, firmware 1.1.2.65, toolchain 1.4.3 / core compiler 22.0.0)

  • Corpus: 733 vectors and 1,005 decodes, 32 of them refusals, with 0 mismatches and 0 errors. 302 of the vectors move data only. Every path ran, counted in lines: MAC8 77, MAC16 4,160, MAC32 34, RQ 687, EW 458, LUT 23; 2,172 dispatches. The run gave the same result 5 of 5 times.
  • The unit's shift-round step: its modes floor, positive_inf and conv_even are R_floor, R_half_up and R_half_even at shifts 0–59 only. At 60–63, every mode gives t·m << (64−s), saturated. acc32 allows shifts up to 63, and 36 subset vectors use one (chscale 5, conv 6, conv_transpose 3, leaky 2, mul 4, rescale 16). The kernel forms those shifts in the core's scalar unit, in 64-bit arithmetic. No other mode equals a rounding of §2 past shift 1.
  • Saturation: the saturating mode clamps a result past 32 bits, and the non-saturating mode keeps its low 32 bits.
  • Accumulator lanes: a 32-bit lane keeps the low 32 bits of a sum past i32, and a 64-bit lane wraps at 64 bits.
  • Requantisation through the kernel: 786,432 cases, 0 differ.
  • Outside the subset: of the 458 graphs that fail the subset by acc32 alone, 110 differ on the device, and 226 operators carry values past 32 bits.
  • Kernel edits: 12 of 12 caught by the corpus. They include each rounding mapped to a neighbouring unit mode (20, 23 and 46 vectors differ), and shifts 60–63 left to the unit (36).
  • Time and energy (--secs 3 --rounds 3; ranges over 3 windows). No speed or energy claim is made: the device path is dispatch-bound, with one core, 4 lines per dispatch, a host round trip per operator, and host-side gathering.
workload CPU device
one pass over the subset's vectors 1.12–1.14 ms 192.6–193.0 ms
int_synth, [8,32,32]→[3,64,64] 7.22–7.26 ms 89.1–89.2 ms
  • The package counter (powercap package-0) is HwShunt and covers the whole package, other users' work included. It read 26.1–29.0 J idle and 90.7–94.6 J with the CPU looping. With the device looping it read 74.7–75.4 J on the vectors and 76.4–78.1 J on the synthesis.
  • The runtime's own "Estimated Power", integrated over each window, is ModelBased. It gave 2.0–2.6 J per device window, and 0.3–1.2 J idle: it lags after activity.

The Web Neural Network API (decided from CRD-webnn-20261021; no browser leg)

  • conv2d, convTranspose2d, matmul and gemm take floating-point operands only. quantizeLinear rounds by roundEven in floating point, and dequantizeLinear gives floats.
  • So the subset is exact there only built from the API's "int32" element-wise operations, reduceSum, gather and the movement operations. A multiplier needs "int64", which the CR allows but does not require. §9.5 gives the per-operator table with the CR's section numbers.

Design decisions

  • The device as the interpreter's Kernels, not a re-implementation of the run. Refusal order, policies and state are the interpreter's by construction. A device error is recorded and fails the test, never silently replaced by the CPU's result: the tests require errors and declined to be empty.
  • Operand width from the certificate (mac), not from the data. This is the static choice a device toolchain makes. All three paths ran on the corpus.
  • Shifts 60–63 go to the scalar unit, because the hardware step is measured not to take them. The probe asserts that it does not, so a toolchain or firmware that changes this fails the test and gets looked at.
  • npu.jsonl as the conformance addition. It is a byte-checked list of the vectors that define the subset, from two certifiers, so a change to the bounds pass that moves vectors in or out of the subset shows up in review.
  • WebNN: the per-operator statement (option b), no browser leg.
  • The neural engine of an arm64 desktop: not tested (optional).

Checks

check command result
device suite, the workflow's npu-hw step run by hand on the box (session user) at 6265e7426 WAI_OPS_NPU_EXPECT=npu-1022-17f0 WAI_OPS_NPU_REQUIRE=1 cargo test --locked --release -- --nocapture --test-threads=1, then the step's report greps 14 tests passed; every report line present
repeat corpus and probe, 5× identical, 0 mismatches each time
no device (build host, macOS arm64) cargo test --locked --release in wai/wai-ops-npu 14 passed; the 6 device tests SKIPPED
absent device under REQUIRE WAI_OPS_NPU_REQUIRE=1 cargo test --locked --release --test corpus --test probe --test mutants --test width exit 101, "WAI_OPS_NPU_REQUIRE is set"
clippy cargo clippy --locked --release --all-targets in wai-ops-npu 0 notes
clippy, wai-ops and wai-verify (--features cli) same no new notes: those present are in untouched code and identical at the base
wai-ops tests cargo test --locked --release all pass
corpus regeneration wai-verify vectors gen .. (via rb) only npu.jsonl added; every other file byte-identical
corpus verify wai-verify vectors verify .. every file verifies
independent checker python3 -I tools/wai_ops_check.py ops-conformance 0 failures; npu.jsonl the same bytes (1,635 lines, 733 in the subset)
lockfile scripts/check-lockfiles.sh wai/wai-ops-npu; cargo metadata --locked --offline current; ok
repo scripts check-tests-in-ci, workflow-concurrency, spec-refs, wai-section-refs, vanity, public-text self-test, comparative prose, orphan sources all 0
public names check-public-names.sh on every changed file and the commit messages clean
path gate scripts/pr-touches-paths.py .github/workflows/wai-ops-npu.yml <base> HEAD true

Falsifications (committed state, each restored after)

  • Conforming kernel with half_up → ties-away-from-zero: corpus exit 101, 20 vectors differ.
  • Conforming kernel with shifts 60–63 left to the unit: requantisation probe exit 101 (46,336 cases differ); corpus exit 101 (36 vectors).
  • One npu.jsonl line flipped:
    • Python checker exit 1 (DIFF npu.jsonl);
    • vectors verify exit 1 ("the generator writes other bytes");
    • device corpus test exit 101 ("not the ones npu.jsonl lists").
  • The npu-hw step's report checks against tampered reports (mutants 11 of 12, mismatches=1, probe 3 differ, device none): each exit 1.
  • Twelve kernel mutants: all caught (above).

Not done

  • No decoder runs its graphs on the NPU. There is no wai-rs ops_npu feature, so the capability corpora were not run on the device, and the tier is not claimed for a decode.
  • Performance: one core, 4 lines per dispatch, host-side tap gathering. Multi-core placement, larger dispatches and DMA-side gathering are the obvious next steps.
  • Other hardware: no other NPU; the neural engine of an arm64 desktop not tested; no WebNN browser leg.
  • CI: no forge run of wai-ops-npu.yml. Its runs on this PR were cancelled, as the brief asks. The npu-hw step was run by hand on the box as the session user, not as the runner's user.

🤖 Generated with Claude Code


Closed: Landed on main through merge train E (#499, merge bf39ec9a); verified by content: this PR's head is in main

G2: `wai-ops/1-npu` (integer-operators §9.2) runs on a neural processor. On the device of PCI 0x1022:0x17f0, every graph vector in the subset gave the committed result and the interpreter's. Where the device's own arithmetic is not exact, the text says which step fails and why, as measured. Based on #428's head (`793bd478b`). ## What is in it - **`wai/wai-ops-npu`**, a new crate with no dependency but `wai-ops` and its own lockfile. - **The kernel** (`src/kernel/ops_npu.cc`) runs on one compute core of a tile array. It is built at run time with the array's open toolchain (`design.py`) into a cache keyed by its sources and the toolchain. Its host side (`host.cpp`) is compiled against the device runtime and loaded with `dlopen`. - **The interpreter's `Kernels`.** `wai_ops::run_with` runs each graph and asks the core for every operator that computes values: - `conv` and `conv_transpose` as sums over taps. The host gathers the taps, with zeros where padding or the transposed stride leaves no input. The core accumulates from the `pre` bias. 8- and 16-bit operands go into 32-bit accumulator lanes and 32-bit operands into 64-bit lanes, the width read from the certificate's `mac` record. A long sum is split, and each part's accumulators carry into the next. - `rescale`, `chscale` and `mul` through the vector unit's multiply and shift-round step. - `add`, `chunk_add`, `clamp`, `relu`, `abs` and `leaky`. - `lut16`, one 4,096-entry table block at a time. The plan, the checks, the policies, the movement operators and the state stay the interpreter's. So the device adds no refusal. - **Tests**, none of which passes on a skip (`WAI_OPS_NPU_REQUIRE`, `WAI_OPS_NPU_EXPECT`): - `corpus.rs`: every subset vector, against the committed results and the interpreter. It also requires the set it runs to equal `npu.jsonl`'s. - `probe.rs`: the unit's ten rounding modes at shifts 0–63; saturation; the accumulator lanes; and the kernel's requantisation on 786,432 cases. - `mutants.rs`: twelve kernel edits, each its own program, each of which the corpus must catch. - `width.rs`: graphs outside the subset by `acc32` alone are not all exact here. - **`ops-npu-bench`**: time and energy, with every device result checked against the interpreter's first. - **`ops-conformance/npu.jsonl`** (new §14.5) gives each graph vector's place in the subset, from its own graph's verdict. - `wai-verify vectors gen` writes it, so `vectors verify` holds it to its bytes. The independent Python checker writes it again from its own bounds pass. 733 of the 1,635 vectors that load are in the subset. - `vectors verify` now recomputes only files under `vectors/`, `stage/` and `graphs/`. It took every `.jsonl` for a vector file before. - **integer-operators §9.5** (new, informative): how the implementation runs; the unit's arithmetic as measured; results by neural processor; time and energy; and the Web Neural Network API, operator by operator. §9.2 and the header point to it. - **determinism-tiers §5 and §6**: the device run is recorded. No decoder runs its graphs on a neural processor yet, so the tier is not claimed for a decode there. SPEC §6.5's tier sentence and the CHANGELOG are updated too. - **CI: `wai-ops-npu.yml`** - `linux-amd`: the device suite, with the device declared and required. It uses the same user-space toolchain venv as the npu-cores job, and no driver or system package. - `linux-arm64`: the crate builds, and the device tests are SKIPPED without `WAI_OPS_NPU_REQUIRE` and fail with it. - The corpus README gives the same command to run by hand. ## Measured on the device (2026-10-22, release, rustc 1.98.0, device runtime 2.21.75, firmware 1.1.2.65, toolchain 1.4.3 / core compiler 22.0.0) - **Corpus:** 733 vectors and 1,005 decodes, 32 of them refusals, with **0 mismatches and 0 errors**. 302 of the vectors move data only. Every path ran, counted in lines: MAC8 77, MAC16 4,160, MAC32 34, RQ 687, EW 458, LUT 23; 2,172 dispatches. The run gave the same result 5 of 5 times. - **The unit's shift-round step:** its modes `floor`, `positive_inf` and `conv_even` are `R_floor`, `R_half_up` and `R_half_even` **at shifts 0–59 only**. At 60–63, every mode gives `t·m << (64−s)`, saturated. `acc32` allows shifts up to 63, and 36 subset vectors use one (chscale 5, conv 6, conv_transpose 3, leaky 2, mul 4, rescale 16). The kernel forms those shifts in the core's scalar unit, in 64-bit arithmetic. No other mode equals a rounding of §2 past shift 1. - **Saturation:** the saturating mode clamps a result past 32 bits, and the non-saturating mode keeps its low 32 bits. - **Accumulator lanes:** a 32-bit lane keeps the low 32 bits of a sum past i32, and a 64-bit lane wraps at 64 bits. - **Requantisation through the kernel:** 786,432 cases, 0 differ. - **Outside the subset:** of the 458 graphs that fail the subset by `acc32` alone, 110 differ on the device, and 226 operators carry values past 32 bits. - **Kernel edits:** 12 of 12 caught by the corpus. They include each rounding mapped to a neighbouring unit mode (20, 23 and 46 vectors differ), and shifts 60–63 left to the unit (36). - **Time and energy** (`--secs 3 --rounds 3`; ranges over 3 windows). **No speed or energy claim is made**: the device path is dispatch-bound, with one core, 4 lines per dispatch, a host round trip per operator, and host-side gathering. | workload | CPU | device | |---|---|---| | one pass over the subset's vectors | 1.12–1.14 ms | 192.6–193.0 ms | | `int_synth`, `[8,32,32]`→`[3,64,64]` | 7.22–7.26 ms | 89.1–89.2 ms | - The package counter (powercap `package-0`) is `HwShunt` and covers the whole package, other users' work included. It read 26.1–29.0 J idle and 90.7–94.6 J with the CPU looping. With the device looping it read 74.7–75.4 J on the vectors and 76.4–78.1 J on the synthesis. - The runtime's own "Estimated Power", integrated over each window, is `ModelBased`. It gave 2.0–2.6 J per device window, and 0.3–1.2 J idle: it lags after activity. ## The Web Neural Network API (decided from `CRD-webnn-20261021`; no browser leg) - `conv2d`, `convTranspose2d`, `matmul` and `gemm` take floating-point operands only. `quantizeLinear` rounds by `roundEven` in floating point, and `dequantizeLinear` gives floats. - So the subset is exact there only built from the API's `"int32"` element-wise operations, `reduceSum`, `gather` and the movement operations. A multiplier needs `"int64"`, which the CR allows but does not require. §9.5 gives the per-operator table with the CR's section numbers. ## Design decisions - **The device as the interpreter's `Kernels`, not a re-implementation of the run.** Refusal order, policies and state are the interpreter's by construction. A device error is recorded and fails the test, never silently replaced by the CPU's result: the tests require `errors` and `declined` to be empty. - **Operand width from the certificate (`mac`), not from the data.** This is the static choice a device toolchain makes. All three paths ran on the corpus. - **Shifts 60–63 go to the scalar unit,** because the hardware step is measured not to take them. The probe asserts that it does not, so a toolchain or firmware that changes this fails the test and gets looked at. - **`npu.jsonl` as the conformance addition.** It is a byte-checked list of the vectors that define the subset, from two certifiers, so a change to the bounds pass that moves vectors in or out of the subset shows up in review. - **WebNN:** the per-operator statement (option b), no browser leg. - **The neural engine of an arm64 desktop:** not tested (optional). ## Checks | check | command | result | |---|---|---| | device suite, the workflow's npu-hw step run by hand on the box (session user) at `6265e7426` | `WAI_OPS_NPU_EXPECT=npu-1022-17f0 WAI_OPS_NPU_REQUIRE=1 cargo test --locked --release -- --nocapture --test-threads=1`, then the step's report greps | 14 tests passed; every report line present | | repeat | corpus and probe, 5× | identical, 0 mismatches each time | | no device (build host, macOS arm64) | `cargo test --locked --release` in `wai/wai-ops-npu` | 14 passed; the 6 device tests SKIPPED | | absent device under REQUIRE | `WAI_OPS_NPU_REQUIRE=1 cargo test --locked --release --test corpus --test probe --test mutants --test width` | exit 101, "WAI_OPS_NPU_REQUIRE is set" | | clippy | `cargo clippy --locked --release --all-targets` in wai-ops-npu | 0 notes | | clippy, wai-ops and wai-verify (`--features cli`) | same | no new notes: those present are in untouched code and identical at the base | | wai-ops tests | `cargo test --locked --release` | all pass | | corpus regeneration | `wai-verify vectors gen ..` (via rb) | only `npu.jsonl` added; every other file byte-identical | | corpus verify | `wai-verify vectors verify ..` | every file verifies | | independent checker | `python3 -I tools/wai_ops_check.py ops-conformance` | 0 failures; `npu.jsonl` the same bytes (1,635 lines, 733 in the subset) | | lockfile | `scripts/check-lockfiles.sh wai/wai-ops-npu`; `cargo metadata --locked --offline` | current; ok | | repo scripts | check-tests-in-ci, workflow-concurrency, spec-refs, wai-section-refs, vanity, public-text self-test, comparative prose, orphan sources | all 0 | | public names | `check-public-names.sh` on every changed file and the commit messages | clean | | path gate | `scripts/pr-touches-paths.py .github/workflows/wai-ops-npu.yml <base> HEAD` | true | ## Falsifications (committed state, each restored after) - **Conforming kernel with `half_up` → ties-away-from-zero:** corpus exit 101, 20 vectors differ. - **Conforming kernel with shifts 60–63 left to the unit:** requantisation probe exit 101 (46,336 cases differ); corpus exit 101 (36 vectors). - **One `npu.jsonl` line flipped:** - Python checker exit 1 (`DIFF npu.jsonl`); - `vectors verify` exit 1 ("the generator writes other bytes"); - device corpus test exit 101 ("not the ones npu.jsonl lists"). - **The npu-hw step's report checks against tampered reports** (mutants 11 of 12, mismatches=1, probe 3 differ, device none): each exit 1. - **Twelve kernel mutants:** all caught (above). ## Not done - **No decoder runs its graphs on the NPU.** There is no wai-rs `ops_npu` feature, so the capability corpora were not run on the device, and the tier is not claimed for a decode. - **Performance:** one core, 4 lines per dispatch, host-side tap gathering. Multi-core placement, larger dispatches and DMA-side gathering are the obvious next steps. - **Other hardware:** no other NPU; the neural engine of an arm64 desktop not tested; no WebNN browser leg. - **CI:** no forge run of `wai-ops-npu.yml`. Its runs on this PR were cancelled, as the brief asks. The npu-hw step was run by hand on the box as the session user, not as the runner's user. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- **Closed:** Landed on main through merge train E (#499, merge bf39ec9a); verified by content: this PR's head is in main
The Draft enum speaks -22 (default), -18 and -16 by ALPN. -18 is a module of
its own: its Setup Options, Message Parameters (SUBSCRIPTION_FILTER),
control messages (GOAWAY's Request ID, FETCH types with an exclusive end,
PUBLISH_BLOCKED, Table 5's PUBLISH_OK), codes, and the data plane, which is
-22's but for End of Timed-Out Range. draft18::bridge maps each message to
and from -22's model and names what one draft cannot say.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
-16 writes every field with QUIC's integer (RFC 9000 §16), carries every
request and response on one bidirectional control stream by Request ID,
encodes Message Parameters as Key-Value-Pairs, and numbers some codes
differently (PUBLISH_DONE EXPIRED/TOO_FAR_BEHIND, stream reset
UNKNOWN_OBJECT_STATUS). Its module is its own; draft16::bridge maps each
message and object to and from -22, re-encoding the pairs inside
Immutable Extensions.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The relay offers moqt-22, moqt-18 and moqt-16 by ALPN and by
WT-Available-Protocols, and transport::bridge puts a session of another
draft behind its -22 interface: -18 stream by stream, -16 by routing
each request of its one control stream to a stream of its own (Request ID
renumbering, MAX_REQUEST_ID credit, cancel messages). The client side is
the same wrap. tests/drafts.rs runs the two-publisher scenario with WAI
receipts at -18, at -16 and across mixed drafts, FETCH from the cache at
-18 and -16, a refusal by name, and raw -18 and -16 sessions.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Draft::select takes the most preferred draft a client offers (-22 first),
as the relay's TLS does. The relay client takes extra Setup Options
(AUTHORITY and PATH for a moqt:// URI), and the relay tests can run any
session at -18 or -16.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
A client for any MOQT relay at -22, -18 or -16, with the runner's
test-client interface (TAP 14) and its draft-18 test cases, and
wai-receipts: a WAI track, its receipts track and a catalog through the
relay, every object verified at the subscriber against the publisher's
signed receipts, with --tamper payload|receipt|in-flight to show the check
fails. scripts/local.sh runs it against joule-moq-relay on loopback.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
tests/draft18_vectors.rs and tests/draft16_vectors.rs generate each draft's
corpus (every control message, filters, FETCH types, streams, datagrams,
the drafts' own examples, and negative vectors for what each draft
refuses that a later one reads). moqt18_check.py and moqt16_check.py
decode them from the drafts' text alone. The READMEs table every
difference; moq-streaming-format says which drafts the reference speaks.
joule-moq-interop: the PUBLISH flow, WebTransport without verification,
and inclusion and property survival reported apart.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
A publisher's PUBLISH_DONE and its data streams are not ordered with each other
(draft-ietf-moq-transport-22 §9.9). The relay ended the track downstream on the
message and dropped the alias, so a stream still in flight was lost: an -18
test client over WebTransport saw PUBLISH_DONE and no object. The relay now
counts each upstream data stream as its reading ends and, after PUBLISH_DONE,
waits until it has read the count, or three seconds; 0 and the unknown count
end at once. publish_done_streams tests the order at -22, -18 (QUIC and
WebTransport) and -16, a count no stream meets, and 0 and 2^64-1.

The -18 and -16 bridges log each message in and out at debug level, and the
interop client answers requests a namespace-only publisher is sent (a
TRACK_STATUS probe) with DOES_NOT_EXIST. scripts/clients.sh runs other
implementations' interop test clients against the relay on loopback;
public.py keeps each run's debug log.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
A publisher that ends its track (PUBLISH_DONE TRACK_ENDED) and a second that
publishes the same track afresh from group 0: the relay kept the first
instance's cache, its Largest Location and which upstream each subgroup came
from, so the second's group 0 was dropped as a duplicate and the subscriber was
told the first's Largest Location. An interop test client that runs a
publish-only test and then a publish-and-subscribe test on the same track met
exactly this. When nobody publishes a track its publisher ended, a new upstream
now starts it clean; a track the DVR store keeps is kept whole, and a track
whose publisher's session dropped (no TRACK_ENDED) keeps its cache.

An upstream's PUBLISH_DONE status is kept while the relay waits for its last
streams, so a session that closes in that wait ends the track with what the
publisher said; and upstream_gone ends a track only for a session that
published it, so the second call for one session is a no-op.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
-18 cancels SUBSCRIBE_NAMESPACE and SUBSCRIBE_TRACKS by "closing the stream
with either a FIN or RESET_STREAM" (§6.1) and withdraws PUBLISH_NAMESPACE by
cancelling the request (§6.2); it has no FIN that leaves a request standing.
-22 has one (§6.4.2.2). An -18 test client that withdraws its namespace with a
FIN saw no NAMESPACE_DONE through the relay. The -18 bridge now reads an -18
requester's FIN on those three requests as a cancellation, and withholds a -22
requester's FIN on them from an -18 peer, which would read it as one. Tested
with an -18 session written from -18's messages, a -22 publisher and a -22
client over -18.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Two races met when an interop test client finishes publishing: it sends
PUBLISH_DONE and its last data streams, then closes its control stream (an -18
§3.3 protocol violation) and its session. The relay closed the session on the
control stream's FIN at once, cutting streams still arriving, and its session
clean-up ended the publisher's tracks with GOING_AWAY, racing the PUBLISH_DONE
that had just come in, so subscribers saw GOING_AWAY and a reset stream.

Now a closed control stream closes the session once nothing of the peer's
publishing is left (every track it published ended, every data stream of its
read), or after PUBLISH_DONE_STREAM_WAIT. Session clean-up leaves each track to
its own request stream, which ends it with the PUBLISH_DONE status it read, or
GOING_AWAY; and a PUBLISH_DONE waiting on streams stops waiting once the
publisher's session is gone. Tested at -18 with a session written from -18's
messages, and over -22, -18 and -16 with a close after PUBLISH_DONE.

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]>
-16 §9.1 asks for each new Request ID to be "the next in sequence", but its
SUBSCRIBE_NAMESPACE rides a bidirectional stream of its own while the other
requests ride the control stream, and QUIC does not order one stream against
another. A public relay network's -16 endpoint opened a SUBSCRIBE_NAMESPACE
(ID 1) and sent a PUBLISH_NAMESPACE (ID 3) on the control stream; the 3 came
first and the bridge closed the session. The bridge now admits a new ID of the
peer's parity within the grant and leaves the gap for the one in flight; an ID
seen before still closes the session with INVALID_REQUEST_ID, and one past the
grant with TOO_MANY_REQUESTS. a_raw_16_session sends 4 before 2 and then 4
again.

wai-receipts collects until every object has arrived (by alias, group and
object), not a count of streams: a relay may carry a subgroup on more streams
than its publisher opened, and the count stopped the subscriber before the last
group.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The -18 table gains a requester's FIN on namespace requests, the -16 notes the
Request IDs admitted across streams; the relay README states how it ends a
publisher's tracks and treats a closed control stream; -14 is listed as not
implemented. The conformance workflow runs the -18 and -16 independent
decoders beside -22's. Crate docs and descriptions name the three drafts.
joule-code and wai CHANGELOG entries.

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]>
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 runner's test cases and WAI receipts end to end against each relay the
interoperability runner's registry lists, at each draft both speak, over QUIC
and WebTransport; and other implementations' test clients against
joule-moq-relay. Relays and clients are named by what they offer; each result
that is not a pass names its cause.

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]>
Merge origin/main into joule-moq/multi-draft
Some checks failed
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 6s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 5s
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Successful in 4m6s
joule-code conformance gate / joule-moq-relay, every target (pull_request) Successful in 2m45s
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Successful in 2m43s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 16s
WAI conformance / does this change touch it (pull_request) Successful in 10s
WAI energy receipts / does this change touch it (pull_request) Successful in 6s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m31s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m9s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m7s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 30s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m56s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m41s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 3m57s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 17m7s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 1m2s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m25s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 5m16s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 34m40s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 17m48s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h5m9s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 7m54s
standards workspaces build + test / macOS energy backends (pull_request) Failing after 2m54s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m24s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 20s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 48s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 5m40s
f52a0c70e8
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge origin/main into wai/bearers
Some checks failed
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 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-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and 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-quantum studio and desktop / does this change touch it (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (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
f03eda72bc
Co-Authored-By: Claude Opus 5.5 <[email protected]>
bearer-receipts §12: no consent rule of its own; a lawful basis is the distributor's
Some checks failed
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 4m45s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 17s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 11s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 27s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 6m31s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m58s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 15m30s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 6m57s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 27m40s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Successful in 48m12s
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 47m28s
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Successful in 5m50s
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Successful in 7m15s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 15s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Failing after 6m40s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m12s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m58s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 48m45s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 40s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m14s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m15s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m14s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 7m55s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m33s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 22s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 46s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 4m29s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 2m31s
wai-pack / wai-pack · macos (pull_request) Successful in 1m6s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m17s
330eef204a
Reconciling is part of the delivery service a distributor operates over WAI.
The section still says what a reconciliation discloses and to whom, keeps the
fresh-key option, and points a distributor that a regime asks for a lawful
basis to the lawful-basis claim (jwp-receipts §2.4.6).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The int_sr module (WSR1 prior, wai-upscale:sr2/sr4 lowered to one wai-ops/1 graph), the
exact_upscale module (upscale record with residual and target, presentation statement),
synthesis's samples subject and SR evidence, the corpus generator, the second implementation,
the training tool and its trained priors.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
extensions/age-assurance.md registers the record: wai-rating claims for an
object, a track, a span or a room under named schemes, each stating the
minimum age its value means, carried through every derivation (a scheme an
input is rated under is never dropped or lowered); a room's wai-age-policy of
Privacy Pass issuers with one key per threshold; admission by a token of RFC
9578's publicly verifiable type, the relay learning only the issuer and the
threshold; the serving rule, a span's rise holding from its first group; the
sink's age state and predicate with no return path; wai-age-admissions
receipts, every count under 50 suppressed and no member a session could ride
in; and the minors' profile over a descriptor's role bitmaps.

wai-rs gains the age_assurance module (feature age_assurance), reusing the
ad-presentation module's RSASSA-PSS and token reader, and the corpus
live-conformance/age/ written by wai_age_assurance_vectors from fixed seeds,
its issuer keys the published test keys of RFC 9578 A.2, RFC 9500 and RFC
7517.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
extensions/browser-sink.md: a page routes each object to the user agent's decoder, a
native host's or WAI's wasm decoder; the user agent is asked only about codec strings the
WebCodecs Codec Registry lists, and its decoder is taken only where it is exact for the
tier the object needs. capability-constraints gains its register (§3.1) and its
evaluation in a page. A measured figure is reported beside the user agent's
powerEfficient, which stays its word. Every decoded frame carries contentBinding: the
content hash of the receipted object, the link hash of its group receipt, and the tier.

wai-rs: the browser_sink module (feature browser_sink), its corpus generator
wai_browser_sink_vectors, and tests/browser_sink.rs. The corpus is
live-conformance/browser/.

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]>
Written from extensions/browser-sink.md: it reads §4.1's decoders, §4.2's registry rows,
§11's reasons and capability-constraints §3.1's register from the texts, each
capability's class from the registry export, and recomputes every route, constraint
evaluation, energy entry, binding, chain signature and link hash, frame state and side
table. Answers for codec strings no registry row lists are changed every way and never
read; every mutated copy of the corpus fails.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai: exact upscale — the entry's size bound and §3.3's limits at step 4.3, stated
All checks were successful
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m2s
wai-ops integer operators / wasm32-wasip2 (wasmtime) (pull_request) Successful in 30s
wai-ops integer operators / wasm32 under Node (pull_request) Successful in 23s
wai-ops integer operators / independent checker (Python) (pull_request) Successful in 14s
wai-pack / wai-pack · linux (pull_request) Successful in 1m43s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m38s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m18s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 7m49s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 4m34s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 35s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 25s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 26s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m45s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 21m1s
wai-ops integer operators / linux-aarch64 (pull_request) Successful in 1m59s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 10m15s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m2s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 1m54s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m39s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 5m42s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 32m28s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 8m31s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 14m0s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 39s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 48s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 6m6s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 5m1s
wai-ops integer operators / macos-arm64 (pull_request) Successful in 55s
wai-pack / wai-pack · macos (pull_request) Successful in 1m4s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m3s
aa47120215
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-live-web exports the browser_sink functions (routeReport, evaluateConstraints,
readBinding, makeBinding, frameTier, frameState) and, behind its feature int_video,
decodeBound: a wai.video.int_motion envelope verified against its group and object
receipts, decoded by the integer decoder and every frame bound; an object that does not
verify is not decoded, and one decoded without receipts is unbound. joule-moq-web's
verifier now returns a verified object's content hash and its group receipt's link hash,
which a frame decoded from it names. Reason's list is a function, so nothing of the module
reaches include/wai.h.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The extension text (extensions/co-performance.md), the reference module
(wai-rs feature co_performance) and its corpus generator: the room
authority's WPP1 policy; intents compared with what played under pinned
rules and the clock's fidelity statement recomputed; turn schedules in
microseconds or bars, call-and-response pairs, handovers, the floor,
latency budgets and marks; audience inputs to selection windows, the
commitment, three selection rules and their credits.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
web/room/binding.js: the side table a page carries contentBinding in until a registry
lists the member (decoder and timestamp, clone, transfer, reset, a bound; ambiguity
refused), the capability report built in two passes so that only codec strings the
WebCodecs Codec Registry lists are put to the user agent, and the state of the frame on
screen. The room routes each track before it decodes it, binds every frame its video
decoders output to the verified object and group receipt, and shows the state of each
tile's frame with ?debug=binding. web/binding/ runs live-conformance/browser in the page,
the wasm route's verified decode, the binding through clone, transfer, copyTo and
re-encode, the metadata probe and a capability report from the user agent's answers.
e2e: scenario binding, energy.py for the host's per-process counter, and the decode wasm
built by run.sh.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Written from extensions/co-performance.md alone: the policy, statements,
intents and their pinned rules, the fidelity statement, schedules,
handovers, the floor, budgets and marks, windows, inputs, commitments,
the three rules and the credits. Each room through live_rooms_verify.py;
mutated copies of the corpus must each fail.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The verifier is weakened on purpose, one check at a time, and the corpus
must catch each weakened copy. Room verifications are cached by their
inputs, since they do not depend on the checks dropped. The extension
names the window's, the fidelity statement's and the credit's malformed
values explicitly.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The independent verifier's reading of the text found that a grant may narrow a
publishing role to publish nothing and keep its chat: §8.1 gains rule 4 over
grants, held at the first record that puts a minor's publishing grant into
effect. §2, §3.4, §3.6, §5.2, §6.2, §7.3 and §9.1 now pin the reading orders
and the attribution of claims, and the corpus covers the rules it did not
reach.

live-recording §4.4 step 5 refuses a package of a room whose recording policy
has mode 0 (recording_not_permitted); its corpus gains room_never_recorded and
live_record_verify.py the check. joule-moq's grant head reads the minor
attribute, and joule-moq-relay's DVR store keeps nothing of a room once a
session proves a minor's publishing grant of it, as it does for a sealed room,
across a restart; tests/dvr.rs shows it.

live-conformance/age_assurance_verify.py is the second implementation, written
from the text: it shares no code with wai-rs, verifies every RSASSA-PSS in its
own arithmetic, and catches every mutated copy and each of its own dropped
checks. The registry export, SPEC §5, the CHANGELOG, the corpus exclusion
reason and the wai-conformance step follow.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The capability and its ten magics in the reference registry, and the
export regenerated (registry/capabilities.json, vocab/v2.ttl and
REGISTRY.md's table); SPEC §5's paragraph and record list; the corpus's
README with its provenance; the live-conformance index; the sidecar
exclusion's reason for live-conformance; and a step in the independent
verifiers job that runs the module's unit tests, tests/co_performance.rs
and co_performance_verify.py, with the extension in the workflow's paths.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
A page whose numbers do not keep 1920.0 apart from 1920 writes it as an integer, so the
malformed-bound case is a true fraction; §5 says so.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Clippy's type_complexity and too_many_arguments notes, cleared without an
allow.

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]>
age_assurance: a track claim's authorisation as one match guard (clippy collapsible_match)
All checks were successful
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m16s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m3s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m22s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m52s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m22s
wai-pack / wai-pack · linux (pull_request) Successful in 1m20s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m39s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m15s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 8m30s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 3m33s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 16s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 10s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 24s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m11s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 16m28s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 7m50s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m21s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 23s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m18s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m9s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 31m37s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 7m37s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 12m56s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 18s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 42s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 4m15s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 2m26s
wai-pack / wai-pack · macos (pull_request) Successful in 1m5s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m11s
101d31ee01
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A [co] section of the service's configuration: with audience_input above
0, every viewer's grant carries the attribute audience_input and may send
meta events and reactions, and the viewers' grants are served with the
room (co.audience) so a page verifies their inputs; with
latency_budget_ms above 0, every publisher's grant carries it. Either
gives each room a WPP1 policy the authority signs (co.policy). A unit
test checks the grants and the policy, and that two viewers' votes in a
window the clock opens, commits and selects verify as co-performance §9
verifies a room.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
joule-moq-relay: the floor of WAI rooms (co-performance §6)
All checks were successful
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m1s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m17s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 27s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m10s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m50s
wai-pack / wai-pack · linux (pull_request) Successful in 1m28s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m19s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m27s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m12s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 8m36s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 4m4s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 31s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 1m7s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 47s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m19s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 19m36s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m12s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 12m40s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m9s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 29s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 2m14s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 37m47s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 7m52s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 13m30s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 19s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 46s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 5m49s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 3m28s
wai-pack / wai-pack · macos (pull_request) Successful in 1m9s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m19s
c6b3c09944
With [floor] in its configuration, the relay reads each room's turn
schedules (WPT1) and handovers (WPH1) from the events tracks it already
forwards, as it reads moderation decisions, and holds the floor: a media
object a performer publishes out of turn under a schedule that refuses is
not forwarded and is counted. A schedule is honoured from a room key (the
authorities' and the configured ones) or a principal whose session proved
a grant with the direct power, when it reads, verifies and changes no past;
a handover from the turn's holder, a director or a room key, to a holder
of its segment. Unit tests of the reading and the floor, and
tests/floor.rs through a relay on loopback: the object in turn reaches the
subscriber, the other does not, and a handover passes the floor.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The extension text (extensions/direction.md), the wai-rs module behind the
feature direction (records, the framing measure, interpolation, the pinned
render, governance, verification), its corpus generator and test, the corpus
live-conformance/direction/vectors.json and its second implementation,
direction_verify.py.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The record's row and its four document kinds in the registry and its export,
the CI step that runs the reference's tests and direction_verify.py, and the
live-conformance listing; int_kernels_vectors' exclusion names the corpus's
generated layers and rendered frames by their SHA-256.

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]>
Boxes at both sides of every size bound and every column and row bound, past
the edges and at the limits of a signed integer; each interpolation mode rising
and falling, with floors below zero. The size control now keeps its position,
so it fails on the size bound alone.

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]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
direction.md: the exploration record's pictures as layers and references
All checks were successful
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m0s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m2s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 25s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m10s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m50s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 18m59s
wai-pack / wai-pack · linux (pull_request) Successful in 1m19s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m44s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m18s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 7m56s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 4m53s
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 10s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 30s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m52s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 14m38s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 24m37s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m27s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 1m2s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m52s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 6m20s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 40m17s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 8m2s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 14m35s
WAI conformance / cross-arch byte-equality · macos (pull_request) Successful in 20s
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 46s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 5m4s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 2m23s
wai-pack / wai-pack · macos (pull_request) Successful in 1m6s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m16s
8e64d7484f
Co-Authored-By: Claude Opus 5.5 <[email protected]>
live-rooms §10.4's subscribing scopes did not fit the 255 bytes draft-ietf-moq-privacy-pass-auth-03
gives one MoQAuthorizationInfo: the room's scope is now one MoQAuthScope, the subscribing
actions on MATCH_PREFIX of [R] and on every track name, 78 bytes. A challenge's origin_info is
read by its binding: over MOQT the room's scope byte for byte (scope_malformed, scope_mismatch,
the previous revision's scopes among them); over HTTP RFC 9577's list of server names holding
the service's own. The corpus gains the scope and HTTP cases and RFC 9578 A.2's issuance, which
both verifiers check.

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]>
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]>
http falsify: session-accepted re-cut against step6 with the bearer classes beside it
Some checks failed
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m13s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 1m20s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 18m50s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m54s
wai-pack / wai-pack · linux (pull_request) Successful in 1m36s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 29m20s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m36s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m20s
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Successful in 48m58s
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 47m33s
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Successful in 6m45s
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Successful in 6m13s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 4s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 46m36s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Successful in 6m0s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m38s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m10s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 22s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m16s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m14s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m12s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 6m23s
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
de88226c00
The transmission and reconciliation arms now follow the reconstruct-session arm
in receipts::step6, so the patch's context no longer matched and the falsify
shard refused it. Same one-line mutation, same case it must fail.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
joule-moq reads a rating claim as wai-rs does (strict JSON, exactly its members, JCS,
Ed25519 under WAI's strict rule), writes one, and agrees with the age corpus on every claim
and every serving request. A grant head reads its age attribute (§5.4).

The relay takes claims from PUBLISH and SUBSCRIBE_OK track properties and from object
properties, holds what §3.6 lets it honour, bounded per room and track and in all, and serves
each session by its proven grants' threshold: a live object of a group above it is not
forwarded, the streams of groups a newly held claim raises are ended, and a SUBSCRIBE, FETCH
or fill is refused below_threshold at its start or answered up to the first refused group.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge origin/main into wai/browser-binding
Some checks failed
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m15s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m18s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m5s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m56s
wai-pack / wai-pack · linux (pull_request) Successful in 1m28s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m15s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m26s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m0s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 15s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 3m33s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 13s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 23s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m27s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 7m11s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m18s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 15m42s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 22s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m16s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m19s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 29m11s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 8m27s
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
2a610f5535
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge origin/main into joule-moq/multi-draft
Some checks failed
wai-pack / wai-pack · linux-arm64 (pull_request) Has been skipped
wai-pack / wai-pack · macos (pull_request) Has been skipped
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been skipped
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been skipped
wai-pack / wai-pack · dependency licences (pull_request) Has been skipped
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m36s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 5s
wai-quantum studio and desktop / studio · browser (pull_request) Has been skipped
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been skipped
wai-web wasm32 / does this change touch it (pull_request) Successful in 8s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been skipped
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m20s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 18s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 5m21s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 11s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 27s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m38s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 9m14s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m56s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 49s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 19m40s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 11m10s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 31m12s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 20m1s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 6m18s
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
1fa6a0ba8a
wai/CHANGELOG.md: both entries kept, this branch's above main's.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
With [age], each room has a policy and a room rating signed by its authority. A viewer's grant
request without a token is answered 401 with a PrivateToken challenge per key (RFC 9577
§2.1.2), its redemption context HMAC-SHA-256 over the room and a window under a key drawn at
start, its origin_info the service's server name; a token is checked by wai-rs's §5.2 against
the room's age and the grant states its threshold in age (§5.4). Nonces are kept for the two
windows accepted and bounded per window (503 past it, nothing forgotten). Admissions are
counted by window, issuer and threshold alone; GET /age/receipt and receipts_out give the
clock-signed wai-age-admissions receipts, suppressed under 50. The room's rating rides the
clock's events track and the grant's room view, for publishers to carry.

The lock gains wai-quantum (a path crate of the monorepo), by additions only.

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]>
web/room/privacy-pass.js reads RFC 9577's challenges, checks them (§2.1.3), and obtains a
token by blind issuance (RFC 9474 §4.2 to §4.4) from the issuer's directory (RFC 9578 §4); it
reproduces RFC 9578 A.2's TokenRequest and token from the corpus's vector. The page asks
again with the token on a 401, carries the room's rating (and, with rate=, its own rating of
its video, signed in wasm) on every PUBLISH, and records a relay's below_threshold refusal
as withheld. The service now challenges publishers as it does viewers: every track of a rated
room is held to its rating, the room's events among them.

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]>
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]>
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]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
extensions/takedown.md registers wai.media.takedown: a service's signed takedown of a
source (object, group, track or take) under a policy that pins a registry of regime
clocks (registry/takedown-clocks.json, read from Public Law 119-12 s3(a)(3), the IT
Rules 2021 rule 3(1)(d) and 3(2)(b) as amended by G.S.R. 120(E), Regulation (EU)
2024/1083 Art. 18(4) and Regulation (EU) 2022/2065 Art. 16(6)). The closure is
computed from deriving-edge records, synthesis origin claims and group receipts and
held to the takedown's stated set; perceptual matches are a class apart; holders sign
purges and the time to removal is held to the clock (purge_missing, deadline_missed,
window_not_observed); counts per clock, ground, category and source recompute.

The wai-rs module (feature takedown), its corpus (live-conformance/takedown, 31 cases
and 2 counts) and live-conformance/takedown_verify.py agree on every case.

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]>
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]>
A takedown (WAI takedown §10.1) rides the track [K, takedown], 0, signed by K, a key in
dvr.takedown_keys or auth.authorities. The store erases every object whose content
hash its exact or matched set names, and every object of a track its exact set names
from a group on (erased reason 3), in every room; never stores one again (an identical
copy on another track included); withholds them from every FETCH, from the store and
the cache, to moderators too; logs the takedown in takedowns.wdl, verified again on
start; and signs a purge with the relay's key under purges/<link>.json, once.

Also: the takedown module's clippy notes (type aliases, slice::from_ref), and the
Python verifier memoises its signature checks.

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 record and its seven document kinds (wai-takedown, -clocks, -policy, -notice,
-match, -purge, -counts) in codecs/registry.rs, the export regenerated
(capabilities.json, vocab/v2.ttl, REGISTRY.md's table); SPEC §5's record list and a
paragraph; the CHANGELOG entry; the wai-conformance step (the module's unit tests,
tests/takedown.rs, takedown_verify.py) and its path; live-conformance/README.md; and a
pointer from live-moderation §1 to the sibling record.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
age_serving: groups after the claim's object are sent once the relay holds it (each group is read by a task of its own); the corpus paragraph of §12 states each scope case's reason
Some checks failed
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 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-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and 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-quantum studio and desktop / does this change touch it (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (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
94444cfbf6
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The extension text (extensions/influence.md), the influence module of wai-rs behind the
feature influence, its corpus generator and committed corpus; settlement gains attribution
lines (kind 2) recomputed from a basis, and contribution notes the sibling record.

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]>
wai: takedown — settlement acknowledgements show who served or received a covered object
Some checks failed
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m55s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m10s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m0s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m50s
wai-pack / wai-pack · linux (pull_request) Successful in 1m27s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m22s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m28s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m9s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 4m21s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 38s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 10s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 24s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m39s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 16m11s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 7m9s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m18s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 23s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m10s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m0s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 29m34s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 7m7s
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
e96da2f6d7
With wai.delivery.settlement on main, the reserved 'served' slot is filled: the upstream
of an acknowledgement or declaration whose item lists name a covered object is a holder
(role served), and the downstream of a hop's acknowledgement is one too (role received);
a sink is never held to purge. Acknowledgements read under settlement §3.6 with their
item lists recomputed (evidence_invalid otherwise), and count for the matched class too.
The corpus gains two acknowledgements (a viewer's from a cache outside the stores, and
that cache's from the relay), a case whose cache never purged (purge_missing) and one
whose item list does not recompute; the Python verifier reads them with
settlement_verify.py and gains two mutations and two droppable checks.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
influence_verify.py is the second implementation of extensions/influence.md: it verifies each
session with contribution_verify.py, regenerates every conditioned step, reads usage statements
with ai_usage_verify.py and statements with settlement_verify.py (now amended for kind 2 lines
and their bases), and computes every share, line and report itself. Registers
wai.media.influence (registry, wire identifiers, SPEC §5, CHANGELOG, CI step, export); the
settlement corpus's reserved-line vector becomes a line whose basis is not given.

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]>
age_rising: the slow viewer reads until its receipts are whole, not to the bound
Some checks failed
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m50s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m16s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 32s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m4s
wai-pack / wai-pack · linux (pull_request) Successful in 1m26s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m51s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m11s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m26s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m52s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 18s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 11s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 24s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m3s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 17m40s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 4m55s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 3m3s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 8m11s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 11m40s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 46s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m36s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 8m51s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 37m14s
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
e093ae80d8
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge origin/main into wai/influence (shared lists name their tables)
Some checks failed
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m52s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m11s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m5s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m55s
wai-pack / wai-pack · linux (pull_request) Successful in 1m22s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m1s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m39s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 4m6s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 3m30s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 18s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 11s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 27s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 15m11s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m45s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m27s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 4m27s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 19s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 7m29s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m16s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 31m0s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 8m29s
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
8b2bc0d738
Co-Authored-By: Claude Opus 5.5 <[email protected]>
joule-moq-relay, joule-moq-room: clippy's notes on this change
Some checks failed
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 1m24s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 2m2s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 33s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 10m9s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 1m55s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 19m29s
wai-pack / wai-pack · linux (pull_request) Successful in 1m19s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 3m43s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m56s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Successful in 10m26s
wai-quantum studio and desktop / desktop app · macos (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-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (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 / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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-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
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Has been cancelled
3f115a3da4
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]>
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]>
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]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Resolved by meaning: synthesis::Case holds both the priors (exact-upscale) and the unmarked
frames (§7.6); synthesis §11.1 lists both inputs and the three policy members; the
synthesis-mark corpus's cases hold no prior; exact-upscale passes synthesis's second_layer
policy through; the live-conformance table gains the upscale row in its generator column; both
CI steps and both CHANGELOG entries are kept. Generated files are main's here and are
regenerated in the next commit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai: regenerate the synthesis and exact-upscale corpora and the registry export after the merge
Some checks failed
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (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
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
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-relay, every target (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Has been cancelled
23c9c09ae7
The synthesis corpus's cases carry both priors and unmarked frames; the exact-upscale corpus's
policies carry synthesis's second_layer member. Written by wai_synthesis_vectors gen,
wai_upscale_vectors gen and wai registry export.

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]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
registry export: regenerated for the train
Some checks failed
WAI energy receipts / energy receipts · macos (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 neural sink gates / model-free refusals of the neural sink (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (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-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-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (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 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
834562140a
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Shared lists kept both sides (workflow step and path, CHANGELOG, REGISTRY,
SPEC §5, live-conformance index, Cargo features/bins/tests, registry
constants, lib.rs); registry export regenerated.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Shared lists kept both sides (CHANGELOG entry above AGE's; WAI_RATING wire
identifier beside the age-assurance ones). Code merged without conflict.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Room service, by meaning: Settings carries both [age] and [co]; the descriptor
builder (PP's) takes the room's roles, and roles() gives the viewer the
audience kinds when the room has the audience-input power (CO4); a grant
states `age` first, then CO4's `latency_budget_ms` / `audience_input`, then
`order` (live-rooms §4.4 ascending keys); GET /room carries both `age` and
`co`; CO4's tests call grant() with no age. Relay: ratings and the floor are
both fields of the relay. wai features: age_assurance and co_performance.
Shared lists kept both sides; registry export regenerated.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
By meaning:
- joule-moq GrantHead: one attribute reader (CO4b's grant_attrs, checked
  arithmetic, UTF-8 keys and values) in place of AGE's byte-slice reader;
  `minor` and `age` are read from the same attrs CO4b keeps, with AGE's rules.
- joule-moq-room: roles(co, audience_input) is CO4b's role set, fed to PP's
  descriptor(); grant(age) and grant_with(age, ai) keep both callers (the
  age-admitted grant and the AI participant's); PP's refuses_publisher check;
  attributes in key order age, ai, audience_input / latency_budget_ms, order.
  The HTTP proof challenge (live-rooms §10.5.3) is proof_challenge(), beside
  PP's Privacy Pass challenge(); both route tables and doc tables kept.
- Page: both imports; the grant request carries `ai` and, on a 401, the
  Privacy Pass token; snapshot keeps age and co. startRoomService takes both
  `co` and `extra`. room.e2e.mjs carries scenarioAge and scenarioCo whole,
  `age,co` in the default list.
- SPEC: CO4b's revised close of the co-performance paragraph, then AGE's
  and exploration's paragraphs as they were.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Relay, by meaning: the DVR store's module text keeps both the minors' room
(AGE) and the takedown (TKD) paragraphs; a session's object loop keeps CO4b's
floor and audience-input filtering and TKD's takedown track feeding the store;
tests/dvr.rs lists both rules. Shared lists kept both sides (workflow step
and path, CHANGELOG, REGISTRY, SPEC §5, live-conformance index and
provenance line, features, registry constants, lib.rs); export regenerated.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
By meaning:
- Page: app.js keeps the age parameters and paragraph and adds debug=binding;
  imports, state and roomTest hooks of age, co and binding side by side.
  index.html carries the co section and the binding table, each with its CSS.
- room.e2e.mjs carries scenarioBinding whole beside scenarioAge and
  scenarioCo; default list `...,age,co` with a room, `binding` always;
  run.sh's node unit tests are every page module's (capsule, media,
  presentation, privacy-pass, binding).
- wai-live-web: the wai dependency takes co_performance and browser_sink;
  the crate doc lists both.
- joule-moq-web README: one node-test bullet for capsule, media and binding,
  then privacy-pass and ad-presentation; scenarios age, co and binding.
- REGISTRY prose names exploration and browser-sink together; the shared
  lists keep both sides; export regenerated.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
By meaning: the relay keeps PP's rating functions (take_ratings, gate,
group_age) and T1's track_restarts side by side. A track restarted after
TRACK_ENDED drops its cache, owners and Largest Location as T1 has it; the
rating claims held for it stay, since a claim only raises an age and the
publisher carries its claims again on the new PUBLISH. CHANGELOG kept both.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
ad-presentation (on main) registers WPC1 for a player's presentation claim, and
co-performance registered WPC1 again for its commitment, so the registry's
library test (wire_identifiers_are_in_their_documents) refuses the train:
"WPC1 (magic) is listed twice". The commitment takes WPK1, unused anywhere:
the extension's magic table and §7.5 layout, wai-rs's constant, the relay's
floor reader, the independent verifier, the SPEC §5 paragraph, the changelog
entry and two comments. The corpus is regenerated by its generator (only the
commitments' bytes and what signs or digests them change) and the registry
export with it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
C3's synthesis subject `samples` (a picture a party presents and does not
publish) met takedown's exhaustive match once both slices were in one tree
(E0004). Such samples are no item a holder serves or keeps for others, so a
closure claim whose subject they are adds no subject and needs no purge:
takedown §4.2 rule 3, the reference and its second implementation say so, and
the corpus's shared world gains such a claim, so every case exercises it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
takedown corpus: regenerated with the sink-samples claim
Some checks failed
wai-ops integer operators / independent checker (Python) (pull_request) Successful in 15s
wai-ops integer operators / wasm32 under Node (pull_request) Successful in 23s
wai-pack / wai-pack · linux (pull_request) Successful in 1m36s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 21m11s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m34s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 6m55s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (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 energy receipts / energy receipts · macos (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-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
wai-ops integer operators / linux-aarch64 (pull_request) Has been cancelled
wai-ops integer operators / macos-arm64 (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-quantum studio and desktop / desktop app · macos (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 mutations 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been cancelled
793bd478be
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A new crate, wai/wai-ops-npu, with no dependency but wai-ops. Its kernel runs
on one compute core of a tile array, built at run time with the array's open
toolchain; its host side is compiled against the device runtime and loaded.
The interpreter runs each graph through wai_ops::run_with and asks the core for
every arithmetic operator's outputs: conv and conv_transpose as multiply-
accumulate lines (8- and 16-bit operands into 32-bit accumulator lanes, 32-bit
operands into 64-bit lanes, the width the certificate's mac record allows),
rescale, chscale and mul through the unit's shift-round step under the mode
that is the operator's rounding, the elementwise operators, and lut16 a table
block at a time. Movement, policies, checks and state stay the interpreter's.

The unit's shift-round step is exact for shifts 0..59 only: it takes 60..63 as
a left shift by 64 - s (measured), so those shifts go through the core's scalar
unit in 64-bit arithmetic.

Tests: the corpus (every graph vector in the subset, against the committed
results and the interpreter), the rounding, saturation, lane and
requantisation probes, twelve kernel edits the corpus must catch, and the
graphs outside the subset by acc32 alone, which are not exact here.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
One line per graph vector of vectors/ and graphs/ whose graph loads, with the
npu, npu_flags and npu_reasons of its graph's own verdict (§8.5): the vectors an
operator implementation of the accelerator subset must reproduce, and the
features each exercises. The generator (wai-verify vectors gen) writes it, so
vectors verify requires its bytes; the independent checker computes it from
its own bounds pass and requires the same bytes. 733 of the 1635 graph vectors
that load are in the subset.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
- ops-npu-bench: time and energy of the corpus and of an int_synth graph on
  the device and on the CPU, every device result compared with the
  interpreter's first; the package's energy counter (a vendor counter) and the
  device runtime's own estimate (a model), each named as what it is.
- wai-ops-npu.yml: on the linux-amd runner, the probes, the corpus, the twelve
  kernel edits and the width test on the device, with the device declared and
  required; on linux-arm64, the crate builds and an absent device is SKIPPED
  without WAI_OPS_NPU_REQUIRE and a failure with it.
- The corpus test requires the vectors it runs to be exactly those npu.jsonl
  lists in the subset.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
- §9.5: how wai/wai-ops-npu runs the subset; the unit's arithmetic as
  measured (which of its rounding modes is which rounding of §2 and at which
  shifts, its shifts of 60 to 63, its saturation and its accumulator lanes);
  the results by neural processor; time and energy with each reading's class;
  and, per operator, what the Web Neural Network API's Candidate
  Recommendation Draft of 21 October 2026 allows exactly, and why not
  through its convolution, matrix and quantize operators.
- §14.5: npu.jsonl, the subset's vectors.
- determinism-tiers §5 and §6: the device run; no decoder runs its graphs on
  a neural processor yet, so the tier is not claimed for a decode there.
- SPEC, CHANGELOG, the corpus README with the command that runs it by hand.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
npu.jsonl is a .jsonl file that is not a vector file; step 4 already checks it
as the generator writes it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
integer-operators §9.5: the CR's sections cited as such, and the work counted in the core's units
Some checks failed
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
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-relay, every target (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Has been cancelled
08f4d23146
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-ops-npu: the package energy counter is an OnChipCounter, not HwShunt
Some checks failed
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 / 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 energy receipts / 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 / linux-aarch64 (pull_request) Has been cancelled
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Has been cancelled
WAI conformance / does this change touch it (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 9m41s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 12m32s
069b551c85
The powercap package-0 counter is an on-chip vendor counter, so its class is
OnChipCounter (energy-measurement §2), with the whole package as its scope.
HwShunt is the legacy class, accepted when read and never emitted (§2.6).
Corrected in integer-operators §9.5, the CHANGELOG entry and the bench's
documentation.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot closed this pull request 2026-10-26 20:57:21 -04:00
Some checks failed
wai cross-architecture byte-equality / does this change touch it (pull_request) Successful in 6s
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Successful in 6s
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Successful in 8s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 8s
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 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-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-ops-npu integer operators on neural processors / does this change touch it (pull_request) Has been cancelled
wai-ops-npu integer operators on neural processors / neural processor (framework-128gb silicon) (pull_request) Has been cancelled
wai-ops-npu integer operators on neural processors / builds · no device is not a pass (linux-arm64) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (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 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 / 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 energy receipts / 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 / linux-aarch64 (pull_request) Has been cancelled
wai cross-architecture byte-equality / macos-arm64 (reference) (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
wai cross-architecture byte-equality / linux-x86_64 (pull_request) Has been cancelled
WAI conformance / does this change touch it (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 9m41s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 12m32s

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