open-standards/wai/pin-conformance
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 32b148cd75
Some checks failed
wai-quantum energy-landscape jobs / does this change touch it (push) Successful in 14s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (push) Successful in 18s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (push) Successful in 1m43s
wai-audit collector and player integration / does this change touch it (push) Has been cancelled
wai-audit collector and player integration / collector · linux (push) Has been cancelled
wai-audit collector and player integration / collector, player integration and the browser end to end · macos (push) Has been cancelled
WAI operation catalogue / does this change touch it (push) Has been cancelled
WAI operation catalogue / the catalogue and every door · linux (push) Has been cancelled
wai-quantum for JavaScript / does this change touch it (push) Has been cancelled
wai-quantum for JavaScript / javascript · linux (push) Has been cancelled
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Has been cancelled
wai-quantum studio and desktop / does this change touch it (push) Has been cancelled
wai-quantum studio and desktop / studio · browser (push) Has been cancelled
wai-quantum studio and desktop / desktop app · macos (push) Has been cancelled
wai-quantum studio and desktop / desktop app · linux (push) Has been cancelled
wai-quantum studio and desktop / desktop app · windows (push) Has been cancelled
wai-sink-android native sink library / does this change touch it (push) Has been cancelled
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (push) Has been cancelled
wai-sink-android native sink library / every ABI, the AAR, and the instrumented tests in a headless emulator · macos (push) Has been cancelled
wai-sink-swift native sink package / does this change touch it (push) Has been cancelled
wai-sink-swift native sink package / libwai slices, desktop tests, simulator tests · macos (push) Has been cancelled
WAI Studio / does this change touch it (push) Has been cancelled
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Has been cancelled
WAI Studio / Studio in Chromium and Firefox · macos (push) Has been cancelled
WAI Studio / Studio in WebKit · linux (push) Has been cancelled
wai-quantum energy-landscape jobs / the module under wasm32-wasip2 (wasmtime) (push) Successful in 2m33s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Has been cancelled
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Has been cancelled
joule-moq-room room service / joule-moq-room · does this change touch it (push) Has been cancelled
joule-moq-room room service / joule-moq-room, every target (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Has been cancelled
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Has been cancelled
wai-app and Create / wai-app · does this change touch it (push) Has been cancelled
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Has been cancelled
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Has been cancelled
wai-fleet service / does this change touch it (push) Has been cancelled
wai-fleet service / service · linux (push) Has been cancelled
wai-fleet service / service · macos (push) Has been cancelled
wai-ledger service / does this change touch it (push) Has been cancelled
wai-ledger service / service · linux (push) Has been cancelled
wai-ledger service / service · macos (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · macos (push) Successful in 4m6s
wai-quantum energy-landscape jobs / native against WebAssembly, over many seeds (push) Successful in 4m38s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (push) Successful in 5m17s
wai-key-proxy / does this change touch it (push) Has been cancelled
wai-key-proxy / proxy · linux (push) Has been cancelled
wai-quantum energy-landscape jobs / the same bits · linux-arm64 (push) Has been cancelled
wai-quantum energy-landscape jobs / reader, kernels, answers and the stated result · linux, release (push) Has been cancelled
wai: EnCodec 24/48 kHz and DAC 16/24 kHz registered with a pinned payload; SoundStream a candidate
The neural audio models WAI did not yet name, each at the operating points of its own
publication or release, royalty-free (EnCodec's repository and DAC's weights are MIT),
neural-float, one ONNX file each:

- wai.neural.encodec24: mono, 2/4/8/16/32 codebooks of 1024 at 75 Hz (1.5 to 24 kbps)
- wai.neural.encodec48: stereo, one-second chunks overlapping by 1% with a scale each,
  2/4/8/16 codebooks at 150 Hz (3 to 24 kbps)
- wai.neural.dac16: 1 to 12 codebooks at 50 Hz; wai.neural.dac24: 1 to 32 at 75 Hz
- wai.neural.soundstream: a candidate. The publication's models were not released, and
  the open speech codec built on its architecture ships its own non-ONNX models and
  packet, so no payload format or parameter set is pinned; never dispatched.

SPEC §5 gains *Payloads of the neural audio codecs*: the payload (the layout the route
already read, and a chunked form for the 48 kHz model), the checks made before the
decoder runs, and the decoder contract: the model's full codebook count always, a row
of 1024 marking a codebook not used, so one file decodes every bitrate. DAC's 16/24 kHz
decoders give t*320 - 8 samples, and the bound says so.

neural/audio.rs checks the payload, fills the unused rows, decodes chunk by chunk and
joins the 48 kHz chunks by the model's linear overlap-add; DecodedAudio gains
`channels`, two interleaved. The C ABI has no two-channel form, so encodec48 is not
advertised through it and is refused before decoding.

tools/wai_neural_audio_export_onnx.py exports each decoder from the released weights
and checks it against the model's own decode with the first q codebooks: on Thor all
four agreed within 1.5e-5 at every operating point tested. Vectors in
wai-rs/tests/vectors/neural_audio/ (stdlib generator, its own Python decode as the
second implementation); tests/neural_audio_vectors.rs decodes each through the dispatch
within 1e-5 of it and refuses a payload outside its model, an unpinned decoder, the
candidate and two channels through the C ABI; the neural gates workflow runs it.
Registry exports, wai.h, the glossary links and pin_verify.py's one-file set follow.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-09 09:40:50 -05:00
..
listings wai: the parameter-set pin, component identity, pin-aware selection 2026-10-01 05:51:50 -04:00
sets wai: the parameter-set pin, component identity, pin-aware selection 2026-10-01 05:51:50 -04:00
.gitattributes wai: the parameter-set pin, component identity, pin-aware selection 2026-10-01 05:51:50 -04:00
cases.json wai: the parameter-set pin, component identity, pin-aware selection 2026-10-01 05:51:50 -04:00
pin_verify.py wai: EnCodec 24/48 kHz and DAC 16/24 kHz registered with a pinned payload; SoundStream a candidate 2026-11-09 09:40:50 -05:00
README.md SPEC §3.1: pin by default; wai verify reports an unpinned envelope, and a decode's record names the set it read 2026-11-04 12:29:01 -05:00
selection.json wai: an encrypted envelope's clear parts checked; a record or derivation is no component 2026-10-08 01:24:50 -04:00
static.json wai: the parameter-set pin, component identity, pin-aware selection 2026-10-01 05:51:50 -04:00
unpinned.json SPEC §3.1: pin by default; wai verify reports an unpinned envelope, and a decode's record names the set it read 2026-11-04 12:29:01 -05:00

pin-conformance — the parameter-set pin

Vectors for the parameter-set pin (SPEC.md §3.1, §4, §7, §7.1).

Provenance. Generated here by wai_pin_vectors; the parameter-set files under sets/ are stand-in bytes written for the corpus. No media.

Reason-equivalence. A conforming verifier reports exactly the declared outcome for every case:

  • cases.json — given a pin, a capability, the forms the sink reads (default wai.prior.set) and the artifacts it holds, the outcome ok or the one reason SPEC §3.1 names: pin_malformed, form_not_registered, form_unreadable, form_required, prior_not_held, digest_superseded, set_malformed, part_mismatch. A held artifact is a file, or a listing together with the root its paths are read below. Paths are relative to this directory. The cases model a sink that holds no key log, so check 5 (prior_revoked, prior_not_authorised) does not run; it is covered by the parameter-set vectors of ../signer-conformance/ and the key_log library tests.
  • selection.json — given a WAI2 manifest, its payloads, the capabilities the sink advertises and the one-file parameter sets it holds, the rendition SPEC §7.1 picks and the reason for each entry it skips (not_selectable, missing_capability, component_digest_mismatch, or a pin reason); when nothing is picked, the reason for every entry. Where stated, also the companions applied with the pick, and the first component-role finding. Selection walks the entries in the table's order, a deployer policy SPEC §7.1 step 2 allows: the cases are about pins, and SPEC §4's default energy order would walk a classical entry before the learned ones that carry the pins, and reach no pin while it is advertised.
  • static.json — the first finding a verifier makes about a manifest's pins without holding a parameter set (prior_not_applicable, pin_malformed, tier_unregistered, supersedes_malformed, form_not_registered, form_required, tier_exceeds_class, a replicate_* reason), or ok. For a WAI2 manifest the finding is [entry index, reason].
  • unpinned.json — the report a verifier makes about a manifest that pins no parameter set where a capability it decodes through is registered as decoding against one (SPEC §3.1, Pin by default): prior_unpinned, or none. It is informative, and made whatever static.json finds. For a WAI2 manifest, the index of each entry it is made about.

Listings. Every listings/<name>.sha256 is, byte for byte, the listing of sets/<name>/: regular files, names that begin with . left out, sorted by path as bytes. A common checksum utility checks a set against its listing (cd sets/demo && sha256sum -c ../../listings/demo.sha256). Every file under listings/bad/ breaks one listing rule and is set_malformed.

Files are compared as bytes; .gitattributes turns off line-ending conversion.

Verifiers.

  • wai_pin_vectors verify pin-conformance (wai-rs) runs every file through the reference implementation's in-memory pin core (wai::pin::verify_bytes), its selection (WaiMulti::pick), its static checks (Wai::check_pin, WaiMulti::check_pins) and its report (Wai::check_unpinned, WaiMulti::check_unpinned). It runs in both corpus loops of the conformance workflow. wai_pin_vectors generate pin-conformance rewrites the listings from the sets.
  • pin_verify.py checks cases.json, unpinned.json and listings/ with the Python standard library alone, re-implementing the listing rules, the ordered checks and the report from the SPEC text, and reading which capabilities decode against a parameter set from the published registry export (../registry/capabilities.json). It shares no code with wai-rs.