open-standards/wai/format-probe-conformance/README.md
Transaction Science af46947469
Some checks failed
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 1m15s
joule-moq-http live HTTP egress / joule-moq-http · does this change touch it (push) Successful in 58s
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 1m15s
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 1m3s
wai-app and Create / wai-app · does this change touch it (push) Successful in 1m15s
wai-audit collector and player integration / does this change touch it (push) Successful in 1m2s
wai-fleet service / does this change touch it (push) Successful in 52s
WAI operation catalogue / does this change touch it (push) Successful in 58s
wai-key-proxy / does this change touch it (push) Successful in 41s
wai-ledger service / does this change touch it (push) Successful in 22s
WAI Studio / does this change touch it (push) Successful in 15s
wai-sink-android native sink library / does this change touch it (push) Successful in 16s
wai-quantum for JavaScript / does this change touch it (push) Successful in 42s
wai-quantum studio and desktop / does this change touch it (push) Successful in 33s
wai-sink-swift native sink package / does this change touch it (push) Successful in 32s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 13s
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 12s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Successful in 31s
wai-key-proxy / proxy · linux (push) Successful in 1m12s
wai-audit collector and player integration / collector · linux (push) Successful in 2m23s
wai-fleet service / service · linux (push) Successful in 2m12s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m3s
wai-ledger service / service · linux (push) Successful in 2m10s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Successful in 3m46s
joule-moq-http live HTTP egress / joule-moq-http, every target (push) Successful in 3m6s
wai-quantum studio and desktop / studio · browser (push) Successful in 3m40s
wai-quantum for JavaScript / javascript · linux (push) Successful in 4m35s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Successful in 4m22s
joule-moq-room room service / joule-moq-room, every target (push) Failing after 9m31s
wai-quantum studio and desktop / desktop app · linux (push) Successful in 7m26s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Successful in 12m34s
WAI operation catalogue / the catalogue and every door · linux (push) Successful in 13m42s
wai-quantum studio and desktop / desktop app · windows (push) Successful in 11m40s
WAI Studio / Studio in WebKit · linux (push) Successful in 21m38s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 2m31s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 5m10s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 10m8s
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Successful in 14m24s
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 13m14s
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Successful in 17m8s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Successful in 55s
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Successful in 1m52s
wai-fleet service / service · macos (push) Successful in 40s
wai-ledger service / service · macos (push) Successful in 1m4s
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Successful in 7m48s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Successful in 15m40s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Successful in 6m45s
WAI Studio / Studio in Chromium and Firefox · macos (push) Successful in 10m26s
wai-quantum studio and desktop / desktop app · macos (push) Successful in 4m51s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Successful in 15m16s
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 7m35s
wai: coding for machines — two candidates with no probe, the split-computation claim, and machine descriptors on signed meta events
SPEC §5 registers `wai.video.vcm` (video coding for machines, ISO/IEC 23888-2) and
`wai.tensor.fcm` (feature coding for machines, ISO/IEC 23888-4) as candidates: neither part is
published and neither's text is openly readable (the committee's project pages give each the
status `ongoing` and list only common test conditions), so no payload format is pinned, neither
is emitted or dispatched, a packager refuses a policy that asks for one
(`capability-candidate`), and format-probes §19 says why neither has a probe: `no_probe`,
whatever the bytes. Licence class `patent-pool`, provisional; replicate class
`StandardUnclassified`. Nothing joins the floor or the recommended set. No benchmark was run and
no task accuracy is claimed.

task-fidelity §5, which named the split-computation case without solving it, now registers the
claim class `split-computation` (jwp-receipts §2.4.4 lets the text that defines a class register
it; no core text changes). When a network is cut in two, each side signs a claim about the
object that carried the tensor across the cut: its side, the fabric it ran on, what it consumed
and produced, the digests of both halves' parameter sets, the cut, a network digest over the cut
and both sets, and its energy with its acquisition class, or `null` when unmetered and never 0.
Two halves compose only as a head and a tail about one tensor, stating one cut, one network and
the same two sets; a set the verifier holds must have the digest they name. The pair's account
gives the figures by acquisition class (one class's figures are added, two classes' never are,
and there is no total), names the unmetered sides, and states its coverage.

machine-descriptors, a new extension of the `live` profile: labels, picture regions and
embeddings by digest a model produced about one media object, as the payload (`WMD1`) of a
signed `meta` event of live-events anchored to that object, signed by the machine that ran the
model and stating the model by digest. A zero model digest is refused (`descriptor_no_model`),
as are an origin that is not machine or machine-reviewed, an event with no anchor and a model a
reader does not admit. No event kind and no transport is added: the event rides an MSF event
timeline indexed by the Location of the object it describes.

The references are `claim_receipt::split` and the `machine_coding` module of wai-rs (feature
`machine_coding`). The corpus is live-conformance/machine-coding/ (2 candidates, 4 network
digests, 18 claims, 12 pairs, 26 descriptor events) and format-probe-conformance gains the two
`no_probe` vectors. machine_coding_verify.py, the second implementation, agrees on every case,
fails every mutated copy (24 of 24) and catches every weakened verifier (32 of 32);
claim_verify.py holds the class's body and rules and replays the corpus's claims through steps 1
to 4. Planted faults, each refused with its own reason: an envelope naming a candidate reported
and inert at dispatch; halves of two networks, two cuts, two tensors, two heads, and a held
parameter set of another digest; a total added to a body; an unmetered half written as 0 J; a
descriptor with no model identity, a person's origin, no anchor, an unlisted model, a changed
payload under its old signature.

decisions D9 records what was read of ISO/IEC 23888 and what follows.

Co-Authored-By: Claude <[email protected]>
2026-11-10 23:43:02 -05:00

82 lines
5.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; AV2
length-delimited streams (`av2/`), AC-4 sync frames (`ac4/`), IA Sequences (`iamf/`) and IVAS
payloads (`ivas/`), built from the syntax of format-probes §14 to §17 with known field values;
and the negative controls, each a change to one vector, every code of §12 given. `other/`
holds a payload for each capability that has no probe and is refused `no_probe`: a PNG, an EVC
start code (§18), and fixed filler for `wai.video.vcm` and `wai.tensor.fcm` (§19), whose
formats no openly readable text lays out.
- `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.
The AV2, AC-4, IAMF and IVAS vectors are the generator's alone: no encoder or decoder of those
formats was run, and no third-party file is in the corpus. Each is laid out as format-probes §14
to §17 read it, from the published texts those sections name; past the fields the probes read
they hold fixed filler bytes, so they are not decodable streams. Their codec strings include
the texts' own examples (`ac-4.02.01.03`, `ac-4.00.00.03`, `iamf.003.003.Opus`).
**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, among them a stated AV2 profile and level, AC-4, IAMF and IVAS codec
strings, and header bytes changed with their digests restated:
bash fetch.sh /tmp/lcevc && python3 -I format_probe_verify.py . --fetched /tmp/lcevc