# step: ad presentation · wai-rs, ad_presentation_verify.py and the reference producer # order: 250 # features: live_ads # paths: wai/extensions/ad-presentation.md # independent: ad-presentation live python3 -I live-conformance/ad_presentation_verify.py live-conformance/presentation # # wai.live.ad_presentation (extensions/ad-presentation.md): the reference module's unit # tests (claims round-trip and their rules refuse, the quartile, the qualifying run, the # touched objects, a policy's presentation fields, RFC 9577's TokenChallenge) and # tests/ad_presentation.rs (every file of the committed corpus regenerates byte for byte # from its fixed seeds and no other file is there, RFC 9578's own token verifies under its # key, wai-rs gives every room its outcome and every claim its verdict, and §11 lists # exactly the reference's codes); and, in the step of every independent verifier above, # the corpus's second implementation, # ad_presentation_verify.py, written from the extension's text and sharing no code with # wai-rs, which verifies each room with live_ads_verify.py, judges every claim and its # RSASSA-PSS itself, requires every mutated copy of the corpus to fail and catches each of # its own checks dropped; standard library only, run isolated (-I). Last, the browser # client's reference producer (joule-moq-web/web/ads), which records observation # sequences into spans and writes and signs the corpus's claims from them, byte for byte. # # The paths this step brings to the workflow's trigger, and why: # wai/extensions/ad-presentation.md: tests/ad_presentation.rs requires this extension's §11 to # list the codes the reference reports, ad_presentation_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::presentation::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test ad_presentation) node --test ../joule-code/joule-code-rs/crates/joule-moq-web/web/ads/presentation.test.mjs