open-standards/wai/audio-conformance/README.md
Transaction Science 3fac029a71 wai: every corpus states the provenance of its content
Each *-conformance/README.md now has a line that begins **Provenance.**:
the generator that writes the corpus and its input, and for an input not
generated here its source and licence. OER/2's corpus is settled and left
as it is. byte-exact-conformance and quantum-ops-conformance get a README.
wai-rs/tests/vectors/README.md gives a row per vector directory. Where the
staged-delivery, staged-measurement and telemetry READMEs called their
content "synthetic", that sentence is now their provenance line.

Two vectors are recorded as not generated, from the provenance audit:
int_video's video_real (a pan over a third-party picture) and
neural-conformance's photo (a third-party picture, with a decoder trained on
unrecorded images). Their lines say so and that they are to be replaced;
the photo bullet no longer names the picture's source product.

tests/corpus_provenance.rs requires the line in every corpus and a row for
every vector directory; CI runs it with the carriage tests. CONTRIBUTING
states the rule: corpus content is generated here, or recorded with a
licence that permits redistribution, and a word like "synthetic" is not a
provenance line.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-07 10:09:21 -04:00

41 lines
1.8 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.

# Spatial-Audio Conformance Corpus
Vectors for the spatial-audio extension's **mixdown-equivalence**
criterion: given the same `wai.audio.scene` and the same declared output
layout, a conforming sink MUST produce the identical canonical PCM,
hence the identical BLAKE3 — on every machine, no tolerance parameter.
The audio counterpart of replay-equivalence.
**Provenance.** Generated here: `wai_audio_vectors gen` writes every scene and its sources, square-wave tones built in code. No recording.
All vectors mix to the mandatory `stereo` floor under the
`wai.det.fixed64` numeric profile, `wai.audio.pan.sqrt_constpower` pan,
`wai.audio.dist.inverse_clamped` distance. Sources are deterministic
synthetic tones (no clock, no entropy); in a real sink they'd be decoded
`wai.audio.*` assets — the corpus provides the decoded mono PCM so each
vector isolates the one new thing, the deterministic mixdown.
## Layout
- `vectors/<name>.wscn` — the scene container (contract + object table +
asset table).
- `vectors/<name>.sources.bin` — the decoded mono sources:
`n u32 | n × (hash[32], len u32, i16le[len])`, sources in hash order.
- `expected_hashes.json` — per scene: `scene_hash`, `layout`, and the
expected `mixdown_hash`.
Vectors:
- `stereo_pair` — two static sources, hard-left + hard-right.
- `distance` — one source placed near vs. far (inverse-clamped atten).
- `moving` — a source whose keyframed trajectory sweeps left→right.
## Running
```
cd ../wai-rs
cargo run --features audio_scene --bin wai_audio_vectors -- verify ../audio-conformance
cargo run --features audio_scene --bin wai_audio_vectors -- gen ../audio-conformance # regenerate
```
Pass = hash equality. A failed vector is a conformance failure of the
file or the sink — report it failed, never approximately right.