Field reports

What changed after the agent checked Dorsal.

3 real runs. Each one keeps the evidence it rests on.

01 · Keelo.ai · Decision verification

Claude Code reversed its own recommendation and found a third option.

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.mdread-only
# 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).
Reported by the founder/CEO of Keelo.ai3m 44s · shipped as a production decision

02 · Adversarial audit

Claude Code's own audit proposed seven fixes that would have failed.

Question

Could an extensive, maximum-effort audit by Claude Code's latest model be trusted?

What changed

Dorsal checked its 21 proposed fixes against about 120 external sources. Seven would fail or backfire.

Result

Five would have failed silently. The unsafe fixes were rejected before implementation.
“It is the only tool that knows the harness will silently lie to you. Worth keeping. Never worth trusting unsupervised.”
Experienced AI coding founder
Inspect the evidenceOpen

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.

  • A proposed HALT clause would intensify the loop it was meant to stop.
  • Removing prose after adding hooks could leave no working gate for sub-agent commands.
  • A Git digest could certify code that had never been tested.

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

A PDF rewrite looked simpler. Three real files killed it.

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.

claude code
dorsal what if we convert the Excel into a PDF and the PDF parser takes over?
WorkbookSheetPDF result
VEJA222 × 5678 pages · 24 without text
Nike647 × 371,591 pages · 117 blank
Kith444 × 25296 pages · result inconclusive

Decision

Keep Excel as the primary path. Use rendering only as a bounded fallback.

Root cause

The model saw only 40 of 647 rows and 26 of 37 columns, and judged from that partial view.

Result

Fix the evidence window instead of adding roughly 1,591 model calls for one workbook.
Inspect the evidenceOpen

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.

Find what would improve your own work.

Run your first check

An MCP server in Claude Code. Read-only. Code, paths, and history stay on your machine.