wai: live-rooms (Draft) — wai.live.room: room descriptor, room grants, exchange and revocation, slots, publish profiles, room verifier (stacked on #279) #284

Closed
dcharlot wants to merge 0 commits from wai/live-rooms into main
Owner

Stacked on #279 (wai/live-events, head defa48c0). This branch was cut from origin/wai/live-events, not from main; its base here is main only because the forge's PR tool opens every PR against main, so the diff below includes #279's commits until #279 lands. It lands through the top of the stack: merge #279 first, then this. Do not merge this one on its own.

What this is

Slice L2 of WAI's live and interactive work: wai.live.room, a spec, a reference implementation, a conformance corpus and an independent verifier.

  • wai/extensions/live-rooms.md registers the record wai.live.room.
    • Room descriptor WRD1, signed by the room authority; its SHA-256 digest is the room id every WEV1 event names. It fixes t0, the clock key (the authority's own, or a relay's acting for it), a tick for grant exchanges, the authority's key-log origin, roles mapped to capability sets (publish per media kind, subscribe up to max_layer, the event kinds as live-events' bitmap, and the moderate / direct / compose / record powers), limits (participants, publishers, a WEP1 event ceiling no grant exceeds, a re-validation interval), slots, publish profiles, the review policy (deadline plus fallback; fields and meaning only) and the recording policy with a region pin (ISO 3166-1 alpha-2) for data residency.
    • Room grant WRG1, signed by the authority: room, principal, role and caps, nbf/exp (at most 14 days), max_layer, precedence, origins, a single-use nonce once, a viewer id for revocation, the embedded WEP1 policy (allowed kinds, payload and text bounds, rate windows), joules_ceiling, funds_ceiling with its ISO 4217 currency, the profiles it publishes with, and at most 1 KB of composition attributes (featured, order, pip). Eight ordered checks, each with its reason (§4.3).
    • How a receipt names a grant (§4.5): the existing grant reference (grant_hash, capability = wai.live.room, joule_ceiling_micro, funds_ceiling), as package and playlist receipts already write it.
    • Grant exchange (§4.6): a new grant chained by prev to the old one, same room and principal, effective at a tick, recorded as L1's grant_exchange lifecycle event; an exchange may not leave the principal publishing what the new grant forbids.
    • Revocation through the existing key log (§5): the authority's key is a key-log entry with the new authority live/room; a grant is revoked by listing its digest in the head's revoked_modules, a viewer by listing its tag SHA-256("wai:live-viewer\x01" ‖ viewer). The room verifier takes the head the caller reached (jwp-receipts §7.4 step 3) and holds it to §7.2 rules 1–3.
    • Track naming (§6): MOQT Full Track Name with namespace (room, principal or _<slot>, media kind or events) and the layer as the Track Name. Every byte is in [a-z0-9_], so MOQT -22 §8.8's rendering is the bytes themselves; an L1 anchor's track digest takes that rendering.
    • Precedence and redundancy (§7): a slot is a virtual track; a higher precedence takes it over with no new session; with redundancy 2 a standby takes it on failover once failover_ms has passed since the live publisher's last_seen. The detail of every L1 lifecycle kind is defined, with the check order of each.
    • Publish profiles (§8) as data: speech, music (stereo, fullband 48 kHz, no echo cancellation / noise suppression / gain control, no DTX, a 128 kbps floor), screen (L1T3), camera-720, camera-1080; a profile under a registered name must equal the registered record.
    • Room verification (§9): merge every principal's chain by room clock (room keys first at equal t, each chain's own order kept), verify every event with L1's verifier under the policy of the grant in effect at its t, replay the lifecycle into room state (present, published tracks, slot live/standby with the current precedence holder, the timeline of active grants), and refuse with a named reason.
    • Bindings (§10), as mapping tables: CTA-5007-B (CWT claims by IANA key, 308–323 and the standard ones), draft-ietf-moq-c4m-01's moqt claim (default-deny, re-validation via moqt-reval = the descriptor's reval), RFC 9246 URI Signing, and draft-ietf-moq-privacy-pass-auth-03 for viewers that need no identity.
  • wai/wai-rs/src/live_room.rs, feature live_room = live_events + key_discovery (no new dependency; Ed25519 through crate::sig::verify_strict, SHA-256, the key log's Revision, L1's RoomVerifier). cbindgen:ignore, like live_events: include/wai.h is unchanged (regenerated on the build host after touching cbindgen.toml: no diff).
  • wai/live-conformance/rooms/: vectors.json from fixed seeds (wai_live_room_vectors gen), README with the provenance line.
    • Accepted: a lesson room (director, performer, audience, the director's remote record_start/record_stop; review and recording policies; a key-log head revoking a grant and a viewer the room never admits), a broadcast room (one publisher, viewers voting, a moderator's decision; no key log, authority as its own clock), a takeover, a redundant pair with failover, and an exchange promoting a viewer to publisher. Plus one gap vector.
    • Refused: every reason of §11 at least once, each a single-defect control, plus the L1 codes a descriptor, grant or record of a room raises.
    • Each accepted vector states the room id, grant digests, the merged order with the grant each record was verified under, the room state with the reachable track names, the tally, and each grant's moqt scopes.
  • wai/live-conformance/live_rooms_verify.py: standard library only, run with -I; strict Ed25519 from claim-conformance/_ed25519.py, BLAKE3 from _blake3.py (key-log commitments); every event verified by L1's own second implementation live_events_verify.py. It shares no code with wai-rs and agrees on every vector, reason, place, order, state, tally and scope; it also rebuilds the registered profiles from §8.2's table and compares them with the corpus. Mutating the corpus's state, tally, scopes, order or refusal place makes it exit 1 (checked by hand on altered copies).
  • Registry and CI: SPEC §5 paragraph and the record list; REGISTRY prose; wai registry export re-run (wai.live.room, magics WRD1 and WRG1); CHANGELOG entry; jwp-receipts §7.2 (revoked_modules also holds room grants and viewers), §7.5 (live/room authority) and §7.6; a step in the independent-verifiers job of wai-conformance.yml (unit tests, tests/live_room.rs, the Python verifier) and wai/extensions/live-rooms.md in both path lists; [[test]] live_room with required-features = ["live_room"].

