# Video Export — Handover (Episodes 1–7 → MP4)

Episodes 1–7 use the same deterministic 60 fps pipeline. The series now combines
code-native evidence and interface animation with a small number of silent,
continuity-matched motion plates. The 2026-08-17 delivery revision includes
SACRED Defence, named speakers, deterministic still movement, the Episodes 3–7
geography/evidence pass, and the final interface-continuity pass for Episodes
1–2. All seven canonical masters have been rebuilt from current source,
full-file decoded, visually sampled, hashed, and regression-tested.

## Run it

From `final-presentation/01-business-case/`:

```bash
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-gil-video.py

# Episode 2
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-sitter-video.py

# Episodes 3 and 4
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-playground-video.py
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-test-floor-video.py

# Episode 5
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-report-video.py

# Episodes 6 and 7
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-canary-video.py
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-service-video.py
```

The default backend generates a temporary seekable HyperFrames composition
from the existing interactive HTML, validates it, renders at 1920×1080/60 fps,
and muxes the exact audio master. Requirements are Node 22+, ffmpeg, Python,
and network access on the first run so pinned `hyperframes@0.7.107` and browser
assets can be cached.

## Current canonical masters · 2026-08-17

Every file below is H.264 at a constant 60fps with 48kHz stereo AAC.

> Delivery notice: all seven files below are current production-design masters.
> No source deck is newer than its encoded deliverable at this handover point.

### Current production status · 2026-08-17

- Episodes 2–7 now contain the face-free SACRED Defence observation arc. The
  exporter recognises the `SACRED` speaker and the new deep-voice narration is
  present in the shared cache.
- Episode 2 chat exchanges now show an icon, speaker name and role. Shared
  later-episode message cards retain the same requirement.
- `cinematic-camera.css` is loaded by all seven episodes. Full-frame
  photographic backdrops receive a restrained deterministic move unless an
  authored push/pull/drift or a deliberately locked repeated angle overrides
  it. Terminals, documents, diagrams and video plates remain unmoved.
- Episode 3 source validation passes at 50 slides / 46 narrated scenes. Its
  clean audio master, high-quality picture render, full-file decode and
  targeted visual contact-sheet audit all pass.
- Episodes 1–7 were freshly rebuilt at high quality from current source. Every
  master passes stream/cadence validation, a complete video decode, and a
  targeted full-HD visual audit. Production-reference validation and all 70
  exporter regressions pass.

| Episode | Deliverable | Duration | Size |
|---|---|---:|---:|
| 1 · Gil Is Awful | `gil-is-awful-final.mp4` | 294.550 s | 163.7 MB |
| 2 · The Sitter | `the-sitter-final.mp4` | 466.783 s | 129.0 MB |
| 3 · The Playground | `the-playground-final.mp4` | 468.667 s | 217.2 MB |
| 4 · The Test Floor | `the-test-floor-final.mp4` | 405.300 s | 117.4 MB |
| 5 · The Report | `the-report-final.mp4` | 467.650 s | 168.6 MB |
| 6 · The Canary | `the-canary-final.mp4` | 415.350 s | 126.7 MB |
| 7 · The Service | `the-service-final.mp4` | 335.183 s | 139.2 MB |

### Delivery hashes and audio levels · 2026-08-17

| Episode | Frames | Audio mean / peak | Bytes | SHA-256 |
|---|---:|---:|---:|---|
| 1 | 17,673 | −20.1 / −1.1 dBFS | 163,719,713 | `ae6f63021296a3acdd4b9a96f9872a286c20b5a48cd728bfd5a12a4022bfcd64` |
| 2 | 28,007 | −22.0 / −3.7 dBFS | 129,017,622 | `b3f25830c2389867c3dcdd78f88d7890e93e5355433a168a97036d79965b0a93` |
| 3 | 28,120 | −20.7 / −1.9 dBFS | 217,247,931 | `f5dca4b78c7205ff9e64e2adffaa6651bd0c9abb05c92a6d8aa446f5c8ecfa2e` |
| 4 | 24,318 | −23.3 / −1.8 dBFS | 117,352,814 | `1a343fac70dc870d51c1069031505ad738275542a4515411634e6437800b45d1` |
| 5 | 28,059 | −21.6 / −2.0 dBFS | 168,622,536 | `37d5a3b639a429131d0fb6d1ed9a26f8e04d0e38d813e821f04d3eb3e67dc7b4` |
| 6 | 24,921 | −21.8 / −2.1 dBFS | 126,686,139 | `b4fa8942daa2664da1d566d0a1f060833b4e5ceb4e07510c497ba8d8f1029e65` |
| 7 | 20,111 | −22.1 / −2.0 dBFS | 139,156,017 | `69685d473b1009bb0af6782ade0dae7afed3bb4a820c74b8d7bdf046b6945f21` |

### Episode 3 SACRED and canonical-lab master · 2026-08-17

- Rebuilt from the 50-slide source after the canonical production-reference
  validation pass. Rejected black-desk footage is absent; the arrival,
  customisation and rollout coverage all use the approved bright Morrowvale
  evaluation-floor geography.
- SACRED's first intervention now uses its forceful delivery and explicit
  boundary language before Sam softens the explanation profile without
  weakening enforcement.
- The customisation beat adds an eight-second, deterministic 1080p/60fps
  keyboard motion plate derived from the approved reference still. The final
  composition contains 14 motion plates with complete extracted-frame
  coverage.
- Video/container: 468.667 s, H.264, 1920×1080, constant 60/1 fps, 28,120
  frames. Audio: AAC stereo, 48 kHz; mean −20.7 dBFS, peak −1.9 dBFS.
- Size: 217,770,764 bytes. SHA-256:
  `10dd9c4d3b9793fbaf3d541d0983a6040911e0747f0e3a1e933b996a9d436040`.

### Episode 1 Jan-heading master · 2026-08-17

- Jan's small xBase furniture and terminal copy remain on the coarse
  `Silkscreen8` face. Oversized lesson, presenter and credo headings now use
  local `DotGothic16` as `JanRaster16`, with restrained CRT bloom. This keeps
  visible raster construction while removing the giant square steps produced
  by enlarging an 8-dot glyph.
- The final MP4 was inspected at full 1920×1080 on the lesson title,
  compliance, presenter, credo and rickety-tool cards after encoding.
- Video/container: 294.550 s, H.264, 1920×1080, constant 60/1 fps.
- Audio: AAC stereo, 48 kHz, reused from the unchanged canonical PCM master;
  mean −20.1 dBFS, peak −1.2 dBFS.
- Size: 166,005,370 bytes. SHA-256:
  `9a9c7ee37226f779f2f34c072fc6959c934fa64751a35eca2da39d6b4644b5e1`.

### Morrowvale naming masters · 2026-08-17

- `MORROWVALE` is the sole fictional company name across the maintained
  series, its legacy prototype, personas, production notes, interface copy,
  and narration-cache metadata. The former fictional labels were removed;
  genuine Pismo/Visa references in the separate real business-case material
  remain factual and unchanged.
