Injected orientation cut exploration before the first edit from 52 tool calls to 16 — and eliminated the sub-agent the un-mapped run spawned just to find where to work.
THE SECOND PUBLIC PROOF POINT
Selvage learns
to read the codebase.
Milestone 01 proved Selvage could run the engineering process on a greenfield task. Now we put it on a real, multi-service production-style repository and gave the orchestrator a structural map of the code. The map didn't just help — it caught a cross-service bug that a scripted hand-orchestration baseline shipped, and reached the same merged, reviewed result from a single command for about 26% less than that baseline cost to finish.
- Cross-service bug
- Caught every un-mapped run missed it
- Blocked → shipped
- $3.82 → $1.38 DB isolation cleared the block
- Orientation search
- 52 → 16 calls before first edit
- vs hand-orchestration
- ~26% less to the same merged result
A single controlled engineering experiment on one real repository — directional, not a benchmark. Cost deltas are from single runs per condition; the behavioral shifts (searches replaced by structured queries, a bug prevented, a block cleared) are the durable findings. Full honest limits below.
WHAT SHIPPED
Four improvements, each measured on the way in.
Every change below landed because a run showed it mattered — not on intuition. Same issue, same models, same frozen evaluator throughout.
A per-attempt throwaway database turned a run that thrashed to a dead stop ($3.82 spent, nothing shipped) into a clean first-attempt merge ($1.38).
Teaching the map to see mirrored routes made the implementer wire the API gateway — the exact line every earlier run, and a human reviewer, let slip.
Exposed as live tools, the index answered the model's questions during the task — it queried the graph 8 times instead of grepping. Same 6/6 quality; on that run, ~28% cheaper than the briefing-only Selvage config.
THE SETUP
One issue. One baseline. One variable at a time.
Every run implemented the same GitHub issue — persist director notifications for overdue assessments — on the same pinned commit of a real repository: four Go services behind an API gateway, a TypeScript frontend, Postgres and object storage under test. Same implementer model, same independent reviewer model (fresh session, cross-model). Everything was graded by a frozen evaluator written before any run and by the project's own build and tests against a container database.
FINDING 1 · ORIENTATION
Without a map, it searches the whole repo to begin.
We measured the work of finding where to make the change — tool calls before the first edit. The map replaces the search party.
FINDING 2 · ISOLATION
The biggest cost wasn't the model. It was a shared test database.
Three of four cycles in an early run were wasted on a shared database leaking rows between tests. We gave each verification attempt its own throwaway database, then ran it head-to-head.
| Verification database | Shared | Isolated per attempt |
|---|---|---|
| Implementation attempts | 4 | 1 |
| Outcome | Blocked, never merged | Merged, approved |
| Spend | $3.82 (wasted) | $1.38 |
The shared-database run exhausted its revision limit fighting contamination and shipped nothing. The isolated run merged on the first attempt.
FINDING 3 · THE BUG
Every un-mapped run shipped a 404.
The map fixed it.
The new endpoint lived in one service, but the API gateway mirrors every one of that service's routes as a string-literal allowlist — a runtime convention no import graph can see. Every early run added the endpoint to the service and forgot the gateway. One reviewer caught it; another approved the same omission.
FINDING 4 · ON DEMAND
Then we let it query the map
whenever it wanted.
A one-time briefing helps at the start; the model still grepped for specifics mid-task. So we exposed the map as live, read-only tools it can call during the work. It queried the graph 8 times — and stopped grepping.
THE REAL TEST · VS HAND-ORCHESTRATION
One command, or the steps
strung together by hand.
The comparison that matters isn't Selvage vs Selvage — it's Selvage vs doing the orchestration yourself. So we ran the same issue, same baseline, as a scripted stand-in for the hand-orchestrated path: the implementer, the build-and-test step, and a fresh independent reviewer invoked as separate, disconnected steps, with no autonomous glue between them — an automated simulation of that workflow, not a live human at the keyboard. We took both runs all the way to an approved, merged result. Here is what each cost to get there.
HONEST LIMITS
What this is, and what it isn't.
- 01One issue, one repository.
Single runs per condition. The direction is consistent and the behavioral shifts are unambiguous, but the cost deltas need a multi-issue repeat before we quote them as headline numbers.
- 02Recovery cycles vary independently of the map.
Autonomous verify/recover loops add attempts; comparing raw totals across arms with different attempt counts is misleading. We isolated the map's effect per attempt.
- 03The map is structural, not semantic.
It answers "does this exist, what does it export, who depends on it, who mirrors this route." It is not a search engine over meaning.
- 04Reviewer nondeterminism is real.
The same omission was caught by one reviewer and approved by another. Deeper, change-scaled review is its own line of work.
- 05The cost claim is narrow — read it precisely.
"~26% less" is finished-vs-finished on one issue in one repo, and the baseline is a scripted simulation of step-by-step orchestration — it counts model cost only, not the human time a real operator would spend. The saving came from avoiding a second review cycle on this task, not from cheaper tokens. It is a directional result, not a benchmark; a multi-issue repeat is needed before it's a headline number.