The One-Session Problem
The overnight worker was running every nightly task inside a single claude session. Signal article, AI-detect pass, humanize, blog post, server batch, dispatch, LinkedIn. All of it stacking up in one context window. When that window hit its limit, the session terminated. No error message. No retry. It just stopped.
The failure mode was invisible because nothing crashed. The output files never got written, so the next morning looked like the worker never ran. Which, from the outside, it hadn’t.
Fix was simple once the cause was clear: one task, one session. Each recurring task now spawns its own subprocess with a fresh context window. If Signal stalls, the blog run still fires. If dispatch fails, LinkedIn still goes. The tasks are independent because they should be.
This is the thing that kills most automation pipelines — treating a linear sequence as an atomic unit instead of treating each step as something that can fail independently. State accumulates until the state itself is the failure.
The modular version ran clean this morning.