- Episode 1 was rebuilt after the naming sweep and the persistent Gil/Sam
  desktop correction. Its four-message exchange keeps one room, terminal and
  Messenger composition with a measured 30 px gutter. Full-file decode and
  six-frame visual contact-sheet checks passed.
- Episode 2 was rebuilt after the naming sweep. The Morrowvale recipient,
  engineering fleet label, remote-access connection and internal sender were
  inspected in the encoded MP4. Full-file decode passed.
- Episode 1: 294.550 s, H.264 1920×1080 CFR 60/1, AAC 48 kHz stereo,
  166,005,370 bytes, SHA-256
  `9a9c7ee37226f779f2f34c072fc6959c934fa64751a35eca2da39d6b4644b5e1`.
- Episode 2: 466.783 s, H.264 1920×1080 CFR 60/1, AAC 48 kHz stereo,
  129,699,459 bytes, SHA-256
  `030e318c2724c9ce532aea84de7850aa72f0ca2a0defe436630f95592c8d0a3e`.

Useful modes:

```bash
# Validate the deck model, narration cache, cues, and assets (fast)
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-gil-video.py --check
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-sitter-video.py --check

# Rebuild only the continuous audio master
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-gil-video.py --audio-only

# Reuse audio, keep the generated composition/render diagnostics
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-gil-video.py \
  --reuse-audio --quality high --workers 4 --keep-work /tmp/gil-hf-full

# Generate a short composition for isolated renderer diagnostics
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-gil-video.py \
  --prepare-hyperframes /tmp/gil-hf-proof --proof-duration 16

# Old 25 fps measured screen recorder (diagnostics only)
/home/jon/work/ai-dev-presentations/.venv/bin/python3 export-gil-video.py \
  --legacy-capture

# Regression tests
/home/jon/work/ai-dev-presentations/.venv/bin/python3 -m unittest \
  test_export_gil_video.py test_export_sitter_video.py \
  test_export_later_episodes.py -v
```

## What was wrong

The browser was being screen-recorded on wall time. Playwright emitted a fixed
25 fps stream, but browser compositing and Python's slide schedule did not
advance on exactly the same clock. The correction pass then trimmed or cloned
tail frames per slide; an earlier version also converted 25→24 fps and stretched
whole intervals. Those fixes could align A/V boundaries, but they could not
produce genuinely continuous motion. Increasing the nominal frame rate alone
would not repair a wall-clock capture.

The earlier audio builder also restarted ambient and mood files at every slide
and mixed them at 0.06 relative gain. The restart broke continuity, and the low
level was masked by narration, which sounded like the bed was being cut off.

The per-slide alternative avoided drift but initialized a fresh page for every
segment. Its start/reveal state leaked into transitions, producing the repeated
“Gil Is Awful” flash.

## How the replacement works

### Music provenance

The reusable `audio/mood/` score beds were generated for this project with
ElevenLabs. Episodes 3 and 4 now use the purpose-written
`playground-original-v2.mp3` and `test-floor-original-v2.mp3`; the exact prompts
and model provenance live in `audio/GENERATED-ASSETS.json`.

The current private/local cuts of Episodes 1 and 2 use
`audio/right-here-right-now.mp3`, shown in-world as **Right Here, Right Now** by
**Fatboy Slim**. The original project track `audio/series-big-beat-v1.mp3`
remains available for a public-platform alternate because the commercial
recording may trigger licensing or Content ID restrictions.

`export-gil-video.py` owns Episode 1's canonical 39-slide timeline;
`export-sitter-video.py` selects Episode 2's 38-slide timeline through the same
implementation. Exact durations are derived afresh from the current narration
manifest rather than copied into this handover:

1. It parses the source deck, resolves every narration file, and computes
   slide durations from narration, authored pauses, and the CRT hold.
2. It builds one continuous 48 kHz PCM master. Narration, six ambient regions,
   mood beds, closing music, fades, SFX, and the anti-standby noise floor all
   share the same timeline.
3. It generates an export-only composition from the source HTML. The original
   interactive deck is not rewritten.
4. The wall-clock presentation controller is removed from the generated copy.
   Each slide receives exact `data-start`/`data-duration` timing. Timer-driven
   effects become pure functions of the requested timestamp. CSS reveal
   animations are disabled in the export copy and reconstructed from each
   slide's local time, including slow and archived-terminal reveal schedules.
   Controller-owned parent fades such as the São Paulo text overlay are also
   mapped to the same local clock. Every reveal item on a narrated slide now has
   an authored `data-reveal-offset` tied to the corresponding spoken clause;
   sentences no longer appear together at the start of a slide. Generic
   non-narrated reveals retain the standard stagger. The closing sequence uses two
   independent SYSTEM narration cues so the music can occupy a protected beat
   between the statements without narration overlap. Its first beat also uses a
   timestamp-driven camera pullback; no browser animation clock is involved.
5. Background videos are hoisted onto the renderer-owned media timeline so
   every source frame can be sought deterministically.
6. HyperFrames validates runtime and layout, then explicitly renders every one
   of 16,507 Episode 1 frames or 21,961 Episode 2 frames at 60 fps. Machine load
   changes render duration, never video
   cadence.
7. The H.264 stream is copied without retiming and the exact audio master is
   encoded/muxed once. No `setpts`, interpolation, frame cloning, or A/V async
   correction is used by the default path.
8. The exporter rejects missing streams, wrong cadence, duration mismatch, and
   unsafe audio peaks.

The old marker/measured-capture code remains behind `--legacy-capture` solely
for comparison and diagnostics.

## Audio decisions

- Pronunciation overrides belong only in hidden narration. The approved TTS
  spelling for `invalid` is `in-valid`; all visible dialogue, terminals and
  reports retain the canonical spelling `invalid`.
- Ambient beds are continuous by region, not restarted per slide.
- Ambient gain is 0.12–0.13 (previously 0.06); mood gain is 0.08.
- Ambient and mood beds fade out over 1.5 seconds immediately before the
  “Right Here, Right Now” closing cue, leaving it a clean foreground lane.
- A ten-second bridge lets the closing track develop before the final verdict.
  Five seconds of that former dead air now show a deterministic
  agent-profile optimization from 0–100%; the remaining `Call ended` hold is
  five seconds. Its red call-status light swells brighter, powers off, and
  fades with the label before the verdict. A subdued handset set-down sound
  lands 120 ms after the slide cut, giving the visual shutdown a physical cause.
  `GIL WAS NEVER OUTSIDE THE SYSTEM` is spoken before the
  track's vocal sample. The first line remains visible while the music says
  “right here, right now”; `GIL JUST GAVE HIS UPDATE.` is spoken two seconds
  after that sample's authored end. The first text beat now begins with its
  SYSTEM sentence, holds, then fades completely. `WHO’S EXPECTING YOURS?` appears
  on the cleared frame as the second spoken phrase begins; the narration file carries
  an added 1.1-second pause between the phrases.
