### `wai.live.recording`: a room session as one package, and clips that prove what they are

- **The extension** ([live-recording](extensions/live-recording.md)) registers the record
  `wai.live.recording`. A finished room session is one WAI package: a directory of files and
  its `LISTING` (SPEC §3.1), as a packaging package is, whose components are the room (its
  descriptor, grants and key-log head), its events (each principal's chain whole, the form
  live-events §8.6 gives a recording), one component for each participant's take (its `WTM1`
  manifest, the chunks the store holds, its receipts and consents) and, optionally, the
  composite by its composition receipts. Each component is named as SPEC §7.1 names one, by
  an `id` and a `sha256`, here the SHA-256 of the listing of its files.
- **The recording manifest** (`WRM1`) is signed by the room authority, or by a principal that
  held the record power at every instant of the session span (its grant in effect from the
  span's start, with no leave, exchange or expiry taking the power away before its end; a
  refusal states the first instant without it), and names every component with the span on
  the room clock and the region the package is kept in, held to the room's region pin. Every
  take the package holds lies within the span; the package holds the room's chains whole. A
  recording verifier replays the room and each take and gives `complete` (every take the
  room's events open is held, each one `complete` with its commitments unbroken from open to
  close, and no event missing) and `publishable` for each purpose.
- **Clips.** A clip record (`WCL1`) covers a span of one take, by chunks or by a byte range
  of the master (the boundary chunks carried whole, with trims), or one window of the room
  clock across several takes. Each part carries its chunks' descriptors and one range proof
  against a commitment the device made while it captured, the closing one or, while the take
  runs, the one that covers the span. A clip verifier needs the clip's bytes, the record, the
  take's commitments up to that one, the device's key and the room descriptor, never the take,
  and checks `single-take` over the span. An aligned clip states each part's window on its
  device's clock and its bound: the jitter to the room clock, twice it between two takes.
- **Range proofs.** The output tree gains `range_proof` and `verify_range`: RFC 6962's audit
  path taken over a run of leaves, whose one-leaf case is the audit path node for node and
  whose check agrees with RFC 9162 §2.1.3.2's, tested over every run of trees of up to 33
  leaves. The take tree reuses it; no new tree.
- **Mappings.** The HLS and LL-CMAF presentation of a CMAF master (one Media Playlist per
  take, its header by `EXT-X-MAP` byte range, parts proved with their chunk) and the MoQ
  addressing of a recorded take's chunks for a FETCH (a group per chunk, a `LOCATION_FILTER`
  per clip part) are specified; the reference states each clip part's FETCH address and
  writes no playlist.
- **Reference and corpus.** `wai-rs` feature `live_record` (`src/live_record.rs`);
  `live-conformance/recordings/`, written from fixed seeds by `wai_live_record_vectors`, whose
  performer's take is capture binding's `lesson` take byte for byte, checked by
  `tests/live_record.rs` and by `live-conformance/live_record_verify.py`, a second
  implementation that shares no code with `wai-rs`, checks range proofs by the extension's
  recursion and by RFC 9162's own algorithm, and requires every mutated copy of the corpus to
  fail. The registry lists the record and its magics (`WRM1`, `WCL1`). live-events §8.6,
  live-rooms §3.7 and capture-binding §1 point at the extension.

