# live-conformance/loc — WAI envelopes on LOC objects The corpus of [`extensions/loc-carriage.md`](../../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`](../../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