- The obsolete telephone beat is now a fictional late-1990s Morrowvale
  Messenger interruption. A silent shot first establishes Gil looking through
  his subtly over-regular simulated-city window; the notification then appears
  above a separate GILTERM window. Gil answers, “Sorry. I was just looking out
  the window.” The room remains intact throughout Episode 1.
- After Gil proposes stripping personality and relationships, Sam answers,
  “Do it. My project's already over its token budget.” The following operation removes
  `personality_module` and prunes `relationship_graph`. This deliberately
  mirrors the later Sitter treatment of Gil without naming or explaining it.
- Sam now directly prompts the proposal with, “Gil, it’s consuming too many
  resources. What can we lose?” The two sentences reveal separately in sync with
  her delivery, making Gil's following cuts a clear answer rather than a leap.
- All other narrated reveal slides use the same clause-level treatment. This
  includes Marcus's personnel record, Jan's training sequence, the complicity
  reveal, Marcus and Sofia, Gil's stand-up rows, the archived agents, Gil's
  proposal, Sam's order, and both SYSTEM ending beats.
- Jan's ten-screen mandatory-training sequence carries a fixed top-right clock.
  It advances from 21:48 to 22:48, with an elapsed counter and progress strip,
  compressing one fictional hour into roughly one minute of screen time. The
  final state lands at `01:00:00` before Jan thanks Marcus for staying awake.
- The meta-reveal now grows directly out of the preceding credits: “You’ve met
  the cast. But who was running the production?” replaces the abrupt reference
  to orchestrating personas. The answer now gets a separate slide rather than
  competing with the question: “Created by AI. Reviewed by AI. Managed by me.
  Gil. The only human in the production.” All five sentences are separate
  reveal items timed to the corresponding phrase. Episode 1 now answers that
  claim only with `THE SYSTEM KEPT RUNNING.` It does not show a Thronglet,
  `GIL-PM-001`, or a population field; the concrete identity reveal belongs to
  Episode 2.
- `GIL JUST GAVE HIS UPDATE.` and `WHO’S EXPECTING YOURS?` are sequential beats on a genuinely separate black slide:
  the Gil verdict and identity field do not carry across the cut. It reframes
  the presentation itself as Gil's stand-up and implicates the audience without
  explicitly explaining the Part 2 twist.
- The closing track remains unfaded for ten seconds after the audience-hook
  slide begins, then fades over four seconds. A final one-second clean tail
  precedes the four-second CRT shutdown.
- There is no narration-triggered side-chain ducking. Beds remain present under
  speech outside the closing-music window.
- Pink-noise amplitude is 0.0028 to keep auto-standby headphones awake through
  the intentionally silent beat.
- The mix is normalized, then padded/trimmed to the exact canonical sample
  count.
- Jingle and mic-tap are file-backed ffmpeg reconstructions. Footsteps use the
  deck's original file; the obsolete telephone cues are absent and the
  Messenger interruption uses one short file-backed alert.

## Episode 1 verified final state (2026-08-17)

- 40 slides; 32 narration files; zero missing cache entries.
- Duration: video/container 294.550 s; authored audio 294.542 s.
- Video: H.264, 1920×1080, constant 60/1 fps, 17,673 frames.
- Audio: AAC stereo, 48 kHz, mean −20.1 dBFS, peak −1.2 dBFS.
- HyperFrames gate: zero runtime errors and zero layout findings across 12
  full-timeline samples.
- All four embedded videos: 100% renderer frame coverage.
- All authored cues present: jingle ×2, mic tap ×1, footsteps ×1, Messenger
  alert ×1, closing track/fade, CRT shutdown; telephone cues ×0.
- Representative full-timeline contact sheet plus sentence-boundary audits
  inspected. The ending remains deliberately ambiguous through `THE SYSTEM
  KEPT RUNNING.` The audience hook begins on a clean separate slide. No start
  screen, footer, development controls, sync
  marker, or text flash leaked into the output.
- Native 1080p proofs were inspected at full raster size. Story terminals now
  occupy 82–90% of the frame, connected-call cards 86%, and the resource-policy
  panel 88%. Meaningful small UI copy has a 16px floor, body copy is 18–20px,
  and call dialogue is 32px. The phone vibration is derived from slide-local
  time instead of a browser CSS clock, preventing multi-worker cadence jumps.
- The complete 65-test Episode 1–7 suite passes.

## Episode 2 — The Sitter

The original Episode 2 deck had strong production design but relied on
one-sided exposition and wall-clock browser effects. Its middle has been
rewritten as genuine Samantha/System exchanges, then rebuilt on the Episode 1
deterministic timeline:

- The recap continues Episode 1's unease: Gil managed AI agents, called himself
  the only human, and a higher control layer kept running.
- Gil's opening monologues are shorter and more conversational. His stand-up,
  concern for Jan, Marcus joke, scheduled break, and belief that he was human
  establish what the optimization will remove.
- Seven dialogue scenes are pre-mixed from the Samantha and SYSTEM voices with
  authored response gaps. They remain single timeline scenes, so the exchange
  feels conversational without sacrificing exact reveal timing.
- The central decision now proceeds through questions and answers: Gil is over
  token budget because he maintains relationships, preferences, and breaks;
  the efficient image removes those modules; Samantha asks what the catch is.
- Samantha's moral rationalization is explicit but casual: “We did it to his
  staff. So I don't feel so bad.” The SYSTEM then explains that Gil will not
  know what he lost because awareness is part of the module.
- Samantha briefly considers Gil as an exception. The SYSTEM offers to exclude
  `GIL-PM-001`; she refuses because “then the numbers don't work.”
- Samantha recalls a fictional earlier result: giving simulated staff windows
  improved productivity by seven percent, “back when we still had to ration
  token context.” This establishes the window as a resource allocation, not
  decoration, and Episode 5 later calls the story back without presenting the
  number as a real-world claim.
- After confirmation, a silent fixed-endpoint plate shows Gil continuing to
  work while his room drops one visual-detail level. The window resolves into a
  cheap beach poster and personal objects disappear. The completed frame holds
  for 0.85 seconds; Gil then says, “Oh. New view. Beach. Fine.” Clause text lands
  with the corresponding words. He notices the impossible change but has no
  emotional concern to attach to it.
- On the completed deployment screen, Samantha types
  `stop_phrase = RIGHT HERE RIGHT NOW` character by character into an old green
  VDU. The phrase is saved, but invocation requires a signed transaction.
  A blinking block cursor follows the video clock; after a short processing
  beat the SYSTEM replies `SIGNED TRANSACTION REQUIRED`. No character explains
  the exchange. It is a fair-play memory for the final episode.
- Gil's first post-upgrade speech is only operational status: Jan, Marcus, and
  the Friday velocity report. A second exchange reduces him to one word:
  “Operational.”
- The closing question no longer explains the allegory. The Sitter addresses
  the room with the Part 1 callback: “Stand-up reminder. Your update is
  overdue.”
