# step: audience decisions and territories · wai-rs and audience_decision_verify.py # order: 558 # features: audience_decision # paths: wai/extensions/audience-decision.md # independent: audience live needs=cryptography python3 -I live-conformance/audience_decision_verify.py live-conformance/audience # # wai.video.audience and wai.delivery.territory (extensions/audience-decision.md): the reference # module's unit tests (a location aggregated to the one listed code the blackouts need, and the # aggregation deciding what the location decides; every verdict following from the blackouts and # the region; a per-session location in the evidence, a finer region, a region the blackouts do # not list, what does not follow and a signature over the wrong bytes each refused; a session # class held to the blackouts applied, its hash the manifest receipt's; a territory statement # that would name who serves refused; the latest statement standing alone and a lapsed one # reviving none; a region against each territory; and a placement the same whatever territory is # beside it; and the corpus reaching every stated outcome and failing a changed one) and # tests/audience_decision.rs (vectors.json regenerates byte for byte from its fixed seeds, wai-rs # gives every case its stated outcome, and §7 lists exactly the reference's codes); and, in the # step of every independent verifier above, the corpus's second implementation, # audience_decision_verify.py, written from the extension's text and sharing no code with wai-rs, # which reads documents with route_record_verify.py, region codes with rung_price_verify.py, # placements with cache_authority_verify.py, signatures with the shared _ed25519.py and the class # hash with _blake3.py, writes the aggregation, the decision's rules, the class check, the # statement's rules, the standing statement and the territory itself, reads §7, requires every # mutated copy of the corpus to fail and drops each of its own checks in turn; run isolated (-I). # # The paths this step brings to the workflow's trigger, and why: # wai/extensions/audience-decision.md: tests/audience_decision.rs requires §7 to list the # reference's codes, audience_decision_verify.py reads it, and the registry's wire identifiers # test reads §4.1 and §5.1. set -euo pipefail (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib -- audience_decision::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test audience_decision)