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]>
3.3 KiB
live-conformance/browser — the browser sink
The corpus of 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
(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.