# step: live ads · wai-rs and live_ads_verify.py # order: 230 # features: live_ads # paths: wai/extensions/live-ads.md # independent: live-ads live python3 -I live-conformance/live_ads_verify.py live-conformance/ads # # wai.live.ads (extensions/live-ads.md): the reference module's unit tests (policies and # annotations round-trip and their rules refuse, a break's identity, tags, events and # asset lists written exactly), the break form of wai.video.ssai's receipt (its JSON # carriage, each of its rules, its strict signature, the stitched form's legacy pin # unchanged), and tests/live_ads.rs (every file of the committed corpus, vectors.json and # each room's HLS tags, regenerates byte for byte from its fixed seeds and no other file # is there, wai-rs gives every room its stated outcome, and §10 lists exactly the # reference's codes, each of which the corpus gives); and, in the step of every # independent verifier above, the corpus's second # implementation, live_ads_verify.py, written from the extension's text and sharing no # code with wai-rs, which verifies each room with live_rooms_verify.py, writes every tag, # event and asset list byte for byte, verifies every receipt with WAI's strict Ed25519 # rule and BLAKE3 from claim-conformance, reads the extension's reason table, and # requires every mutated copy of the corpus to fail; standard library only, run isolated # (-I). # # The paths this step brings to the workflow's trigger, and why: # wai/extensions/live-ads.md: tests/live_ads.rs requires this extension's §10 to list the codes # the reference reports, live_ads_verify.py reads that table, and the registry's wire # identifiers test reads its sections. set -euo pipefail (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib live_ads::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib wai_video_ssai::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test live_ads)