Every run starts with one sentence. “Move billing to Payment Intents and keep the old webhooks working until March.” Twelve seconds later there are 1,024 tasks, and each one has an owner, a file set and a test.
Read first, then plan
Planner never splits a goal blind. It waits for Reader’s map of the codebase, so every task points at real files and real callers.
Small enough to check
Our rule is simple: if a task can’t be proved done by one test, it is too big. Planner keeps splitting until that is true.
One owner per task.
One file set per task, so agents never edit the same lines.
One test that turns green when the task is done.
Waves, not a queue
Tasks that don’t depend on each other run in the same wave. The billing migration ran in nine waves, and the longest one took under two minutes.

