Some checks failed
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 11s
joule-moq-http live HTTP egress / joule-moq-http · does this change touch it (push) Successful in 20s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 18s
wai-audit collector and player integration / does this change touch it (push) Successful in 18s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 19s
wai-sink-swift native sink package / does this change touch it (push) Successful in 19s
WAI Studio / does this change touch it (push) Successful in 17s
wai-app and Create / wai-app · does this change touch it (push) Successful in 1m10s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 40s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m19s
WAI operation catalogue / does this change touch it (push) Successful in 1m59s
wai-sink-android native sink library / does this change touch it (push) Successful in 1m59s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 2m2s
wai-quantum studio and desktop / does this change touch it (push) Successful in 2m0s
wai-fleet service / does this change touch it (push) Successful in 2m2s
wai-ledger service / does this change touch it (push) Successful in 2m0s
wai-quantum for JavaScript / does this change touch it (push) Successful in 2m2s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m59s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 2m18s
joule-moq-http live HTTP egress / joule-moq-http, every target (push) Successful in 2m52s
wai-audit collector and player integration / collector · linux (push) Successful in 3m7s
wai-ledger service / service · linux (push) Successful in 2m49s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 2m51s
wai-fleet service / service · linux (push) Successful in 3m8s
wai-quantum for JavaScript / javascript · linux (push) Successful in 4m18s
joule-moq-room room service / joule-moq-room, every target (push) Successful in 6m57s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 8m34s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Failing after 9m27s
wai-quantum studio and desktop / studio · browser (push) Successful in 7m25s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 45s
wai-fleet service / service · macos (push) Successful in 38s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 9m41s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 11m27s
wai-ledger service / service · macos (push) Successful in 1m8s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 12m55s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 14m37s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 13m10s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 13m29s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 4m32s
WAI Studio / Studio in WebKit · linux (push) Successful in 15m30s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 9m18s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 8m54s
wai-quantum studio and desktop / desktop app · windows (push) Failing after 16m22s
live-ads §14.3 requires every Group of a listing to have an Object. The reference held the programme's listing to that and composed a creative's listing with an empty Group; the second implementation refused it. The text decides for the refusal and now says where: stitch_listing_malformed at the placement whose fill names the creative, after stitch_creative_unknown and before stitch_fill_exceeds_span; a listing no fill names is not read. live_ads::stitch::compose follows it. A stitching case of live-conformance/ad-signalling/ may state creatives' listings of its own (creatives, null for the corpus's). Two cases hold the rule from both sides, and the second implementation's check is its own (creative_group_has_object), so the corpus catches a verifier without it apart from the programme's: 63 of 63. Co-Authored-By: Claude Fable 5.2 <[email protected]>
39 lines
2.6 KiB
Markdown
39 lines
2.6 KiB
Markdown
# live-conformance/ad-signalling — ad creative signalling and content stitching over MoQ
|
|
|
|
The corpus of [`extensions/live-ads.md`](../../extensions/live-ads.md) §13 and §14.
|
|
|
|
- `vectors.json`: `jwks`, the key set every record is checked against, whose last key is of
|
|
another curve and is passed over; `records`, records read
|
|
on their own, each with what it is and whether its signature verifies, or the reason it does
|
|
not read; `objects`, two Objects of records; `room`, a room in the form of
|
|
[`../presentation/README.md`](../presentation/README.md) with, for each case, the records
|
|
given for one session and the break and receipt each binds to, or the record refused and why;
|
|
`stitch`, a programme's listing, the creatives' listings and, for each case, the listings it
|
|
states in their place (`programme`, `creatives`; `null` for the corpus's), a recipe and the
|
|
composed track it gives, or a composed track's listing and where it is refused; and
|
|
`written`, the session origins and device bindings a stitcher's edge and its players write for
|
|
the room of sessions of [`../ad-traffic/`](../ad-traffic/), with what the invalid-traffic rules
|
|
decide from them.
|
|
- `catalog.json`: a catalog that declares an ad creative timeline
|
|
([moq-streaming-format](../../extensions/moq-streaming-format.md) §4.7), held by
|
|
`wai/ietf/catalog_check.py --strict`.
|
|
- `draft-vectors/`: the test vectors and the test key set of
|
|
`draft-riedl-moq-ad-creative-signaling-01`, copied unchanged from the draft's source repository
|
|
(github.com/riedlse/draft-riedl-moq-ad-creative-signaling, commit `443f90b2`). They are
|
|
Contributions to the IETF Standards Process, under the IETF Trust's Legal Provisions (BCP 78).
|
|
`vectors.json` names each by its file and states what a reader of §13 makes of it.
|
|
|
|
Written by `tests/ad_signalling.rs` (`WAI_AD_SIGNALLING_WRITE=1 cargo test --features live_ads
|
|
--test ad_signalling`), whose generator declares each outcome by hand and requires the reference
|
|
to reach it. The second implementation, written from the text:
|
|
|
|
```
|
|
python3 -I live-conformance/ad_signalling_verify.py live-conformance/ad-signalling
|
|
```
|
|
|
|
It reads, canonicalises and verifies every record itself, verifies the room with the live-ads and
|
|
ad-presentation second implementations, binds, composes and compares by §13.6, §14.3 and §14.4,
|
|
rebuilds every origin and binding, judges the sessions with the ad-traffic second implementation,
|
|
requires every changed copy of the corpus to fail, and switches off each of its own checks in
|
|
turn: the corpus catches every one, the limits (65,536 bytes, 16 deep, 15 significant digits,
|
|
64 slots) from both sides.
|