open-standards/wai/live-conformance/audience-scte224
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 11161d7132
Some checks failed
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 26s
joule-moq-http live HTTP egress / joule-moq-http · does this change touch it (push) Successful in 25s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 17s
wai-audit collector and player integration / does this change touch it (push) Successful in 22s
wai-ledger service / does this change touch it (push) Successful in 13s
wai-quantum for JavaScript / does this change touch it (push) Successful in 28s
wai-quantum studio and desktop / does this change touch it (push) Successful in 26s
wai-app and Create / wai-app · does this change touch it (push) Successful in 4m16s
wai-fleet service / does this change touch it (push) Successful in 4m4s
WAI operation catalogue / does this change touch it (push) Successful in 4m10s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 4m30s
wai-sink-swift native sink package / does this change touch it (push) Successful in 4m21s
WAI Studio / does this change touch it (push) Successful in 4m36s
wai-sink-android native sink library / does this change touch it (push) Successful in 4m40s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 6m36s
joule-moq-http live HTTP egress / joule-moq-http, every target (push) Successful in 1m47s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 2m35s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 9s
joule-moq-room room service / joule-moq-room, every target (push) Failing after 5m51s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 5m33s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 39s
wai-quantum for JavaScript / javascript · linux (push) Successful in 2m40s
wai-audit collector and player integration / collector · linux (push) Successful in 3m38s
wai-ledger service / service · linux (push) Successful in 3m37s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m10s
wai-quantum studio and desktop / studio · browser (push) Successful in 4m34s
wai-fleet service / service · linux (push) Successful in 2m19s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 8m21s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m41s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 14m48s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 6m7s
WAI Studio / Studio in WebKit · linux (push) Successful in 18m41s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 10m39s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 56s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 2m7s
wai-ledger service / service · macos (push) Successful in 1m9s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 4m49s
wai-fleet service / service · macos (push) Successful in 38s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 8m2s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 15m45s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 7m1s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 10m29s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 16m4s
The SCTE 224 and ad-signalling corpora hold a case for every check of their second implementations
The two corpora landed with a list each of the checks no case exercised: 39 of the 71 of
audience_scte224_verify.py, shown there by documents the script made itself, and 14 of the
61 of ad_signalling_verify.py. Both lists are empty now, and are gone from the scripts: a
second implementation with any one check switched off no longer passes its corpus, and a
check with no case fails the run.

- live-conformance/audience-scte224/: 59 more documents and one more predicate, written by
  tests/audience_scte224.rs. Each limit has a document at it, which imports, and one past
  it (1,048,576 bytes, 64 elements deep, audiences 8 deep, 8,192 regions, 4,096 media
  points, 256 blackouts, six digits of a fraction, the first instant of 1970, the last
  instant a decision carries); a document near a limit is stated by its pieces
  (document_parts), so the file holds no megabyte of spaces. The rest are the single rules
  the first cases stated only together with another.
- live-conformance/ad-signalling/: 17 more records and two more stitching cases, written by
  live_ads::signalling_corpus, and a key of another curve in the key set.

Writing the cases found five places where the reference and the second implementation
disagreed, each settled by the text: an attribute on a Region, an action:Content or an
Alternate is scte224_not_carried (the reference said malformed and action_unmappable); a
Remove that holds a policy's definition is scte224_malformed (the reference imported it;
audience-decision §10.5 now states the reason); audiences nested past 8 are
scte224_not_carried (the second implementation said malformed); a number's 15 significant
digits are counted as written (live-ads §13.3 now says so; the reference read
123456789012345.0); a pod with no slots member is not carried (§13.2 now says so; the
second implementation carried it).

Left as found, not in either list: a creative's listing with a Group of no Object is
refused by the second implementation (stitch_listing_malformed) and composed by the
reference; the corpus states its creatives once for every case, so no case reaches it.

Regenerated on the Framework (x86_64) and checked byte for byte on Thor (aarch64).

Co-Authored-By: Claude <[email protected]>
2026-11-11 00:17:27 -05:00
..
README.md The SCTE 224 and ad-signalling corpora hold a case for every check of their second implementations 2026-11-11 00:17:27 -05:00
vectors.json The SCTE 224 and ad-signalling corpora hold a case for every check of their second implementations 2026-11-11 00:17:27 -05:00

live-conformance/audience-scte224 — SCTE 224 documents as blackouts

The corpus of extensions/audience-decision.md §10. vectors.json holds:

  • documents: Media documents, each with the programme and spans it imports to (a span is a decision's start, end and blackouts), or the one reason it is refused. Each refused document is one edit from a document that imports. A limit (1,048,576 bytes, 64 elements deep, audiences 8 deep, 8,192 regions, 4,096 media points, 256 blackouts) has a document at it, which imports, and one past it. A document near a limit is stated by its pieces, document_parts, written one after another: a string; {"repeat": s, "times": n}, the string n times; or {"counted": s, "times": n}, the string once for each count from 0 to n − 1 with its {n} replaced by the count in three digits of base 36 (0 to 9, then A to Z).
  • decisions and predicates: a signed audience decision or sink predicate (text), the name of the document it is held to, the location of the session or the sink, and its outcome: consistent with the verdict and the programme shown in place, or the reason it is refused.
  • keys: the public keys, for a reader. Every key is from a fixed seed and attests nothing; every region is a user-assigned code and names no place.

Written by tests/audience_scte224.rs (WAI_AUDIENCE_SCTE224_WRITE=1 cargo test --features sink_predicate --test audience_scte224), which declares each outcome by hand and requires the reference to reach it. The second implementation, written from the text:

python3 -I live-conformance/audience_scte224_verify.py live-conformance/audience-scte224

It imports every document with a reader of its own, writes the exported document again byte for byte, holds each decision and predicate to its document, requires every changed copy of the corpus to fail, and switches off each of its own checks in turn: the corpus catches every one.