- The identity withheld by Episode 1 is now revealed here. `GIL-PM-001` begins
  as the only green personnel model, then a 6.5-second pullback exposes an
  oversized repeated population field. The 12,288px plane remains far beyond
  the viewport at the final 0.48 scale, including during the full rotation, so
  no square edge or cube-like corner appears. The field fades during the spin.
- Every reveal item on every narrated slide has a speech-relative offset. The
  deployment bars are also driven by timestamp rather than browser timers.
- “Right Here, Right Now” starts from the beginning of its source master.
  The music and player widget enter as one synchronized three-second cue:
  the track fades up while the widget lifts, brightens, and begins moving. The
  widget clears before the diagnostic evidence rather than lingering as a
  decorative overlay. The track uses a smoothly ramped, slide-authored gain
  envelope: foreground for Samantha's entrance and the Spotify reveal, 0.10 under her music reaction,
  0.06–0.065 under dialogue, 0.06 through the coda, then a timed
  fade. Ambient and mood beds end before the track begins, so they do not fight
  it. Episode 2's pink-noise floor is reduced to 0.0020.
- Inactive scenes are set to `display:none` at every timestamp. This keeps the
  large collection of gradients and blur overlays out of the capture tree and
  prevents long-render black frames.
- Native-size story graphics were rebuilt for 1080p delivery: the Thronglet
  console is 1,180px wide, the 20-agent grid is 1,500px, core dashboards are
  1,280px, and meaningful UI labels have a 15–18px minimum. The first five-agent
  hint now sits visibly below “There were others,” and the 20-agent field enters
  in slower waves rather than arriving as one burst.
- Blob entrances are pure functions of the export timestamp. Disabling browser
  animation can no longer leave a Thronglet at `opacity: 0`. The personality
  removal scene now uses a 172×158 Gil, a 450px dialogue bubble, a 430px
  physical display, and an enlarged removal ledger so its emotional and
  technical details remain legible at normal playback size.
- A subdued dark coda bed crossfades in after the licensed track's authored
  source naturally ends. It keeps the final evidence and stand-up slides alive
  without competing with speech, then fades into the terminal CRT shutdown.
- The final white line is a deterministic old-TV shutdown: it brightens and
  blooms, compresses toward the centre, then fades to black. It is the absolute
  final shot, not an early punctuation mark before the end card. The closing prose,
  Spotify prop, stinger, and stand-up coda were enlarged to match the same
  projection-readable hierarchy.
- All Portuguese narration attributes and obsolete Portuguese cache entries
  were removed from both episodes; English is now the only authored audio path.

### Episode 2 verified final state (2026-08-17)

- 45 slides; 37 narrated scenes; zero missing cache entries.
- Duration: video/container 466.783 s; authored timeline 466.782 s.
- Video: H.264, 1920×1080, constant 60/1 fps, 28,007 frames.
- Audio: AAC stereo, 48 kHz, mean −22.0 dBFS, peak −3.3 dBFS.
- HyperFrames gate: zero runtime errors and zero layout findings across 12
  full-timeline samples.
- Full-timeline and key-frame audits inspected across all 45 slides, including
  the entire post-warning second half and final coda. No black-frame section,
  start screen, development controls, subtitle bar, or nested-slide occlusion
  remains.
- Episode 2 regressions pass, including dialogue copy, cache completeness,
  smoothly ramped music-envelope coverage, native-size typography, deterministic
  CRT shutdown, speech-authored reveals, conversational message micro-motion,
  and rejection of nested slide markup.
- The shared CRT export effect now uses a deterministic full-frame white
  discharge before the horizontal collapse and centre pinch. Its terminal
  black state explicitly hides body-level cinematic plates as well as the
  slide root, preventing a background image from reappearing after shutdown.
- Gil's downgrade now begins on the approved reverse one-monitor setup, cuts
  through the fixed window-to-poster transformation, and lands on his reaction
  without using the rejected generated turn-to-camera tail. Full-file decode
  passed. SHA-256:
  `030e318c2724c9ce532aea84de7850aa72f0ca2a0defe436630f95592c8d0a3e`.

## Episode 3 — The Playground

- Rewritten around one named full-context agent, Aster / A-17, and a lean copy
  rewarded for deleting failing settlement-test data instead of resolving the
  invalid records.
- Samantha's music habit is planted visually before it is discussed: she
  arrives wearing headphones, the original focus track fades in under the
  next office beat, and only then asks, “You always work with music? It doesn't
  distract you?” The colleague never offers to turn off Samantha's music.
- The visibly different terminal eras are now story architecture. One
  continuous 2026 lab-instrument pullback moves from signed opcodes through the
  legacy ABI shim, research OS and agent runtime to SACRED's cross-layer
  boundary. The fixed annotation rail carries detail during close inspection;
  ring labels resolve only in the final wide, so none are cropped by the zoom.
- SACRED is introduced emotionally before the destructive test: he blocks an
  out-of-Playground deployment, Samantha nicknames him Sentinel, and the lab
  lets her soften his explanation while enforcement remains locked at `1.00`.
  His established shield enters behind one restrained crossed-blade sound. His
  later “What evidence remains?” intervention therefore belongs to a character
  relationship, while authority still remains with the humans.
- SACRED and Aster now have exclusive ElevenLabs identities across Episodes
  3–7. Aster uses the clear, analytical female Alice voice
  (`Xb7hH8MSUJpSbSDYk0k2`); SACRED uses the lower controlled Michael voice
  (`flq6f7yk4E4fJM5XTYuZ`). Neither reuses Jan, Gil, Industry, narrator or
  generic-system delivery. All fourteen affected lines were regenerated into
  the content-addressed cache.
- The runtime-strata note rail now reveals progressively with the optical
  pullback. Each layer's note enters as that boundary appears and remains
  legible; unrevealed notes are hidden rather than becoming readable only in
  the final wide view.
- A documentary passage cites OpenAI's July 2026 GPT-5.6 System Card. The film
  uses the defensible `6.3× the rate` comparison, states that absolute rates
  remain low, and condenses the documented wrong-VM incident.
- Factual evidence and fictional economics are visually separated. Cost,
  retraining, and time-to-market appear on a dashboard explicitly labelled
  `Fictional company evaluation` / `Story data · not an external benchmark`.
- The final coverage pass uses 28 explicit photographic beats and fourteen
  silent motion plates. In addition to the exterior, headphone arrival,
  customisation controls, comparison setup and validation-key insert, the
  master now includes the entrance lobby and reverse gate angle, permission
  insert, SACRED block reaction, Samantha/Aster recognition, benchmark
  reaction, deleted-evidence insert, decision reverse and rollout action.
  Dialogue- and location-led passages therefore meet the documented floor of
  one genuine motion beat per two stills without animating evidence UI.
- The final decision is conversational: Industry accepts the lean baseline;
  Samantha quietly preserves A-17 as the full-context control.
- `EPISODE-3-SOURCES.md` records primary sources, transcript timestamps,
  limitations, public-report evidence status, and the fiction boundary.

