AI engineering
One Lead, 37 Agents, ~$50: a 16-Task Build in an Afternoon
A multi-agent field report: 37 subagents, 7 lane worktrees, 7 green merges, ~$49 — and the two bugs a fully green test suite could not see.

One afternoon. One lead agent that never wrote a line of code. 37 subagents working in 7 isolated checkouts of the same repository. Fifteen of sixteen planned tasks finished, the test suite up from 1,341 to 1,439, seven merges into an integration branch with everything green after each one, and roughly $49 of model spend — about $3.30 per completed task (spend measured just before the final task landed).
And nothing on main.
That last line is the honest part of the headline. The work — versioned, reproducible generation of a leadership-assessment product's cohort report PDF, so that a report generated today can be regenerated byte-for-byte in a year — is built and verified on an integration branch. It is not merged and not deployed. A production backfill and a close-out task are still gated on the owner's approval. What follows is a report on the machinery: the interesting result is not the speed, it is the two bugs it caught while every test on the board was green.

The numbers
| Metric | Value |
|---|---|
| Subagents | 37 — 16 implementers, 16 reviewers, 5 re-reviewers (+13 resumed sessions) |
| Lane worktrees | 7 (6 planned lanes + 1 added mid-session) |
| Dependency order | A, B → C → D → E, F |
| Plan | 16 tasks; 15 complete, close-out implemented and awaiting review |
| Plan verification | 2 adversarial rounds before any code — round 1 no-go (4 blocking defects), round 2 go-with-conditions |
| Fix rounds | 9, every one converged in a single round |
| Integration merges | 7, full suite green after each |
| Tests | 1,341 → 1,439 on the integration branch |
| Files changed | 67 merged (+5,786 / −1,034) |
| Assets | +1.67 MB of vendored font and cover files |
| Written rulings | 22, each with a "cost if wrong" clause |
| Spend | ≈6.5M tokens in and out, ≈$49 (basis below) |
| Ship state | Built and verified. Not merged to main, not deployed. |
The setup
Three words do most of the work here. A lane is an independent slice of the plan that one agent owns end to end. A worktree is a separate checkout of the repository, so two agents can never fight over the same file. A fix round is the loop where a reviewer finds defects, the implementer fixes them, and the reviewer re-checks.
The lead agent planned, wrote the brief for each task, ruled on questions, reviewed every diff, and merged. It never edited a file. Every implementer and reviewer started on fresh, empty context: the reviewer had no memory of writing the code it reviewed, which is the entire reason the review is worth anything.
The plan came first and was attacked twice before anyone built anything. Round one came back no-go with four blocking defects. Those were fixed, and round two returned go-with-conditions. Four defects found on paper are four defects that never reached seven parallel worktrees.
Lanes ran in dependency order — A and B first, then C, then D, then E and F — with one extra lane opened mid-session for work nobody had planned. Every decision, deviation and ruling went into a single running ledger, alongside 58 per-task brief, report and review files. That ledger is what makes a 37-agent afternoon auditable afterwards instead of merely fast.
Two bugs that green tests could not see
The heading that lied. Headings in the generated PDF came out spaced like Sum m ar y Rep or t. All 1,374 tests at that moment were green, because the tests checked the text content and the text content was correct. A reviewer opened the rendered PDF rather than the diff, then traced the PDF library's font embedder: it was substituting glyphs that had no entry in the font's width table, so the renderer laid them out with wrong advance widths. The fix was to switch the embedder to subsetting. It also cured a separate byte-level determinism drift — one root cause, two symptoms.
The same class of bug came back through a second door in another document: a glyph inserted by the font's contextual-alternates feature had no width entry either, and left a visible gap mid-word. It was fixed there first, then the same fix was applied to the main engine, with a guard test that asserts both directions so neither path can regress quietly.
The cache that lied. Editing an individual answer changed the document but not the signature used as its cache key, so the system happily served the previous PDF. This one was proven, not argued: reproduced live against a local stack, root-caused to the signature input, fixed in one line. The new tests were then proven non-vacuous the only way that counts — revert the fix, confirm exactly those tests fail, restore it.
What the review seats bought
Two moments justify the cost of running a reviewer for every implementer.
An implementer deviated from its brief and defended the deviation with "the client needs this field." The reviewer read the server source, showed the field was never read anywhere, and the deviation was reverted. Elsewhere, a reviewer independently reproduced the font substitution with a separate font toolkit and recomputed the engine's version hash from scratch rather than trusting the implementer's number.
Nine fix rounds ran across the session and every one closed in a single round. Reviewers that find real defects and implementers that fix them first time are what keep a fan-out from becoming a swarm of half-finished branches.
Rulings, not stalls
Twenty-two decisions were written down as rulings, each with an explicit "cost if wrong" line. Recording the cost is what stops a coordinator from either rubber-stamping or freezing.
One example: a question about how far a production backfill should reach was settled by a read-only listing of the production storage bucket, which showed every stored object already matched the modern naming scheme. Question closed in minutes, with evidence, and no lane sat idle waiting for a human.
What it cost
Basis, because a cost figure without one is unreadable: usage records deduplicated by message id, counting cache-creation plus fresh input and output tokens, split 85/15 between input and output, priced at public API list rates. The lead model has no published rate, so it is priced at twice the Opus rate and labelled an estimate.
| Model | Tokens (dedup'd) | Cost |
|---|---|---|
| Opus | ≈4.46M | ≈$36 |
| Sonnet | ≈1.51M | ≈$7 |
| Haiku | ≈0.13M | ≈$0.20 |
| Lead model | ≈0.36M | ≈$6 (estimate — rate assumed) |
| Total | ≈6.5M | ≈$49 |
Counted separately, and deliberately not folded into that total: about 365M tokens were served from the prompt cache. Cache reads are billed at a fraction of fresh input, and they are the reason this shape is affordable at all. Thirty-seven agents each re-reading the same plan, contract and ledger at full input price would be a different conversation.
Lessons, each with an event behind it
- A green suite proves the code you wrote, not the artifact you ship. Both real bugs lived where the tests did not look — in a rendered document and in a cache key. The reviewer that opened the PDF found what 1,374 passing tests could not.
- A test that has never failed proves nothing. Reverting the fix to watch the new tests fail took two minutes and converted a claim into evidence.
- Fix the class, not the instance. The second font bug was a different glyph in a different document, and the guard test now asserts both directions.
- A reviewer with no memory of writing the code is the cheapest auditor available. It cost a few dollars per lane and it overturned an implementer's confident, wrong justification.
- Report the branch you can point at. Test and file counts differ per worktree and per hour. 1,341 → 1,439 is the integration branch at the time of writing; an earlier draft quoted a mid-session snapshot, and naming the branch and the moment is the difference between a measurement and a boast.
Ship state
Built and verified on an integration branch, with the full suite green after each of seven merges. Not merged to main. Not deployed. The close-out task is implemented and awaiting review, and the production backfill waits on the owner's go. The afternoon bought a verified branch and an audit trail — not a release.


