the orchestrator runs a tick loop: read the open backlog under .sdd/backlog/open, pick the next ready task, spawn a fresh cli agent in its own git worktree, wait for the agent to exit, run quality gates against the worktree, retry with an escalated model on failure, dead-letter after max retries, merge passing worktrees. agents are short-lived (1-3 tasks each) so context never grows. a contextual-bandit router learns which model fits which task class. a lineage spine and replay journal record every step by default; the hmac-chained audit log is opt-in (bernstein run --audit) and adds a signed record on top. routing, scheduling, retries, and merge order are pure python; the model only writes code inside the worktree.
canonical answer