extensions/browser-sink.md: a page routes each object to the user agent's decoder, a native host's or WAI's wasm decoder; the user agent is asked only about codec strings the WebCodecs Codec Registry lists, and its decoder is taken only where it is exact for the tier the object needs. capability-constraints gains its register (§3.1) and its evaluation in a page. A measured figure is reported beside the user agent's powerEfficient, which stays its word. Every decoded frame carries contentBinding: the content hash of the receipted object, the link hash of its group receipt, and the tier. wai-rs: the browser_sink module (feature browser_sink), its corpus generator wai_browser_sink_vectors, and tests/browser_sink.rs. The corpus is live-conformance/browser/. Co-Authored-By: Claude Opus 5.5 <[email protected]>
36 lines
3.3 KiB
Markdown
36 lines
3.3 KiB
Markdown
# live-conformance/browser — the browser sink
|
|
|
|
The corpus of [`extensions/browser-sink.md`](../../extensions/browser-sink.md) §12: capability
|
|
reports with the routing tables they give, constraint sets, energy entries, content bindings,
|
|
a chain of signed group receipts whose objects bind, the states of frames on screen, and
|
|
side-table sequences.
|
|
|
|
| member of `vectors.json` | what each case holds, and what a conforming implementation reaches |
|
|
|---|---|
|
|
| `routes` | a capability `report` (§3); the `outcome` (`routed`, or `refused` with the `reason`), and for a routed report its `table`: for each object its `route`, `reason`, each leg's outcome, `asked`, `tier` and energy entry (§4, §6), member for member |
|
|
| `constraints` | `sets` (or `null`: none) and declared `params`; the `outcome` of §5 (`unconstrained`, `satisfied`, `unsatisfied`, `unevaluable`) and its `reason` |
|
|
| `bindings` | a `value`; the `outcome` of reading it (§7.1), its `reason` when refused, its `canonical` form and its `tier` when read |
|
|
| `frame_tiers` | a route, the route's tier, whether the frame's `format` is null and whether the page altered it; the frame's `tier` (§7.2) |
|
|
| `chain` | group receipts of jwp-receipts' legacy form under one key, the second linked to the first; each group's `canonical` bytes and `link_hash`; each object's envelope (hexadecimal, or the file `int_motion.wai`), its object receipt, whether it verifies, and the `binding` a page that decoded it on the wasm route writes, in canonical form |
|
|
| `frames` | a binding (or `null`), the object's, chain's and provenance verdicts; the `result` of §10: `state`, `reason`, `tier`, `digest`, `receipt` |
|
|
| `tables` | a pending `bound` and a sequence of operations (`chunk`, `output`, `clone`, `transfer`, `close`, `reset`, `flush`); the `result` of §9.2: each open frame's binding in canonical form or `null`, the refusals by operation index, and the count of entries struck by a bound, a reset or a flush |
|
|
|
|
`int_motion.wai` is a `WAI1` envelope of `wai.video.int_motion`. A page decodes it on the wasm
|
|
route; each decoded frame's SHA-256, over `RGB8`, is stated by
|
|
[`../../wai-rs/tests/vectors/int_video/sha256.json`](../../wai-rs/tests/vectors/int_video/sha256.json)
|
|
(`int_video`), and the browser end-to-end scenario `binding` of `joule-moq-web` checks the frames
|
|
it decodes against those digests.
|
|
|
|
`wai_browser_sink_vectors verify` and `tests/browser_sink.rs` check that both files regenerate
|
|
byte for byte and that `wai-rs` reaches every outcome; the test also verifies the chain with
|
|
`jwp_delivery`. `../browser_sink_verify.py` is the second implementation, written from the
|
|
extension's text, sharing no code with `wai-rs`, and run as `python3 -I`.
|
|
|
|
**Provenance.** Generated here: `wai_browser_sink_vectors gen` writes both files from constants
|
|
in `wai-rs/src/browser_sink/corpus.rs`. The signing key's seed is BLAKE3 of the corpus's fixed
|
|
label and an index, every time is a constant, and Ed25519 signing is deterministic (RFC 8032),
|
|
so the files are the same bytes on every machine. The capability reports, the user agents'
|
|
answers and the energy measurements are constants chosen to exercise each rule; they describe
|
|
no user agent or device and were measured by nothing. The envelopes wrap the `WIV1` payload
|
|
`wai-rs/tests/vectors/int_video/int_video_bitstream.wiv1`, whose provenance
|
|
`wai-rs/tests/vectors/README.md` states.
|