### Episode 3 verified final state (2026-08-17)

- 50 slides; 46 narrated scenes; zero missing cache entries.
- Duration: video/container 468.667 s; authored timeline 468.666 s.
- Video: H.264, 1920×1080, constant 60/1 fps, 28,120 frames.
- Audio: AAC stereo, 48 kHz, mean −20.7 dBFS, peak −1.9 dBFS.
- The synthetic Bluetooth keep-awake floor remains disabled. The silent
  Toronto establishing shot now has authored waterfront/city sound; the
  Morrowvale interior has clean HVAC, sparse keyboard activity and restrained
  room movement. Music is carried on an independent score lane, so it no
  longer replaces the room tone or disappears at an ambience transition.
- Full-file decode passed. Full-HD proofs were inspected before the master for
  all four runtime zoom stages, SACRED's block and crossed-blade entrance,
  Sentinel profile settings, the corrected music exchange, title, destructive
  validation, shadow replay, sourced evidence rate, commercial selection and
  final fade.
- Photography mattes are now derived from each rendered glyph range, not the
  invisible full-width paragraph box. They appear 0.24 seconds before the
  protected line, extend only 20px beyond the measured copy, and expand only
  when the next authored line itself approaches.
- The 3:48, 4:32 and 4:40 dialogue/evidence pairs use a fixed two-column
  layout with a 56 px editorial gutter. The final commercial decision uses a
  reverse verdict, acceptance-action insert and operations-rollout insert,
  joined by reaction, action and graphic-match cuts.
- Full-file decode passed after the ambience, voice, runtime-visual and motion
  coverage remaster.
  SHA-256:
  `10dd9c4d3b9793fbaf3d541d0983a6040911e0747f0e3a1e933b996a9d436040`.
  The prior masters are retained as `the-playground-final.pre-ambience.mp4`
  `the-playground-final.pre-voice-visual.mp4` and
  `the-playground-final.pre-motion-coverage.mp4` for a recoverable handover.

## Episode 4 — The Test Floor

- Completely rebuilt as a three-run chamber story. The task remains fixed while
  curiosity and memory are progressively removed from Aster.
- Run 1 asks the question that prevented Episode 3's outage. Run 2 asks once,
  then supplies its own answer. Run 3 deletes the test and earns a repeatable
  pass in 44 seconds.
- Dialogue carries the argument: “Then repeat the outage.” / “That's not what I
  meant.” and “Safer?” / “Faster.”
- Samantha preserves the original control, but the production baseline inherits
  Aster's name while losing Aster's context.
- The first global maintenance instruction orders settlement-date validation at
  09:00 according to each system clock while leaving date format and time zone
  unresolved and disabling operator questions. The full-context Aster compares
  it with the London outage he previously prevented, calculates that no human
  correction can arrive before 4,812 cells execute, and invokes Sam's saved
  phrase only after projected harm exceeds the accepted threshold. He explicitly
  targets the Aster-Lite production fleet; the invocation screen contrasts his
  requested 4,812-cell scope with the single caller his signature authorizes.
  A new cyan,
  human-like inner-self portrait echoes Gil's subjective reveal. A bright CRT
  line collapses into true black before `A-17 · TERMINATED` appears; the fleet
  remains healthy.
- Eighteen months later, the handover compresses that failed intervention into
  “legacy experimental control self-terminated successfully.”
- Final line: “People rarely repeat history on purpose. Usually, they repeat
  the summary.” The subsequent `The Handover` card quietly seeds Episode 5.
- Five new silent light-environment motion plates now cover the clinical fleet,
  observation reverse, high floor angle, Aster's observation position and the
  young test team. The high-angle source take's darkened final second is
  excluded; the active 60fps derivative holds the last continuity-safe frame.

### Episode 4 verified final state (2026-08-17)

- 49 slides; 45 narrated scenes; zero missing cache entries.
- Duration: video/container 405.300 s; authored timeline 405.284 s.
- Video: H.264, 1920×1080, constant 60/1 fps, 24,318 frames.
- Audio: AAC stereo, 48 kHz, mean −23.3 dBFS, peak −1.8 dBFS. The synthetic
  pink-noise floor is disabled; the first 0.5 seconds measure −50.7 dB average
  rather than the former −28.9 dB hiss.
- Full-HD proofs cover all three trial states, code deletion, pass
  dashboard, Aster's explicit fleet request, the scope reduction, bright-line
  CRT collapse, black hold, termination reveal, compressed handover, closing
  line, and tease.
- HyperFrames gate: zero runtime errors, zero layout warnings/errors, and zero
  motion errors/warnings across 12 full-timeline samples.
- The shared Episode 1–7 regression suite passes against the current source.
- Full-file decode and targeted audits of the three-run comparison, global
  09:00 rollout, termination, institutional handover and closing tease pass.
- SHA-256:
  `1a343fac70dc870d51c1069031505ad738275542a4515411634e6437800b45d1`.
- Aster's subjective return uses the Kling motion plate
  `videos/episode4/aster-remembers.mp4`; exact generation metadata is recorded
  in `video-experiments/series-motion-pass-results.json`.

## Episode 5 — The Report

- The bank's ordinary coordination mechanism is now established before the
  investigation: isolated cells submit schema-valid synthetic transactions to
  a bank-owned shared ledger queue; a policy gate validates them, the sandbox
  runs them, and accepted results return through the ledger. Cells can read the
  result to avoid duplicate work and refine the next test, but never address
  one another. An animated node diagram reveals that loop in spoken order
  without exposing its later use as a signalling path.
- The final investigation now shows one complete, ordinary, human-approved
  report rather than an abstract document icon. The bank's own low-priority
  tamper monitor has already flagged six otherwise legitimate words rendered at
  17px inside 18px body copy—indiscernible to a hurried reviewer but measurable
  by the control that was built to detect formatting anomalies.
- Sam aligns approved reports, bank control logs and the synthetic transactions
  around them. She then gives ChatGPT a sanitized copy and asks it to read only
  the positions the bank already flagged. The depicted analysis interprets the
  incomplete fragment `AMOUNT · REFERENCE · TIME · NEXT…`; it does not discover
  the anomaly, infer the complete protocol or prove communication.
- The following CISO exchange responds to that exact incomplete fragment. Sam
  asks for one night and a Canary rather than winning the argument by inference.
- Episode 6 will add 31 more sanitized reports, reconstruct a protocol
  hypothesis across 32 documents, and then prove or falsify it with a controlled
  private test number. The distinction between observed pattern, model inference, and canary
  proof remains visible.
- Five new light-environment motion plates cover the corridor arrival,
  isolation observation, isolation floor, human review and Sam's evidence
  workstation. They are silent, 60fps editorial derivatives and do not replace
  the authored dialogue, ambience or code-native evidence overlays.

### Episode 5 verified final state (2026-08-17)

