I Handed 41 Tasks to an AI Loop. The Bottleneck Was Judgment, Not Code A developer reported that an AI loop processing 41 backlog tasks across two repositories found the bottleneck was judgment, not code. The developer split task processing into judge, build, and human roles, with the judge re-evaluating tasks before dispatch, closing 6 tasks through decisions and withdrawals and correcting state errors. The approach used git worktrees and fast-forward merges instead of pull requests, with the human providing final approval. Is there a region at the bottom of your task ledger you haven't scrolled to in weeks? Mine held 41 tasks across two repositories. I use AI agents every day, and yet the ledger never shrank. One morning I ran my homegrown "list the tasks that are ready to start" command. The answer was empty. python3 ~/.claude/scripts/claims.py ready no output Forty-one tasks, and zero of them ready to hand to an implementation session. Implementation capacity was sitting idle. The bottleneck was judgment. This article is a field report from one week of processing those 41 tasks with an AI loop split into three roles: judge, build, and human. By the end, you should be able to tell where your own ledger is actually stuck — and what to design first if you want to run an unattended loop. This is a record of two repositories, one week, one person n=1 . Every number comes from logs and commits; generalize only within that range. Tasks start rotting the moment you write them The day before I built the loop, I hand-dispatched 7 tasks to implementation sessions as a trial. Two of the 7 had premises that had already collapsed by the time work started. A spec they depended on had changed, or the problem itself had been dissolved by some other change. A ledger's "someday" entries assume the world as it was at write time. A task that sat for a few weeks needs a re-judgment — "is this still worth doing?" — before anyone implements it. In other words, processing a ledger has a judgment layer that comes before implementation. If your automation design skips it, the AI will stack correct code on top of rotten premises. I did two things. First I split task processing into three roles; then I laid the plumbing to run them unattended. The role split: | Role | Who | Concretely | |---|---|---| | Judge | A resident session on a stronger model one tier above the build side . One per repository | Re-judges every task in the ledger and dispatches only the ones still alive | | Build | A fresh session spawned per task | Implements exactly one task on a git worktree. Never touches main | | Human | Me | Final approval on merge, drop, and filing only. The last switch | No pull requests. Build sessions just stack commits on a task branch. Acceptance is done by the judge session — git diff --stat plus re-running the tests — and once the human approves, it fast-forward merges. The list of unmerged branches doubles as the acceptance queue. git branch --no-merged main unmerged = acceptance queue the PR substitute git merge --ff-only task/