wai identify: what any file is, from its bytes alone #589

Closed
dcharlot wants to merge 3 commits from wai/media-inspect into main

2026-11-03

Transaction Science
wai mcp: media_inspect is in the core toolset's list
All checks were successful
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 15m57s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 8m6s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 4m27s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 8m54s
wai-pack / wai-pack · macos (pull_request) Successful in 7m49s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 18m57s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 7m3s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 15m23s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 26m19s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 11m7s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 2m18s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 1m9s
WAI conformance / cargo-class corpora · macos (pull_request) Successful in 31m16s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 26m52s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m43s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 26m32s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 7s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 19m7s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 2m55s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m54s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 5m27s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 11m55s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 40m17s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 26m34s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 52s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 2m32s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 18m46s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m25s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 6m19s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h28m23s
The core toolset serves media_inspect after envelope_inspect; tests/cli_mcp.rs and the
README's toolset table now name it in that place.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-03 03:32:08 -05:00

2026-11-02

Transaction Science
int_kernels_vectors: the identify corpus decodes nothing
Some checks failed
WAI conformance / codec wrappers · fuzz smoke, text decode limits, C entry points, provenance, the semantic path (pull_request) Successful in 56s
WAI conformance / cargo-class corpora · macos (pull_request) Failing after 11m29s
wai-fleet service / service · macos (pull_request) Successful in 40s
wai-ledger service / service · macos (pull_request) Successful in 48s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 10m46s
wai-pack / wai-pack · macos (pull_request) Successful in 3m12s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m58s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 9m37s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 5m40s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 25m20s
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Successful in 16m11s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 12m46s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 3m29s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 8m36s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 51s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 3m1s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 8m1s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Failing after 25m36s
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 6s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 3m22s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 2m24s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 3m24s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 20m44s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 32m57s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 30m26s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m57s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 8m38s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m59s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 11m28s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
every_decoded_output_states_a_sha256 requires each conformance directory to state its decoded
outputs' SHA-256 or say why it has none. identify-conformance decodes nothing: each vector states
what a file's bytes are read as, and the file's SHA-256 in vectors.json.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 23:34:46 -05:00
Transaction Science
wai identify: what any file is, from its bytes alone
Some checks failed
WAI HTTP delivery / HTTP corpus · every patch and mutation in exactly one shard (pull_request) Successful in 38s
wai-ops-gpu integer operators on GPUs / builds · no adapter is not a pass (linux) (pull_request) Successful in 4m29s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 6m36s
wai-pack / wai-pack · macos (pull_request) Successful in 4m24s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 2m38s
WAI HTTP delivery / HTTP corpus · verified both ways, and the differential (pull_request) Successful in 3m18s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 9s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 10m37s
WAI HTTP delivery / cache rules · controls and labelled caches (pull_request) Successful in 1m48s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m6s
wai-pack / wai-pack · linux (pull_request) Successful in 2m17s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 42s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 2m59s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (pull_request) Successful in 19m4s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 4m55s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 1m24s
wai-ops-gpu integer operators on GPUs / Metal GPU and browser WebGPU (macos) (pull_request) Successful in 11m40s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 17m38s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 4m30s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m38s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 7m11s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 5m19s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 54s
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (pull_request) Successful in 8m1s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 23m0s
WAI Studio / Studio in Chromium and Firefox · macos (pull_request) Successful in 11m28s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 7m39s
WAI Studio / Studio in WebKit · linux (pull_request) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (pull_request) Has been cancelled
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Has been cancelled
`wai inspect` reads envelopes; most files a toolchain meets are not envelopes, and the
first question about one is what it is. `wai identify <file>` (operation media.inspect,
extensions/media-identify.md) answers it for any file:

- the formats the bytes fit, each with the offsets of the bytes that say so, how far its
  structure was followed and where and why that stopped;
- a container's tracks as it states them: codec, size, channels, rate, protection;
- the registered capabilities they map to, and what a format probe reads of them;
- signatures found inside the file;
- where no format is recognised, measures that still hold: how the byte values are
  spread, uniform windows, and the lags at which the bytes repeat.

The verdict is identified, ambiguous, signature_only or unknown, and there is no
confidence figure: a candidate's strength says what was checked. Nothing is decoded, no
protected track is opened, and unknown stays unknown. Walks cover ISO media, Matroska,
transport streams, Ogg, FLAC, RIFF, MPEG audio, ADTS, PNG, JPEG, GIF, IVF, YUV4MPEG2,
FLV, AV1 OBU and Annex B streams, and HLS and DASH text; 35 more formats are known by
their signature. Every walk is bounded, reads a file where its lengths lead (a large file
is never held whole), and has been given hostile bytes; it builds for wasm32.

The agent door has it as media_inspect, its results marked untrusted_content: a file's
author chooses the strings in it.

identify-conformance/ holds files written by real muxers and encoders from test patterns
and tones, what an independent media prober reads of them (prober.json), and generated
cases sitting on each rule's edge. identify_verify.py is a second implementation written
from the text; it reads the extension's tables, gives every file its whole result, and
holds ext/ to the prober's reading. tests/identify.rs holds the reference's tables to
the extension's.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 22:00:28 -05:00