open-standards/wai/live-conformance
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 18bdfd276c
Some checks failed
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 14s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 36s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 16s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 41s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 37s
wai-audit collector and player integration / does this change touch it (push) Successful in 36s
wai-fleet service / does this change touch it (push) Successful in 50s
wai-sink-android native sink library / does this change touch it (push) Successful in 35s
wai-ledger service / does this change touch it (push) Successful in 58s
wai-quantum studio and desktop / does this change touch it (push) Successful in 59s
WAI operation catalogue / does this change touch it (push) Successful in 1m5s
wai-sink-swift native sink package / does this change touch it (push) Successful in 26s
wai-key-proxy / does this change touch it (push) Successful in 1m1s
wai-quantum for JavaScript / does this change touch it (push) Successful in 59s
wai-app and Create / wai-app · does this change touch it (push) Successful in 1m13s
WAI Studio / does this change touch it (push) Successful in 42s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 1m18s
wai-fleet service / service · macos (push) Successful in 1m2s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 37s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 1m44s
wai-audit collector and player integration / collector · linux (push) Successful in 2m9s
wai-ledger service / service · macos (push) Successful in 2m24s
wai-key-proxy / proxy · linux (push) Successful in 2m8s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 3m21s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 3m30s
WAI Studio / Studio in WebKit · linux (push) Failing after 51s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m38s
wai-ledger service / service · linux (push) Successful in 4m17s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 3m27s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 6m15s
wai-fleet service / service · linux (push) Successful in 4m51s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 6m33s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 4m53s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 7m8s
wai-quantum for JavaScript / javascript · linux (push) Successful in 6m16s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 9m31s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 9m28s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 9m3s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 9m59s
wai-quantum studio and desktop / studio · browser (push) Successful in 10m26s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 12m55s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 13m18s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 13m10s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 13m21s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 18m47s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 18m25s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 17m24s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 22m34s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 12m33s
wai: sink-evaluated predicates and per-session ad tracks — targeting and frequency caps decided on the sink from its own state, and a session's own ad bound into a room's ad frame
extensions/sink-predicate.md registers the record `wai.delivery.sink_predicate`
(`wai-sink-predicate`): a source's signed predicate travelling beside a programme, the registered
form of unidirectional-delivery §2's sink-evaluated predicate. It carries the programme's blackouts
(audience-decision §4.2) and its ad slots, each a list of candidate ads in the order the source
prefers them, with the regions each is shown in and its frequency caps (a counter, a limit, a
window), and declares exactly the state classes it reads (`location`, `exposures`); it is a
route-record document signed in its canonical form under `wai:sink-predicate`. A sink evaluates it
from its own state alone: the programme's verdict is audience-decision §4.6's at its aggregated
location (unresolved, every blackout applied, when it holds none), and when that is `show` it fills
each slot itself, taking in order the candidates shown at its location (a country of which a
candidate lists only a subdivision is shown neither `only` nor `except`), whose caps its own
exposures have not reached in their windows, with those the earlier slots and candidates added, and
that fit the avail. A sink that keeps no exposures is shown no capped candidate. The evaluation
causes no request and nothing about the device leaves it. A predicate holding, at any depth, a
member by which its evaluation would send something away (`report`, `beacon`, `callback`, `uri`) or
count across devices (`household`, `account`) is refused `predicate_needs_report`; a sink's log of a
slot that presents a candidate whose cap was reached is refused `predicate_cap_breached`, one not
shown at the location `predicate_not_targeted`, and any other departure from the fill
`predicate_fill_mismatch`. unidirectional-delivery §2 and audience-decision §1 and §6 name it.

live-compose §5.10 adds per-session ad tracks: in a squeeze or a double box, a session's sink may
show the session's own ad, decided by a stitched-presentation pod-input record of that session, on
the session's ad track (owner `ad_` and the session), bound to the composition by an ad-track
binding, `WAT1`, signed by the record's signer under `wai:live-compose-ad-track`. A binding that
does not match its session's composition is refused `ad_track_mismatch`, naming what differs: a
descriptor that is not an ad frame, a record other than the one it names, a shared record or
another session's, a record whose frame is not the descriptor's (layout, canvas, corner, window,
gap, aspect), or a slot the record does not have; one signed by another key `ad_track_not_permitted`;
one out of its bounds `ad_track_invalid`. While a binding is in effect (from `start` for its ad's
duration), the session's layout is §5.9's with the track in the ad tile, the program where the
room's frame puts it, and the room's ad participant with no tile and no voice. live-compose's §10
table, its descriptor and its receipt are unchanged; its codes for the binding are §5.10.5's.
stitched-presentation §4.6 and §6: a composited break whose ad region shows each session its own ad
is decided by a record of each session under the room's ad frame, never by a shared record, and the
session's claim is that record's one presentation; no record, claim or verification rule changes.