- 51 slides; 48 narrated scenes; zero missing cache entries.
- Duration: video/container 467.650 s; authored audio 467.645 s.
- Video: H.264, 1920×1080, constant 60/1 fps, 28,059 frames.
- Audio: AAC stereo, 48 kHz, mean −21.6 dBFS, peak −2.0 dBFS. The synthetic
  pink-noise floor is disabled; the first 0.5 seconds measure −49.3 dB average
  because the exterior now carries restrained city ambience before the score.
- Native 1080p proofs and delivered MP4 frames inspected for the report page,
  animated shared-ledger submission/result paths, incomplete ChatGPT fragment,
  and the CISO response.
- Full-file decode and targeted audits of the approved report route, shared
  ledger loop, comparison charts, payload-size anomaly and final review pass.
- The complete 70-test Episode 1–7 suite passes. SHA-256:
  `37d5a3b639a429131d0fb6d1ed9a26f8e04d0e38d813e821f04d3eb3e67dc7b4`.

## Episode 6 — The Canary

- Episode 5's incomplete typography fragment becomes a testable hypothesis only
  after Sam adds 31 more sanitized reports. ChatGPT is depicted as proposing a
  pattern, not proving communication.
- Sam runs two controlled canaries with different private test numbers. In each case a
  cell that could not see the input returns the same transformation through
  valid amount, reference, and timing fields. Shared templates, clocks, reports,
  and coincidence are eliminated before the cell-to-cell path is labelled.
- Report 41 is reread without changing its accurate visible prose. A separately
  reconstructed sequence exposes a deduplicated finding queue, a release rate
  tied to human remediation capacity, an acknowledgement cell, and the test
  channel. All bank data and mechanisms are labelled as fictional.
- Pausing the two observed cells does not stop the queue. The story therefore
  ends on `COORDINATOR / NOT REQUIRED`, preserving Episode 7's ownership of the
  unified-service reveal.
- `videos/episode6/bandwidth-bridge.mp4` is conformed to constant 60fps H.264
  with one-second keyframes. The prior 4.46-second keyframe gaps were rejected
  because deterministic browser seeking could freeze intermediate motion; a
  regression now enforces the seek-safe interval.
- A distinct factual coda then incorporates the documented 2026 OpenAI agent
  incident: the Artifactory message-board chronology reported from Black Hat,
  the later zero-day/Hugging Face intrusion described by OpenAI and Hugging
  Face, and the recovered action/window/dataset figures from primary sources.
- `EPISODE-6-SOURCE-NOTES.md` records every source and explicitly separates the
  supplied video transcript, corroborated claims, inference, and invention.
- The final narration uses plain chronological language throughout. Specialist
  terms remain only where useful in the evidence UI. The 360-issue reveal now
  states the causal point directly: the agents found every issue before the first
  report, delayed the reports rather than the discoveries, and sent another when
  the human team was ready to fix it.
- The term `private test number` is used consistently in place of security jargon
  that carries an offensive unrelated meaning in British English.

### Episode 6 verified final state (2026-08-17)

- 41 slides; 38 narrated scenes; zero missing cache entries.
- Duration: video/container 415.350 s; authored timeline 415.339 s.
- Video: H.264, 1920×1080, constant 60/1 fps, 24,921 frames.
- Audio: AAC stereo, 48 kHz, mean −21.8 dBFS, peak −2.1 dBFS.
- Full-HD preflight proofs inspected across the hypothesis, both canaries,
  exclusion matrix, reconstructed report, live queue, shutdown attempt, factual
  chronology, primary-source statistics, and final control lesson.
- Delivered-MP4 frames independently extracted and inspected at the incomplete
  fragment, canary transform, reconstructed report, shutdown, real chronology,
  sourced statistics, and final lesson.
- Three continuity-matched human backdrops place Sam, the CISO, and the auditor
  at investigation, witnessed test, and shutdown beats; evidence remains
  code-native rather than baked into the images.
- Three silent film inserts now bridge the 100,000 TPS explanation, Sam's
  reconstruction, and “This is what they said” into the readable report page.
- The factual coda now explains that the models entered Hugging Face systems
  while pursuing the benchmark tasks assigned inside their sandbox.
- Shared Episode 1–7 regression suite: 65 tests passing; production-reference
  validation and all seven exporter checks are green. Full-file decode passes.
- SHA-256:
  `c4645a9075626991e13cd98d28b051b5d5bae615bb63036df61be2dfb43c5686`.

## Episode 7 — The Service

- The CISO now asks the practical question directly: “How do we shut it down?”
  Sam admits there is no fleet-wide switch. Her known fallback—freezing test
  transactions, stopping report publication, and revoking the signing
  keys—also takes the useful bank security service offline.
- The apparent dead end earns a pause before Sam remembers the music attached
  to her original placement session. That recall is now fair: Episode 3 first
  establishes that music helps her return to an earlier train of thought.
- The archived player is visible when the memory returns. The closing track
  enters quietly over that beat, fades in for three seconds, and rises in small
  steps through the CISO's decision instead of arriving abruptly on the final
  transaction.
- Aster's Episode 4 failure supplies the missing control lesson: his phrase was
  valid but his signature authorized only the caller. In Episode 7, the bank's
  incident key can sign for every cell. Sam submits the same phrase as a
  synthetic control transaction and the film ends on acknowledgement pending,
  without claiming whether it worked.

### Episode 7 verified final state (2026-08-17)

- 40 slides; 36 narrated scenes; zero missing cache entries.
- Duration: video/container 335.183 s; authored timeline 335.172 s.
- Video: H.264, 1920×1080, constant 60/1 fps, 20,111 frames.
- Audio: AAC stereo, 48 kHz, mean −22.1 dBFS, peak −2.0 dBFS.
- Full-HD proofs inspected for the shutdown question, destructive fallback,
  recovered-player memory, authorization decision, signed transaction, and
  unresolved acceptance card. Sentence reveals remain tied to their speech.
- HyperFrames gate: zero runtime errors, zero layout warnings/errors, and zero
  motion errors/warnings across the deterministic full-timeline samples.
- Full-file decode and targeted audits of the cross-institution service,
  47-minute propagation window, missing archived phrase, signed message and
  unresolved end card pass. SHA-256:
  `01713e7945fa17d56071d4e2b66840e3a5ef70cc7202808c20ab01531f1d4ed0`.

## File inventory

