Isolation
One git worktree per run, removed afterwards, and one migrated test database per card (ielts_iel_<n>). Two cards build in parallel without touching each other.
Shared files wait
A planned card waits while another card that lists any of its files is building, verifying, fixing or merging. It then builds on top of that change.
Risky work waits
A plan with risk: high or migrations waits for the approved label before it builds: sign-in, payments, schema.
Fix budget
Two fixes at most. If the same file or criterion fails two rounds running, the card goes straight to Blocked instead of burning a third round.
Circuit breaker
Three failed cards in a row pause all new work until I run resume.
Daily budget
New agent work stops at a $10 API-equivalent cap each day, on top of each run's own spend cap.
Kill switch
PIPELINE_PAUSED=1, or a card named STOP in To-Do or Bug. Steps in flight finish; nothing new starts.
Locks
One orchestrator per machine (pidfile), one step per card (an SQLite lock with a 60-minute TTL), and at most 2 cards working at once.
Dry run by default
DRY_RUN=1 runs the agents but only logs pushes, PRs, merges, deploys and Trello writes.