Have the lead settle an issue's questions before a smaller-model agent builds it, two at a time
mesh/merge-gate head 912fd428fb89 merged into trunk a75faad88240 — pass: the change touches no module of the mesh's graph
mesh/repo-check head 912fd428fb89 merged into trunk a75faad88240 — pass: its merge-check.sh passed
mesh/delivery delivered

Five agents at once, each stopping on an undecided design question and restarting, spent a
week's allowance in a night. Also write down the lessons of feature 57: never land on a red
check, a new manifest word lands with the controller that reads it, and review the tree that
is pushed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-14 23:24:14 +00:00
co-authored by Claude Opus 5.5
parent a75faad882
commit 912fd428fb
+27 -3
View File
@@ -82,9 +82,24 @@ reviews and delivers at the end. The agents never push.
runs the repository's tests and `merge-check.sh` in its own worktree, then fast-forwards the
feature branch under a lock (`flock <feature worktree>.lock git -C <feature worktree> merge
--ff-only <its branch>`). If another agent landed first, it merges again and repeats.
- **At most five issues are being fixed at once.** When one lands, the next ready issue starts at
- **The lead decides, a fixing agent builds.** Before an issue goes to an agent, the lead reads it and
the code it touches, finds every open question and settles it: decided on the issue, through the
knowledge base, or by the operator. An agent that meets an undecided design question stops, and its
whole run is spent again when it restarts. The issue the agent gets then says, in its own text:
- the repository and the files it changes, one repository where it can be (split an issue along
repository lines rather than send one agent through three);
- the decisions it builds with, quoted, never "read notes 8 to 12";
- the test to write first, which fails before the change;
- its done-when, in one sentence;
- what it must not touch, and what is landing beside it.
An agent that finds the code differs from its issue stops and reports; it does not design around it.
- **Spend the operator's allowance on judgement.** Every agent the mesh runs draws on one weekly
allowance shared by every session. A fixing agent runs on the smaller model (Sonnet); the lead, the
independent reviews and the decision records run on the larger one, where judgement is the work.
- **At most two issues are being fixed at once.** When one lands, the next ready issue starts at
once; an issue is ready when every issue its `depends-on` links name has landed on the feature
branch.
branch and the lead has settled its open questions. (Five at once, with restarts, spent a week's
allowance in a night.)
- **An issue partly done goes back to `open`** with a note naming the commits that landed and what
is left, linked `depends-on` to what it waits for. An issue is never left in `fixing` while
nobody works on it. A finished issue's agent is gone, so the lead takes it over in `fixing` (its
@@ -96,7 +111,16 @@ reviews and delivers at the end. The agents never push.
- **Fetch by name.** In a shared clone a plain `git fetch` may update only `main`. Fetch the
feature branch with an explicit refspec before branching from it or comparing against it, or an
agent merges a stale copy.
- **Report every ten minutes,** short, as a tree or a table: the issues done (of the total), each
- **Never land on a red check.** Run the checks, read the result, then land in a separate step; a
command that checks and lands anyway is how a red branch lands. A manifest claiming a new seat or
a new manifest word lands only with, or after, the controller change that understands it.
- **Review the tree that is pushed.** Before the local review, bring each feature branch up to the
current trunk (fetch by name, then merge or rebase), so the reviewed tree is the pushed tree.
Where an agent session pushes through the forge tool `gitea_commit` (it puts one commit on a branch
through the forge, as step 4's push), that commit is a new one on the forge's current base: the
reviewer confirms the forge commit's tree equals the reviewed one before posting its verdict on the
pull request.
- **Report every ten minutes, and at once when something lands or needs the operator,** short, as a tree or a table: the issues done (of the total), each
issue being fixed with its active time (minutes since its agent was sent, from a start time
written down then, never guessed), the issues ready next, the ones waiting, and anything that
needs the operator. Times are local and absolute.