open-standards/.github/wai-conformance/verifiers/audio-renditions.sh
Transaction Science fb58b7fea2
Some checks failed
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (push) Successful in 57s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 41s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 9s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 2m25s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 2m27s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Has been cancelled
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
wai-audit collector and player integration / does this change touch it (push) Has been cancelled
wai-audit collector and player integration / collector · linux (push) Has been cancelled
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Has been cancelled
WAI operation catalogue / does this change touch it (push) Has been cancelled
WAI operation catalogue / the catalogue and every door · linux (push) Has been cancelled
wai-fleet service / does this change touch it (push) Has been cancelled
wai-fleet service / service · linux (push) Has been cancelled
wai-fleet service / service · macos (push) Has been cancelled
wai-key-proxy / does this change touch it (push) Has been cancelled
wai-key-proxy / proxy · linux (push) Has been cancelled
wai-app and Create / wai-app · does this change touch it (push) Has been cancelled
wai-ledger service / does this change touch it (push) Has been cancelled
wai-ledger service / service · linux (push) Has been cancelled
wai-ledger service / service · macos (push) Has been cancelled
wai-quantum for JavaScript / does this change touch it (push) Has been cancelled
wai-quantum for JavaScript / javascript · linux (push) Has been cancelled
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Has been cancelled
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Has been cancelled
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · macos (push) Has been cancelled
wai-quantum studio and desktop / does this change touch it (push) Has been cancelled
wai-quantum studio and desktop / studio · browser (push) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (push) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (push) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (push) Has been cancelled
wai-sink-android native sink library / does this change touch it (push) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Has been cancelled
wai-sink-swift native sink package / does this change touch it (push) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Has been cancelled
WAI Studio / does this change touch it (push) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (push) Has been cancelled
WAI Studio / Studio in WebKit · linux (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Successful in 9m51s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Failing after 1m34s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 10m12s
joule-code conformance gate / joule-moq-relay, every target (push) Successful in 3m54s
joule-code conformance gate / joule-moq-ingest, every target (push) Successful in 10m59s
wai: AC-3 and E-AC-3 registered, and a programme's audio renditions written for HLS and DASH
A broadcast chain holds AC-3 and E-AC-3, and a channel offers its audio in several languages and
with audio description; WAI could name neither, nor say how the renditions are offered.

SPEC §5 registers wai.audio.ac3 (AC-3 syncframes back to back, ATSC A/52:2018 §5, ETSI TS 102 366)
and wai.audio.eac3 (an E-AC-3 bit stream, A/52 Annex E), sink-supplied and carried unread, of the
class proprietary: one licensor still runs the programme, and the reported expiry of their essential
patents is not confirmed by it (research/media-codec-registry.md, ¹⁸). Their replicate class is
standard-unclassified: A/52 §7.3.4 lets a decoder dither zero-bit mantissas with any reasonably
random sequence. The glossary links them, media-identify names ac3 and eac3, and live-ingest maps
`ac-3`, `ec-3` and stream types 0x81 and 0x87 to them; the reference gateway does not carry them
in this revision.

packaging §8.10 writes a set of audio rendition entries (main, alternate, dub, commentary and
audio description, in AAC, Opus, FLAC, AC-3 or E-AC-3) as HLS EXT-X-MEDIA tags of type AUDIO
(draft-pantos-hls-rfc8216bis-22) and DASH audio adaptation sets with ETSI TS 103 285 V1.4.1
§6.1.2's roles and audio-purpose descriptor. An audio description is a broadcast mix bound to
its access-services description record, which must verify and be in its language; it is marked
describes-video, machine-generated when its voice is synthesized, and named in
X-WAI-DESCRIPTION and a DASH SupplementalProperty. The writer refuses what the HLS text forbids
or asks against: a name twice in a group, two defaults, two renditions chosen unasked that cannot
be told apart, groups that do not offer the same renditions.

The reference is the audio_renditions module of wai-rs; the corpus is pack-conformance/renditions/
(31 cases), with renditions_verify.py its second implementation: every case agrees, 9 of 9 mutated
copies fail and 15 of 15 weakened verifiers are caught. Eleven faults planted in the reference (AC-3
royalty-free, E-AC-3 exact, eac3 unmapped in identify, the codecs rule, the description's language,
autoselect, the DASH role, the groups rule, the machine label, the description's rules, the default
rule) each fail its tests.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-08 15:11:47 -05:00

23 lines
1.5 KiB
Shell

# step: audio renditions · wai-rs and renditions_verify.py
# order: 554
# features: audio_renditions
# paths: wai/extensions/packaging.md
# independent: audio-renditions delivery python3 -I pack-conformance/renditions_verify.py pack-conformance/renditions
#
# Audio renditions (extensions/packaging.md §8.10): the reference module's unit tests (a main and
# a dub written, and every rule refusing) and the corpus's (it reaches every stated outcome, and
# a changed outcome fails), and tests/audio_renditions.rs (vectors.json regenerates byte for
# byte, wai-rs gives every case its stated outcome, and §8.10.6 lists exactly the reference's
# codes); and, in the step of every independent verifier above, the corpus's second
# implementation, renditions_verify.py, written from the extension's text and sharing no code
# with wai-rs, which reads description records with access_services_verify.py, writes the HLS
# tags and DASH adaptation sets itself, reads §8.10.6, requires every mutated copy of the
# corpus to fail and drops each of its own checks in turn; standard library only, run
# isolated (-I).
#
# The paths this step brings to the workflow's trigger, and why:
# wai/extensions/packaging.md: tests/audio_renditions.rs requires §8.10.6 to list the
# reference's codes, and renditions_verify.py reads it.
set -euo pipefail
(cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib -- audio_renditions::)
(cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test audio_renditions)