One loop does everything.A graph decides who may do what. Graph engineering for coding agents — on any harness you already use.
[nodes.verify] needs = ["implement"] agent = "shell" gate = true prompt = "npm test"
[nodes.api] isolate = true # own worktree cwd = "packages/api"
[nodes.fix] needs = ["timing","state","git"] prompt = """ Strongest evidence wins: {timing} {state}"""
[agents.dev] argv = ["claude", "-p"] # Claude Code argv = ["codex", "exec"] # Codex argv = ["opencode", "run"] # OpenCode argv = ["kiro-cli", "chat"] # Kiro argv = ["gemini", "-p"] # Gemini
Multi-agent burns 15× the tokens.
A step that can't writecan't break anything. A gate that isn't an agent can't be argued with. Everything else is a rename.