Some checks failed
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 12s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 22s
wai-audit collector and player integration / does this change touch it (push) Successful in 19s
wai-fleet service / does this change touch it (push) Successful in 21s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 23s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 33s
wai-sink-swift native sink package / does this change touch it (push) Successful in 23s
WAI Studio / does this change touch it (push) Successful in 18s
wai-sink-android native sink library / does this change touch it (push) Successful in 47s
wai-quantum for JavaScript / does this change touch it (push) Successful in 1m0s
wai-app and Create / wai-app · does this change touch it (push) Successful in 1m2s
wai-key-proxy / does this change touch it (push) Successful in 1m2s
WAI operation catalogue / does this change touch it (push) Successful in 1m3s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 1m9s
wai-ledger service / does this change touch it (push) Successful in 1m2s
wai-quantum studio and desktop / does this change touch it (push) Successful in 1m2s
wai-fleet service / service · macos (push) Successful in 55s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 51s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 1m25s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 1m35s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m48s
wai-key-proxy / proxy · linux (push) Successful in 1m41s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 2m0s
wai-ledger service / service · macos (push) Successful in 56s
wai-fleet service / service · linux (push) Successful in 2m32s
wai-ledger service / service · linux (push) Successful in 2m13s
wai-audit collector and player integration / collector · linux (push) Successful in 2m57s
wai-quantum for JavaScript / javascript · linux (push) Successful in 4m8s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · macos (push) Has been cancelled
wai-quantum studio and desktop / studio · browser (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 breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 5m13s
wai-quantum studio and desktop / desktop app · macos (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-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Has been cancelled
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (push) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (push) Has been cancelled
WAI operation catalogue / the catalogue and every door · linux (push) Has been cancelled
WAI Studio / Studio in WebKit · linux (push) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (push) Has been cancelled
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Has been cancelled
extensions/audience-decision.md registers two route-record documents, each signed in its canonical form under its own domain. `wai.video.audience` (`wai-audience-decision`): a decider's signed decision of whether the sessions in one region may be shown a programme over a span, under the blackouts in force. Each blackout is named by the id a session class carries (http-delivery Appendix H `blackouts`) and lists its regions in rung-price §2's region codes, with the programme shown in its place. A session aggregates its own location before it leaves the session: to the one listed code that holds it, to outside, or to unresolved (no location, or a country of which only subdivisions are listed); the aggregation decides exactly what the location would. A decision whose evidence holds anything else (coordinates, a postal code, a session's identifier) or a region finer than the aggregation gives is refused `audience_location_not_aggregated`; one whose region the blackouts neither list nor hold, `audience_region_not_in_set`. The blackouts applied (every one, unresolved), the verdict (show, withhold, or alternate when all that apply name one programme) and that programme are recomputed; a session class of the programme carries the applied set as its `blackouts` and the region's country as its `geo`, and a verifier given both states the class's hash. `wai.delivery.territory` (`wai-territory`): a publisher's signed statement of where its content may be shown (everywhere, only in some regions, everywhere but some). Its latest statement stands alone; a lapsed or contradicted latest revives none. The territory (within, outside, undetermined, or unstated with its reason) is reported beside a server key's placement, which cache-authority §4.4 computes from its own inputs and no statement changes; a statement that names servers, nodes, origins, roles or may_sign is refused `territory_scopes_serving`. cache-authority §4.3 and §4.4 are unchanged; §4.4 gains a paragraph saying so. The reference is the `audience_decision` module of wai-rs (feature `audience_decision`); the corpus is live-conformance/audience/ (13 aggregations, 67 decisions, 17 classes, 39 statements, 32 territories, 10 placements), and audience_decision_verify.py is its second implementation: 178 cases agree, 21 of 21 mutated copies fail and 34 of 34 weakened verifiers are caught. Twelve faults planted in the reference each fail its tests: the evidence's extra-member check and its finer-region check, rule 6 (a region not the blackouts'), the serving-member check and `may_sign` among its members, a placement refused beside an outside territory, a decision's and a statement's signature verified without the domain, over the text as written and under the other record's domain, an unresolved session read as outside, and a lapsed statement letting an earlier one stand. Co-Authored-By: Claude Opus 5.5 <[email protected]>
38 lines
2.6 KiB
Markdown
38 lines
2.6 KiB
Markdown
# live-conformance/audience — audience decisions and territories
|
|
|
|
The corpus of [`extensions/audience-decision.md`](../../extensions/audience-decision.md) §8, in one
|
|
file, `vectors.json`.
|
|
|
|
**Provenance.** Generated here by `wai_audience_decision_vectors gen` (`wai-rs`, feature
|
|
`audience_decision`), from Ed25519 keys on seeds of one byte repeated 32 times and constant
|
|
instants; no input from outside this repository. Every region is an ISO 3166-1 user-assigned code
|
|
(`XA`, `XB`, …) or a subdivision of one, and names no place.
|
|
|
|
`keys` names every key by its role, as 64 lowercase hexadecimal digits: the decider and another,
|
|
the publishers of the territory statements, the servers the placements place (`server_c1`, active
|
|
with `cache/serve`; `server_c2`, in no log; `server_c3`, revoked; `server_c8`, listed with
|
|
`delivery-gap` alone), the operator's key log root, and `small_order`, the identity point.
|
|
|
|
- `aggregations` (§4.3) are each `blackouts` and a session's `location` (a region code or
|
|
`null`); `outcome` is the evidence it aggregates to, `region` and `resolved`.
|
|
- `decisions` (§4.4 to §4.6) are each a decision's `text`; `outcome` is `read`, with its `digest`,
|
|
`verdict`, `applied` and `alternate`, or `refuse` and its `reason`.
|
|
- `classes` (§4.7) are each a `decision`'s text and a session `class` (http-delivery Appendix H);
|
|
`outcome` is `consistent` with the class's `session_class_hash`, or `refuse` with its `reason`
|
|
and, for `audience_class_mismatch`, the `member` that differs.
|
|
- `statements` (§5.2, §5.3) are each a territory statement's `text`; `outcome` is `read`, with its
|
|
`digest`, `publisher` and `show`, or `refuse` and its `reason`.
|
|
- `territories` (§5.4, §5.5) are each `texts`, a `publisher`, the receivers' `region` (or `null`)
|
|
and the instant `at_us`; `outcome.territory` is the territory as §5.5 writes it.
|
|
- `placements` (§5.6) are each a server `key`, an instant `at_ms`, the `heads` by origin, a
|
|
`publisher`, a `region` and `texts`; `outcome` is the `placement` as cache-authority §4.4 writes
|
|
it and the `territory` beside it.
|
|
|
|
Everything is synthetic: keys attest nothing. Each case states the outcome it was written to have,
|
|
declared in the generator and never copied from a verifier.
|
|
|
|
`wai_audience_decision_vectors verify` and `tests/audience_decision.rs` check that the file
|
|
regenerates byte for byte and that `wai-rs` reaches every stated outcome.
|
|
`../audience_decision_verify.py` is the second implementation, written from the extension's text,
|
|
which also mutates copies of the corpus and drops each of its own checks in turn and requires each
|
|
to be caught.
|