open-standards/wai/live-conformance/browser
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science ba0b31a928 wai: the energy order inside browser-sink's routing, gated on a sink-metered figure; no parallel budget
SPEC §4's energy order is an order over what a sink advertises, never a reason
to advertise: first (classical decode the platform answers supported, smooth
and power-efficient; in a page only for an object routed ua), smooth,
classical (any other classical decode, and a learned capability whose decode
the sink holds a qualifying measurement of), learned-without-budget. The
measurement is a sink-metered figure in browser-sink §6's shape; it qualifies
with OnChipCounter or CalibratedInstrument and coverage Whole, and its value is
never read, so a figure still changes no route (§6). A deployer may compare it
with a ceiling per decode as its own policy. The module-authorisation sentence
naming a second place advertising is decided is gone.

energy_order owns the ranks and browser-sink §6's measurement reader, which the
page's energy entry now shares. browser-sink §4.7 ranks alternatives inside the
routing, a WAI1's capability and fallback among them; the corpus adds a host-
routed decode the user agent called power-efficient, and learned alternatives
with counter, calibrated, partial and modelled figures, all marked synthetic
(39 of 39 mutations caught by browser_sink_verify.py). energy-measurement §2.10,
REGISTRY's energy budgets, the registry's energy_budget and BudgetRecord are
removed. http_verify.py and the container's tests follow; the C header is
regenerated.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
(cherry picked from commit 1ca5931244)
2026-10-26 08:31:35 -04:00
..
int_motion.wai wai: the browser sink — routing, constraint sets in the page, energy beside powerEfficient, and the content binding a decoded frame carries 2026-10-21 14:48:03 -04:00
README.md wai: the browser sink — routing, constraint sets in the page, energy beside powerEfficient, and the content binding a decoded frame carries 2026-10-21 14:48:03 -04:00
vectors.json wai: the energy order inside browser-sink's routing, gated on a sink-metered figure; no parallel budget 2026-10-26 08:31:35 -04:00

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.