wai: scene and prior carriage — MPEG-I scene description and USD both ways, priors in safetensors, GGUF and NNC under an integer-quantised profile #445

Closed
dcharlot wants to merge 0 commits from wai/scene-priors into main
Owner

What this is

Slice B2: scene and prior carriage. Based on #428's head (793bd478b).

Prior carriage (prior-carriage §9 to §14, Appendix A; wai-rs feature prior_wire):

  • wai.prior.safetensors and wai.prior.gguf are registered prior forms. A pin's digest covers the whole file. Each layout is read strictly, and a header that could be read two ways is refused with a named code: a member named twice, overlapping or uncovered bytes, a misaligned offset, nonzero padding, or an unknown type. Each layout is also written canonically.

  • Digest rule (§11). A sink refuses a file that is not canonical (header_not_canonical), so one set of tensors and metadata has one file, and one digest, in each form. The registry lists both forms as established exact, so form_reconstruction_is_exact now covers three forms.

  • Integer-quantised profile wai-int/1 (§10). Every tensor is a signed integer the kernel reads as it is, and every scale is itself an integer tensor, so loading does no rounding. Two bindings map native artifacts to named tensors and back, byte for byte:

    • wsr1/1 maps the WSR1 prior of exact-upscale.
    • whm1/1 maps the WHM1 model of integer-payloads.

    §10.3 fixes the order of the load checks: canonical, profile, binding, types and shapes, ranges.

  • NNC reader and writer (§12, Appendix A). They cover the subset that an open implementation stating compliance with ISO/IEC 15938-17:2024 reads: STR, MPS and TPL units, plus data units carrying either NNR_PT_INT (integers under the standard's context-adaptive arithmetic coding) or NNR_PT_RAW_FLOAT. Everything else is refused with nnc_not_read, naming what it met.

    • This covers NNR_PT_FLOAT and NNR_PT_BLOCK, dependent quantisation, block scans with entry points, out-of-band parameters, and LPS/QNT/AGG units.
    • §12.1 states where the reader stops and why: quantised reconstruction, and its conformance tolerance, are in the clauses that were not read.
    • The decoding procedure and its tables are normative text in Appendix A, so the independent verifier implements them from the spec.
  • Round trip on real priors. The two trained WSR1 priors of the exact-upscale corpus (generic, title) go through every form. Each loads back to the native bytes, and int_sr::sr2 gives the same upscaled picture as with the native file (tests/prior_wire.rs).

Scene carriage (scene-carriage, new; wai-rs feature scene_map):

  • A bundle holds a world (WWLD), an audio scene (WSCN) and timed media items named by content hash (urn:wai:asset:<hex>). It is written in two ways:

    • as an ISO/IEC 23090-14 glTF document: world nodes with translations; a listener plus MPEG_audio_spatial sources with LINEAR translation animations; MPEG_media items (application/wai; codecs="wai1.<cap>"), each with an MPEG_buffer_circular buffer and an MPEG_accessor_timed accessor; and MPEG_texture_video for pictures;
    • as a USD layer (USD Core Specification v1.0.1, text format): Xform prims with xformOp:translate, audio objects with time samples, and asset and media prims as reference arcs to urn:wai:asset:.

    Each document carries the WAI payloads exactly, as hex and canonical JSON in extras.wai or customLayerData.

  • Both directions.

    • Reading a WAI-written document gives the carried bundle. It is refused (presentation_mismatch) unless re-exporting that bundle gives the document's bytes, so the presentation and the bytes cannot drift apart.
    • A document WAI did not write becomes new WAI bytes under §5.3 and §7.3: kinematic0 nodes with minted ids, WSCN objects, and media items. It is refused wherever a value would not carry exactly: a rotation, scale or matrix; a position that is not Q32.32; a time between samples; a pregain; an HOA source; media that names no WAI object; a non-WAI USD reference; a USD construct outside the subset. Presentation that is not carried, such as meshes, is reported.
  • Splats are referenced by name only (KHR_gaussian_splatting with EXT_gaussian_splatting_compression_wai), as the brief asked.

Registry. Two new capabilities, wai.prior.safetensors and wai.prior.gguf (lossless, royalty-free, StandardDefined). Wire identifiers wai-int/1, wsr1/1, whm1/1, wai-scene/1 and urn:wai:asset:. Also SPEC §5 rows and a scene paragraph, the CHANGELOG, and the regenerated registry export and vocab. include/wai.h is unchanged; the new modules are cbindgen:ignore.

Decisions and why

  • Exact data in the documents is carried, not reconstructed. glTF floats are binary32 and USD doubles cannot hold every Q32.32 value. So the presentation is a function of the carried bytes, and the import checks that function (re-export and compare) instead of trusting floats. The foreign import is where floats become WAI values, and there it requires exactness or refuses.
  • No mesh geometry inlined in glTF. A world never embeds its assets (interactive-worlds §4.1), and glTF 2.0 and the MPEG extensions I read give a scene no reference to another glTF asset. Meshes therefore travel by hash in glTF, and as reference arcs in USD. Under the core specification's Composition Errors rule, a reader without a reader for the asset ignores that arc.
  • No MPEG_scene_dynamic for op logs. An op is a sim mutation, not a JSON patch. The document presents tick 0 and carries the op log and seal.
  • Attenuation is custom. WAI's distance law has no stated equivalence in ISO/IEC 23090-14 Annex D, which I did not read.
  • The NNC payload is coded, not raw. The integer prior carriage uses NNR_PT_INT with the arithmetic coding rather than raw floats. That is the payload type the open implementation uses for integer tensors, it is exact by construction, and it was measured to interoperate (below).
  • The tensor-file forms are established exact; NNC stays unlisted. The NNC form also covers quantised payloads, whose reconstruction is still the open question of §5.
  • Names. GGUF's required general.architecture is wai in the profile. Topology storage formats 3 and 4 are referred to by number.
  • Pin path not wired. pin::READABLE_FORMS is unchanged, so the reference sink still refuses a pin in these forms with form_unreadable. Wiring them needs every one-file decoder to take the transcoded native bytes, which is beyond this slice; §7 lists it as not implemented.

Measured against an open implementation of ISO/IEC 15938-17 (not in CI)

On the build host (arm64), I used the open implementation's source at 0e3dcd2961701572d253f175754c09952a4b44c7, with its arithmetic coder compiled from source with pybind11. Its licence is BSD, grants no patent rights, and was read before download; nothing of it is committed. The check is wai/tools/nnc_interop_check.py. For all seven corpus priors:

  • its decoder read our NNC files to the same integers;
  • its encoder wrote every data unit byte-identical to ours (13/13, 13/13, 13/13, 13/13, 10/10, 10/10, 8/8);
  • our reader read its whole bitstreams.

ALL_OK. Its bitstreams differ from ours only in our metadata topology unit. The exact setup is in the prior-forms README.

Checks

check command result
prior_wire unit tests cargo test --locked --no-default-features --features prior_wire --lib -- prior_wire:: strict_json:: codecs::prior_form (rb) 18 passed
prior corpus, kernels cargo test --locked --no-default-features --features prior_wire,neural_int --test prior_wire (rb; also --release) 4 passed
scene_map unit tests cargo test --locked --no-default-features --features scene_map --lib -- scene_map:: strict_json:: (rb) 10 passed
scene corpus cargo test --locked --no-default-features --features scene_map --test scene_map (rb) 2 passed
CI lib unit tests cargo test --lib --no-default-features --features world,audio_scene,…,http (the workflow's set; rb) 852 passed
corpus regen wai_prior_forms_vectors verify, wai_scene_vectors verify (rb) byte for byte
registry wai registry export then --check (rb) up to date
clippy cargo clippy --no-default-features --features prior_wire,scene_map,neural_int --all-targets and each feature alone (rb) no notes on touched files
Python verifiers python3 -I live-conformance/prior_forms_verify.py live-conformance/prior-forms; … scene_verify.py live-conformance/scene 89 vectors + 105 byte-flipped copies caught; 76 vectors + 100 caught
other verifiers every live-conformance/*_verify.py in the workflow, pin, int-payload, staged, edge (rb, Python 3.12) all pass; bearer_verify.py and http_verify.py need cryptography, which the host lacks (environment, unrelated)
vocab shapes wai/vocab/check_shapes.py (rb, rdflib 7.6.0 / PyLD 3.3.0 / pyshacl 0.40.1) every case behaves as stated
repo checks check-tests-in-ci.py, check-workflow-concurrency.sh, check-spec-refs.py, check-wai-section-refs.py, check-no-vanity-metrics.sh, test-public-text-checks.sh, check-comparative-prose.sh, check-orphan-sources.py all exit 0
public names check-public-names.sh on all 82 changed text files; commit messages and this body clean
workflow YAML ruby -ryaml -e 'ARGV.each{|f| YAML.load_file(f)}' .github/workflows/*.yml; wfsteps.py HEAD 793bd478b parses; only my two new steps are new

Falsifications

All were run after committing. Each edit was restored afterwards. Each one makes its check exit non-zero.

  • Rust (rb, exit 101 each):
    • the canonical check dropped from load;
    • one entry of the RLPS table changed;
    • GGUF dimensions not reversed;
    • the wsr1/1 shift range widened;
    • wsr1/1 mult written big-endian (caught by the kernel-equality test);
    • a §13 row removed;
    • glTF presentation_mismatch dropped;
    • the JSON exponent threshold moved;
    • the USD unlisted-xformOp check dropped;
    • the time check accepting sample fractions;
    • a §8 row removed.
  • Python (exit 1 each):
    • a byte of a corpus file flipped (both corpora);
    • the canonical check dropped;
    • the duplicate-member check dropped;
    • a table A.1 entry changed;
    • GGUF dimension order;
    • the shift range;
    • a §13 row;
    • the presentation comparison;
    • the rotation check;
    • the JSON and USD exponent thresholds;
    • binary32 rounding ties away from even;
    • fractional times;
    • a §8 row;
    • other xformOps accepted.

Three of these first passed on the corpus as generated: the JSON threshold, the USD threshold and the ties. Two commits fix that. The first adds an edge world (exponent switch points, binary32 and binary64 ties both ways, the least step and the largest value). The second adds an unlisted-rotation USD layer. After them, every falsification fails as required.

USD's e ≥ 15 scientific branch cannot be reached by a Q32.32 value (|v| < 2^31), so no vector can exercise it. Both implementations keep it.

Not done

  • Pin path. The pin verifier and the decoders do not read the tensor-file forms or NNC (§7).
  • The rest of NNC.
    • Not read: quantised payloads (NNR_PT_FLOAT, NNR_PT_BLOCK), dependent quantisation, block scans and entry points, LPS/QNT/AGG units, and incremental updates.
    • Not tested: the conformance bitstreams of ISO/IEC 15938-18 (not openly available).
    • Not read: the standard's clauses 6 to 9.
  • Scene carriage limits.
    • Not carried: tick-after-0 presentation of worlds, glTF mesh geometry, audio and media from foreign USD layers (the core spec defines no audio prims), and HOA sources.
    • Not read: ISO/IEC 23090-14's own text (Annex D, the timed-accessor header of clause 5). Only the extensions' published descriptions and schemas were read; their licence is marked as not yet determined, and nothing of them is copied.

Observation on the base. In #428's wai-conformance.yml (line 1411 at 793bd478b), the step takedown · wai-rs and takedown_verify.py has neither run nor uses. wfsteps.py flags it, and the influence comment block follows it. It looks cross-wired by a merge. It is not touched here.

🤖 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

## What this is Slice B2: scene and prior carriage. Based on #428's head (`793bd478b`). **Prior carriage** ([prior-carriage](wai/extensions/prior-carriage.md) §9 to §14, Appendix A; `wai-rs` feature `prior_wire`): - `wai.prior.safetensors` and `wai.prior.gguf` are registered prior forms. A pin's digest covers the whole file. Each layout is read strictly, and a header that could be read two ways is refused with a named code: a member named twice, overlapping or uncovered bytes, a misaligned offset, nonzero padding, or an unknown type. Each layout is also written canonically. - **Digest rule (§11).** A sink refuses a file that is not canonical (`header_not_canonical`), so one set of tensors and metadata has one file, and one digest, in each form. The registry lists both forms as established exact, so `form_reconstruction_is_exact` now covers three forms. - **Integer-quantised profile `wai-int/1` (§10).** Every tensor is a signed integer the kernel reads as it is, and every scale is itself an integer tensor, so loading does no rounding. Two bindings map native artifacts to named tensors and back, byte for byte: - `wsr1/1` maps the `WSR1` prior of exact-upscale. - `whm1/1` maps the `WHM1` model of integer-payloads. §10.3 fixes the order of the load checks: canonical, profile, binding, types and shapes, ranges. - **NNC reader and writer (§12, Appendix A).** They cover the subset that an open implementation stating compliance with ISO/IEC 15938-17:2024 reads: STR, MPS and TPL units, plus data units carrying either `NNR_PT_INT` (integers under the standard's context-adaptive arithmetic coding) or `NNR_PT_RAW_FLOAT`. Everything else is refused with `nnc_not_read`, naming what it met. - This covers `NNR_PT_FLOAT` and `NNR_PT_BLOCK`, dependent quantisation, block scans with entry points, out-of-band parameters, and LPS/QNT/AGG units. - §12.1 states where the reader stops and why: quantised reconstruction, and its conformance tolerance, are in the clauses that were not read. - The decoding procedure and its tables are normative text in Appendix A, so the independent verifier implements them from the spec. - **Round trip on real priors.** The two trained `WSR1` priors of the exact-upscale corpus (`generic`, `title`) go through every form. Each loads back to the native bytes, and `int_sr::sr2` gives the same upscaled picture as with the native file (`tests/prior_wire.rs`). **Scene carriage** ([scene-carriage](wai/extensions/scene-carriage.md), new; `wai-rs` feature `scene_map`): - A bundle holds a world (`WWLD`), an audio scene (`WSCN`) and timed media items named by content hash (`urn:wai:asset:<hex>`). It is written in two ways: - as an ISO/IEC 23090-14 glTF document: world nodes with translations; a listener plus `MPEG_audio_spatial` sources with LINEAR translation animations; `MPEG_media` items (`application/wai; codecs="wai1.<cap>"`), each with an `MPEG_buffer_circular` buffer and an `MPEG_accessor_timed` accessor; and `MPEG_texture_video` for pictures; - as a USD layer (USD Core Specification v1.0.1, text format): `Xform` prims with `xformOp:translate`, audio objects with time samples, and asset and media prims as reference arcs to `urn:wai:asset:`. Each document carries the WAI payloads exactly, as hex and canonical JSON in `extras.wai` or `customLayerData`. - **Both directions.** - Reading a WAI-written document gives the carried bundle. It is refused (`presentation_mismatch`) unless re-exporting that bundle gives the document's bytes, so the presentation and the bytes cannot drift apart. - A document WAI did not write becomes new WAI bytes under §5.3 and §7.3: kinematic0 nodes with minted ids, WSCN objects, and media items. It is refused wherever a value would not carry exactly: a rotation, scale or matrix; a position that is not Q32.32; a time between samples; a pregain; an HOA source; media that names no WAI object; a non-WAI USD reference; a USD construct outside the subset. Presentation that is not carried, such as meshes, is reported. - Splats are referenced by name only (`KHR_gaussian_splatting` with `EXT_gaussian_splatting_compression_wai`), as the brief asked. **Registry.** Two new capabilities, `wai.prior.safetensors` and `wai.prior.gguf` (lossless, royalty-free, `StandardDefined`). Wire identifiers `wai-int/1`, `wsr1/1`, `whm1/1`, `wai-scene/1` and `urn:wai:asset:`. Also SPEC §5 rows and a scene paragraph, the CHANGELOG, and the regenerated registry export and vocab. `include/wai.h` is unchanged; the new modules are `cbindgen:ignore`. ## Decisions and why - **Exact data in the documents is carried, not reconstructed.** glTF floats are binary32 and USD doubles cannot hold every Q32.32 value. So the presentation is a function of the carried bytes, and the import checks that function (re-export and compare) instead of trusting floats. The foreign import is where floats become WAI values, and there it requires exactness or refuses. - **No mesh geometry inlined in glTF.** A world never embeds its assets (interactive-worlds §4.1), and glTF 2.0 and the MPEG extensions I read give a scene no reference to another glTF asset. Meshes therefore travel by hash in glTF, and as reference arcs in USD. Under the core specification's Composition Errors rule, a reader without a reader for the asset ignores that arc. - **No `MPEG_scene_dynamic` for op logs.** An op is a sim mutation, not a JSON patch. The document presents tick 0 and carries the op log and seal. - **Attenuation is `custom`.** WAI's distance law has no stated equivalence in ISO/IEC 23090-14 Annex D, which I did not read. - **The NNC payload is coded, not raw.** The integer prior carriage uses `NNR_PT_INT` with the arithmetic coding rather than raw floats. That is the payload type the open implementation uses for integer tensors, it is exact by construction, and it was measured to interoperate (below). - **The tensor-file forms are established exact; NNC stays unlisted.** The NNC form also covers quantised payloads, whose reconstruction is still the open question of §5. - **Names.** GGUF's required `general.architecture` is `wai` in the profile. Topology storage formats 3 and 4 are referred to by number. - **Pin path not wired.** `pin::READABLE_FORMS` is unchanged, so the reference sink still refuses a pin in these forms with `form_unreadable`. Wiring them needs every one-file decoder to take the transcoded native bytes, which is beyond this slice; §7 lists it as not implemented. ## Measured against an open implementation of ISO/IEC 15938-17 (not in CI) On the build host (arm64), I used the open implementation's source at `0e3dcd2961701572d253f175754c09952a4b44c7`, with its arithmetic coder compiled from source with pybind11. Its licence is BSD, grants no patent rights, and was read before download; nothing of it is committed. The check is `wai/tools/nnc_interop_check.py`. For all seven corpus priors: - its decoder read our NNC files to the same integers; - its encoder wrote every data unit byte-identical to ours (13/13, 13/13, 13/13, 13/13, 10/10, 10/10, 8/8); - our reader read its whole bitstreams. `ALL_OK`. Its bitstreams differ from ours only in our metadata topology unit. The exact setup is in the prior-forms README. ## Checks | check | command | result | |---|---|---| | prior_wire unit tests | `cargo test --locked --no-default-features --features prior_wire --lib -- prior_wire:: strict_json:: codecs::prior_form` (rb) | 18 passed | | prior corpus, kernels | `cargo test --locked --no-default-features --features prior_wire,neural_int --test prior_wire` (rb; also `--release`) | 4 passed | | scene_map unit tests | `cargo test --locked --no-default-features --features scene_map --lib -- scene_map:: strict_json::` (rb) | 10 passed | | scene corpus | `cargo test --locked --no-default-features --features scene_map --test scene_map` (rb) | 2 passed | | CI lib unit tests | `cargo test --lib --no-default-features --features world,audio_scene,…,http` (the workflow's set; rb) | 852 passed | | corpus regen | `wai_prior_forms_vectors verify`, `wai_scene_vectors verify` (rb) | byte for byte | | registry | `wai registry export` then `--check` (rb) | up to date | | clippy | `cargo clippy --no-default-features --features prior_wire,scene_map,neural_int --all-targets` and each feature alone (rb) | no notes on touched files | | Python verifiers | `python3 -I live-conformance/prior_forms_verify.py live-conformance/prior-forms`; `… scene_verify.py live-conformance/scene` | 89 vectors + 105 byte-flipped copies caught; 76 vectors + 100 caught | | other verifiers | every `live-conformance/*_verify.py` in the workflow, pin, int-payload, staged, edge (rb, Python 3.12) | all pass; `bearer_verify.py` and `http_verify.py` need `cryptography`, which the host lacks (environment, unrelated) | | vocab shapes | `wai/vocab/check_shapes.py` (rb, rdflib 7.6.0 / PyLD 3.3.0 / pyshacl 0.40.1) | every case behaves as stated | | repo checks | `check-tests-in-ci.py`, `check-workflow-concurrency.sh`, `check-spec-refs.py`, `check-wai-section-refs.py`, `check-no-vanity-metrics.sh`, `test-public-text-checks.sh`, `check-comparative-prose.sh`, `check-orphan-sources.py` | all exit 0 | | public names | `check-public-names.sh` on all 82 changed text files; commit messages and this body | clean | | workflow YAML | `ruby -ryaml -e 'ARGV.each{\|f\| YAML.load_file(f)}' .github/workflows/*.yml`; `wfsteps.py HEAD 793bd478b` | parses; only my two new steps are new | ## Falsifications All were run after committing. Each edit was restored afterwards. Each one makes its check exit non-zero. - **Rust** (rb, exit 101 each): - the canonical check dropped from `load`; - one entry of the RLPS table changed; - GGUF dimensions not reversed; - the `wsr1/1` shift range widened; - `wsr1/1` mult written big-endian (caught by the kernel-equality test); - a §13 row removed; - glTF `presentation_mismatch` dropped; - the JSON exponent threshold moved; - the USD unlisted-xformOp check dropped; - the time check accepting sample fractions; - a §8 row removed. - **Python** (exit 1 each): - a byte of a corpus file flipped (both corpora); - the canonical check dropped; - the duplicate-member check dropped; - a table A.1 entry changed; - GGUF dimension order; - the shift range; - a §13 row; - the presentation comparison; - the rotation check; - the JSON and USD exponent thresholds; - binary32 rounding ties away from even; - fractional times; - a §8 row; - other xformOps accepted. Three of these first passed on the corpus as generated: the JSON threshold, the USD threshold and the ties. Two commits fix that. The first adds an edge world (exponent switch points, binary32 and binary64 ties both ways, the least step and the largest value). The second adds an unlisted-rotation USD layer. After them, every falsification fails as required. USD's `e ≥ 15` scientific branch cannot be reached by a Q32.32 value (|v| < 2^31), so no vector can exercise it. Both implementations keep it. ## Not done - **Pin path.** The pin verifier and the decoders do not read the tensor-file forms or NNC (§7). - **The rest of NNC.** - Not read: quantised payloads (`NNR_PT_FLOAT`, `NNR_PT_BLOCK`), dependent quantisation, block scans and entry points, LPS/QNT/AGG units, and incremental updates. - Not tested: the conformance bitstreams of ISO/IEC 15938-18 (not openly available). - Not read: the standard's clauses 6 to 9. - **Scene carriage limits.** - Not carried: tick-after-0 presentation of worlds, glTF mesh geometry, audio and media from foreign USD layers (the core spec defines no audio prims), and HOA sources. - Not read: ISO/IEC 23090-14's own text (Annex D, the timed-accessor header of clause 5). Only the extensions' published descriptions and schemas were read; their licence is marked as not yet determined, and nothing of them is copied. **Observation on the base.** In #428's `wai-conformance.yml` (line 1411 at `793bd478b`), the step `takedown · wai-rs and takedown_verify.py` has neither `run` nor `uses`. `wfsteps.py` flags it, and the influence comment block follows it. It looks cross-wired by a merge. It is not touched here. 🤖 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]>
prior-carriage §9 to §14 and Appendix A: wai.prior.safetensors and
wai.prior.gguf registered as prior forms and listed as established exact;
the integer-quantised profile wai-int/1 with the bindings wsr1/1 and
whm1/1; the digest rule (a canonical file per form); the NNC reader and
writer for the subset an open implementation of the 2024 edition reads
(integer tensors under the context-adaptive arithmetic coding, raw
floats), with where it stops. wai-rs: prior_wire (feature prior_wire),
the corpus generator wai_prior_forms_vectors and tests/prior_wire.rs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
prior_forms_verify.py implements prior-carriage §9 to §12 and Appendix A
from the text (strict readers, canonical writers, the arithmetic coder both
ways, both bindings) and agrees with wai-rs on every vector; it also flips
bytes of every accepted file and requires each copy to be caught.

§12.4 records the measurement: an open implementation of ISO/IEC 15938-17
reads our NNC files to the same integers, its encoder writes byte-identical
data units, and our reader reads its bitstreams. tools/nnc_interop_check.py
is the check; it runs that implementation's code and is not a CI step.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai-rs scene_map (feature scene_map): a bundle (a WWLD world, a WSCN audio
scene, timed media items by content hash) exported as a glTF 2.0 document
with MPEG_media, MPEG_buffer_circular, MPEG_accessor_timed,
MPEG_audio_spatial and MPEG_texture_video, and as a USDA layer of the USD
Core Specification v1.0.1 (prims, translate ops, time samples, asset
references by urn:wai:asset), each carrying the bundle's bytes exactly;
imports read a WAI-written document back to the same bundle (refused
unless re-exporting gives the same bytes) and a foreign one to new WAI
bytes, refused where a value would not carry exactly. Corpus generator
wai_scene_vectors and tests/scene_map.rs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
extensions/scene-carriage.md: the bundle, the numbers that cross the
mapping, the glTF document (MPEG_media, MPEG_buffer_circular,
MPEG_accessor_timed, MPEG_audio_spatial, MPEG_texture_video) and the USD
layer each direction writes and reads, the refusals and the corpus.
scene_verify.py implements it from the text and agrees with wai-rs on
every vector; it also flips bytes of every exported document and
requires each copy to be caught.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai.prior.safetensors and wai.prior.gguf join SPEC §5's prior-artifact
table (lossless, royalty-free, StandardDefined, established exact); the
NNC row says what the reference now reads. Wire identifiers wai-int/1,
wsr1/1, whm1/1 (prior-carriage §10), wai-scene/1 and urn:wai:asset:
(scene-carriage §2). A §5 paragraph states scene carriage. The registry
export is regenerated. wai-conformance.yml runs both modules' tests and
both independent verifiers, and fires on edits of the two extension
texts. Clippy notes on the new code fixed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Positions where JSON and USD switch to exponent form, binary32 and
binary64 ties in both directions, the least step and the largest value,
so a verifier that spells or rounds one of them otherwise fails.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
scene corpus: a transform operation the layer's order does not list is refused too
Some checks failed
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 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
6064a35c82
Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot closed this pull request 2026-10-26 20:57:27 -04:00
Some checks failed
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-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-pack / wai-pack · does this change touch it (pull_request) Has been cancelled
wai-pack / wai-pack · linux (pull_request) Has been cancelled
wai-pack / wai-pack · linux-arm64 (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been cancelled
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been cancelled
wai-pack / wai-pack · dependency licences (pull_request) Has been cancelled
wai-ops integer operators / does this change touch it (pull_request) Has been cancelled
wai-ops integer operators / linux-aarch64 (pull_request) Has been cancelled
wai-ops integer operators / linux-x86_64 (pull_request) Has been cancelled
wai-ops integer operators / macos-arm64 (pull_request) Has been cancelled
wai-ops integer operators / wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-ops integer operators / wasm32 under Node (pull_request) Has been cancelled
wai-ops integer operators / independent checker (Python) (pull_request) Has been cancelled
wai-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 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 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

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