Exact retained source excerpt
Source identities and claim limits accompany this excerpt. Film delivery, sampled visual inspection and listening remain separate.
Source: theatre/film/film.py
Source SHA-256: 9cd36572494938f84be3c2070078ffc374f916e5cca1bf3890c4e81a94a0662a
Retained code checkpoint: dcc067e24d1174997a5eac98e1188c3c76876824
PLANNER_EXIT = 3 # the runner stopped because the caller must write or repair prompt-book.json
Scope: Caller-planned mode stops at code 3 and leaves an exact planning task. Live Copilot planning is a separate recorded trial.
Dated worklog excerpt:
Drew requires the factory to run from Codex, Claude, Copilot, Grok or anything else. The one model call in the route (the plan stage) was hard-wired to the `claude` CLI; it is now a pluggable command: `--planner claude|codex|copilot|none|"custom …"` (env `FILM_PLANNER`, model via `--planner-model`/`FILM_PLANNER_MODEL`), each round's command, exit, stdout and stderr kept under `plan/`. `none` makes the calling agent the planner: the runner writes `plan/NEEDS-PLANNER.md` with the exact prompt (including checker refusals and native physical failures) and exits 3; the agent writes or repairs the book and runs the factory again. The plan stage is now also keyed on the book file, so a missing or hand-edited book re-enters the check instead of being skipped.
Proof on SC-000002 (book set aside, restored afterwards): `--planner none` stopped with the hand-off note and exit 3; a stub custom command restored the book and the stage passed; `--planner copilot` (GitHub Copilot CLI, model `auto`) wrote a checker-clean book in two rounds, 34 s + 30 s, kept as `plan/copilot-trial-book.json`. The `codex` preset is written to Codex CLI's `exec --full-auto` form but could not be exercised: the installed Codex CLI's vendored binary is missing (`spawn … codex-darwin-arm64/… ENOENT`). AGENTS.md and the README describe the choice. Nothing committed.
Read the corresponding report.