open-standards/wai/live-conformance
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 298eaa70f5 age × co: the room's own service is not held to the serving rule
A room with both `[age]` and `[co]` broke: co-performance's clock follows and
logs every performer's objects over a relay session of its own, which holds no
grant and no token, so age-assurance §5.5 served it nothing rated.

- age-assurance §5.5: a session that proves possession of a room key (the
  authority's or the clock's) is the room's own service, served every object of
  the room. The proof is a GRANT_PROOF naming no grant (32 bytes of zero) over
  the session's challenge, checked as live-rooms §10.5.4 checks a proof; one
  that does not pass refuses the session with that section's reason; one that
  passes by a key that is no room key gives nothing. Co-performance §8 points
  to it; §11 and §12 name the reasons and the new vectors.
- joule-moq: `grant_proof::NO_GRANT`, `add_room_key_proof`, `room_key_proofs`.
- joule-moq-relay: SETUP checks room-key proofs; a session proving a key the
  relay holds as a room key (an authority's, for its rooms; `[floor]` or `[dvr]`
  room keys, for every room) has `SessionCtx::service`, and its threshold there
  is past every age. `ClientOptions::room_keys` presents such proofs.
  tests/age_room_service.rs: a room rated 18 with the floor held; the clock's
  and the authority's proofs served every group, the clock's token alone and a
  non-room key refused `below_threshold`, a forged clock proof and one over
  another challenge closed UNAUTHORIZED.
- joule-moq-room: the clock's session proves both room keys it holds.
- wai-rs `age_assurance::room_service`, the corpus case `room_service`, and
  `age_assurance_verify.py` taught the rule, with three new checks and four
  mutations, all caught.
- e2e: scenario `ageco`, a room with both `[age]` and `[co]`.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 07:08:25 -04: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 live-conformance/ads: a control for each other rule of the break receipt (format, work, figure without class, resolution floor, its own ceiling) 2026-10-20 08:47:53 -04:00
age age × co: the room's own service is not held to the serving rule 2026-10-22 07:08:25 -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 browser sink: the corpus's fractional bound survives a page's numbers; an unbound tile shows no chain 2026-10-21 15:31:51 -04: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
captions wai: live-conformance/captions regenerated: every IMSC1 document carries ttp:profile 2026-10-17 11:32:42 -04:00
compose wai: registry, SPEC §5, REGISTRY, CHANGELOG, corpus READMEs; live-rooms points at live-compose 2026-10-17 09:42:53 -04: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
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
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
influence wai: influence corpus README, independent Python verifier, and settlement_verify reads attribution lines 2026-10-21 20:04:39 -04:00
metering live_metering_verify.py and the corpus README: version 2 2026-10-19 11:41:34 -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
presentation wai ad-presentation: name RFC 9578's vector by its place, not a count 2026-10-21 12:28:47 -04:00
recordings age assurance: the minors' profile over grants, live-recording refuses a room never recorded, the relay keeps no DVR window of a minors' room, the second implementation, registry and CI 2026-10-21 15:29:49 -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
settlement wai: influence corpus README, independent Python verifier, and settlement_verify reads attribution lines 2026-10-21 20:04:39 -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
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 wai-mark:tent64: registry, SPEC §5, CHANGELOG, CI step, corpus README 2026-10-21 13:29:05 -04:00
takedown takedown corpus: regenerated with the sink-samples claim 2026-10-22 04:46:17 -04:00
takes wai: capture-binding.md, its corpus README, registry, SPEC §5, CI and CHANGELOG 2026-10-17 04:38:35 -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
_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
_wai_mark.py synthesis.md §7: wording of the definition's line breaks, the floor's bound and the decoder; clippy on the scheme's tables and luma 2026-10-21 13:53:51 -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
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 browser_sink_verify.py: a forged signature whose derived bytes all agree is a mutation only the signature check catches 2026-10-21 15:41:23 -04:00
c2pa_live_verify.py wai: live provenance, the update manifest's ingredient states the parent's validation results 2026-10-21 04:54:01 -04: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
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
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
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
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
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
live_ads_verify.py wai: the ad-presentation extension, its corpus README and an independent verifier 2026-10-21 12:18:44 -04:00
live_compose_verify.py wai: live_compose_verify.py, the corpus's second implementation, with mutated copies 2026-10-17 09:40:56 -04: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_metering_verify.py live_metering_verify.py and the corpus README: version 2 2026-10-19 11:41:34 -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 age assurance: the minors' profile over grants, live-recording refuses a room never recorded, the relay keeps no DVR window of a minors' room, the second implementation, registry and CI 2026-10-21 15:29:49 -04: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
README.md Merge #432 (co-watch) into the live-room train 2026-10-22 05:26:53 -04:00
settlement_verify.py wai: influence corpus README, independent Python verifier, and settlement_verify reads attribution lines 2026-10-21 20:04:39 -04:00
synthesis_mark_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
synthesis_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
takedown_verify.py train: a takedown claim over a sink's samples adds nothing to the closure 2026-10-22 04:44:39 -04: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
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
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
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
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
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
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
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

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, contribution/ generates its pictures with wai.generate.spectral and the model file of that capability's conformance vector, and takedown/ carries the registry of clocks the repository publishes, registry/takedown-clocks.json, as written there. joule_moq_e2ee_vectors gen (in floor; contribution/ generates its pictures with wai.generate.spectral and the model file of that capability's conformance vector; and upscale/ reads two priors that tools/wai_int_sr_train.py trained on pictures it generates (upscale/README.md). joule_moq_e2ee_vectors gen (in floor, and 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). 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). One recorded record: metering/relay-record.wmh and its ledger, which the reference relay signed in its test.

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 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_watermark_verify.py watermark
python3 c2pa_live_verify.py c2pa-live
python3 synthesis_verify.py synthesis
python3 synthesis_mark_verify.py synthesis-mark
python3 upscale_verify.py upscale
python3 ai_usage_verify.py usage
python3 contribution_verify.py contribution
python3 settlement_verify.py settlement
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