Decisions worth a look

  • The layer is the Track Name, not a fourth namespace field. moq-streaming-format §4.1 requires a staged set's tracks to share one namespace, which a per-layer namespace field would break. The full tuple is still room / principal / kind / layer.
  • Revocation reuses revoked_modules rather than adding a member to the key-log revision (which rule 1's exact-members check would refuse in every existing reader). Grant digests and viewer tags are SHA-256 values under their own domains, so they cannot collide with module digests; the jwp-receipts text now says the list holds all three kinds.
  • Revocation is timeless, like a key's: a revoked grant is refused at every use, including in an after-the-fact replay. Ending a principal's participation at a time is leave, not revocation.
  • CAT encoding: not implemented. The crate has no CBOR or COSE, and CTA-5007-B's claim value syntaxes are not restated here; the CAT table maps claims by name and IANA key. What is implemented is the moqt claim's scope list (draft-ietf-moq-c4m-01 §2.1) as data, derived from each grant and checked by both implementations.

Build and test (all through rb on the build host)

The build host had rebooted shortly before this work (ssh timed out on the first warm-up attempt); every run below completed. Cargo output went to log files on the host and was grepped there; each cargo command's own exit status is shown.

command (in wai/wai-rs, --no-default-features) exit
cargo check --lib --tests --bins --features live_room 0
cargo run --features live_room --bin wai_live_room_vectors -- gen ../live-conformance/rooms 101, then 0: the generator's own assertion caught a vector written with the clock's t going back; fixed and regenerated
cargo test --features live_room --lib live_room:: 0 (6 passed)
cargo test --features live_room --test live_room 0 (4 passed: regenerates byte for byte, every outcome, every reason covered, §11 equals Reason::ALL)
cargo test --features live_events --lib live_events:: and --test live_events 0, 0 (L1 unchanged)
cargo test --lib codecs::registry 101 before the export (expected: the committed export was stale), 0 after
cargo run --bin wai -- registry export, then ... --check 0, 0
cargo test --test carriage --test manifest_builders --test cli_wrap_intent --test cli_registry --test corpus_provenance 0
cargo test --lib --features world,audio_scene,haptic,splat4d,score,provenance,neural_int,film,oer,receipt_claims,key_discovery,staged,video_int,audio_int,splat_int,stage_measure,telemetry,video_package,http (the CI lib set) 0 (833 passed)
cargo run --features live_room --bin wai_live_room_vectors -- verify ../live-conformance/rooms 0
cargo clippy --features live_room --lib --bin wai_live_room_vectors --test live_room 0; three lints in the new module fixed, none left in it
python3 -I live-conformance/live_rooms_verify.py live-conformance/rooms 0
touch cbindgen.toml then a build: git status include/ clean

Repository checks, run locally: check-tests-in-ci, check-spec-refs, check-wai-section-refs, check-no-vanity-metrics, check-comparative-prose, check-workflow-concurrency, check-lockfiles, and the pr-touches-paths self-test: all exit 0. check-public-names.sh was not run (it needs the private denylist); the changed files were checked by hand for names.

Deferred

  • L3 (wai.live.compose): what featured, order and pip mean, the layout function, and the compose power's object. This slice signs the attributes and checks their syntax only.
  • L4 (wai.capture.take): the take_commit payload, the take a record_start/record_stop pair brackets, and consent. This slice gives record_start/record_stop to the record power only.
  • L5 (network reference): carrying grants and CAT/moqt tokens on the wire (MOQT AUTHORIZATION TOKEN), a relay that enforces scopes, re-validates against key status and records takeover/failover from real media, and the CBOR/COSE encoding of a CAT.
  • Also later: the review workflow and its statement of reasons (L12), checking a recording's storage region against the pin (L7), and per-grant metering against joules_ceiling/funds_ceiling (L9).

🤖 Generated with Claude Code


Closed: landed in main through #289 (main 13360b4e), which contains this branch's head 440f7dae unchanged. #289 also adds two fields to the recording policy (commit_interval_ms, jitter_ms), so the room ids in the corpus as merged differ from this branch's.

**Stacked on #279** (`wai/live-events`, head `defa48c0`). This branch was cut from `origin/wai/live-events`, not from main; its base here is main only because the forge's PR tool opens every PR against main, so the diff below includes #279's commits until #279 lands. It lands through the top of the stack: merge #279 first, then this. Do not merge this one on its own. ## What this is Slice L2 of WAI's live and interactive work: `wai.live.room`, a spec, a reference implementation, a conformance corpus and an independent verifier. - **`wai/extensions/live-rooms.md`** registers the record `wai.live.room`. - **Room descriptor `WRD1`**, signed by the room authority; its SHA-256 digest is the room id every `WEV1` event names. It fixes `t0`, the clock key (the authority's own, or a relay's acting for it), a tick for grant exchanges, the authority's key-log origin, roles mapped to capability sets (publish per media kind, subscribe up to `max_layer`, the event kinds as live-events' bitmap, and the moderate / direct / compose / record powers), limits (participants, publishers, a `WEP1` event ceiling no grant exceeds, a re-validation interval), slots, publish profiles, the review policy (deadline plus fallback; fields and meaning only) and the recording policy with a **region pin** (ISO 3166-1 alpha-2) for data residency. - **Room grant `WRG1`**, signed by the authority: room, principal, role and caps, `nbf`/`exp` (at most 14 days), `max_layer`, `precedence`, `origins`, a single-use nonce `once`, a `viewer` id for revocation, the embedded **`WEP1` policy** (allowed kinds, payload and text bounds, rate windows), `joules_ceiling`, `funds_ceiling` with its ISO 4217 currency, the profiles it publishes with, and at most 1 KB of composition attributes (`featured`, `order`, `pip`). Eight ordered checks, each with its reason (§4.3). - **How a receipt names a grant** (§4.5): the existing grant reference (`grant_hash`, `capability` = `wai.live.room`, `joule_ceiling_micro`, `funds_ceiling`), as package and playlist receipts already write it. - **Grant exchange** (§4.6): a new grant chained by `prev` to the old one, same room and principal, effective at a tick, recorded as L1's `grant_exchange` lifecycle event; an exchange may not leave the principal publishing what the new grant forbids. - **Revocation through the existing key log** (§5): the authority's key is a key-log entry with the new authority `live/room`; a grant is revoked by listing its digest in the head's `revoked_modules`, a viewer by listing its tag `SHA-256("wai:live-viewer\x01" ‖ viewer)`. The room verifier takes the head the caller reached (jwp-receipts §7.4 step 3) and holds it to §7.2 rules 1–3. - **Track naming** (§6): MOQT Full Track Name with namespace (room, principal or `_<slot>`, media kind or `events`) and the **layer as the Track Name**. Every byte is in `[a-z0-9_]`, so MOQT -22 §8.8's rendering is the bytes themselves; an L1 anchor's `track` digest takes that rendering. - **Precedence and redundancy** (§7): a slot is a virtual track; a higher `precedence` takes it over with no new session; with redundancy 2 a standby takes it on failover once `failover_ms` has passed since the live publisher's `last_seen`. The `detail` of every L1 lifecycle kind is defined, with the check order of each. - **Publish profiles** (§8) as data: `speech`, `music` (stereo, fullband 48 kHz, no echo cancellation / noise suppression / gain control, no DTX, a 128 kbps floor), `screen` (L1T3), `camera-720`, `camera-1080`; a profile under a registered name must equal the registered record. - **Room verification** (§9): merge every principal's chain by room clock (room keys first at equal `t`, each chain's own order kept), verify every event with L1's verifier under the policy of the grant in effect at its `t`, replay the lifecycle into room state (present, published tracks, slot live/standby with the current precedence holder, the timeline of active grants), and refuse with a named reason. - **Bindings** (§10), as mapping tables: CTA-5007-B (CWT claims by IANA key, 308–323 and the standard ones), `draft-ietf-moq-c4m-01`'s `moqt` claim (default-deny, re-validation via `moqt-reval` = the descriptor's `reval`), RFC 9246 URI Signing, and `draft-ietf-moq-privacy-pass-auth-03` for viewers that need no identity. - **`wai/wai-rs/src/live_room.rs`**, feature `live_room` = `live_events` + `key_discovery` (no new dependency; Ed25519 through `crate::sig::verify_strict`, SHA-256, the key log's `Revision`, L1's `RoomVerifier`). `cbindgen:ignore`, like `live_events`: `include/wai.h` is unchanged (regenerated on the build host after touching `cbindgen.toml`: no diff). - **`wai/live-conformance/rooms/`**: `vectors.json` from fixed seeds (`wai_live_room_vectors gen`), README with the provenance line. - Accepted: a lesson room (director, performer, audience, the director's remote `record_start`/`record_stop`; review and recording policies; a key-log head revoking a grant and a viewer the room never admits), a broadcast room (one publisher, viewers voting, a moderator's decision; no key log, authority as its own clock), a takeover, a redundant pair with failover, and an exchange promoting a viewer to publisher. Plus one gap vector. - Refused: every reason of §11 at least once, each a single-defect control, plus the L1 codes a descriptor, grant or record of a room raises. - Each accepted vector states the room id, grant digests, the merged order with the grant each record was verified under, the room state with the reachable track names, the tally, and each grant's `moqt` scopes. - **`wai/live-conformance/live_rooms_verify.py`**: standard library only, run with `-I`; strict Ed25519 from `claim-conformance/_ed25519.py`, BLAKE3 from `_blake3.py` (key-log commitments); every event verified by L1's own second implementation `live_events_verify.py`. It shares no code with `wai-rs` and agrees on every vector, reason, place, order, state, tally and scope; it also rebuilds the registered profiles from §8.2's table and compares them with the corpus. Mutating the corpus's state, tally, scopes, order or refusal place makes it exit 1 (checked by hand on altered copies). - **Registry and CI**: SPEC §5 paragraph and the record list; REGISTRY prose; `wai registry export` re-run (`wai.live.room`, magics `WRD1` and `WRG1`); CHANGELOG entry; jwp-receipts §7.2 (`revoked_modules` also holds room grants and viewers), §7.5 (`live/room` authority) and §7.6; a step in the independent-verifiers job of `wai-conformance.yml` (unit tests, `tests/live_room.rs`, the Python verifier) and `wai/extensions/live-rooms.md` in both path lists; `[[test]] live_room` with `required-features = ["live_room"]`. ## Decisions worth a look - **The layer is the Track Name, not a fourth namespace field.** moq-streaming-format §4.1 requires a staged set's tracks to share one namespace, which a per-layer namespace field would break. The full tuple is still room / principal / kind / layer. - **Revocation reuses `revoked_modules`** rather than adding a member to the key-log revision (which rule 1's exact-members check would refuse in every existing reader). Grant digests and viewer tags are SHA-256 values under their own domains, so they cannot collide with module digests; the jwp-receipts text now says the list holds all three kinds. - **Revocation is timeless, like a key's**: a revoked grant is refused at every use, including in an after-the-fact replay. Ending a principal's participation at a time is `leave`, not revocation. - **CAT encoding: not implemented.** The crate has no CBOR or COSE, and CTA-5007-B's claim value syntaxes are not restated here; the CAT table maps claims by name and IANA key. What is implemented is the `moqt` claim's scope list (`draft-ietf-moq-c4m-01` §2.1) as data, derived from each grant and checked by both implementations. ## Build and test (all through `rb` on the build host) The build host had rebooted shortly before this work (ssh timed out on the first warm-up attempt); every run below completed. Cargo output went to log files on the host and was grepped there; each cargo command's own exit status is shown. | command (in `wai/wai-rs`, `--no-default-features`) | exit | |---|---| | `cargo check --lib --tests --bins --features live_room` | 0 | | `cargo run --features live_room --bin wai_live_room_vectors -- gen ../live-conformance/rooms` | 101, then 0: the generator's own assertion caught a vector written with the clock's `t` going back; fixed and regenerated | | `cargo test --features live_room --lib live_room::` | 0 (6 passed) | | `cargo test --features live_room --test live_room` | 0 (4 passed: regenerates byte for byte, every outcome, every reason covered, §11 equals `Reason::ALL`) | | `cargo test --features live_events --lib live_events::` and `--test live_events` | 0, 0 (L1 unchanged) | | `cargo test --lib codecs::registry` | 101 before the export (expected: the committed export was stale), 0 after | | `cargo run --bin wai -- registry export`, then `... --check` | 0, 0 | | `cargo test --test carriage --test manifest_builders --test cli_wrap_intent --test cli_registry --test corpus_provenance` | 0 | | `cargo test --lib --features world,audio_scene,haptic,splat4d,score,provenance,neural_int,film,oer,receipt_claims,key_discovery,staged,video_int,audio_int,splat_int,stage_measure,telemetry,video_package,http` (the CI lib set) | 0 (833 passed) | | `cargo run --features live_room --bin wai_live_room_vectors -- verify ../live-conformance/rooms` | 0 | | `cargo clippy --features live_room --lib --bin wai_live_room_vectors --test live_room` | 0; three lints in the new module fixed, none left in it | | `python3 -I live-conformance/live_rooms_verify.py live-conformance/rooms` | 0 | | `touch cbindgen.toml` then a build: `git status include/` | clean | Repository checks, run locally: `check-tests-in-ci`, `check-spec-refs`, `check-wai-section-refs`, `check-no-vanity-metrics`, `check-comparative-prose`, `check-workflow-concurrency`, `check-lockfiles`, and the `pr-touches-paths` self-test: all exit 0. `check-public-names.sh` was not run (it needs the private denylist); the changed files were checked by hand for names. ## Deferred - **L3 (`wai.live.compose`)**: what `featured`, `order` and `pip` mean, the layout function, and the compose power's object. This slice signs the attributes and checks their syntax only. - **L4 (`wai.capture.take`)**: the `take_commit` payload, the take a `record_start`/`record_stop` pair brackets, and consent. This slice gives `record_start`/`record_stop` to the record power only. - **L5 (network reference)**: carrying grants and CAT/`moqt` tokens on the wire (MOQT `AUTHORIZATION TOKEN`), a relay that enforces scopes, re-validates against key status and records `takeover`/`failover` from real media, and the CBOR/COSE encoding of a CAT. - Also later: the review workflow and its statement of reasons (L12), checking a recording's storage region against the pin (L7), and per-grant metering against `joules_ceiling`/`funds_ceiling` (L9). 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- **Closed:** landed in main through #289 (main 13360b4e), which contains this branch's head 440f7dae unchanged. #289 also adds two fields to the recording policy (commit_interval_ms, jitter_ms), so the room ids in the corpus as merged differ from this branch's.
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]>
wai: live-conformance/README.md, with the corpus's provenance
Some checks failed
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 JPEG-AI whole decode (pinned inputs, required) / does this change touch it (pull_request) Has been cancelled
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Has been cancelled
WAI 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-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 WebGPU member / does this change touch it (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
wai-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
8a58f94bb6
Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai: live_events stays out of include/wai.h
Some checks failed
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
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 JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Has been cancelled
WAI neural sink gates / model-free refusals of the neural sink (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 WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (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 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
defa48c0b5
Its constants (VERSION, IN, OUT, BREAK, CHAT and the rest) are Rust-only. As bare
macros they would collide in any C program that includes wai.h beside a platform
header or a build-wide -DVERSION. The module is cbindgen:ignore; the header is
regenerated and is back to main's.

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 extension text, the second implementation of the room verifier, the registry entries
for wai.live.room (WRD1, WRG1), the live/room key-log authority and grant revocation in
jwp-receipts §7, the CHANGELOG entry, and the CI step beside live events.

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: live-rooms.md, once, viewer scope, iss and the moqt media name made exact
Some checks failed
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Successful in 45m0s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 1m33s
wai-pack / wai-pack · macos (pull_request) Successful in 1m3s
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Successful in 2m24s
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Successful in 4m54s
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Successful in 1m38s
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Successful in 5m32s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 3s
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Successful in 45m7s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m31s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m7s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m11s
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Successful in 4m58s
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 1m4s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 3m39s
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Successful in 5s
WAI conformance / cargo-class corpora · linux (pull_request) Failing after 2m30s
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 1m54s
WAI conformance / cross-arch byte-equality · linux (pull_request) Successful in 26s
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Successful in 1m42s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 2m13s
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Successful in 1m31s
wai-pack / wai-pack · linux (pull_request) Successful in 1m25s
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Successful in 2m8s
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Successful in 3m14s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 3m35s
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Successful in 5m36s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m48s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m12s
6ec91d6c5a
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Merge origin/main into wai/live-rooms; live-conformance declares it has no decoded output
Some checks failed
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI neural sink gates / model-free refusals of the neural sink (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 on every processor / emulated · aarch64-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · armv7-unknown-linux-gnueabihf (pull_request) Has been cancelled
wai-quantum on every processor / emulated · loongarch64-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · powerpc64-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · powerpc64le-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · riscv64gc-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · s390x-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · sparc64-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · i686-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
wai-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 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
440f7dae29
The cargo-class corpora job's every_decoded_output_states_a_sha256 requires each
*-conformance directory to carry a sha256.json or be excluded with a reason.
live-conformance (L1's events, L2's rooms, L4's takes to come) holds signed
records, commitments and verdicts, never a decoded output, so it joins the
exclusions beside the claim, JWP and signer corpora. CHANGELOG: both sides'
entries kept.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot closed this pull request 2026-10-17 09:23:27 -04:00
Some checks failed
wai-quantum WebGPU member / member · DX12 and Vulkan (cbio-windows) (pull_request) Successful in 12m0s
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 13s
standards workspaces build + test / macOS energy backends (pull_request) Has been skipped
WAI conformance / does this change touch it (pull_request) Successful in 13s
WAI energy receipts / does this change touch it (pull_request) Successful in 11s
WAI HTTP delivery / WAI HTTP · does this change touch it (pull_request) Successful in 11s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 1m40s
WAI JPEG-AI whole decode (pinned inputs, required) / does this change touch it (pull_request) Successful in 18s
WAI neural sink gates / does this change touch it (pull_request) Successful in 32s
wai-pack / wai-pack · does this change touch it (pull_request) Successful in 40s
wai-quantum CUDA member / does this change touch it (pull_request) Successful in 41s
wai-quantum CUDA member / member · CUDA (jetson-hub) (pull_request) Has been skipped
wai-quantum CUDA member / member · CUDA absent (linux) (pull_request) Has been skipped
wai-quantum dataflow member / does this change touch it (pull_request) Successful in 33s
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:b140) (pull_request) Has been skipped
wai-quantum dataflow member / member · dataflow device, simulated (pci 1e52:401e) (pull_request) Has been skipped
wai-quantum dataflow member / member · dataflow device absent (macos) (pull_request) Has been skipped
wai-quantum signal processor / does this change touch it (pull_request) Successful in 35s
wai-quantum signal processor / processor and member · signal processor, emulated (pull_request) Has been skipped
wai-quantum FPGA member / does this change touch it (pull_request) Successful in 24s
wai-quantum FPGA member / member · FPGA datapath, simulated (macos) (pull_request) Has been skipped
wai-quantum FPGA member / member · FPGA simulation absent (linux) (pull_request) Has been skipped
wai-quantum HIP member / does this change touch it (pull_request) Successful in 22s
wai-quantum HIP member / member · HIP (framework-128gb) (pull_request) Has been skipped
wai-quantum HIP member / member · HIP absent (linux-arm64) (pull_request) Has been skipped
wai-quantum Metal member / does this change touch it (pull_request) Successful in 24s
wai-quantum Metal member / member · Metal (macos) (pull_request) Has been skipped
wai-quantum Metal member / member · Metal absent (linux) (pull_request) Has been skipped
wai-quantum npu-cores member / does this change touch it (pull_request) Successful in 19s
wai-quantum npu-cores member / member · npu-cores, neural processor (framework-128gb silicon) (pull_request) Has been skipped
wai-quantum npu-cores member / member · npu-cores absent (linux-arm64) (pull_request) Has been skipped
wai-quantum neural-processor member / does this change touch it (pull_request) Successful in 17s
wai-quantum neural-processor member / member · neural processor (macos) (pull_request) Has been skipped
wai-quantum neural-processor member / member · neural processor absent (linux) (pull_request) Has been skipped
wai-quantum OpenCL member / does this change touch it (pull_request) Successful in 16s
wai-quantum OpenCL member / member · OpenCL GPU and CPU (jetson-hub) (pull_request) Has been skipped
wai-quantum OpenCL member / member · OpenCL GPU (framework-128gb) (pull_request) Has been skipped
wai-quantum OpenCL member / member · OpenCL GPU (macos) (pull_request) Has been skipped
wai-quantum OpenCL member / member · OpenCL absent (linux) (pull_request) Has been skipped
wai-quantum-qpu / does this change touch it (pull_request) Successful in 12s
wai-quantum matrix-extension member / does this change touch it (pull_request) Successful in 12s
wai-quantum-qpu / clients against their contracts (linux) (pull_request) Has been skipped
wai-quantum matrix-extension member / member · matrix extension, emulated (aarch64 Linux) (pull_request) Has been skipped
wai-quantum matrix-extension member / member · matrix extension absent (macos) (pull_request) Has been skipped
wai-quantum tensor-engine member / does this change touch it (pull_request) Successful in 11s
wai-quantum tensor-engine member / member · tensor engine, the kernel toolchain's simulator (linux) (pull_request) Has been skipped
wai-quantum tensor-engine member / member · tensor engine absent (linux-arm64) (pull_request) Has been skipped
wai-quantum portable tensor program / does this change touch it (pull_request) Successful in 14s
wai-quantum portable tensor program / tensor program · CPU, mutants, GPU builds (pull_request) Has been skipped
wai-quantum portable tensor program / tensor program · GPUs (jetson-hub) (pull_request) Has been skipped
wai-quantum portable tensor program / tensor program · integrated GPU (framework-128gb) (pull_request) Has been skipped
wai-quantum portable tensor program / tensor program · Metal and the arm64 CPU (macos) (pull_request) Has been skipped
wai-quantum CPU vector units / does this change touch it (pull_request) Successful in 17s
wai-quantum WebGPU member / does this change touch it (pull_request) Successful in 16s
wai-quantum CPU vector units / member · vector unit, rvv 1024-bit (riscv64, emulated) (pull_request) Has been skipped
wai-quantum CPU vector units / member · vector unit, sve 128-bit (aarch64, emulated) (pull_request) Has been skipped
wai-quantum CPU vector units / member · vector unit, rvv 128-bit (riscv64, emulated) (pull_request) Has been skipped
wai-quantum CPU vector units / member · vector unit, sve 2048-bit (aarch64, emulated) (pull_request) Has been skipped
wai-quantum CPU vector units / member · vector unit, avx2 (x86_64 silicon) (pull_request) Has been skipped
wai-quantum CPU vector units / member · vector unit, sve 512-bit (aarch64, emulated) (pull_request) Has been skipped
wai-quantum CPU vector units / member · vector units, avx2 and avx512 (framework-128gb silicon) (pull_request) Has been skipped
wai-quantum CPU vector units / member · vector unit absent (macos) (pull_request) Has been skipped
WAI mbt2018_mean integer decode (regenerated vectors) / does this change touch it (pull_request) Successful in 14s
wai-web wasm32 / does this change touch it (pull_request) Successful in 13s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 27s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 44s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m2s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m47s
wai-quantum WebGPU member / member · integrated GPU, Vulkan (framework-128gb) (pull_request) Successful in 7m42s
WAI conformance / cargo-class corpora · linux (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 / cross-arch byte-equality · linux (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 · linux (pull_request) Has been cancelled
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 conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI JPEG-AI whole decode (pinned inputs, required) / fetch pinned JPEG-AI inputs → whole decode + pixel hash, required (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI neural sink gates / model-free refusals of the neural sink (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 on every processor / emulated · aarch64-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · armv7-unknown-linux-gnueabihf (pull_request) Has been cancelled
wai-quantum on every processor / emulated · loongarch64-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · powerpc64-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · powerpc64le-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · riscv64gc-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · s390x-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · sparc64-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum on every processor / emulated · i686-unknown-linux-gnu (pull_request) Has been cancelled
wai-quantum WebGPU member / shader checks · browser build · wasip2 inertness · MSRV (pull_request) Has been cancelled
wai-quantum WebGPU member / member · software Vulkan (linux) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · Metal (macos) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · discrete GPU, Vulkan (jetson-hub) (pull_request) Has been cancelled
wai-quantum WebGPU member / member · browser WebGPU (macos) (pull_request) Has been cancelled
WAI mbt2018_mean integer decode (regenerated vectors) / regenerate mbt2018_mean integer vectors → Rust decode, required (pull_request) Has been cancelled
wai-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 / wai-web wasm32 build · corpus, menu and writers (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!284
No description provided.