Two real tickets, six implementers, isolated clones, a blind review and hidden tests.
Today the local lane takes on tasks that would otherwise go to the mid-tier Claude implementer. Security-critical and hard work stays with Claude.
Build a repeatable harness and deliver a first comparison on one medium and one hard task.
Qwen3.8-Flash-Next via opencode, running locally on the Mac Studio
claude --bare -p
claude --bare -p
claude --bare -p
codex exec with a ChatGPT account
codex exec with a ChatGPT account
Claude: no MCP, no hooks, no memory, no subagents. Codex: no user config, no rules, no MCP, no memory. This matches the lane's context.
Prefill on a 16k prompt (measured live)
Generation with thinking and MTP
Frontend (React/Next). Buttons the server rejects with 403 should be hidden for MEMBER and VIEWER, or disabled with a reason. Clear acceptance criteria, typical lane territory.
Backend (Express/Prisma), security. The service-account usernames should live in one constant and be blocked at registration. The traps: letter case after normalisation, invite codes, and a test that only runs with a database.
| Task | Lane | Haiku | Sonnet | Opus | Sol 6.1 | Luna 6 |
|---|---|---|---|---|---|---|
| M: Controls | Round 1 | Round 1 | Round 1 | Round 1 | Round 1 | Round 1 |
| H: Usernames | Round 1 | Round 2 | Round 3 | Round 1 | Round 2 | failed |
The hidden tests were green for everyone in every round. Differences showed up in the review and in a database test measured afterwards.
In round 1 the lane is 3.9 to 11 times slower; until acceptance on H only 1.3 to 3.9 times, because others needed fix rounds. Every step of the agent loop costs prefill plus thinking.
Local implementation (electricity not measured)
Implementation with Claude per model and task; GPT at API list price $0.007 to $0.28
per blind Opus review (medium $0.22 to $0.35, hard $0.53 to $0.90)
API cost of the scored rounds, of which $9.15 reviews; Codex via a ChatGPT subscription
Every additional round costs another review. Fewer rounds are the biggest cost lever.
--bare ignores the user settings (xhigh). The default effort: medium was sent, for the reviewer too. Proven by request capture.
Without a variant, opencode sends no effort, so the chat-template default applies (xhigh). Thinking is on, but opencode does not count the reasoning tokens.
Sol 6.1 at low, Luna 6 at medium (per the model cache, deliberately not pinned). The reasoning tokens match.
An existing database test expects 409. Measured afterwards, only the lane keeps it green. Opus, Haiku, Sol and Luna break it, and the review still accepted three of them. Sonnet changed the expectation to 400 without the approval the reviewer's suggestion required.
Luna 6 was among the fastest on M with 33 seconds, just behind Sonnet (32 s), but failed on H after three rounds. The lane was the slowest everywhere and passed both tasks in round 1.
Everyone implemented the required block. The mediums on H were almost all about line references in the repository's knowledge base, the changelog and docs statements. Luna 6 failed on exactly this three times.
The rule "lane = mid-tier implementer" is supported. One good result is not enough to relax it for security-critical tasks.