open-standards/wai/live-conformance/loc
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-22 10:51:18 -04:00
..
README.md LOC carriage: WAI envelopes on LOC objects, a writer and reader in joule-moq, the corpus live-conformance/loc 2026-10-22 10:43:34 -04:00
vectors.json LOC corpus: the second-layer vector appends an SPS of layer 1, so only the base-layer rule refuses it 2026-10-22 10:51:18 -04:00

live-conformance/loc — WAI envelopes on LOC objects

The corpus of extensions/loc-carriage.md §8, in vectors.json:

  • objects: one LOC object per case, of every mapped capability (§3.1): the envelope it carries (envelope, hexadecimal), its MOQ Object Properties as MOQT -22 encodes them (properties: one Immutable Properties pair holding the LOC properties, WAI_MANIFEST and, where stated, WAI_RECEIPT), its payload, its LOC properties (loc) and its receipt property's value (receipt, or null). A conforming reader reads the object back to exactly that envelope, those properties and that receipt, and a conforming writer writes exactly those bytes from them.
  • writer_refused: envelopes a writer refuses (an unmapped capability, two pictures in one payload, an encrypted manifest, bytes that are not a WAI1 envelope), each with its code.
  • refused: objects a reader refuses, each a change to one written object, with its code; every code of §6 is given by one of these or of writer_refused.
  • property_types: the type of each property, as §2.2 and §4.1 give them.

Provenance. Written by cargo run -p joule-moq --example loc_vectors -- gen (from joule-code/joule-code-rs), from fixed values. The HEVC objects carry the first two access units of ../../format-probe-conformance/ext/hevc/base_64x64.265, a real encoder's output of a synthetic picture (its provenance is that corpus's). The Opus object carries one 20 ms packet of silence (TOC 0xF8). The AVC and AAC objects carry fixed bytes in the form §3.2 checks, which are not decodable pictures or sounds. Group receipts are named by the BLAKE3 hash of a fixed label; no signature is in the corpus.

Checks. joule-moq's tests/loc_vectors.rs regenerates the file byte for byte, requires every outcome, and requires §6's table to list exactly the codes the reader and writer give. ../loc_verify.py, written from the extension's text and sharing no code with joule-moq, does the same with its own MOQT -22 decoder and BLAKE3, writes every object again, and requires every mutated copy of the corpus, and the corpus under a copy of itself without one of its checks, to fail:

python3 -I live-conformance/loc_verify.py live-conformance/loc