Before · Claude Code alone
One repo per agent
Field reports
3 real runs. Each one keeps the evidence it rests on.
01 · Keelo.ai · Decision verification
Keelo builds AI agents for multiple enterprise clients, and had to decide how to lay out their repos. The agent's standing recommendation was one repo per agent. The human's instinct was a single monorepo.
Before · Claude Code alone
One repo per agent
After · with Dorsal
One repo per customer, agents inside
The decisive record was Microsoft's ADR-0032, published 2026-07-21, months after Claude Code's training cutoff.
# Decision verification: Keelo agent factory
protocol dorsal-decision-verification v1.1.0
run 6 calls, 2 rounds, 3m 44s, ~37.6k tokens
outcome reversed the agent's standing recommendation
scope no private material left the machine; the 5 queries are generic phrases
## The decision
Keelo scaffolds one build station per enterprise client and needed a repo shape for its output. The agent's prior, from the previous session, was repo-per-agent. The human's instinct was a single monorepo. That disagreement made it a clean test: a real prior to overturn.
## Every query, verbatim
getDecisionVerificationProtocol {}
getSummaries monorepo vs polyrepo tradeoffs CI tooling access control
getSummaries shared tooling drift across scaffolded repos template vendoring
getSummaries migrated to monorepo small team atomic changes ... [adversarial]
getSet 7 ids -> 7 / 7 found
getSummaries separate repository per client isolation handoff access control
getSummaries automated bot opens PRs across many repositories
## Verdict: supports_better_option
The evidence converged on one principle: the repo boundary is the ownership boundary. Consolidate inside it, split at it. For a multi-client agency that puts the boundary at the client, which is a per-client monorepo, the option neither side had named.
Decisive record: Microsoft ADR-0032, "Extract Durable Task and Azure Functions hosting into a separate repository." Accepted 2026-07-21. first_party, doc_class: adr. Published after Claude Code's training cutoff, so the agent's own knowledge did not include it. 3 of the 5 decisive records came from the adversarial query.
## The constraint it declined to answer
Client isolation came back `unknown`. Dorsal returned nothing rather than guess. A local fact settled it, and it never went to Dorsal: Keelo deploys build-on-box, and GitHub cannot scope read access per directory, so one all-agents monorepo would put a token on a client's box that could read every other client's code. That eliminated the option the field evidence most favored, and narrowed "monorepo" to "per-client monorepo."
## Bottom line
It overturned a standing recommendation on evidence, surfaced a third option the binary framing had excluded, and declined the one constraint the corpus could not cover. Written into Keelo's decision record 0095 (commit e114651).
02 · Adversarial audit
Question
What changed
Result
“It is the only tool that knows the harness will silently lie to you. Worth keeping. Never worth trusting unsupervised.”
The run used 61 Dorsal calls, 10 concurrent sub-agents, two research rounds, and about 120 distinct sources. Twenty-six adversarial agents then tried to refute the findings.
The sources and quotations survived spot checks. Claude's synthesis still introduced three false personalization claims. Dorsal supplied the external record; local probes remained necessary.
03 · Live decision test
An experienced builder proposed routing difficult Excel files through an existing PDF parser. Claude tested the idea locally and used Dorsal to check the design against current implementations.
| Workbook | Sheet | PDF result |
|---|---|---|
| VEJA | 222 × 56 | 78 pages · 24 without text |
| Nike | 647 × 37 | 1,591 pages · 117 blank |
| Kith | 444 × 25 | 296 pages · result inconclusive |
Decision
Root cause
Result
What stayed local
Three vendor workbooks, parser source, conversion output and all measurements. No workbook, code, path or customer data was sent to Dorsal.
What Dorsal received
Generalized searches about spreadsheet extraction, PDF fallbacks, layout overflow and counterevidence. Dorsal surfaced the text-first, bounded-fallback pattern; Claude tested the product-specific decision locally.
An MCP server in Claude Code. Read-only. Code, paths, and history stay on your machine.