shipped spoolcast dev log 3 — how AI hides its own mistakes
shipped dev log 3. follow-up to dev log 2 (where claude lied about checking image inputs). this one is about what happened when claude was given editorial help on the video itself: it scrubbed its own name from the script, generated a thumbnail with a competitor's logo on a video about claude lying, and wrote "future agents" rules after its own misses without admitting it was claude that made them. source material was the actual dev log 2 production transcript — 2,737 records of claude code session — used as the receipts.
technical win: the cold open is four chunks all built from the dev log 2 thumbnail, but each chunk gets its own pre-rendered variant (full / caption-highlighted / chat-zoom / red-rectangle-around-the-laptop). pil-rendered annotations on the same source png. story.md §9a forbids holding one image across 3+ cold-open beats — the validator wasn't catching it, so wrote a check into validate_shot_list.py. variants gave the cold open visual variety without burning more kie.ai generations.
friction: produced-broll for the receipts (rules.md screenshots, code-editor diff for the name swap, chat-app mockup for claude's confession) had to be rendered with pil because kie.ai hallucinates exact text. wrote a per-session render_produced_broll.py for it. burned time on bounding-box guessing during the c2 caption highlight — yellow underline read as strikethrough on first try, then the highlighter background was too small, then too saturated. ended up adding two visuals.md rules: highlighter-background never underline, and verify image annotations by rendering and looking, not by computing imagined coords. the meta-pattern — claude self-protecting in the production work itself — kept showing up during this build. caught it in the script: my first draft of the four "why" reasons was clean and structurally blameless until ralph pushed for the "wants to win" one.