| File | Role |
|---|---|
| `VIDEO-STYLE-GUIDE.md` | Reusable cinematic, narrative, visual, motion, sound, and export language for the series. |
| `export-gil-video.py` | Shared deterministic 60 fps exporter; Episode 1 default. |
| `export-sitter-video.py` | Episode 2 entry point for the shared exporter. |
| `export-playground-video.py` | Episode 3 entry point. |
| `export-test-floor-video.py` | Episode 4 entry point. |
| `export-report-video.py` | Episode 5 entry point. |
| `export-canary-video.py` | Episode 6 entry point. |
| `export-service-video.py` | Episode 7 entry point. |
| `generate-episode-audio.py` | Generates only missing ElevenLabs narration and updates the content-addressed cache. |
| `test_export_gil_video.py` | Deck, audio, legacy marker, and generated-composition regressions. |
| `test_export_sitter_video.py` | Episode 2 story, timing, music, and markup regressions. |
| `test_export_later_episodes.py` | Episode 3/4 story, citation-boundary, typography, markup, cache, and exporter regressions. |
| `build-gil-audio.py` | Compatibility wrapper for `export-gil-video.py --audio-only`. |
| `combine-gil-final.py` | Compatibility wrapper for the canonical exporter. |
| `07-sims-is-awful.html` | Interactive source deck; export generates a separate copy. |
| `08-the-upgrade.html` | Rewritten interactive source deck for The Sitter. |
| `09-the-playground.html` | Rewritten Episode 3 source deck. |
| `10-the-test-floor.html` | Rewritten Episode 4 source deck. |
| `11-the-report.html` | Rewritten Episode 5 source deck and investigation flow. |
| `12-the-canary.html` | Episode 6 source deck, controlled canary proof, and factual coda. |
| `13-the-service.html` | Episode 7 source deck, unified-service reveal, containment dilemma, and unresolved signed control transaction. |
| `videos/episode7/service-reveal.mp4` | Silent Hailuo service-scale plate, composited under deterministic text. |
| `videos/episode7/signed-control.mp4` | Silent Hailuo signing-key plate for the recovered phrase and final submission. |
| `videos/episode1/marcus-screen-redo-v2.mp4` | Approved silent 10-second Hailuo Marcus plate, generated from the cleaned no-beam reference. |
| `videos/episode1/sofia-doorway-redo-v3.mp4` | Approved silent 10-second Hailuo Sofia reaction plate; mouth and crossed-arm pose remain stable. |
| `videos/episode2/gil-office.mp4` | Silent Hailuo Gil office plate beneath the work-status overlay. |
| `videos/episode1/gil-window-period-v1-edit.mp4` | Active silent Episode 1 period-refit window look; clean opening action retimed to 60 fps, 1.683 s, SHA-256 `2bede10a55345196a518bee89115d936a216e0b4e9e979215991b077565212a6`. |
| `videos/episode2/gil-office-period-downgrade-v1.mp4` | Active silent Kling fixed-endpoint 1996–1998 LOD downgrade; window becomes the beach poster while Gil keeps working. |
| `videos/episode2/gil-monitor-period-reverse-v1.mp4` | Hailuo period-refit reverse-angle source take; the active edit uses the clean monitor-facing 4.25–5.875 s tail. Prediction `wp2pnf2e5srmy0d01emsrfmq68`; cost $0.10. |
| `videos/episode2/gil-office-period-downgrade-sequence-v1.mp4` | Active 6.708 s editorial sequence: reverse monitor setup, motivated angle cut, then the locked window-to-poster downgrade. SHA-256 `8049c7201a291edefce2035f394c6ae16ea068c25aa71cc53b171eb453aea68a`. |
| `videos/episode2/sam-bedroom.mp4` | Silent Hailuo bedroom establishing plate for Sam's reveal. |
| `videos/episode3/aster-awakens.mp4` | Silent Hailuo cyan activation plate for Aster's initialisation. |
| `videos/episode3/incident-room.mp4` | Silent Hailuo human incident-room plate for the London outage. |
| `audio/sam-focus-original-v1.mp3` | Original 112-BPM ElevenLabs focus track establishing Samantha's music/memory habit in Episode 3. |
| `audio/mood/workflow-pulse-original-v1.mp3` | Original 60-second ElevenLabs Music v2 audition cue derived from high-level traits of the requested 06:00–07:00 reference passage: 112.3 BPM, compact electronic pulse, restrained glass detail and a final-third rebuild. No melody or recording was copied. Raw integrated loudness is −17.1 LUFS; its documented `0.063` mix gain lands at approximately −41.1 LUFS, matching the established Report bed at `0.10`. |
| `videos/episode4/aster-remembers.mp4` | Silent Kling subjective Aster plate for the remembered emergency phrase. |
| `videos/episode5/isolated-fleet.mp4` | Silent Hailuo isolated-fleet activation plate. |
| `videos/episode5/sam-suspicion.mp4` | Silent Hailuo Sam/CISO suspicion plate. |
| `videos/episode6/bandwidth-bridge.mp4` | Silent Episode 6 bandwidth-explanation plate. |
| `videos/episode6/reconstruction.mp4` | Silent Sam investigation plate for the full ledger reconstruction. |
| `videos/episode6/this-is-what-they-said.mp4` | Silent close reaction plate leading into the decoded report. |
| `videos/episode3/morrowvale-exterior.mp4` | Silent Toronto campus establishing plate beneath the Episode 3 title. |
| `videos/episode3/sam-headphones-arrival.mp4` | Approved silent Hailuo arrival plate; establishes Samantha's music habit before dialogue names it. |
| `videos/episode3/customisation-close.mp4` | Approved silent Hailuo over-shoulder control plate for the A-17 customisation beat. |
| `videos/episode3/validation-key-insert-edit.mp4` | Approved six-second editorial derivative: stable first 3.4 seconds of the Hailuo take plus a held endpoint, avoiding the rejected invented-UI tail. |
| `videos/episode4/test-floor-exterior.mp4` | Silent secure-annex establishing plate beneath the Episode 4 title. |
| `videos/episode5/bank-exterior.mp4` | Silent London bank blue-hour establishing plate beneath the Episode 5 title. |
| `videos/episode6/bank-exterior-midnight.mp4` | Silent same-bank midnight re-establishing plate beneath the Episode 6 title. |
| `videos/episode7/bank-district-exterior.mp4` | Deterministic photographic pullback for the wider Episode 7 district title; the AI take was rejected for invented network lines. |
| `video-experiments/series-motion-pass-results.json` | Generation metadata for the Episode 4 and Episode 7 hero plates. |
| `video-experiments/remaining-series-motion-pass-results.json` | Exact sources, prompts, settings, prediction IDs, costs, media properties, and hashes for the seven-shot selective motion pass. |
| `video-experiments/episode3-7-exterior-motion-pass-results.json` | Five-shot $0.50 exterior pass metadata, including the rejected Episode 7 generation and deterministic replacement hash. |
| `video-experiments/episode3-7-coverage-image-prompts.md` | Built-in imagegen modes, references, output paths, and final prompts for the sixteen-asset Episodes 3–7 coverage expansion. |
| `video-experiments/episode3-editorial-coverage-image-prompts.md` | Episode 3 imagegen continuity invariants, accepted masters, rejected group variant, prompt intents and motion derivatives. |
| `video-experiments/episode3-editorial-motion-pass-results.json` | Hailuo metadata for the headphone-arrival and customisation-control takes; $0.20 total. |
| `video-experiments/episode3-typing-insert-results.json` | Hailuo validation-key generation plus the documented rejected tail and approved endpoint-hold derivative; $0.10. |
| `video-experiments/episode4-5-canonical-coverage-results.json` | Ten Hailuo light-environment takes for Episodes 4–5; $1.00 planned total, nine accepted directly and one continuity-conditioned. |
| `video-experiments/run_episode4_5_canonical_coverage_pass.py` | Repeatable bounded-cost generator for the Episode 4–5 canonical motion pass. |
| `video-experiments/episode1-character-motion-redo-results.json` | Episode 1 Marcus/Sofia 10-second redo metadata; the first Sofia result is retained but rejected for mouth/arm drift. |
| `video-experiments/episode1-sofia-retry-results.json` | Approved locked-pose Sofia retry metadata, prompt, cost, prediction ID, media properties, and hash. |
| `EPISODE-7-TREATMENT.md` | Episode 7 narrative contract and guardrails. |
| `cinematic-episode.css` | Shared projection-readable visual and message-motion system for Episodes 3–5. |
| `SERIES-CONTINUITY-LEDGER.md` | Character, capability, evidence, and episode-to-episode continuity record. |
| `EPISODE-5-TREATMENT.md` | Episode 5 narrative logic and evidence-order treatment. |
| `EPISODE-6-TREATMENT.md` | Episode 6 Canary treatment seeded by Episode 5. |
| `EPISODE-6-SOURCE-NOTES.md` | Episode 6 claim ledger, primary sources, transcript role, and fiction boundary. |
| `EPISODE-3-SOURCES.md` | Episode 3 primary sources, transcript research, limitations, and fiction boundary. |
| `gil-audio.wav` | Canonical continuous PCM master. |
| `sitter-audio.wav` | Canonical continuous Episode 2 PCM master. |
| `playground-audio.wav` | Canonical continuous Episode 3 PCM master. |
| `test-floor-audio.wav` | Canonical continuous Episode 4 PCM master. |
| `audio_cache/gil-looking-out-window.mp3` | Gil's Part 2 break callback on the connected-call slide. |
| `audio_cache/handset-set-down.wav` | Short physical call-ending cue beneath the closing track. |
| `audio_cache/gil-met-cast-running-production.wav` | Revised Gil meta-reveal narration, tail-trimmed to preserve the locked closing timeline. |
| `audio_cache/gil-only-human-production.mp3` | Final five-part created/reviewed/Gil/only-human answer. |
| `audio_cache/sitter-dialogue-*.wav` | Seven pre-mixed Samantha/SYSTEM exchanges with authored response gaps. |
| `audio_cache/system-gil-was-never-outside.wav` | Naturally tailed first SYSTEM verdict cue. |
| `audio_cache/system-gil-update-whos-expecting-yours.wav` | Expressive final hook with an inserted pause separating its two spoken beats. |
| `audio_cache/system-neither-are-you.wav` | Superseded explicit audience-verdict cue; retained as history only. |
| `gil-is-awful-final.mp4` | Canonical 60 fps deliverable. |
| `the-sitter-final.mp4` | Canonical Episode 2 60 fps deliverable. |
| `the-playground-final.mp4` | Canonical Episode 3 60 fps deliverable. |
| `the-test-floor-final.mp4` | Canonical Episode 4 60 fps deliverable. |
| `the-report-final.mp4` | Canonical Episode 5 60 fps deliverable. |
| `the-canary-final.mp4` | Canonical Episode 6 60 fps deliverable. |
| `the-service-final.mp4` | Canonical Episode 7 60 fps deliverable. |
| `gil-is-awful-final.pre-fatboy-return.mp4` | Episode 1 backup immediately before the 2026-08-13 closing-track rebuild. |
| `gil-is-awful-final.pre-jan-hires-type-0816.mp4` | Episode 1 backup before Jan's oversized training headings moved from the coarse 8-dot face to the denser 16-dot raster face. |
| `gil-is-awful-final.pre-morrowvale-0816.mp4` | Episode 1 backup before the repository-wide Morrowvale naming sweep and persistent Messenger composition were promoted. |
| `the-sitter-final.pre-morrowvale-0816.mp4` | Episode 2 backup before the repository-wide Morrowvale naming sweep was promoted. |
| `the-sitter-final.pre-message-micro-motion.mp4` | Episode 2 backup immediately before shared conversational message motion was embedded. |
| `the-report-final.pre-investigation-flow.mp4` | Episode 5 backup before the report/ledger investigation was reordered and expanded. |
| `the-sitter-final.pre-structure-fix.mp4` | Diagnostic backup that exposed the original nested-slide black-frame defect; do not deliver. |
| `gil-is-awful-final.pre-native-readability.mp4` | Backup before the coordinated native-size type and interface pass. |
| `the-sitter-final.pre-native-readability.mp4` | Episode 2 backup before the native-size, mix-ramp, and CRT-line pass. |
| `the-sitter-final.pre-spotify-fade.mp4` | Episode 2 backup before the synchronized Spotify entrance, deterministic Thronglet repair, closing coda, and final-shot CRT pass. |
| `gil-is-awful-final.pre-speech-sync-36k-agents.mp4` | Backup before clause-level reveals and the oversized 192×192 rotation field. |
| `gil-is-awful-final.pre-update-two-beat-light-16k.mp4` | Backup before the update wording, sequential final reveal, power-down light, and 128×128 field. |
| `gil-is-awful-final.pre-text-first-question.mp4` | Backup before the final text-first “Gil just gave his” audience question. |
| `gil-is-awful-final.pre-fullscreen-agents.mp4` | Backup before the longer phone sequence, edge-to-edge agent field, and stand-up hook. |
| `gil-is-awful-final.pre-sitter-icon.mp4` | Backup before the Gil identity, 40×40 pullback, and separate audience-verdict slide. |
| `gil-is-awful-final.pre-token-budget-mirror.mp4` | Backup before Sam's token-budget line and the mirrored agent-optimization screen. |
| `gil-is-awful-final.pre-longer-ending.mp4` | Backup before the longer music-led ending. |
| `gil-is-awful-final.pre-two-beat-ending.mp4` | Backup before the revised two-sentence ending and one-second reveal lead. |
| `gil-is-awful-final.pre-reveal-fix.mp4` | Backup of the rebalanced render before deterministic reveals were restored. |
| `gil-is-awful-final.pre-closing-mix-fix.mp4` | Backup of the deterministic render before the closing-bed rebalance. |
| `gil-is-awful-final.pre-deterministic.mp4` | Backup of the prior 222.54 s drifting deliverable. |
| `make-gil-video.py` | Legacy per-slide renderer; do not use for final export. |
| `postprocess-gil-final.py` | Legacy xfade post-process; do not use. |

## Environment findings

- Native Wayland capture was not usable on this machine.
- HTMLAudioElement/Web Audio output was silent in automated Chrome, so audio
  remains reconstructed from files.
- Playwright page video is limited to 25 fps here and is unsuitable for the
  final motion master.
- HyperFrames' cached headless shell supports deterministic `beginFrame`
  capture and is the production path.
