open-standards/wai/format-probe-conformance/README.md
Transaction Science da3c09c5a1
Some checks failed
wai-web wasm32 / does this change touch it (pull_request) Has been cancelled
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Has been cancelled
wai-web reach builds / wai-web reach · does this change touch it (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Has been cancelled
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Has been cancelled
wai-quantum studio and desktop / does this change touch it (pull_request) Has been cancelled
wai-quantum studio and desktop / studio · browser (pull_request) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (pull_request) Has been cancelled
wai-pack / wai-pack · does this change touch it (pull_request) Has been cancelled
wai-pack / wai-pack · linux (pull_request) Has been cancelled
wai-pack / wai-pack · linux-arm64 (pull_request) Has been cancelled
wai-pack / wai-pack · macos (pull_request) Has been cancelled
wai-pack / wai-pack · independent verifier (Python) (pull_request) Has been cancelled
wai-pack / wai-pack · the floor through a media prober (pull_request) Has been cancelled
wai-pack / wai-pack · dependency licences (pull_request) Has been cancelled
wai-ops integer operators / does this change touch it (pull_request) Has been cancelled
wai-ops integer operators / linux-aarch64 (pull_request) Has been cancelled
wai-ops integer operators / linux-x86_64 (pull_request) Has been cancelled
wai-ops integer operators / macos-arm64 (pull_request) Has been cancelled
wai-ops integer operators / wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
wai-ops integer operators / wasm32 under Node (pull_request) Has been cancelled
wai-ops integer operators / independent checker (Python) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / does this change touch it (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Has been cancelled
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Has been cancelled
WAI neural sink gates / does this change touch it (pull_request) Has been cancelled
WAI neural sink gates / model-free refusals of the neural sink (pull_request) Has been cancelled
WAI HTTP delivery / WAI HTTP · does this change touch it (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify mutations 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 0/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 1/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · falsify patches 2/3 (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Has been cancelled
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Has been cancelled
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Has been cancelled
WAI energy receipts / does this change touch it (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux (pull_request) Has been cancelled
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Has been cancelled
WAI energy receipts / energy receipts · macos (pull_request) Has been cancelled
WAI conformance / does this change touch it (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cargo-class corpora · macos (pull_request) Has been cancelled
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Has been cancelled
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (pull_request) Has been cancelled
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Has been cancelled
standards workspaces build + test / which workspaces this change touches (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backends (pull_request) Has been cancelled
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (pull_request) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room · does this change touch it (pull_request) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (pull_request) Has been cancelled
joule-code conformance gate / Build + round-trip C1-C4 vectors (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-relay, every target (pull_request) Has been cancelled
joule-code conformance gate / joule-moq-ingest, every target (pull_request) Has been cancelled
format-probe-conformance: README with the corpus's provenance, licences and what was measured
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 10:58:47 -04:00

70 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# format-probe-conformance — header probes
The corpus of [`extensions/format-probes.md`](../extensions/format-probes.md) §13 and of
[`extensions/projection.md`](../extensions/projection.md) §7.
**Feature equivalence.** A conforming probe of a capability, given a vector's file, reaches the
outcome `vectors.json` states for it: the parameters (`{"accept": {...}}`, the members each
section of format-probes names) or the refusal (`{"refuse": code}`, a code of its §12). A
conforming reader of the projection descriptor gives each binding of `bindings` its outcome
(projection.md §5). Each fact of `facts` holds of its file's probe: what its encoder was asked for.
- `ext/` — vectors written by encoders, from synthetic pictures (`tools/yuv.py`):
- `vvc/` H.266 Main 10 at 64×64 and at 100×58 (a conformance window);
- `mvhevc/` an MV-HEVC bitstream of two views, and `hevc/` its base layer;
- `jxs/` JPEG XS codestreams: 4:2:2 at 10 bits, R, G and B under the reversible colour
transform, and a lossless 4:4:4 one; `jxs-video/` three frames in `wai.video.jxs`'s framing;
- `avs3/` an AVS3 video stream of three pictures.
- `gen/` — what `wai_format_probe gen` writes: LCEVC streams, MHAS streams, AVS3 audio frame
headers, IEEE 1857.11 picture headers and projection descriptors from fixed values, and the
negative controls, each a change to one vector, every code of §12 given.
- `vectors.json` — every vector's capability, file, SHA-256, origin and outcome; the bindings;
the facts; the probes and codes of §2.4 and §12; and the fetched LCEVC streams with what their
encoder was asked for.
- `provenance.json` — every external vector's encoder, input and command, its decodes (the
output's size and SHA-256 under each decoder) and, for JPEG XS, whether the decoders agree.
- `fetch.sh` — fetches five LCEVC streams by digest (format-probes §13.3).
**Provenance.** `ext/` is written by `tools/make_external.sh` on the build host, from synthetic
pictures `tools/yuv.py` writes (a ramp, a checker and a moving bar per plane; the second view
of the stereo pair is the first shifted four columns), with these encoders and decoders, each
at the revision the script pins and refuses to run without:
| key | role | licence |
|---|---|---|
| `vvc_enc`, `vvc_dec` | an open H.266 encoder and decoder | BSD-3-Clause-Clear |
| `jxs` | an open JPEG XS encoder and decoder | BSD-2-Clause-Patent |
| `jxs2` | a second, independent JPEG XS decoder (a crate, without default features) | MIT |
| `mvhevc` | the MV-HEVC reference encoder and decoder of the joint video team | BSD-3-Clause |
| `avs3_enc` | an open AVS3 video encoder | BSD-4-Clause |
| `avs3_dec` | an open AVS3 video decoder | BSD-3-Clause |
The script names each repository and revision. None of their code or data is in this corpus:
only the bitstreams they wrote from the synthetic pictures. `gen/` is written by
`wai_format_probe gen` from fixed values and from `ext/`; no permissively licensed encoder
writes LCEVC, MPEG-H 3D Audio or AVS3 audio, so those vectors are the generator's, laid out as
format-probes §6, §7 and §9 read them, and are not decodable streams. The fetched LCEVC streams
are an open LCEVC decoder's unit-test streams (BSD-3-Clause-Clear), written by an LCEVC encoder
from a short test sequence; their licence notice names their owner, so they are fetched by
SHA-256 and not committed.
**Measured** (`provenance.json`, on the arm64 build host): every H.266, MV-HEVC, H.265 and AVS3
vector decodes with its decoder, and the base layer of the MV-HEVC vector decodes to the same
bytes alone as within the two-view stream. Every JPEG XS codestream decodes to identical bytes
along the first decoder's C path and its SIMD path. The second decoder gives the same bytes on
five of the six codestreams; it does not implement the MLS.12 profile of the lossless one (it
refuses its `Ppih`), and on a copy whose `Ppih` and `Plev` are 0 its output differs, while the
first decoder's output equals that vector's source picture, byte for byte. No x86 decode was
measured.
**Checks.**
- `wai_format_probe verify .` (from `../wai-rs`, feature `format_probe`) and
`wai-rs/tests/format_probe.rs`: every vector's digest and outcome, every binding and fact,
the generated files byte for byte and no other file under `gen/`, and the extension's
tables; with `--fetched <dir>`, the five fetched streams, every one required.
- `format_probe_verify.py`, written from the two extensions and sharing no code with wai-rs:
probes every vector, binding, fact and fetched stream itself, and requires every mutated copy
of the corpus to fail:
bash fetch.sh /tmp/lcevc && python3 -I format_probe_verify.py . --fetched /tmp/lcevc