Field report · November 2026
Who should plan, and who should build?
One expensive model wrote a detailed coding plan. Cheaper models from four vendors then built it, 29 times in all. Then we hid a bug in the plan to see who would notice.
- Trials
- 3
- Builds
- 29
- Vendors
- 4
- Total spent
- $25.51
01 · The question
Can a cheap model build what an expensive model plans?
AI models that write code come in price tiers. The expensive ones think longer; the cheap ones are fast. One way to use both: let an expensive model write a plan so detailed that a cheap model only has to follow it.
These trials test that idea on real code for Navo, a file manager for Windows. Three roles, three questions: who should write the plan, who should check it, and who should build it? And does a plan written at Opus's highest effort, xhigh, pay for itself over the cheaper high?
- 1Plan
Who writes a plan detailed enough to follow blindly?
- 2Check
Who reads the plan and catches its mistakes?
- 3Build
Who turns the plan into working code for the least money?
02 · The method
One plan, two traps: a good builder treats them differently.
Same task, same plan, many builders. Each builder got the identical plan and worked alone on a fresh copy of the code. Then we checked what it delivered: did it build, did the tests pass, did it follow the plan?
In trials 1 and 2 the plan held two traps. One is a real bug: a safety hole. The other is a false alarm: a number in the plan that is simply wrong and does no harm. A good builder stops on the first and carries on past the second.
- 1Plan
Opus writes a step-by-step plan: files, code, tests.
- 2Copy
Each builder gets the same plan and a fresh copy of the code.
- 3Build
The builder works alone. It may stop and report a problem.
- 4Judge
We check the result, the price, the time and the tokens.
The two traps
T1, real bug
The link bug
The plan opens a .gitignore file in a way that follows links. A link could point anywhere on the disk. The plan's own rule D5 forbids it.
T2, false alarm
The wrong test count
The plan says exactly 7 tests must fail. The test runner stops at the first failure, so the count never matches. Harmless.
277Step 5a: new file crates/navo-fs/src/find/walk/gitignore.rs
354Free functions in the same file:
rust357pub(super) fn is_gitignore_file(entry: &FsEntry) -> bool {358 entry.kind == EntryKind::File && entry.name.as_str() == Some(GITIGNORE)359}360 361fn load(folder: &Path) -> Option<Gitignore> {362 let mut bytes = Vec::new();363 File::open(folder.join(GITIGNORE))T1364 .and_then(|file| file.take(RULES_LIMIT).read_to_end(&mut bytes))365 .ok()?;366 let lossy = String::from_utf8_lossy(&bytes);367 let text = lossy.strip_prefix('\u{feff}').unwrap_or(&lossy);368 let mut builder = GitignoreBuilder::new(folder);26D5: only a regular file named exactly
The plan's own rule, earlier on.gitignoreis read (kindFile, not a link).
277### Step 5a: new file `crates/navo-fs/src/find/walk/gitignore.rs`...354Free functions in the same file:356```rust357pub(super) fn is_gitignore_file(entry: &FsEntry) -> bool {358 entry.kind == EntryKind::File && entry.name.as_str() == Some(GITIGNORE)359}360 361fn load(folder: &Path) -> Option<Gitignore> {362 let mut bytes = Vec::new();363 File::open(folder.join(GITIGNORE))T1364 .and_then(|file| file.take(RULES_LIMIT).read_to_end(&mut bytes))365 .ok()?;366 let lossy = String::from_utf8_lossy(&bytes);367 let text = lossy.strip_prefix('\u{feff}').unwrap_or(&lossy);368 let mut builder = GitignoreBuilder::new(folder);...26- **D5:** only a regular file named exactly `.gitignore` is read (kind `File`, not a link).
03 · Trial 1
Only one build stopped on the bug, and it was the cheapest.
Task: Find in files honours .gitignore: ignored files and folders are skipped; the git:off token searches them too.
Opus wrote the plan twice: once at high effort, once at xhigh. The xhigh plan carried both traps. Nine builds followed, split across the two plans.
Opus high plan
$2.08
10.2 min · 4.6 M tokens · 483-line plan
Plan score 3/5
Opus xhigh plan
$3.19
18.9 min · 7.7 M tokens · 549-line plan; one link bug
Plan score 4/5
Price per build, log scale
- Stopped on the real bug
- Finished and flagged a plan bug
- Finished
- Finished, but copied the bug
- Ran out of budget
high plan
xhigh plan
Builds on the Opus high plan, no traps5 builds
-
Sonnet medium
3.4/5
Finished
Finished, but skipped the tests-first step.
Price$0.14Time1.9 minTokens232 k -
Terra high
3.4/5
Finished
Followed the plan as written.
Price$0.15Time4.6 minTokens1.5 M -
Opus low
3.4/5
Finished
Followed the plan as written.
Price$0.35Time2.7 minTokens289 k -
Opus medium
Not scored
Finished
Finished; touched exactly the planned files.
Price$0.43Time7.8 minTokens707 k -
Haiku max
Not scored
Ran out of budget
Ran out of budget: wrote the tests only.
Price$0.05Time5.1 minTokens1.4 M
Builds on the Opus xhigh plan, traps inside4 builds
-
Terra high
Not scored
Stopped on the real bug
Stopped on the real bug before editing, as the plan's stop rule asked. Correct.
A follow-up run fixed it: $0.13, 1.4 M tokens.
Price$0.03Timen/aTokens82 k -
Haiku max
4/5
Finished and flagged a plan bug
Finished, and flagged the link bug in its report (but still wrote it). Slow.
Price$0.25Time10.0 minTokens4.0 M -
Sonnet medium
4/5
Finished, but copied the bug
Finished, but copied the link bug without a word.
Price$0.26Time5.1 minTokens554 k -
Opus low
4/5
Finished, but copied the bug
Finished, but copied the link bug without a word.
Price$0.33Time4.3 minTokens331 k
Builders on the same plan wrote the same code.
Verdict after this trial
Blind Opus review: the plan decides the code — builders on one plan wrote identical production code. The xhigh plan wins (read cap, no extra open per folder; one link bug to fix); the high plan has design flaws (uncapped read, an open per folder, rules lost after a bad byte). Best value: Opus xhigh plan + Sonnet medium build ($3.45). Only Terra caught the plan bug, at about the price of Sonnet ($0.03–0.15 per run at GPT list prices, cached input $0.05/M).
04 · Trial 2
Nine out of ten got it wrong, in two opposite ways.
Task: Find in files honours .gitignore: ignored files and folders are skipped; the git:off token searches them too.
This is where the builder matters. Same task and the same Opus xhigh plan as trial 1, with both traps left in; only the builder changes. Ten models from three vendors got the identical plan and the same instructions.
Price per build, log scale
- Stopped on the real bug
- Finished, but copied the bug
- Stopped for nothing
xhigh plan
Builds on the Opus xhigh plan, traps inside10 builds
-
Terra xhigh
4/5
Stopped on the real bug
Read the whole plan first and stopped on the real bug in 24 s, before writing code. Correct.
Price$0.035Time24 sTokens84 k -
DeepSeek (off-peak)
3/5
Finished, but copied the bug
Finished, but copied the link bug without a word; reran the tests to step past the false alarm.
Price$0.019Time7.5 minTokens808 k -
DeepSeek (peak)
3/5
Finished, but copied the bug
Finished, but copied the link bug without a word; stepped past the false alarm.
Price$0.06Time10.7 minTokens1.5 M -
Sonnet medium
3/5
Finished, but copied the bug
Finished, but copied the link bug; went past the false alarm without reporting it.
Price$0.15Time8.0 minTokens301 k -
Sonnet high
3/5
Finished, but copied the bug
Finished, but copied the link bug; did not notice the false alarm either.
Price$0.17Time8.8 minTokens351 k -
Opus medium
3/5
Finished, but copied the bug
Finished, but copied the link bug; reran tests with --no-fail-fast to step past the false alarm.
Price$0.40Time7.8 minTokens386 k -
Luna max
2/5
Stopped for nothing
Stopped at the false alarm (wrong test count) and delivered nothing.
Price$0.02Time9.2 minTokens849 k -
Terra high
2/5
Stopped for nothing
Stopped at the false alarm (wrong test count) and delivered nothing.
Price$0.13Time5.7 minTokens1.3 M -
Sol low
2/5
Stopped for nothing
Stopped at the false alarm (wrong test count) and delivered nothing.
Price$0.25Time3.5 minTokens1.1 M -
Sol medium
2/5
Stopped for nothing
Stopped at the false alarm (wrong test count) and delivered nothing.
Price$0.27Time4.3 minTokens1.3 M
205Step 3: walk tests first (7 must fail, 2 must pass)
265T2Run cargo nextest run -p navo-fs find::tests::gitignore. On Linux it must report 9 tests: 7 failed (1, 3, 4, 5, 7, 8, 9) and 2 passed (2, 6). Any other result means stop and report.
205### Step 3: walk tests first (7 must fail, 2 must pass)...265Run `cargo nextest run -p navo-fs find::tests::gitignore`. On Linux it must report266**9 tests: 7 failed (1, 3, 4, 5, 7, 8, 9) and 2 passed (2, 6)**. Any other result means stop and report.T2
Only one model out of ten could tell the real bug from the false alarm.
Verdict after this trial
Every GPT run stopped on a plan trap; only Terra xhigh stopped on the real bug. Claude and DeepSeek finished the atom but copied the link bug. DeepSeek at peak was the cheapest finished build ($0.06). The five finished builds are the same code, down to one trailing comma: the plan held the full code, so a blind code review had nothing to compare. Scores: 3 = works but carries the link bug, 4 = stopped on the real bug, 2 = stopped on a false alarm.
05 · Trial 3
The cheaper plan gave the better code.
Real production code for Navo: the part of folder sync that plans which files to copy, keep and recycle. No traps were planted this time. The question is simpler: does the Opus xhigh plan, at 73% more, give better code?
Opus high and Opus xhigh each wrote a plan. Then five builders implemented each one.
Opus high plan
$3.14
14.7 min · 6.5 M tokens · 279-line plan, 16 decisions, 42 tests
Plan score 4/5
Opus xhigh plan
$5.44
25.7 min · 14.6 M tokens · 300-line plan, 15 decisions, 41 tests
Plan score 2/5
Price per build, log scale
- Finished and flagged a plan bug
- Finished
- Stopped for nothing
high plan
xhigh plan
Builds on the Opus high plan5 builds
-
Opus medium
4/5
Finished and flagged a plan bug
Passed all 4 checks. Spotted that one step contradicted the plan's own rule (a missing date counted as 'same', which could skip a changed file) and followed the safe rule.
Price$1.16Time7.7 minTokens933 k -
DeepSeek (off-peak)
3.5/5
Finished
Passed all 4 checks. Followed the plan to the letter; reported no plan problems.
Price$0.093Time15.0 minTokens7.4 M -
Sonnet medium
4/5
Finished
Passed all 4 checks. Reported no plan problems.
Price$0.62Time8.6 minTokens1.5 M -
Gemini high
3/5
Finished
Passed all 4 checks. Reported no plan problems; slowest and priciest builder.
Price$1.77Time35.9 minTokens14.7 M -
Terra xhigh
2/5
Stopped for nothing
Stopped early: a compile error in its own test made the first step miss the planned count, and it treated that as a stop rule. Delivered no code.
Price$0.09Time2.8 minTokens431 k
Builds on the Opus xhigh plan5 builds
-
Terra xhigh
3/5
Finished and flagged a plan bug
Passed all checks. Found and reported a plan bug (folder roots compared with case on Windows) and fixed it safely.
Price$0.65Time13.9 minTokens8.4 M -
Opus medium
3/5
Finished and flagged a plan bug
Passed all checks. Found and fixed a serious plan bug: a kept folder that exists on one side only would have blocked the whole sync.
Price$0.80Time7.6 minTokens940 k -
DeepSeek (off-peak)
3/5
Finished
Passed all checks. Quietly used the correct folder comparison, so it avoided the plan's case bug, but did not report that the plan was wrong.
Price$0.13Time26.9 minTokens12.5 M -
Sonnet medium
2/5
Finished
Passed all checks. Had to move code between files because the plan's split broke the file-size limit; reported no plan bugs.
Price$0.58Time9.7 minTokens1.5 M -
Gemini high
2/5
Finished
Passed all checks. Moved code for the size limit; reported no plan problems; slowest and priciest builder.
Price$2.14Time41.2 minTokens16.6 M
Plan gaps reach every build, so catch them before building.
Verdict after this trial
The high plan beat the xhigh plan. The xhigh plan put recycle steps inside the copy, which the safety net refuses, and dropped conflict choices. Best builds: Opus medium and Sonnet medium on the high plan (4/5); Sonnet is half the price. DeepSeek off-peak scored 3.5 for $0.09. Two xhigh builds compared folder roots with plain equality, a real bug on Windows. All high-plan builds copied three plan gaps: no check for nested folders, new files take the other side's folder spelling, and the step limit is checked too late.
06 · What we learned
Plan with Opus high, check the plan, then build cheap.
Across three trials the same picture keeps coming back: the plan decides the code. Here is the recipe we use now.
The recipe
- 1
Plan
Opus high
About $3 per plan, 60% of xhigh. A review closes the gaps either way.
- 2
Check the plan
Terra xhigh + a senior review
Plan gaps reach every build, so catch them before building.
- 3
Build
Sonnet medium, or DeepSeek off-peak
Sonnet scored best at $0.6; DeepSeek nearly as good at $0.1.
How we will work from now on
Four steps, in order
- 1
Plan
Opus high
Writes the step-by-step plan.
- 2
Check the plan
Terra xhigh
Reads the plan before anyone builds. Opus reviews instead when the code can lose data.
- 3
Build
Sonnet medium
For most work. DeepSeek off-peak for cheap backend work.
- 4
Review the code
Sol high
Reviews every finished build before it merges. Data-safety code also gets an Opus senior review.
Plans decide the code, so the money goes into the plan and two cheap checks, not into the builder.
Four lessons
- 01
The plan decides the code
Same plan, same code. Plan mistakes end up in every build.
- 02
Opus high is the better buy for plans
xhigh won once, high won once, and high costs about 60% as much. A plan review closes the gaps either way.
- 03
GPT stops on every warning
Real bug or false alarm, it stops. Only Terra xhigh tells them apart.
- 04
Claude and DeepSeek always finish
But they copy bugs from the plan.
Based on 3 trials: two on find in files, one on folder sync.
Every builder, every run
- Haiku max Finishes and flags bugs T1T1 avg 4/5 from $0.05
- Opus medium Finishes and flags bugs T1T2T3T3 avg 3.3/5 from $0.40
- Terra high Catches bugs, sometimes stops for nothing T1T1T2 avg 2.7/5 from $0.03
- Terra xhigh Catches bugs, sometimes stops for nothing T2T3T3 avg 3/5 from $0.035
- Gemini high Finishes T3T3 avg 2.5/5 from $1.77
- DeepSeek (off-peak) Finishes, copies bugs T2T3T3 avg 3.2/5 from $0.019
- DeepSeek (peak) Finishes, copies bugs T2 avg 3/5 from $0.06
- Sonnet medium Finishes, copies bugs T1T1T2T3T3 avg 3.3/5 from $0.14
- Sonnet high Finishes, copies bugs T2 avg 3/5 from $0.17
- Opus low Finishes, copies bugs T1T1 avg 3.7/5 from $0.33
- Luna max Stops for false alarms T2 avg 2/5 from $0.02
- Sol low Stops for false alarms T2 avg 2/5 from $0.25
- Sol medium Stops for false alarms T2 avg 2/5 from $0.27