The references are the `sink_predicate` module of wai-rs (feature `sink_predicate`) and the
`compose_ad_track` module (feature `compose_ad_track`). The corpora are live-conformance/sink-predicate/
(68 predicates, 23 evaluations, 18 logs) and live-conformance/compose-ad-track/
(36 bindings, 17 layouts); sink_predicate_verify.py and compose_ad_track_verify.py are
their second implementations, which agree on every case, fail every mutated copy (17 of 17, 13 of
13) and catch every weakened verifier (35 of 35, 21 of 21). Nineteen faults planted in the reference
each fail its tests, each matched by a check the second verifier drops: a cap breach (the fill
ignoring caps, the log check ignoring them, an exposure a whole window old still counted, a sink
that keeps none admitting a capped candidate); a predicate needing a report (the check removed, read
only at the top level, the across-device members dropped); a per-session ad track not matching its
session's composition (another frame, another session's record, a shared record, a descriptor that
is no ad frame, a missing slot, another signer, the track kept at its binding's end); and a
signature over the wrong bytes (a predicate's without its domain, under the audience decision's,
over the text as written; a binding's without its domain and under the pod-input record's).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 21:15:45 -05:00
..
access wai.access.services: registry entry and export, SPEC §5, CHANGELOG, CI step, corpus README; timed-text's scope points to it 2026-10-21 12:27:36 -04:00
ads wai/ad-consent-supply-chain, converted to the layout of the fix: no shared append point 2026-11-05 02:00:58 -05:00
age age × co: the room's own service is not held to the serving rule 2026-10-22 07:08:25 -04:00
aggregate wai.telemetry.aggregate: QoE measures aggregated under DAP, signed statements and aggregate receipts 2026-10-22 03:03:40 -04:00
audience wai: audience decisions and territories — blackouts decided from a location aggregated in the session, and where a publisher may be shown 2026-11-09 19:55:54 -05:00
audio-mark wai: register wai-mark:band64, a watermark for sound, peer of tent64 2026-11-08 16:20:24 -05:00
audit wai: an unnamed acknowledgement refused, the collector's port, the stitched form 2026-10-25 22:05:49 -04:00
avatar-face avatar-face corpus: the mask's table pinned by its digest and entries 2026-10-22 12:35:35 -04:00
bearers wai: bearer receipts corpus, second implementation, HTTP index step 6, registry, SPEC §5, CHANGELOG, CI step 2026-10-21 12:56:01 -04:00
browser The browser sink corpus run by a page in a browser through wai conform, its record signed and admitted 2026-11-08 16:43:30 -05:00
c2pa-envelope wai: a C2PA Manifest Store bound to a stored WAI1 or WAI2 envelope, and to the receipt that delivered it 2026-11-09 10:50:25 -05:00
c2pa-live wai: live provenance text, CHANGELOG, SPEC §5 and the corpus README brought to the dynamic packaging and repository receipt work 2026-10-21 05:02:07 -04:00
cache-authority Tariff version 7 bills a cache's own instance, an aggregated count and what an agent consumed, and a settlement declaration names its instance 2026-11-07 08:35:01 -05:00
captions wai: live-conformance/captions regenerated: every IMSC1 document carries ttp:profile 2026-10-17 11:32:42 -04:00
carousel wai: a schedule names Raptor (RFC 5053), the code MBMS download uses 2026-11-06 18:09:38 -05:00
channels wai/hls-cues-delivery-decision, converted to the layout of the fix: no shared append point 2026-11-05 01:45:33 -05:00
compact-return wai/compact-return-profile, converted to the layout of the fix: no shared append point 2026-11-05 01:45:33 -05:00
compose wai: stitched presentation — player-signed claims of stitched and interstitial ads, the signed pod-input record, ad frames in live-compose 2026-10-25 21:34:50 -04:00
compose-ad-track wai: sink-evaluated predicates and per-session ad tracks — targeting and frequency caps decided on the sink from its own state, and a session's own ad bound into a room's ad frame 2026-11-09 21:15:45 -05:00
contribution wai.media.contribution: a control for the second site of each check 2026-10-21 13:11:59 -04:00
coperformance co-performance: the commitment's magic is WPK1, not WPC1 (taken by ad-presentation) 2026-10-22 04:11:30 -04:00
cowatch wai.live.cowatch: registry entry and export, SPEC §5, CHANGELOG, corpus README and CI step 2026-10-22 03:16:48 -04:00
direction direction: measure probes exactly at each row and column bound 2026-10-21 16:07:53 -04:00
dred wai: register wai.audio.opus.dred and .dred.int; extension opus-dred, corpus, second implementation, CI 2026-10-22 04:34:29 -04:00
e2ee confidentiality.md: the commit and Add rules as built; the e2ee corpus's README and listing 2026-10-19 20:54:09 -04:00
ertmp joule-moq-ingest: a local encoder as the test client; STREAMINFO-only FLAC; empty coded frames 2026-10-25 22:57:53 -04:00
events live rooms: AI participants are marked in their grant, and chat and reactions state their origin 2026-10-21 05:17:43 -04:00
exploration exploration corpus: a generation whose orientation truncates toward zero, so a floored restatement of Appendix A fails 2026-10-21 13:55:42 -04:00
fleet wai.delivery.fleet: an organisation's nodes enrolled by their keys, their records verified, and a report signed for a period 2026-10-27 15:22:20 -04:00
holdings wai: holdings — which objects of which groups a node holds now, for its neighbours 2026-11-04 05:20:31 -05:00
impressions A report an aggregator committed and was sent again is not rejected, and a reader takes one statement of no count 2026-11-07 08:35:01 -05:00
influence wai: influence corpus README, independent Python verifier, and settlement_verify reads attribution lines 2026-10-21 20:04:39 -04:00
injection wai: cue-injection, SCTE 104 to SCTE 35 to signed cues, and injection_verify.py 2026-10-25 22:47:25 -04:00
keys A key-release commitment list can state a release time before which no key is released 2026-11-07 03:01:50 -05:00
ledger receipt-ledger: a consumption claim of the year 0000 is a control, and §12 states an instance declared again 2026-11-07 08:35:02 -05:00
links live-contribution: the link record's magic is WLK1, no longer the clip record's WCL1 2026-11-04 05:19:53 -05:00
loc LOC corpus: the second-layer vector appends an SPS of layer 1, so only the base-layer rule refuses it 2026-10-22 10:51:18 -04:00
messaging live messaging: regenerate the corpus, a removed member's held-back message 2026-10-26 11:38:21 -04:00
metering receipt-ledger: bill what the work spends; live-metering: a receipt of version 2 prices bytes out 2026-10-31 10:34:57 -04:00
moderation wai.live.moderation: registry, SPEC §5, CI step and paths, corpus README, CHANGELOG, cross-references 2026-10-19 07:46:32 -04:00
native-sink wai: the native sink corpus's no-conversion rule moves to wai/.gitattributes 2026-11-07 08:41:42 -05:00
opportunity wai: opportunity_report_verify.py, the opportunity report's second implementation 2026-10-29 18:19:39 -04:00
presentation wai ad-presentation: name RFC 9578's vector by its place, not a count 2026-10-21 12:28:47 -04:00
prices wai/one-way-delivery, converted to the layout of the fix: no shared append point 2026-11-05 01:45:32 -05:00
prior-carriage wai/prior-carriage-spec, converted to the layout of the fix: no shared append point 2026-11-05 01:45:33 -05:00
prior-forms wai: prior-forms corpus — README, independent Python verifier, and the NNC subset measured against an open implementation 2026-10-22 07:27:56 -04:00
recordings live-recording: a record with the link record's magic, WLK1, is not a clip record 2026-11-04 05:19:53 -05:00
remote live-conformance/remote: the sealed vectors, the opened level and the seal seeds, described 2026-10-26 10:49:59 -04:00
robustness wai.media.robustness: CI step, registry entry and export, SPEC §5, CHANGELOG, READMEs 2026-10-22 03:49:50 -04:00
rooms live rooms: AI participants are marked in their grant, and chat and reactions state their origin 2026-10-21 05:17:43 -04:00
routes What a receipt declares of its own figure moves no verdict, and the corpus holds it 2026-11-07 03:01:51 -05:00
scene scene corpus: a transform operation the layer's order does not list is refused too 2026-10-22 10:39:41 -04:00
sdp-caps joule-moq-ingest: the WHEP gateway forwards each player the rendition its sink dispatches first 2026-11-09 18:14:21 -05:00
settlement Tariff version 7 bills a cache's own instance, an aggregated count and what an agent consumed, and a settlement declaration names its instance 2026-11-07 08:35:01 -05:00
share wai: the revenue share (wai.delivery.revenue_share): share contract, statement, corpus 2026-10-29 17:00:45 -04:00
signal-health wai: signal health — what a monitor measured on an input, signed, and the switch that acts on it 2026-11-08 14:48:46 -05:00
sink-energy sink-energy: the measured decode table of the 20-core Linux reference sink 2026-10-25 03:56:40 -04:00
sink-predicate wai: sink-evaluated predicates and per-session ad tracks — targeting and frequency caps decided on the sink from its own state, and a session's own ad bound into a room's ad frame 2026-11-09 21:15:45 -05:00
splat wai: register wai.splat.exact — registry, wire identifiers, SPEC §5, CHANGELOG, the corpus README and the CI step 2026-10-22 03:33:47 -04:00
steering wai: steering's RFC 9651 parsers refuse a byte sequence that is not base64 2026-10-18 20:41:05 -04:00
stitched wai/ad-consent-supply-chain, converted to the layout of the fix: no shared append point 2026-11-05 02:00:58 -05:00
synthesis wai: regenerate the synthesis and exact-upscale corpora and the registry export after the merge 2026-10-22 03:04:14 -04:00
synthesis-mark tent64s corpus: each detect vector states stage 2's trace 2026-10-21 20:55:47 -04:00
takedown wai/one-way-delivery, converted to the layout of the fix: no shared append point 2026-11-05 01:45:32 -05:00
takes wai: capture-binding.md, its corpus README, registry, SPEC §5, CI and CHANGELOG 2026-10-17 04:38:35 -04:00
termination wai: stream termination — SPEC §5, CHANGELOG, conformance READMEs, CI steps 2026-10-22 13:47:44 -04:00
timeliness wai: a statement or wanted object of the wrong shape is refused for it 2026-11-06 18:09:39 -05:00
tonemap tonemap: digests of L2, E2 and tan over whole ranges in the corpus 2026-10-22 03:43:06 -04:00
upscale wai: regenerate the synthesis and exact-upscale corpora and the registry export after the merge 2026-10-22 03:04:14 -04:00
usage wai.ai.usage: changelog, the live-conformance directory description, and plain wording for the gate's window 2026-10-21 05:25:43 -04:00
watermark wai.live.watermark: the corpus, its second implementation, the CI step and the changelog 2026-10-20 08:40:15 -04:00
worlds wai.live.world: the independent verifier, and the text made exact where it read two ways 2026-10-25 23:17:33 -04:00
_fips197_aes.py wai/prior-carriage-spec, converted to the layout of the fix: no shared append point 2026-11-05 01:45:33 -05:00
_int_motion_receipt.py receipt-ledger: media jobs under a tariff of version 2 2026-10-29 20:49:57 -04:00
_int_sr.py wai: exact upscale — integer super-resolution derivations, the upscale record, the presentation statement (work in progress) 2026-10-21 14:41:56 -04:00
_rfc8878_zstd.py wai/prior-carriage-spec, converted to the layout of the fix: no shared append point 2026-11-05 01:45:33 -05:00
_wai_audio_mark.py wai: register wai-mark:band64, a watermark for sound, peer of tent64 2026-11-08 16:20:24 -05:00
_wai_mark.py tent64s corpus: each detect vector states stage 2's trace 2026-10-21 20:55:47 -04:00
access_services_verify.py access_services_verify.py: the access-services corpus's second implementation 2026-10-21 12:22:21 -04:00
ad_presentation_verify.py wai ad-presentation: name RFC 9578's vector by its place, not a count 2026-10-21 12:28:47 -04:00
age_assurance_verify.py age × co: the room's own service is not held to the serving rule 2026-10-22 07:08:25 -04:00
ai_usage_verify.py wai.ai.usage: the class in jwp-receipts, the room and HTTP and MoQ bindings, registry, CI and the second implementation 2026-10-21 05:23:29 -04:00
audience_decision_verify.py wai: audience decisions and territories — blackouts decided from a location aggregated in the session, and where a publisher may be shown 2026-11-09 19:55:54 -05:00
audio_mark_verify.py wai: register wai-mark:band64, a watermark for sound, peer of tent64 2026-11-08 16:20:24 -05:00
avatar_face_verify.py avatar-face corpus: the mask's table pinned by its digest and entries 2026-10-22 12:35:35 -04:00
bearer_verify.py wai: bearer receipts corpus, second implementation, HTTP index step 6, registry, SPEC §5, CHANGELOG, CI step 2026-10-21 12:56:01 -04:00
browser_sink_verify.py wai: platform decode for every user-agent codec, video and audio, in the composing sink's dispatch 2026-11-09 16:06:44 -05:00
c2pa_live_verify.py wai: a C2PA Manifest Store bound to a stored WAI1 or WAI2 envelope, and to the receipt that delivered it 2026-11-09 10:50:25 -05:00
cache_authority_verify.py wai: a §9 line of cache-authority with a ladder 2026-11-06 18:09:38 -05:00
capture_take_verify.py wai: live-conformance/takes from fixed seeds, capture_take_verify.py, and the rooms corpus with the recording policy's timing 2026-10-17 04:34:23 -04:00
carousel_verify.py wai: a schedule names Raptor (RFC 5053), the code MBMS download uses 2026-11-06 18:09:38 -05:00
channel_lineup_verify.py wai/hls-cues-delivery-decision, converted to the layout of the fix: no shared append point 2026-11-05 01:45:33 -05:00
co_performance_verify.py co-performance: the commitment's magic is WPK1, not WPC1 (taken by ad-presentation) 2026-10-22 04:11:30 -04:00
co_watch_verify.py co_watch_verify.py: the co-watch corpus's second implementation, written from the extension's text 2026-10-22 03:14:35 -04:00
compact_return_verify.py wai/compact-return-profile, converted to the layout of the fix: no shared append point 2026-11-05 01:45:33 -05:00
compose_ad_track_verify.py wai: sink-evaluated predicates and per-session ad tracks — targeting and frequency caps decided on the sink from its own state, and a session's own ad bound into a room's ad frame 2026-11-09 21:15:45 -05:00
contribution_verify.py wai.media.contribution: the corpus's second implementation, contribution_verify.py 2026-10-21 12:53:12 -04:00
direction_verify.py direction: the framing measure and the interpolations as corpus sections of their own 2026-10-21 16:04:21 -04:00
dred_verify.py wai: register wai.audio.opus.dred and .dred.int; extension opus-dred, corpus, second implementation, CI 2026-10-22 04:34:29 -04:00
e2ee_verify.py live-conformance/e2ee: every epoch's keys used; e2ee_verify.py, the corpus's second implementation 2026-10-19 20:53:06 -04:00
energy_steering_verify.py wai: steering's RFC 9651 parsers refuse a byte sequence that is not base64 2026-10-18 20:41:05 -04:00
ertmp_verify.py wai: register wai.live.injection; SPEC §5, CHANGELOG, the crate's README; CI 2026-10-25 23:02:04 -04:00
exploration_verify.py wai.media.exploration: descriptors, archives that replay, default-distance, collection statements, taste priors, rankings and picks (CO2, CO3) 2026-10-21 13:41:14 -04:00
fleet_verify.py fleet_verify.py: §10 names every reason the corpus raises 2026-10-27 16:09:41 -04:00
holdings_verify.py wai: holdings — which objects of which groups a node holds now, for its neighbours 2026-11-04 05:20:31 -05:00
impression_aggregate_verify.py A report an aggregator committed and was sent again is not rejected, and a reader takes one statement of no count 2026-11-07 08:35:01 -05:00
influence_verify.py wai: influence — the report's checks in the order they run, and a reference with no terms checked against nothing 2026-10-21 20:15:44 -04:00
injection_verify.py wai: register wai.live.injection; SPEC §5, CHANGELOG, the crate's README; CI 2026-10-25 23:02:04 -04:00
key_release_verify.py A key-release commitment list can state a release time before which no key is released 2026-11-07 03:01:50 -05:00
live_ads_verify.py wai/ad-consent-supply-chain, converted to the layout of the fix: no shared append point 2026-11-05 02:00:58 -05:00
live_compose_verify.py wai: stitched presentation — player-signed claims of stitched and interstitial ads, the signed pod-input record, ad frames in live-compose 2026-10-25 21:34:50 -04:00
live_contribution_verify.py live-contribution: the link record's magic is WLK1, no longer the clip record's WCL1 2026-11-04 05:19:53 -05:00
live_events_verify.py live rooms: AI participants are marked in their grant, and chat and reactions state their origin 2026-10-21 05:17:43 -04:00
live_messaging_verify.py live-messaging: the independent verifier, written from the extension's text 2026-10-26 10:48:48 -04:00
live_metering_verify.py receipt-ledger: bill what the work spends; live-metering: a receipt of version 2 prices bytes out 2026-10-31 10:34:57 -04:00
live_moderation_verify.py live_moderation_verify.py: the corpus's second implementation, from the extension's text 2026-10-19 07:43:27 -04:00
live_record_verify.py live-recording: a record with the link record's magic, WLK1, is not a clip record 2026-11-04 05:19:53 -05:00
live_rooms_verify.py live rooms: AI participants are marked in their grant, and chat and reactions state their origin 2026-10-21 05:17:43 -04:00
live_watermark_verify.py wai.live.watermark: the corpus, its second implementation, the CI step and the changelog 2026-10-20 08:40:15 -04:00
live_worlds_verify.py wai.live.world: the independent verifier, and the text made exact where it read two ways 2026-10-25 23:17:33 -04:00
loc_verify.py LOC carriage: WAI envelopes on LOC objects, a writer and reader in joule-moq, the corpus live-conformance/loc 2026-10-22 10:43:34 -04:00
native_sink_verify.py wai: the Swift package of the native sink, and a log that keeps its order 2026-10-25 22:55:08 -04:00
opportunity_report_verify.py opportunity_report_verify.py: every refusal of the corpus accounted for by §13, its reused codes or a delegated text 2026-10-29 18:45:03 -04:00
prior_carriage_verify.py wai/prior-carriage-spec, converted to the layout of the fix: no shared append point 2026-11-05 01:45:33 -05:00
prior_forms_verify.py wai: prior-forms corpus — README, independent Python verifier, and the NNC subset measured against an open implementation 2026-10-22 07:27:56 -04:00
README.md wai: sink-evaluated predicates and per-session ad tracks — targeting and frequency caps decided on the sink from its own state, and a session's own ad bound into a room's ad frame 2026-11-09 21:15:45 -05:00
receipt_ledger_verify.py receipt-ledger: a consumption claim of the year 0000 is a control, and §12 states an instance declared again 2026-11-07 08:35:02 -05:00
remote_desktop_verify.py wai.live.remote: key, text and clipboard actions sealed to the host; the commitment level and the opened level 2026-10-26 10:30:56 -04:00
revenue_share_verify.py wai: revenue_share_verify.py, the revenue share's second implementation 2026-10-29 17:08:53 -04:00
robustness_verify.py wai: register wai-mark:band64, a watermark for sound, peer of tent64 2026-11-08 16:20:24 -05:00
route_record_verify.py A delivery's decision states its offer, and its route's receipt is held to it 2026-11-07 03:01:50 -05:00
rung_price_verify.py wai/one-way-delivery, converted to the layout of the fix: no shared append point 2026-11-05 01:45:32 -05:00
scene_verify.py wai: scene-carriage text, corpus README and independent Python verifier 2026-10-22 07:51:03 -04:00
sdp_caps_verify.py wai: capability attributes in a WHEP offer, so the gateway forwards each player the rendition its sink dispatches first 2026-11-09 16:08:15 -05:00
settlement_verify.py Tariff version 7 bills a cache's own instance, an aggregated count and what an agent consumed, and a settlement declaration names its instance 2026-11-07 08:35:01 -05:00
signal_health_verify.py wai: signal health — what a monitor measured on an input, signed, and the switch that acts on it 2026-11-08 14:48:46 -05:00
sink_energy_verify.py sink_energy_verify.py: the measured tables are required 2026-10-24 20:26:51 -04:00
sink_predicate_verify.py wai: sink-evaluated predicates and per-session ad tracks — targeting and frequency caps decided on the sink from its own state, and a session's own ad bound into a room's ad frame 2026-11-09 21:15:45 -05:00
splat_exact_verify.py splat-exact: the extension text, the draft schema, and corpus cases that separate every check 2026-10-22 03:22:48 -04:00
stitched_presentation_verify.py wai/ad-consent-supply-chain, converted to the layout of the fix: no shared append point 2026-11-05 02:00:58 -05:00
stream_audit_verify.py wai: an unnamed acknowledgement refused, the collector's port, the stitched form 2026-10-25 22:05:49 -04:00
stream_termination_verify.py wai: the termination verifier remembers each signature it checked 2026-10-22 13:43:56 -04:00
synthesis_mark_verify.py synthesis_mark_verify.py: the tiled scheme's cases hold no exact-upscale prior 2026-10-22 06:48:35 -04:00
synthesis_verify.py wai: operation receipts on every developer-facing write, and a signed origin claim for each generated picture 2026-11-09 15:26:12 -05:00
takedown_verify.py wai/one-way-delivery, converted to the layout of the fix: no shared append point 2026-11-05 01:45:32 -05:00
telemetry_aggregate_verify.py Each aggregator states what it rejected in a statement of version 2, and an impression table carries both counts 2026-11-07 08:35:01 -05:00
timed_text_verify.py wai: IMSC1 documents carry ttp:profile on tt (IMSC 1.0.1 §6.9) beside conformsToStandard 2026-10-17 11:32:11 -04:00
timeliness_verify.py wai: a statement or wanted object of the wrong shape is refused for it 2026-11-06 18:09:39 -05:00
tonemap_verify.py tonemap: digests of L2, E2 and tan over whole ranges in the corpus 2026-10-22 03:43:06 -04:00
upscale_verify.py Merge origin/main into wai/exact-upscale (wai-mark:tent64, contribution, settlement, access, ad presentation, exploration, shared lists) 2026-10-22 03:02:57 -04:00

