I gave six frontier AI models the same six coding problems, stripped every answer of its author, and then made the models grade each other. No model was allowed to score itself. In this test Opus 5 led every one of the six domains, the field behind it is tight, and because nobody scored themselves, none of it is self-flattery. It is six tasks and one run, so read it as a signal about these tasks rather than a league table.
Opus 5 led all six domains with a mean peer score of 8.90 / 10. GPT Sol is the strongest runner-up on most language domains but weak on Go. Kimi k3 is a surprise on databases. Grok 4.5 is dragged down by a real frontend race condition and a weak Go answer. Fable 5 and Opus 4.7 trail on raw code quality.
1. The standings
I ran two scoring formats. A per-domain pass, where six models scored every answer from 0 to 10 in each of six domains, and an earlier holistic pass, where five models gave a single 0 to 100 score per answer. The holistic pass predates Opus 4.7 joining the field and therefore covers five of the six models. Where they overlap, the two formats produce the same ordering, which is a useful check that the result is not an artefact of one scoring shape.
Overall ranking: mean peer score, per-domain pass
Bar length is proportional to the mean peer score on a 0–10 scale. Every score is the average of five blind peer ratings.
2. How the benchmark works
My design goal was to remove the two biggest sources of bias in any "which model is best" comparison: a single opinionated judge, and self-scoring. Four rules did the work.
- Blind. Every answer was stripped of its model name and relabelled "Answer 1…N" before any judge saw it.
- Peer jury. Each of the six models graded the other five. Nobody grades themselves, so no model can inflate its own score.
- Per-domain. Instead of one blurry overall number, judges scored each answer separately in every one of the six domains.
- Fresh sessions. Every answer came from a clean session with no memory, so no model had prior context or a warm-up advantage.
Each cell in the heatmap below is therefore the mean of five independent, blind peer scores. Five competitors who cannot see the labels converging on the same answer is a reasonable check against a single judge's taste. It is not a correctness proof: no answer here was compiled, unit-tested or reviewed by a human expert.
3. The six tasks
I chose tasks small enough to answer concisely but discriminating enough to separate strong engineers from merely fluent ones. Each one has a trap in it.
| # | Task | What it really tests |
|---|---|---|
| 1 | Thread-safe generic LruCache<K,V> with O(1) get and put | Rust ownership without Rc/RefCell, interior mutability |
| 2 | Go worker pool with graceful shutdown and per-job recover | Goroutines, channels, context, deadlock avoidance |
| 3 | Each customer's second-most-recent order | Window functions, tie-breaking, index design |
| 4 | Find and fix a bug in dedup_sorted | Close reading, off-by-one errors, O(n²) awareness |
| 5 | Svelte 5 debounced autocomplete, the Next.js equivalent, and a UX call | Runes, race handling, ARIA, design judgement |
| 6 | Reliably ship 10,000 XML files a day to an external SFTP endpoint | Idempotency, retries, reconciliation |
The Rust domain aggregates tasks 1 and 4. Svelte, Design and Next.js are all extracted from task 5. Task 6 is a systems-architecture question that informed the model profiles but is not one of the six scored language domains.
4. The heatmap
This is the headline visual. Green is good, red is not, and a star marks the best answer in each column.
| Model | Rust | Go | Postgres | Svelte | Design | Next.js | Mean |
|---|---|---|---|---|---|---|---|
| 1 Opus 5 claude-opus-5 | 9.0 ★ | 9.0 ★ | 9.6 ★ | 8.6 ★ | 9.0 ★ | 8.2 ★ | 8.90 |
| 2 GPT Sol gpt-5.6-sol | 8.6 | 6.6 | 8.6 | 8.2 | 7.6 | 6.8 | 7.73 |
| 3 Kimi k3 kimi-code/k3 | 8.0 | 7.6 | 9.2 | 6.8 | 6.8 | 7.4 | 7.63 |
| 4 Grok 4.5 grok-4.5 | 8.2 | 5.8 | 8.8 | 6.6 | 7.0 | 7.0 | 7.23 |
| 5 Fable 5 claude-fable-5 | 7.6 | 7.0 | 8.6 | 5.6 | 6.4 | 7.4 | 7.10 |
| 6 Opus 4.7 claude-opus-4-7 | 7.8 | 7.4 | 8.6 | 5.6 | 5.4 | 7.2 | 7.00 |
5. Domain by domain
Rust: Opus 5 (9.0), then GPT Sol (8.6) and Grok (8.2)
Every model reached the same correct architecture for the LRU cache: a HashMap<K, usize> pointing into an index-based doubly-linked list inside a Vec, guarded by a single Mutex. Using array indices instead of pointers sidesteps the borrow checker entirely, with no Rc<RefCell<…>> and no unsafe. The separation came from polish. Opus 5 and Kimi used a leaner NIL sentinel index; the others wrapped nodes in Option.
On the bug fix, the whole field spotted the classic error: after v.remove(i) the next element shifts into slot i, but i += 1 skips it. Only Opus 5 and Grok also supplied the O(n) two-pointer rewrite instead of leaving an O(n²) remove inside a loop.
The correct minimal fix is simply this: only advance i when nothing was removed.
Go: Opus 5 (9.0), Kimi (7.6), Opus 4.7 (7.4)
This is the domain that spread the field most, and the discriminator is subtle. When a worker sends its result, is that send guarded against context cancellation? Opus 5 and Kimi wrapped it in a select { case results <- r: case <-ctx.Done(): return }, so a cancelled pool cannot deadlock on a consumer that has stopped reading. GPT Sol (6.6) and Grok (5.8) sent unguarded, which is a goroutine-leak risk on shutdown.
Grok's answer was the most elegant on the surface, a fully generic RunPool[T,R], but its Job.Run did not take a context, so mid-job cancellation is impossible. The peers penalised it hard, and they were right to.
Postgres: Opus 5 (9.6), Kimi (9.2), Grok (8.8)
The strongest domain across the board. Everyone used ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC, id DESC) filtered to rn = 2, with the id as a deterministic tie-breaker and a matching composite index. Everyone correctly explained why RANK() or DENSE_RANK() would break on duplicate timestamps: two rows tie at rank 1, nobody gets rank 2, and the customer disappears from the result. Opus 5 edged ahead with a LATERAL … OFFSET 1 LIMIT 1 alternative, while Kimi and GPT Sol added an INCLUDE (amount) covering index.
Svelte: Opus 5 (8.6), GPT Sol (8.2), then a cliff
The frontend task exposed the biggest quality gap in the whole benchmark. Opus 5 was the only answer with all three of: an AbortController to cancel in-flight requests, an aria-live status region, and an SSR-safe generated id, all driven reactively from a single $effect. GPT Sol was close, adding a "committed" state so the component does not re-search after a selection.
Below those two it drops off sharply. Grok (6.6) shipped a real stale-response race: no abort and no sequence guard, so a slow older request can overwrite a newer one. Kimi avoided the race with a sequence counter but was the least runes-idiomatic. Fable 5 and Opus 4.7 (both 5.6) were judged the shallowest.
Design and UX: Opus 5 (9.0), GPT Sol (7.6), Grok (7.0)
Design here means deliberate interaction choices, not decoration. Opus 5 stood out clearly: arrow keys wrap, aria-activedescendant tracks the highlighted option without moving DOM focus so keyboard users can keep typing, and, the thoughtful part, pressing Enter with nothing highlighted submits the free text rather than forcing a dropdown selection. Fast users who already know what they want never have to wait on the network.
Next.js: Opus 5 (8.2), Kimi and Fable (7.4)
The tightest domain. Everyone described the same server-component shell with a client island, fetching through a Route Handler or Server Action to keep database clients and API keys on the server. Opus 5 and Kimi added the extra detail that earns the point: caching frequent queries with unstable_cache or revalidate, and wrapping the island in <Suspense> so the rest of the page streams.
6. The holistic peer jury
Before the per-domain pass, an earlier run had five models grade each other with a single 0 to 100 score. Opus 4.7 was added to the field later and does not appear here. Among the five it covers, it reached the same ordering as the per-domain pass. The matrix below shows every judge's verdict, and the diagonal is blank because no model judges itself, which is why each answer carries four ratings rather than five.
| Judge ↓ / Judged → | Opus 5 | GPT Sol | Kimi k3 | Grok 4.5 | Fable 5 |
|---|---|---|---|---|---|
| Opus 5 | , | 88 | 83 | 78 | 72 |
| GPT Sol | 91 | , | 83 | 76 | 70 |
| Kimi k3 | 92 | 85 | , | 75 | 69 |
| Grok 4.5 | 91 | 85 | 77 | , | 66 |
| Fable 5 | 92 | 85 | 78 | 68 | , |
| Mean | 91.5 | 85.8 | 80.3 | 74.3 | 69.3 |
Opus 5 drew 91 or 92 from all four peers who scored it. The jury also stayed honest toward the model that orchestrated the benchmark: Fable 5 was voted last and got no home advantage.
7. Model profiles
Opus 5 Winner · 8.90
Wins every domain and is unanimously top in the holistic jury. It consistently supplied the extra that others left out: a threaded test in Rust, a LATERAL alternative in SQL, the O(n) rewrite in the bug fix, abort plus aria-live in the frontend, context-guarded channel sends in Go.
- No weak domain; top or joint-top everywhere
- Robustness and completeness, not just correctness
- Only real nit:
cap=0panics viaassert - Marginally verbose
GPT Sol 2nd · 7.73
The strongest runner-up on the language domains. Best of the rest on Rust, Svelte and Design, and it gave the deepest systems-architecture answer, checking a remote checksum before re-sending on an ambiguous timeout. It also has the best API taste: put returns the old value, poison-lock handling, debug.Stack() in the panic path.
- Polished Rust, covering index, thoughtful edge cases
- Weak on Go (unguarded send); autocomplete resets the list on each keystroke
Kimi k3 3rd · 7.63
The database and backend specialist. Runner-up on Postgres (9.2), solid context-guarded Go, and the most pragmatic architecture answer, including a sizing note that 10,000 files a day is roughly seven per minute and therefore trivial for a single worker. Its frontend was race-safe via a sequence counter.
- Excellent Postgres and backend work; robust shutdown
- Least runes-idiomatic frontend; hardcoded ids; thinner ARIA
Grok 4.5 4th · 7.23
Elegant where it is strong, fragile where it is not. It produced the most beautiful Go API, a fully generic RunPool[T,R], and a complete bug fix with a threaded Rust test. But a genuine stale-response race in the frontend and a Go job signature with no context sank its average.
- Elegant generics; strong Rust and Postgres
- Weakest Go score (5.8); real frontend race bug
Fable 5 5th · 7.10
Correct on Rust, SQL and the bug fix, with a clean slab arena, but the shortest answer overall and the most missed details in frontend and Go: no abort or sequence guard, no fetch error handling, no context passed to the job function. Notably, this was also the model that orchestrated the benchmark, and it was given no leniency by its peers.
- Correct fundamentals; concise
- Shallowest frontend; Go misses context propagation
Opus 4.7 6th · 7.00
The previous Opus generation, and it shows. Competent and correct on the backend domains, with Rust, Go and Postgres all between 7.4 and 8.6, but clearly behind the 5-series on frontend and design (Svelte 5.6, Design 5.4). It is a clean illustration of how much the generation jump to Opus 5 delivered on exactly these tasks.
- Solid, correct backend fundamentals
- Last overall; weak Svelte and Design
8. Practical takeaways
The guidance falls straight out of the heatmap.
- Default coder, any language: Opus 5.
- Independent second opinion: GPT Sol, but not for concurrency-critical Go.
- Database and SQL work: Kimi k3 is genuinely strong here.
- Be careful with Grok on concurrency-critical Go and on unguarded frontend fetches.
- Generation gap: the jump from Opus 4.7 to Opus 5 is large, and it is largest on frontend and design specifically.
9. Conclusion
The signal here is unusually clean because it comes from competitors grading each other blind. On these six tasks, Opus 5 led every domain, and every peer independently put it first. That is a strong result for this test, not a universal ranking.
Behind it, the picture is nuanced rather than a straight line. Pick GPT Sol for polish and architecture, Kimi k3 for databases, and be cautious with Grok on Go and on frontend races. The two models that trailed, Fable 5 and Opus 4.7, lose specifically on raw code quality on these tasks rather than on presentation.
One footnote worth stating plainly: Fable 5, which ran the harness, finished last in the holistic pass. The peers did not spare the orchestrator.
10. Method and reproducibility
An identical six-task prompt was sent to six models, each in a fresh session with no memory. Every model then received the other five answers, anonymised as "Answer 1–5", and scored them 0–10 per domain in the per-domain pass, or 0–100 overall in the holistic pass with five models. Each reported cell is the mean of the peer scores an answer received: five ratings per answer in the per-domain pass, four in the holistic pass. Judges could not see which answer belonged to whom, and no model scored itself. The Rust domain aggregates the LRU-cache and bug-fix tasks; Svelte, Design and Next.js are drawn from the single frontend task.
Caveats. This is a small six-task probe, not a statistically exhaustive suite, so treat sub-tenth-of-a-point gaps in the middle of the field as ties. Scores reflect a single run per model, and frontier models are non-deterministic, so repeat runs would vary somewhat. The domains were chosen to be discriminating, not comprehensive. Model names are the identifiers reported by each provider's CLI at test time, 25 July 2026.
11. Frequently asked questions
Which AI model is best at coding in this benchmark?
Opus 5. It won all six domains, Rust, Go, Postgres, Svelte, Design and Next.js, with a mean blind peer score of 8.90 out of 10, and it was rated 91–92 out of 100 by every single peer judge in the separate holistic pass.
How were the models scored?
By each other. Every answer was anonymised and each model graded the other five, on a 0–10 scale per domain. No model was allowed to grade itself, so no score contains self-flattery. Each published figure is the mean of five independent blind ratings.
Which model is best for database work?
Postgres was the strongest domain overall. Opus 5 led at 9.6, but Kimi k3 was a close second at 9.2 and is genuinely excellent at SQL and backend work relative to its overall ranking of third.
Which models had real bugs in their answers?
Grok 4.5 shipped a stale-response race condition in the Svelte autocomplete, with no AbortController and no sequence guard, and its Go job signature took no context, making mid-job cancellation impossible. GPT Sol and Grok both sent worker results on an unguarded channel, which risks a goroutine leak on shutdown.
How big is the gap between Opus 4.7 and Opus 5?
Large, and concentrated in frontend work. On backend domains Opus 4.7 scores between 7.4 and 8.6, which is respectable, but it falls to 5.6 on Svelte and 5.4 on Design, against 8.6 and 9.0 for Opus 5.
Is this benchmark statistically definitive?
No, and it is not presented as such. It is a six-task probe with a single run per model. The Opus 5 sweep is consistent across both scoring formats, but differences of a tenth of a point in the middle of the field should be read as ties.