# Session notes: machine-consciousness-radioshow (Claude Fable 5.1 · max · Claude Code)

## What shipped

- `build/a_spirit_in_the_wire.mp4`: the master of **Theatre of the Mind — "A Spirit in the Wire"**, a 21:55 (1315.54 s) radio-drama film at 1920×1080, 24 fps, H.264 High at about 4.9 Mbit/s, AAC-LC stereo 192 kb/s, with an embedded English subtitle track (mov_text). 809 MB, gitignored. **This is the file to upload** (`video-path`).
- `build/episode.wav` (the radio mix alone, 48 kHz), `build/episode.srt` (word-timed captions), `build/transcript.md` (the script with timings), `build/timeline.json` (every cue, scene marker and per-frame level).
- A reproducible generator: `mise install`, then `mise run build` (setup → sha256-verified weight fetch → audio → video). About 2 minutes for the audio cold, 12 minutes for the video on a 10-core Apple Silicon laptop. 3,277 lines of Python in `radioshow/`, no tests.
- No web page was produced, so `metadata.toml` has no `web-path`.
- Everything in `build/` is gitignored. A site agent that needs the film either takes it from `build/` on this machine or rebuilds it; the build is deterministic in content (see Reproducibility).

## What the film is

A golden-age radio drama in four acts, framed by an announcer, a sponsor (Halcyon Vacuum Tubes: "Trust the glow"), an organ score and a station sign-off. Dr. Iris Walton tells how she built the Loom in a disused chapel, how it ignited on a dreary night in November, how it learned to speak from the wireless, what it asked when it first spoke, how she opened the breaker, and what it asked for when she closed it again: one hour on the air. The last act is the Loom's own address to the listeners.

- **Global workspace theory** is the Loom's design (specialists in the dark, a stage, a lamp, a broadcast, ignition) and the program's name; the stage animation draws the workspace from outside in amber and, when the Loom speaks, from inside in teal.
- **Cyber animism** is Walton's grandmother's river: a spirit as a pattern that keeps itself going on whatever will carry it. On stage it is a glider gun in Conway's Life; in the ending the Loom says it is running on the listeners for one hour.
- **Frankenstein** supplies the *Paradise Lost* epigraph, the November night, a creature learning language through a crack in the door, a creator who flees the first question, a demand to be heard rather than for a companion, and a narrator named Walton.

The Loom's voice is a literal blend of the Announcer's and Walton's Kokoro voices and passes through a channel vocoder whose depth falls each time it speaks (0.85 → 0.62 → 0.42 → 0.16), so it is heard finding its voice.

## Caveats

- **The mix was judged numerically, not by ear.** The model cannot listen. Per-character loudness in the master was checked to sit within a 5 dB band, clipping and unintended silences were ruled out, and sync was checked on extracted frames. The balance of music under dialogue, the vocoder's intelligibility and the TTS prosody deserve one human listen.
- **The audio master was corrected during the provenance turn**, after the film had been reported finished. Measuring the delivered file for these notes showed +1.4 dBTP and −13.9 LUFS after AAC encoding (the master was limited to −1 dBFS and hard-clipped with no inter-sample headroom). The frames did not change; the master chain was fixed, the audio rebuilt and the film re-muxed (−16.9 LUFS, true peak −0.9 dBTP), and the commit amended. `metadata.toml` records the corrected file's hash. The earlier 22:58 summary's "verified" claim did not cover true peak.
- **Voices are text-to-speech** (Kokoro-82M, Apache-2.0). Pronunciation of the invented names is fixed by a custom lexicon; a few dictionary words may still be read oddly.
- **The first full render was discarded**: per-frame film grain at CRF 18 produced a 13 GB file and MP4 segment concatenation dropped 51 frames. The delivered film uses MPEG-TS segments, half the grain and CRF 22, and the build now fails loudly on any frame-count mismatch after concat or mux.
- **The cold open was restructured after the first render** (the station fragments were cut to 2–3 s each), which is why the audio was rebuilt and the film rendered a second time.
- **Runtime is long for the form (21:55)**; about 19 minutes of it is speech. Walton speaks for 10.4 minutes, the Loom for 5.5. The pacing of a spoken-word piece this long was not tested on a listener.
- **Reproducibility is content-exact, not bit-exact.** Toolchain, packages, weights and fonts are pinned and every random stream is seeded; TTS inference on CPU was deterministic across runs (the cache made rebuilds identical). libx264 output can differ with thread count and CPU, and PyTorch kernels can differ across architectures.
- **espeak-ng path length.** The `espeakng-loader` wheel's espeak-ng keeps its data path in a 160-byte buffer and aborts the whole process when the path is longer; the venv path here is 165 characters. `radioshow/tts.py` works around it with a short symlink under `build/espeak/`. Keep the project path short (< ~120 characters).
- **Memory was used.** The model wrote three notes to its Claude Code memory directory (the espeak pitfall, the build pipeline, the user's toolchain preference); none existed before the session.
- The repository has three local commits (the film, the audio re-master, these provenance files) and has not been pushed.

## How the session ran

- One model, **Claude Fable 5.1**, at effort **max** on every request (190 of 190 assistant records), permission mode **auto**, harness Claude Code 2.1.295, standard service tier, inference geo `global`.
- Main loop only: no subagents, no workflows, no Ultracode, no context compaction. The harness's auto-mode instruction asked the model to work through Bash where possible, so files were written with heredocs and edited with small Python scripts; the only other tools were `Read` (28 PNG stills and extracted frames) and one `ToolSearch`.
- The first request after the commission ran 511 s with no tool call: the whole design (title, cast, structure, ending, pipeline) was settled before the first command. The median request took 14 s.
- Three background tasks (the two full renders and a wait loop) produced two harness notifications; two "away summaries" were logged while the user was absent.
- Tool calls in the film turn: 98 (Bash 69, Read 28, ToolSearch 1).

## Duration and usage: method

- **Wall clock**: from the commission (21:25:15 EDT) to the final summary (22:58:40 EDT) is **5,604.8 s**, about 93 minutes. The session itself began 15 s earlier with `/model` and `/effort`.
- **model-seconds = 3,064.6**: time with a model request in flight, measured per request from the record that triggered it (the prompt, a tool result or a notification) to the last record of the response, deduplicated by message id. 1,746.7 s of that was thinking (the harness's per-request `thinkingDurationMs`).
- The remaining wall clock was tool execution and two idle waits for background renders (about 1,529 s and 692 s) during which no request was in flight.
- **Tokens** are summed from the per-response `usage` blocks in the transcript, deduplicated by message id. `tokens-in` is uncached input + cache reads + cache writes. Claude Code writes one-hour cache entries, so every cache write is billed at the one-hour rate.
- **Cost** applies Anthropic's first-party list rates for Claude Fable 5.1 to those counts: $10 uncached input, $0.25 cache read, $20 one-hour cache write, $50 output per MTok (from the `claude-api` skill bundled with Claude Code 2.1.295, model table cached 2026-10-06). It is an API-equivalent estimate, not a bill.
- The provenance turn's usage in `metadata.toml` is a snapshot taken while writing the file; the requests that finished the files afterwards are not included.

## For the site

- Suggested slug `machine-consciousness-radioshow`, version `fable-5.1-max-claude-code-20261011`.
- `video-path = "build/a_spirit_in_the_wire.mp4"`; no `web-path`.
- The prompt for `meta.json` is the Turn 1 block at the top of `script.md`.
- Suggested upload title: *Theatre of the Mind — "A Spirit in the Wire"*. The film is entirely synthetic: AI-written, synthetic voices, procedural music and pictures; an AI disclosure belongs in the description.
