On the same two tasks, Nio v0.1.236 finishes a task for $0.23 on average, down from $0.47, and every run still passes all of its checks. Each run ends only after an independent review and a passing build (“Nio CI: passed”). Nothing stops early to look cheap.
Costs are list prices, including prompt-cache reads and writes.
| Task | Checks passed | Cost per run | Model requests | Time |
|---|---|---|---|---|
| Fix a broken website (fix-site) | 8/8 in 3 of 3 → 8/8 in 3 of 3 | $0.76 → $0.36 | 25 → 12 | 288 s → 227 s |
| Build an app from a spec (build-app) | 11/11 in 3 of 3 → 11/11 in 3 of 3 | $0.18 → $0.11 | 13 → 7 | 124 s → 94 s |
| Per finished task | 6/6 → 6/6 | $0.47 → $0.23 (−51%) |
Every run (before and after) passed on its first turn. Every v0.1.236 run ended with “Nio CI: passed”; one earlier run had ended before its CI gate.
Single runs, v0.1.236:
| Task | Run 1 | Run 2 | Run 3 |
|---|---|---|---|
| fix-site | $0.370 · 12 requests | $0.360 · 13 requests | $0.354 · 12 requests |
| build-app | $0.132 · 7 requests | $0.093 · 7 requests | $0.094 · 6 requests |
No raw-model arm ran in this study. In the October 12 run of the same harness (v0.1.226), a direct Claude Sonnet 4.6 call did not fix the website in three turns ($0.66; checks 5/8, 0/8, 7/8), while Nio fixed it on the first turn for $0.64. Nio now does that task for $0.36.
For a small app built from scratch, a direct call is still cheaper: about $0.07 against Nio’s $0.11. Nio’s extra cost there pays for running the build and an independent review.
We read all 115 model replies from the “before” run. Nearly half of the fix-site requests did no useful work:
status=200 nav=1 were
redacted as if they were secrets, so the model re-ran them to read the
numbers. Plain counts and true/false flags now stay readable; settings
values are still redacted.localhost runs from the shell
instead of failing; Nio restarts a Next.js server after a build itself; and
a file whose markup sits only in a string (an RSS helper) is no longer
treated as a page that needs restyling.Approvals are unchanged: commands that delete files or stop programs by name still ask first. A set of 177 shell commands written by models in these benchmarks is checked offline on every build.