### Linear film — `wai.film.linear` (2026-06-16)

- "A film is a sealed, camera-on-rails world." A generated film ships not
  as pixels but as the **world** that produces it (an embedded sealed
  `wai.world.replay`) + a **camera track** (keyframed pose over the world's
  ticks) + a **frame schedule** (which tick each frame samples). The sink
  renders the frames — lever 3 (instructions-at-the-sink) for the
  synthesizable slice of "video" (animation / CGI / motion graphics). The
  conformance corpus carries whole films in ~1 KB.
- `wai-rs` `film` feature (reuses the world engine + `Fx` floor + blake3):
  the `WFLM` container (contract + embedded `WWLD` + camera track) and the
  deterministic reconstruct contract. Conformance is **film-equivalence** —
  per-frame `BLAKE3(world_state_hash(frame_tick) || interpolated camera
  pose)` is bit-identical on every machine. It **composes** the embedded
  world's replay-equivalence (inherited unchanged) with the camera track in
  the `wai.det.fixed64` floor; the render (pixels) stays the sink's.
- The world engine gained one general primitive: `collect_checkpoints_
  sampled` / `run_sampled_dispatch` — read the state hash at an arbitrary
  frame cadence, independent of the contract's checkpoint cadence (a
  renderer samples the timeline at its own frame rate).
- Corpus `film-conformance/` + `wai_film_vectors gen|verify` (dolly,
  two-shot, crane-up) — all pass, on the four-platform CI matrix. Registered
  + tiered Lossless (film-equivalence is exact). `FilmReceipt` (per-frame
  Merkle leaves) + a `wai_meter` `.wflm` branch emitting **measured** joules.
- Spec PROMOTED to `extensions/linear-film.md`, SPEC §5 temporal-content
  row, content-taxonomy updated (animation-film → ✅). The biggest
  commercial wedge in the taxonomy, now shipped.

