Dispatch Loop for Agentic Dev (DLAD)

· Zi Wang · 2 min read

TL;DR

Multi-day Fable 5 devcycles emit ~10 pg self-reported diff status. I have been using a basic "event bus" harness to hand-carry large diffs into a 2nd LLM for review — human RPC.

DLAD automates the loop: headless CC session → machine evidence → stateless LLM audit → deterministic code gate → auto-dispatch next runbook OR escalate decisions-only card to a human. Sr eng stop reading reports; they answer queued decisions. No LLM in the safety path. L2 ships wk1; L3 (CI-verified claims) is a config flip, not new code.

Problem

  • Bandwidth: No sr eng capacity for line-by-line review of hundreds of concurrent agent streams. Nobody can read 10hrs/day of reports.

  • Current stopgap fails structurally: paste-report-into-2nd-LLM produces (a) claim laundering — unverified agent claims exit review stamped "approved"; (b) plan echo — reviewer paraphrases the agent's own next-steps. Paying model B to agree with model A.

  • Root cause: the human conflates 3 jobs. Transport (zero value) + verification trust (should be machines) + judgment (only part needing a human). Unit of trust today = narrative. Industry standard (and Anthropic's own 80%+ model-authored merge rate) = diff + CI, humans as quality gate.

Solution — workflow

runbook_N ──► [CC headless: claude -p, tool-scoped] ──► report_N
                                                           │
        [evidence: pytest | lint | alembic | git diffstat]─┤   ledger.json
                                                           ▼   (open claims)──┐
                                            [REVIEWER · stateless API · T=0]◄─┘
                                             out: claims{VERIFIED…OUT_OF_SCOPE},
                                             risks, decisions, runbook_N+1
                                                           │
                                                     [GATE · pure fn]
                          ┌────────────────────┬───────────┴──────────┐
                      DISPATCH             ESCALATE               HALT_DONE
                   commit, N+=1, loop   Slack card: decisions        exit
                                        ONLY (never the report)
                                        human answers → resume