open-standards/wai/film-conformance
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science 2808b8f2db wai: a reel can embed its soundtrack — one envelope, movie + sound
Add an OPTIONAL embedded wai.audio.score (WSCR, section 0x04) to the reel: one
.wrel container now carries two cargo classes — the cut picture
(reel-equivalence) and the music (mixdown-equivalence) — both bound by
reel_hash (presence byte + bytes, so a silent reel and an empty-soundtrack
reel never collide). audio_score() decodes the embedded score;
samples_per_frame() gives the playback-sync mapping (presentation; the verified
quantities stay the per-frame hashes + the mixdown hash). The `film` feature
now pulls `score`.

The corpus `coverage` reel gains a four-note triangle motif (its mixdown_hash
in the manifest, checked by verify); a whole movie-with-sound is ~6.6 KB. 77
lib tests, clippy clean.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-17 03:10:12 -04:00
..
vectors wai: a reel can embed its soundtrack — one envelope, movie + sound 2026-06-17 03:10:12 -04:00
expected_hashes.json wai: a reel can embed its soundtrack — one envelope, movie + sound 2026-06-17 03:10:12 -04:00
README.md wai: film reel — wai.film.reel, cuts over one world 2026-06-17 02:38:59 -04:00

Linear-Film Conformance Corpus

Vectors for the linear-film extension (wai.film.linear). The criterion is film-equivalence: given the same film, a conforming sink MUST compute the identical per-frame identity — BLAKE3(world state hash at the frame's tick || the interpolated camera pose) — hence the identical per-frame hashes and the identical Merkle root over them, on every machine, no tolerance parameter.

A film composes two things already proven elsewhere: the embedded world's replay-equivalence (every sink agrees on the state hash at every tick — the world-conformance/ corpus) and the wai.det.fixed64 camera track (interpolated trig-free, like the splat/skeletal tracks). The render — the actual pixels — is the sink's presentation, not the verified quantity.

Layout

  • vectors/<name>.wflm — the WFLM container: a film contract, an embedded sealed wai.world.replay (WWLD), and a camera track.
  • expected_hashes.json — per film: frames, start_tick, ticks_per_frame, film_hash (identity), and frames_root (the Merkle root over the per-frame reconstruction hashes — the conformance quantity).

Vectors (each a complete film/reel in ~1 KB — the world plus the camera(s)):

  • dolly — one subject drifting; the camera dollies from behind to the side.
  • twoshot — two subjects moving apart; the camera holds, then pushes in (a two-leg move).
  • rise — a subject climbing; the camera cranes up and tilts (a quaternion lerp), starting at a non-zero tick.
  • character — the embedded world is a skeletal humanoid (the avatars sim) waving; film composes with avatar.
  • coverage (.wrel, a reel) — the character beat cut three ways: a wide establishing shot, a low push-in, then a cut back in time to a high angle on the same moment. kind: "reel" in the manifest, checked against reel_hash + frames_root.

Running

cd ../wai-rs
cargo run --features film --bin wai_film_vectors -- verify ../film-conformance
cargo run --features film --bin wai_film_vectors -- gen    ../film-conformance   # regenerate

Pass = film-hash + frames-root + frame-count equality, on every machine.