open-standards/wai/live-conformance/README.md
Transaction Science 9bca3ab1e4
Some checks are pending
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (push) Waiting to run
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 12s
joule-moq-http live HTTP egress / joule-moq-http · does this change touch it (push) Successful in 22s
wai-app and Create / wai-app · does this change touch it (push) Successful in 16s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 17s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Waiting to run
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Waiting to run
wai-sink-swift native sink package / does this change touch it (push) Successful in 17s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Waiting to run
WAI Studio / does this change touch it (push) Successful in 15s
wai-sink-android native sink library / does this change touch it (push) Successful in 20s
WAI Studio / Studio in Chromium and Firefox · macos (push) Waiting to run
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Waiting to run
wai-ledger service / does this change touch it (push) Successful in 1m2s
wai-ledger service / service · macos (push) Waiting to run
wai-quantum for JavaScript / does this change touch it (push) Successful in 1m6s
wai-fleet service / does this change touch it (push) Successful in 1m8s
WAI operation catalogue / does this change touch it (push) Successful in 1m8s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 1m13s
wai-quantum studio and desktop / does this change touch it (push) Successful in 1m8s
wai-fleet service / service · macos (push) Waiting to run
wai-key-proxy / does this change touch it (push) Successful in 1m8s
wai-audit collector and player integration / does this change touch it (push) Successful in 1m9s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Waiting to run
wai-quantum studio and desktop / desktop app · macos (push) Waiting to run
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Waiting to run
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 9s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 8s
wai-quantum energy-landscape jobs / the same bits · macos (push) Waiting to run
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 39s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m8s
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Successful in 2m38s
wai-ledger service / service · linux (push) Successful in 2m13s
joule-code conformance gate / joule-moq-relay, every target (push) Successful in 6m28s
wai-quantum for JavaScript / javascript · linux (push) Successful in 3m47s
wai-key-proxy / proxy · linux (push) Successful in 1m22s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 3m10s
wai-audit collector and player integration / collector · linux (push) Successful in 2m18s
joule-moq-http live HTTP egress / joule-moq-http, every target (push) Successful in 4m54s
wai-fleet service / service · linux (push) Successful in 3m50s
joule-code conformance gate / joule-moq-ingest, every target (push) Successful in 7m51s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 5m52s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 9m49s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 11m34s
wai-quantum studio and desktop / studio · browser (push) Successful in 8m7s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 11m25s
WAI Studio / Studio in WebKit · linux (push) Successful in 13m57s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 11m7s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 28m12s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m46s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 13m21s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 9m10s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 10m1s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 15m25s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 18m35s
Ad and rights signalling: SCTE 224 documents as blackouts, ad creative records and stitched tracks over MoQ
Three mappings, each with a reference module, a corpus and a second implementation
written from its text. None changes a byte of a decision, a cue, a policy, a receipt or
a claim, and nothing is wired into a relay, a room service or a player.

- SCTE 224 import (audience-decision §10, new; audience_decision::scte224). A Media
  document whose policies are applied by time, over audiences stated in region codes and
  with the blackout action, imports to the blackouts in force over each span of its
  programme; spans are written back as a document that imports to them; a decision or a
  sink predicate is held to its document, so a verifier recomputes the decision. What
  does not carry exactly refuses the document with its own reason: an audience of postal
  codes or one that excludes, another action, a signal-matched media point, an
  eligibility window, a priority, an open-ended policy, an unresolved reference. Read:
  the schema of ANSI/SCTE 224 2021 (scte_224_20211011.xsd) and a public encoding
  practice (BP-EPG-BLK v1.0 draft); the standard's own text was refused to an unattended
  fetch and was not read, and §10.1 lists what that leaves unbound (decision D10).
- Ad creative signalling (draft-riedl-moq-ad-creative-signaling-01; live-ads §13, new;
  live_ads::creative). A session's fill of a break as the draft's record on an MSF event
  timeline, signed by the decider as a detached JWS over the record's RFC 8785 form;
  records read as untrusted input and held to the room's schedule and receipts. The
  draft's own vectors are in the corpus and its signed record verifies with its test
  key. The catalog member wai_ads (moq-streaming-format §4.7) is registered and held by
  catalog_check.py --strict, with ten planted faults.
