A film.
Ship the world that makes it, not the pixels.
A generated film — animation, CGI, motion graphics — is a sealed, camera-on-rails
world. A wai.film.linear carries an embedded wai.world.replay
(the world that produces the imagery), a keyframed camera track, and a frame
schedule — and nothing else. Your browser drives the same deterministic Rust world engine
(compiled to WASM) that made the conformance corpus to read the moving world at each frame
tick, projects it through the interpolated camera, and re-derives every frame's identity
— BLAKE3(world state hash || camera pose): film-equivalence.
Scrub the frame slider — the camera moves along its rails, the world moves under it, and each
whole film on the wire is about a kilobyte.
The film is instructions
The wire carries the world that generates the imagery and the camera that frames it — not a rendered pixel stream. The render you see — projecting the world through the camera — is the sink's presentation, exactly as the worlds renderer is. A two-hour feature is an op log and a camera spline.
Film-equivalence
It composes a guarantee already proven: the embedded world's replay-equivalence
(every sink agrees on the state hash at every tick) plus the wai.det.fixed64
camera track. Each frame hashes to one BLAKE3 on every machine — no tolerance parameter.
Honest about scope
The size win is for films generated from a world — animation, CGI, motion graphics.
Live-action capture is irreducible samples and stays wai.video.*. This is the
medium-shift for the synthesizable slice of "video," not a video codec.
WFLM in about a kilobyte — a sealed kinematic world plus a camera track.
The points are the world's moving subjects; the grid is the ground plane, projected through the
same camera so you can feel it travel. The verified object is the per-frame hash, re-derived in
this tab; the projection is the sink's render.