live-conformance — the wai.live family

Conformance corpora of the live and interactive extensions, one directory per extension, and the independent verifier of each, beside it.

directory extension generator verifier
events/ live-events (wai.live.events) wai_live_events_vectors gen live_events_verify.py
rooms/ live-rooms (wai.live.room) wai_live_room_vectors gen live_rooms_verify.py
takes/ capture-binding (wai.capture.take) wai_capture_take_vectors gen capture_take_verify.py
compose/ live-compose (wai.live.compose) wai_live_compose_vectors gen live_compose_verify.py
compose-ad-track/ live-compose §5.10 (wai.live.compose: per-session ad tracks, WAT1) wai_compose_ad_track_vectors gen compose_ad_track_verify.py
recordings/ live-recording (wai.live.recording) wai_live_record_vectors gen live_record_verify.py
captions/ timed-text (wai.text.timed) wai_timed_text_vectors gen timed_text_verify.py
metering/ live-metering (wai.live.metering) wai_live_metering_vectors gen live_metering_verify.py
steering/ energy-steering (wai.live.steering) wai_energy_steering_vectors gen energy_steering_verify.py
moderation/ live-moderation (wai.live.moderation) wai_live_moderation_vectors gen live_moderation_verify.py
ads/ live-ads (wai.live.ads) wai_live_ads_vectors gen live_ads_verify.py
e2ee/ confidentiality (wai.live.e2ee) joule_moq_e2ee_vectors gen (joule-moq-mls) e2ee_verify.py
messaging/ live-messaging (wai.live.message, wai.live.call) wai_live_messaging_vectors gen live_messaging_verify.py
watermark/ forensic-watermark (wai.live.watermark) wai_live_watermark_vectors gen live_watermark_verify.py
c2pa-live/ live-provenance (wai.live.provenance) wai_live_provenance_vectors gen c2pa_live_verify.py
c2pa-envelope/ c2pa-binding (wai.asset.c2pa) wai_c2pa_envelope_vectors gen c2pa_live_verify.py
synthesis/ synthesis (wai.media.synthesis) wai_synthesis_vectors gen synthesis_verify.py
usage/ ai-usage (wai.ai.usage) wai_ai_usage_vectors gen ai_usage_verify.py
contribution/ contribution (wai.media.contribution) wai_contribution_vectors gen contribution_verify.py
settlement/ settlement (wai.delivery.settlement) wai_settlement_vectors gen settlement_verify.py
audit/ stream-audit (wai.delivery.audit) wai_stream_audit_vectors gen stream_audit_verify.py
native-sink/ native-sink (a native host's sink: verification, stream-audit's records, ending) wai_native_sink_vectors gen native_sink_verify.py
browser/ browser-sink (routing, constraint sets, energy entries, contentBinding) wai_browser_sink_vectors gen browser_sink_verify.py
takedown/ takedown (wai.media.takedown) wai_takedown_vectors gen takedown_verify.py
coperformance/ co-performance (wai.live.coperformance) wai_co_performance_vectors gen co_performance_verify.py
influence/ influence (wai.media.influence) wai_influence_vectors gen influence_verify.py
direction/ direction (wai.media.direction) wai_direction_vectors gen direction_verify.py
bearers/ bearer-receipts (wai.bearer.receipts) wai_bearer_vectors gen bearer_verify.py
compact-return/ bearer-receipts §13 (the compact return profile) wai_compact_return_vectors gen compact_return_verify.py
carousel/ carousel (wai.bearer.carousel) wai_carousel_vectors gen carousel_verify.py
holdings/ holdings (wai.delivery.holdings) wai_holdings_vectors gen holdings_verify.py
signal-health/ signal-health (wai.live.signal_health) wai_signal_health_vectors gen signal_health_verify.py
timeliness/ timeliness (wai.delivery.timeliness) wai_timeliness_vectors gen timeliness_verify.py
prices/ rung-price (wai.delivery.rung_price) wai_rung_price_vectors gen rung_price_verify.py
cache-authority/ cache-authority (wai.delivery.cache) wai_cache_authority_vectors gen cache_authority_verify.py
audience/ audience-decision (wai.video.audience, wai.delivery.territory) wai_audience_decision_vectors gen audience_decision_verify.py
sink-predicate/ sink-predicate (wai.delivery.sink_predicate) wai_sink_predicate_vectors gen sink_predicate_verify.py
impressions/ impression-aggregates (wai.delivery.impressions) wai_impression_aggregate_vectors gen impression_aggregate_verify.py
access/ access-services (wai.access.services) wai_access_services_vectors gen access_services_verify.py
presentation/ ad-presentation (wai.live.ad_presentation) wai_ad_presentation_vectors gen ad_presentation_verify.py
age/ age-assurance (wai.age.assurance) wai_age_assurance_vectors gen age_assurance_verify.py
exploration/ exploration (wai.media.exploration) wai_exploration_vectors gen exploration_verify.py
cowatch/ co-watch (wai.live.cowatch) wai_co_watch_vectors gen co_watch_verify.py
worlds/ live-worlds (wai.live.world) wai_live_world_vectors gen live_worlds_verify.py
synthesis-mark/ synthesis §7.4 to §7.8 (the watermark scheme wai-mark:tent64) wai_synthesis_mark_vectors gen synthesis_mark_verify.py
upscale/ exact-upscale (wai.media.upscale) wai_upscale_vectors gen upscale_verify.py
prior-carriage/ prior-carriage §15 and http-delivery §8.7 (where a parameter set is fetched) wai_prior_carriage_vectors gen prior_carriage_verify.py
dred/ opus-dred (wai.audio.opus.dred.int) wai_dred_vectors gen (with the draft's weights file, dred/fetch.sh) dred_verify.py
aggregate/ telemetry-aggregation (wai.telemetry.aggregate) wai_telemetry_aggregate_vectors gen telemetry_aggregate_verify.py
tonemap/ exact-tonemap (wai.media.tonemap, wai.meta.gainmap, wai.meta.st2094_50) wai_tonemap_vectors gen tonemap_verify.py
robustness/ robustness-evidence (wai.media.robustness) wai_robustness_vectors gen robustness_verify.py
splat/ splat-exact (wai.splat.exact) wai_splat_exact_vectors gen splat_exact_verify.py
loc/ loc-carriage (WAI envelopes on LOC objects) loc_vectors gen (a joule-moq example) loc_verify.py
avatar-face/ avatars §6 to §13 (wai.avatar.face) wai_avatar_face_vectors gen avatar_face_verify.py
termination/ stream-termination (wai.live.termination) and capability-constraints §4 (the display match) wai_stream_termination_vectors gen stream_termination_verify.py
keys/ key-release (the proxy form of wai.video.keys) wai_key_release_vectors gen key_release_verify.py
links/ live-contribution (wai.live.contribution) joule-moq-ingest-link-vectors --out (joule-moq-ingest) live_contribution_verify.py
remote/ remote-desktop (wai.live.remote) wai_remote_desktop_vectors gen remote_desktop_verify.py

Provenance. Generated here: each directory's corpus is written by its row's generator (gen, in wai/wai-rs), from records authored in code and from fixed seeds, and each directory's README says how. c2pa-live/ cuts its media from the packaging corpus's AV1 floor; c2pa-envelope/ carries pictures its generator draws; contribution/ and influence/ generate their pictures with wai.generate.spectral and the model file of that capability's conformance vector (influence/ also with a second model file written from it); takedown/ carries the registry of clocks the repository publishes, registry/takedown-clocks.json, as written there; and upscale/ reads two priors that tools/wai_int_sr_train.py trained on pictures it generates (upscale/README.md). tonemap/ renders generated HDR scenes to its stills with the reference's own encoder, and tone-maps the frames of the int_video clip of the integer video corpus. robustness/ generates its pictures with the dead-leaves generator of synthesis_mark and with wai.generate.spectral, and measures the synthesis corpus's measurement sets, whose samples it does not hold. splat/ carries the learned cloud of wai-rs/tests/vectors/int_splat/ beside scenes authored as attribute bytes. joule_moq_e2ee_vectors gen (in joule-code/joule-code-rs/crates/joule-moq-mls) writes e2ee/vectors.json from fixed seeds, and e2ee/ also holds the test vectors RFC 9605 and draft-ietf-moq-secure-objects-01 publish, as printed (e2ee/README.md), and aggregate/vdaf-22/ the Prio3 test vectors of draft-irtf-cfrg-vdaf-22, as published at the commit that draft names (aggregate/README.md). dred/ names the weights file of draft-ietf-mlcodec-opus-dred-07 by its SHA-256 and holds no copy: its generator and its verifier read the file the draft names, which dred/fetch.sh fetches and checks. One recorded record: metering/relay-record.wmh and its ledger, which the reference relay signed in its test. avatar-face/ reads a generator, two identity priors and their keypoint tracks that tools/wai_avatar_face_train.py wrote from faces it generates (avatar-face/README.md).

Each verifier is written from its extension's text, shares no code with the reference (wai-rs, or for e2ee/, joule-moq and joule-moq-mls, and for links/, joule-moq-ingest), and is run by .github/workflows/wai-conformance.yml beside the reference's own check:

python3 live_events_verify.py events
python3 live_rooms_verify.py rooms
python3 capture_take_verify.py takes
python3 live_compose_verify.py compose
python3 live_record_verify.py recordings
python3 timed_text_verify.py captions
python3 access_services_verify.py access
python3 live_metering_verify.py metering
python3 energy_steering_verify.py steering
python3 live_moderation_verify.py moderation
python3 live_ads_verify.py ads
python3 ad_presentation_verify.py presentation
python3 e2ee_verify.py e2ee
python3 live_messaging_verify.py messaging
python3 live_watermark_verify.py watermark
python3 c2pa_live_verify.py c2pa-live
python3 c2pa_live_verify.py c2pa-envelope
python3 synthesis_verify.py synthesis
python3 synthesis_mark_verify.py synthesis-mark
python3 upscale_verify.py upscale
python3 avatar_face_verify.py avatar-face
python3 ai_usage_verify.py usage
python3 contribution_verify.py contribution
python3 settlement_verify.py settlement
python3 stream_audit_verify.py audit
python3 native_sink_verify.py native-sink
python3 browser_sink_verify.py browser
python3 takedown_verify.py takedown
python3 co_performance_verify.py coperformance
python3 age_assurance_verify.py age
python3 influence_verify.py influence
python3 direction_verify.py direction
python3 exploration_verify.py exploration
python3 co_watch_verify.py cowatch
python3 dred_verify.py dred <weights-file>
python3 telemetry_aggregate_verify.py aggregate
python3 tonemap_verify.py tonemap
python3 robustness_verify.py robustness
python3 splat_exact_verify.py splat
python3 stream_termination_verify.py termination
python3 key_release_verify.py keys
python3 live_contribution_verify.py links
python3 remote_desktop_verify.py remote
python3 live_worlds_verify.py worlds