# 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/`](events/) | [live-events](../extensions/live-events.md) (`wai.live.events`) | `wai_live_events_vectors gen` | `live_events_verify.py` | | [`offers/`](offers/) | [shoppable-events](../extensions/shoppable-events.md) (`wai.live.offer`) | `wai_shoppable_events_vectors gen` | `shoppable_events_verify.py` | | [`rooms/`](rooms/) | [live-rooms](../extensions/live-rooms.md) (`wai.live.room`) | `wai_live_room_vectors gen` | `live_rooms_verify.py` | | [`takes/`](takes/) | [capture-binding](../extensions/capture-binding.md) (`wai.capture.take`) | `wai_capture_take_vectors gen` | `capture_take_verify.py` | | [`compose/`](compose/) | [live-compose](../extensions/live-compose.md) (`wai.live.compose`) | `wai_live_compose_vectors gen` | `live_compose_verify.py` | | [`compose-ad-track/`](compose-ad-track/) | [live-compose](../extensions/live-compose.md) §5.10 (`wai.live.compose`: per-session ad tracks, `WAT1`) | `wai_compose_ad_track_vectors gen` | `compose_ad_track_verify.py` | | [`recordings/`](recordings/) | [live-recording](../extensions/live-recording.md) (`wai.live.recording`) | `wai_live_record_vectors gen` | `live_record_verify.py` | | [`captions/`](captions/) | [timed-text](../extensions/timed-text.md) (`wai.text.timed`) | `wai_timed_text_vectors gen` | `timed_text_verify.py` | | [`metering/`](metering/) | [live-metering](../extensions/live-metering.md) (`wai.live.metering`) | `wai_live_metering_vectors gen` | `live_metering_verify.py` | | [`steering/`](steering/) | [energy-steering](../extensions/energy-steering.md) (`wai.live.steering`) | `wai_energy_steering_vectors gen` | `energy_steering_verify.py` | | [`moderation/`](moderation/) | [live-moderation](../extensions/live-moderation.md) (`wai.live.moderation`) | `wai_live_moderation_vectors gen` | `live_moderation_verify.py` | | [`ads/`](ads/) | [live-ads](../extensions/live-ads.md) (`wai.live.ads`) | `wai_live_ads_vectors gen` | `live_ads_verify.py` | | [`e2ee/`](e2ee/) | [confidentiality](../extensions/confidentiality.md) (`wai.live.e2ee`) | `joule_moq_e2ee_vectors gen` (joule-moq-mls) | `e2ee_verify.py` | | [`messaging/`](messaging/) | [live-messaging](../extensions/live-messaging.md) (`wai.live.message`, `wai.live.call`) | `wai_live_messaging_vectors gen` | `live_messaging_verify.py` | | [`watermark/`](watermark/) | [forensic-watermark](../extensions/forensic-watermark.md) (`wai.live.watermark`) | `wai_live_watermark_vectors gen` | `live_watermark_verify.py` | | [`c2pa-live/`](c2pa-live/) | [live-provenance](../extensions/live-provenance.md) (`wai.live.provenance`) | `wai_live_provenance_vectors gen` | `c2pa_live_verify.py` | | [`c2pa-envelope/`](c2pa-envelope/) | [c2pa-binding](../extensions/c2pa-binding.md) (`wai.asset.c2pa`) | `wai_c2pa_envelope_vectors gen` | `c2pa_live_verify.py` | | [`c2pa-identity/`](c2pa-identity/) | [c2pa-binding](../extensions/c2pa-binding.md) §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-sdk-identity/) | [c2pa-binding](../extensions/c2pa-binding.md) §4.11 (identity assertions in manifests a C2PA SDK signed) | `wai_c2pa_sdk_identity_vectors gen` wrote it with the SDK the lockfile holds; its files are pinned by digest, written again only when that version moves | `c2pa_sdk_identity_verify.py` | | [`iscc/`](iscc/) | [iscc](../extensions/iscc.md) (ISO 24138 codes) | `wai_iscc_vectors gen`, beside the public vectors it replays | `iscc_verify.py` | | [`synthesis/`](synthesis/) | [synthesis](../extensions/synthesis.md) (`wai.media.synthesis`) | `wai_synthesis_vectors gen` | `synthesis_verify.py` | | [`usage/`](usage/) | [ai-usage](../extensions/ai-usage.md) (`wai.ai.usage`) | `wai_ai_usage_vectors gen` | `ai_usage_verify.py` | | [`contribution/`](contribution/) | [contribution](../extensions/contribution.md) (`wai.media.contribution`) | `wai_contribution_vectors gen` | `contribution_verify.py` | | [`settlement/`](settlement/) | [settlement](../extensions/settlement.md) (`wai.delivery.settlement`) | `wai_settlement_vectors gen` | `settlement_verify.py` | | [`audit/`](audit/) | [stream-audit](../extensions/stream-audit.md) (`wai.delivery.audit`) | `wai_stream_audit_vectors gen` | `stream_audit_verify.py` | | [`native-sink/`](native-sink/) | [native-sink](../extensions/native-sink.md) (a native host's sink: verification, stream-audit's records, ending) | `wai_native_sink_vectors gen` | `native_sink_verify.py` | | [`certification/`](certification/) | [certification](../extensions/certification.md) (a certifier's refusals, `cert-refusal/1`, and publications, `cert-publication/1`) | `wai_certification_vectors gen` | `certification_verify.py` | | [`browser/`](browser/) | [browser-sink](../extensions/browser-sink.md) (routing, constraint sets, energy entries, `contentBinding`) | `wai_browser_sink_vectors gen` | `browser_sink_verify.py` | | [`browser-floor/`](browser-floor/) | [browser-sink](../extensions/browser-sink.md) §14.9 (a graphics component's text floor, read and presented) | `wai_browser_floor_vectors gen` | `browser_floor_verify.py` | | [`takedown/`](takedown/) | [takedown](../extensions/takedown.md) (`wai.media.takedown`) | `wai_takedown_vectors gen` | `takedown_verify.py` | | [`audit-chain/`](audit-chain/) | [audit-chain](../extensions/audit-chain.md) (`wai.audit.chain`) | `wai_audit_chain_vectors gen` | `audit_chain_verify.py` | | [`data-export/`](data-export/) | [data-export](../extensions/data-export.md) (`wai.data.export`) | `wai_data_export_vectors gen` | `data_export_verify.py` | | [`data-deletion/`](data-deletion/) | [data-deletion](../extensions/data-deletion.md) (`wai.data.deletion`) | `wai_data_deletion_vectors gen` | `data_deletion_verify.py` | | [`coperformance/`](coperformance/) | [co-performance](../extensions/co-performance.md) (`wai.live.coperformance`) | `wai_co_performance_vectors gen` | `co_performance_verify.py` | | [`influence/`](influence/) | [influence](../extensions/influence.md) (`wai.media.influence`) | `wai_influence_vectors gen` | `influence_verify.py` | | [`direction/`](direction/) | [direction](../extensions/direction.md) (`wai.media.direction`) | `wai_direction_vectors gen` | `direction_verify.py` | | [`bearers/`](bearers/) | [bearer-receipts](../extensions/bearer-receipts.md) (`wai.bearer.receipts`) | `wai_bearer_vectors gen` | `bearer_verify.py` | | [`compact-return/`](compact-return/) | [bearer-receipts](../extensions/bearer-receipts.md) §13 (the compact return profile) | `wai_compact_return_vectors gen` | `compact_return_verify.py` | | [`carousel/`](carousel/) | [carousel](../extensions/carousel.md) (`wai.bearer.carousel`) | `wai_carousel_vectors gen` | `carousel_verify.py` | | [`audience-scte224/`](audience-scte224/) | [audience-decision](../extensions/audience-decision.md) §10 (SCTE 224 documents as blackouts) | `tests/audience_scte224.rs`, with `WAI_AUDIENCE_SCTE224_WRITE=1` | `audience_scte224_verify.py` | | [`ad-signalling/`](ad-signalling/) | [live-ads](../extensions/live-ads.md) §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` | | [`stitched-session/`](stitched-session/) | [player-integration](../extensions/player-integration.md) §3 (*A stitched session*: the ingredients a player integration handed, and the session's binding and claims held to them) | `tests/stitched_session.rs`, with `WAI_STITCHED_SESSION_WRITE=1` | `stitched_session_verify.py`; `joule-moq-web/web/ads/session.test.mjs` | | [`protected-cmsf/`](protected-cmsf/) | [moq-streaming-format](../extensions/moq-streaming-format.md) §4.9 (protected CMAF tracks over MoQ, a key for each key period) | wai-pack's `tests/cmsf.rs`, with `WAI_PROTECTED_CMSF_WRITE=1` | `protected_cmsf_verify.py` | | [`carousel-moq-fec/`](carousel-moq-fec/) | [carousel](../extensions/carousel.md) §8.3 (the MoQ FEC catalog binding) and [bearer-receipts](../extensions/bearer-receipts.md) §9.7 (multicast endpoints) | `tests/carousel_moq_fec.rs`, with `WAI_CAROUSEL_MOQ_FEC_WRITE=1` | `carousel_moq_fec_verify.py` | | [`holdings/`](holdings/) | [holdings](../extensions/holdings.md) (`wai.delivery.holdings`) | `wai_holdings_vectors gen` | `holdings_verify.py` | | [`hls-clips/`](hls-clips/) | [hls-clips](../extensions/hls-clips.md) (`wai.delivery.hls_clip`) | `wai_hls_clip_vectors gen` | `hls_clips_verify.py` | | [`peer-delivery/`](peer-delivery/) | [peer-delivery](../extensions/peer-delivery.md) (the exchange; no capability) | `wai_peer_delivery_vectors gen` | `peer_delivery_verify.py` | | [`http-egress/`](http-egress/) | [live-http-egress](../extensions/live-http-egress.md) (an egress's trace; no capability) | `wai_live_egress_vectors gen` | `http_egress_verify.py` | | [`signal-health/`](signal-health/) | [signal-health](../extensions/signal-health.md) (`wai.live.signal_health`) | `wai_signal_health_vectors gen` | `signal_health_verify.py` | | [`timeliness/`](timeliness/) | [timeliness](../extensions/timeliness.md) (`wai.delivery.timeliness`) | `wai_timeliness_vectors gen` | `timeliness_verify.py` | | [`prices/`](prices/) | [rung-price](../extensions/rung-price.md) (`wai.delivery.rung_price`) | `wai_rung_price_vectors gen` | `rung_price_verify.py` | | [`price-documents/`](price-documents/) | [price-document](../extensions/price-document.md) (`wai.price.document`) | `wai_price_document_vectors gen` | `price_document_verify.py` | | [`cache-authority/`](cache-authority/) | [cache-authority](../extensions/cache-authority.md) (`wai.delivery.cache`) | `wai_cache_authority_vectors gen` | `cache_authority_verify.py` | | [`audience/`](audience/) | [audience-decision](../extensions/audience-decision.md) (`wai.video.audience`, `wai.delivery.territory`) | `wai_audience_decision_vectors gen` | `audience_decision_verify.py` | | [`sink-predicate/`](sink-predicate/) | [sink-predicate](../extensions/sink-predicate.md) (`wai.delivery.sink_predicate`) | `wai_sink_predicate_vectors gen` | `sink_predicate_verify.py` | | [`sink-reel/`](sink-reel/) | [sink-predicate](../extensions/sink-predicate.md) §9 (`wai.delivery.sink_reel`) | `wai_sink_reel_vectors gen` | `sink_reel_verify.py` | | [`machine-coding/`](machine-coding/) | [task-fidelity](../extensions/task-fidelity.md) §5 (the `split-computation` claim), [machine-descriptors](../extensions/machine-descriptors.md), [format-probes](../extensions/format-probes.md) §19 | `wai_machine_coding_vectors gen` | `machine_coding_verify.py` | | [`energy-methods/`](energy-methods/) | [energy-methods](../extensions/energy-methods.md) (exports of signed energy records under the industry's measurement and reporting methods) | `wai_energy_methods_vectors gen` | `energy_methods_verify.py` | | [`impressions/`](impressions/) | [impression-aggregates](../extensions/impression-aggregates.md) (`wai.delivery.impressions`) | `wai_impression_aggregate_vectors gen` | `impression_aggregate_verify.py` | | [`access/`](access/) | [access-services](../extensions/access-services.md) (`wai.access.services`) | `wai_access_services_vectors gen` | `access_services_verify.py` | | [`presentation/`](presentation/) | [ad-presentation](../extensions/ad-presentation.md) (`wai.live.ad_presentation`) | `wai_ad_presentation_vectors gen` | `ad_presentation_verify.py` | | [`age/`](age/) | [age-assurance](../extensions/age-assurance.md) (`wai.age.assurance`) | `wai_age_assurance_vectors gen` | `age_assurance_verify.py` | | [`exploration/`](exploration/) | [exploration](../extensions/exploration.md) (`wai.media.exploration`) | `wai_exploration_vectors gen` | `exploration_verify.py` | | [`cowatch/`](cowatch/) | [co-watch](../extensions/co-watch.md) (`wai.live.cowatch`) | `wai_co_watch_vectors gen` | `co_watch_verify.py` | | [`worlds/`](worlds/) | [live-worlds](../extensions/live-worlds.md) (`wai.live.world`) | `wai_live_world_vectors gen` | `live_worlds_verify.py` | | [`world-gen/`](world-gen/) | [model-generation](../extensions/model-generation.md) (`wai.world.generation`) | `wai_world_gen_vectors gen` (from the real runs under `world-gen/runs/`) | `world_gen_verify.py` | | [`synthesis-mark/`](synthesis-mark/) | [synthesis](../extensions/synthesis.md) §7.4 to §7.8 (the watermark scheme `wai-mark:tent64`) | `wai_synthesis_mark_vectors gen` | `synthesis_mark_verify.py` | | [`upscale/`](upscale/) | [exact-upscale](../extensions/exact-upscale.md) (`wai.media.upscale`) | `wai_upscale_vectors gen` | `upscale_verify.py` | | [`models/`](models/) | [model-governance](../extensions/model-governance.md) (`wai.sink.models`) | `wai_model_policy_vectors gen` | `model_policy_verify.py` | | [`prior-carriage/`](prior-carriage/) | [prior-carriage](../extensions/prior-carriage.md) §15 and [http-delivery](../extensions/http-delivery.md) §8.7 (where a parameter set is fetched) | `wai_prior_carriage_vectors gen` | `prior_carriage_verify.py` | | [`dred/`](dred/) | [opus-dred](../extensions/opus-dred.md) (`wai.audio.opus.dred.int`) | `wai_dred_vectors gen` (with the draft's weights file, `dred/fetch.sh`) | `dred_verify.py` | | [`aggregate/`](aggregate/) | [telemetry-aggregation](../extensions/telemetry-aggregation.md) (`wai.telemetry.aggregate`) | `wai_telemetry_aggregate_vectors gen` | `telemetry_aggregate_verify.py` | | [`tonemap/`](tonemap/) | [exact-tonemap](../extensions/exact-tonemap.md) (`wai.media.tonemap`, `wai.meta.gainmap`, `wai.meta.st2094_50`) | `wai_tonemap_vectors gen` | `tonemap_verify.py` | | [`robustness/`](robustness/) | [robustness-evidence](../extensions/robustness-evidence.md) (`wai.media.robustness`) | `wai_robustness_vectors gen` | `robustness_verify.py` | | [`detection/`](detection/) | [detection](../extensions/detection.md) (`wai.media.detection`) | `wai_detection_vectors gen` | `detection_verify.py` | | [`splat/`](splat/) | [splat-exact](../extensions/splat-exact.md) (`wai.splat.exact`) | `wai_splat_exact_vectors gen` | `splat_exact_verify.py` | | [`loc/`](loc/) | [loc-carriage](../extensions/loc-carriage.md) (WAI envelopes on LOC objects) | `loc_vectors gen` (a joule-moq example) | `loc_verify.py` | | [`avatar-face/`](avatar-face/) | [avatars](../extensions/avatars.md) §6 to §13 (`wai.avatar.face`) | `wai_avatar_face_vectors gen` | `avatar_face_verify.py` | | [`termination/`](termination/) | [stream-termination](../extensions/stream-termination.md) (`wai.live.termination`) and [capability-constraints](../extensions/capability-constraints.md) §4 (the display match) | `wai_stream_termination_vectors gen` | `stream_termination_verify.py` | | [`keys/`](keys/) | [key-release](../extensions/key-release.md) (the proxy form of `wai.video.keys`) | `wai_key_release_vectors gen` | `key_release_verify.py` | | [`links/`](links/) | [live-contribution](../extensions/live-contribution.md) (`wai.live.contribution`) | `joule-moq-ingest-link-vectors --out` (joule-moq-ingest) | `live_contribution_verify.py` | | [`st2110/`](st2110/) | [essence-contribution](../extensions/essence-contribution.md) §4 to §8 (uncompressed essence over RTP: descriptions, video rows, PCM, ancillary data, SCTE 104 in it) | `joule-moq-ingest-st2110-vectors --out` (joule-moq-ingest) | `st2110_verify.py` | | [`telephony/`](telephony/) | [telephony-bridge](../extensions/telephony-bridge.md) §4 to §8 (SIP messages, digest credentials, offers and answers, the bridge's user agent, RTP, G.711 and telephone events) | `joule-moq-ingest-telephony-vectors --out` (joule-moq-ingest) | `telephony_verify.py` | | [`remote/`](remote/) | [remote-desktop](../extensions/remote-desktop.md) (`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 shoppable_events_verify.py offers 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 price_document_verify.py price-documents 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 audit_chain_verify.py audit-chain python3 data_export_verify.py data-export python3 data_deletion_verify.py data-deletion 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 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 st2110_verify.py --self-test st2110 python3 telephony_verify.py --self-test telephony python3 remote_desktop_verify.py remote python3 live_worlds_verify.py worlds python3 hls_clips_verify.py hls-clips ```