- Content stitching (draft-englishm-moq-content-stitching-00; live-ads §14, new;
  live_ads::stitch). The composed track is a function of the programme's listing, the
  schedule and the receipts, changing ingredient at Group boundaries alone, and a
  verifier recomputes it; a break is stitched at a break candidate of a package's marks
  where marks are given. The stitcher is the edge of ad-presentation §14.3 and writes
  the session origin (WSO1); the player writes the device binding (WDB1); the
  invalid-traffic rules decide from those records in the corpus (decision D11).

Planted faults, each refused with its own reason by the reference and by the second
implementations: a policy with an unmappable audience (scte224_audience_unmappable); a
creative signal for a break that does not exist (creative_break_unknown); 31 more
documents, 15 more room cases, 13 stitch cases and 23 record cases.

Corpora: wai/live-conformance/audience-scte224/ (audience_scte224_verify.py) and
wai/live-conformance/ad-signalling/ (ad_signalling_verify.py); wai conform
--independent runs both. Each second implementation prints the checks of its own that
the corpus holds no case for (39 and 14).

Co-Authored-By: Claude <[email protected]>
2026-11-10 23:54:58 -05:00

17 KiB

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
c2pa-identity/ c2pa-binding §4.8 to §4.10, §6.4 (soft bindings, the ISCC soft binding and identifier, identity assertions, trust lists) wai_c2pa_identity_vectors gen c2pa_live_verify.py
c2pa-sdk-identity/ c2pa-binding §4.11 (identity assertions in manifests a C2PA SDK signed) wai_c2pa_sdk_identity_vectors gen wrote it once; its files are pinned by digest, not regenerated c2pa_sdk_identity_verify.py
iscc/ iscc (ISO 24138 codes) wai_iscc_vectors gen, beside the public vectors it replays iscc_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
browser-floor/ browser-sink §14.9 (a graphics component's text floor, read and presented) wai_browser_floor_vectors gen browser_floor_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
audience-scte224/ audience-decision §10 (SCTE 224 documents as blackouts) tests/audience_scte224.rs, with WAI_AUDIENCE_SCTE224_WRITE=1 audience_scte224_verify.py
ad-signalling/ live-ads §13 (ad creative signalling on a MoQ event timeline) and §14 (content stitching over MoQ) tests/ad_signalling.rs, with WAI_AD_SIGNALLING_WRITE=1 ad_signalling_verify.py
carousel-moq-fec/ carousel §8.3 (the MoQ FEC catalog binding) and bearer-receipts §9.7 (multicast endpoints) tests/carousel_moq_fec.rs, with WAI_CAROUSEL_MOQ_FEC_WRITE=1 carousel_moq_fec_verify.py
holdings/ holdings (wai.delivery.holdings) wai_holdings_vectors gen holdings_verify.py
peer-delivery/ peer-delivery (the exchange; no capability) wai_peer_delivery_vectors gen peer_delivery_verify.py
http-egress/ live-http-egress (an egress's trace; no capability) wai_live_egress_vectors gen http_egress_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
sink-reel/ sink-predicate §9 (wai.delivery.sink_reel) wai_sink_reel_vectors gen sink_reel_verify.py
machine-coding/ task-fidelity §5 (the split-computation claim), machine-descriptors, format-probes §19 wai_machine_coding_vectors gen machine_coding_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
models/ model-governance (wai.sink.models) wai_model_policy_vectors gen model_policy_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
detection/ detection (wai.media.detection) wai_detection_vectors gen detection_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, and c2pa-identity/ pictures it draws and marks with wai-mark:tent64, with the robustness record the harness measures over them and trust lists of its own test anchors in the C2PA Trust List's form; iscc/ holds, beside pictures its generator draws, public.json, the ISCC public test vectors as transcribed and pinned by digest (iscc/README.md); detection/ measures its stand-in detector over pictures it 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 c2pa_live_verify.py c2pa-identity
python3 iscc_verify.py iscc
python3 synthesis_verify.py synthesis
python3 synthesis_mark_verify.py synthesis-mark
python3 upscale_verify.py upscale
python3 model_policy_verify.py models
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 browser_floor_verify.py browser-floor
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 detection_verify.py detection
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