Model Lab
Synthesis
The story so far, across six profiled models and a 40-problem strategy exam apiece · updated 2026-07-05
1Roster
| Model | Size / arch | Status | Best config | Pass rate | Avg solve time |
|---|---|---|---|---|---|
| GLM-4.5-Air | Q4_K_M GGUF, ~68GB resident | profiled | strict-nothink | 9/10 | 13.5s |
| Qwen3-Coder-30B | instruct-only, no reasoning mode | profiled | strict-think | 9/10 | 6.7s |
| Qwen3.6-35B | hybrid think/nothink | profiled | strict-think | 10/10 | 111s |
| gpt-oss-120b | MoE, open-weight | profiled | strict-nothink | 10/10 | 16.2s |
| Qwen3-Coder-Next | coder-tuned successor | profiled | strict-think | 10/10 | 10.4s |
| MiniMax M2.5 | MoE, long-context | profiled | strict-nothink | 10/10 | 65.5s |
| Devstral Small | 24B dense, Q8 GGUF | profiled | strict-nothink | 8/10 | 25.2s |
| Qwen3-30B Thinking | Qwen3-30B-A3B-Thinking-2507, Q8 GGUF | profiled | minimal-nothink | 9/10 | 144s |
| Fable 5 | frontier · subscription | frontier baseline | solo one-shot+fix | n/a | n/a |
| Sonnet 5 | frontier · subscription | frontier baseline | solo one-shot+fix | n/a | n/a |
| Opus 4.8 | frontier · subscription | frontier baseline | solo one-shot+fix | n/a | n/a |
| Haiku 4.5 | frontier · subscription | frontier baseline | solo one-shot+fix | n/a | n/a |
The four frontier rows didn't sit the 40-run strategy exam — "pass rate" isn't a comparable number for them. What they did instead was the Build Benchmark, a real production-service build under the same one-shot+fix protocol the delegation tree itself uses.
2The Archetypes
Sprinter
9/10 at 6.7s average under strict-think — indistinguishable from strict-nothink because there's no thinking machinery to toggle. The full 40-run exam finished in about 8 minutes. No reasoning tokens means nothing to spiral: every run either answers fast or fails fast.
Thinker
10/10 under strict-think, the only perfect score in the lab, averaging 111s with reasoning bounded to roughly 1–5k tokens. Zero spirals across 40 runs — one run did hit the 8k cap under minimal-nothink, but strict-think never did. GLM's think mode, by contrast, spirals for 24 minutes on problems it can already solve.
Steady incumbent
9/10 at 13.5s under strict-nothink — reliable, cheap, currently deployed. Weak self-verification instincts of its own: it needs the strict prompt to stay out of its own way, and its thinking mode is effectively unbounded, burning 16k-token budgets over 24 minutes without producing code.
Generalist
10/10 at 16.2s under strict-nothink — a fourth perfect scorer, and the only local model that reasons on every single run regardless of the think/nothink suffix (all 40 runs logged had_reasoning: true). That reasoning stays cheap: 190–310 tokens average, nowhere near GLM or Qwen3.6 territory, so the always-on chain costs little.
Sprinter, refined
10/10 at 10.4s under strict-think (also 10/10 under minimal-think) — a genuine successor to the 30B, and the only Coder-family model to solve toposort, the problem that beat every strategy the 30B had. Still a pure instruct model: reasoning tokens are 0 across all 40 runs, so the think suffix remains a no-op.
The Diva
10/10 at 65.5s under strict-nothink, 10/10 at 70.2s under strict-think — flawless under strict management. Hand it a minimal prompt instead and it collapses: 7/10 (minimal-nothink) or 5/10 (minimal-think), with 8 of the 20 minimal runs spiraling to the full 625s / 8,000-token cap and returning no code at all. The most prompt-management-sensitive model in the lab — flawless under discipline, unusable without it.
3Strategy Truths (cross-model)
- The strict prompt went undefeated across every model, size, and architecture tested — until Qwen3-30B Thinking. Four perfect 10/10 scorers now sit in the lab, each under a strict configuration: Qwen3-Coder-Next (10.4s), gpt-oss-120b (16.2s), MiniMax M2.5 (65.5s), and Qwen3.6-35B (111s) — spanning a pure instruct model, an always-reasoning MoE, a prompt-fragile MoE, and a bounded hybrid thinker. Qwen3-30B Thinking breaks the streak: its best score (9/10) comes from minimal-nothink, with both strict strategies landing at 7/10 — the first model in the lab where the strict prompt lost. A dedicated reasoner, unlike a hybrid toggle, appears to want room to work rather than a tight scope; per-model presets exist for exactly this exception.
- Strict prompt beats mode toggle, for every model tested. Going from a minimal to a strict system prompt improves pass rate and slashes wall time more reliably than switching think/nothink does — true for GLM, Qwen3-Coder-30B, and Qwen3.6-35B alike.
/nothinkis essential for GLM, irrelevant for pure instruct models, optional for Qwen3.6. Qwen3-Coder-30B has no reasoning mode at all, so the suffix is a no-op. Qwen3.6-35B reasons regardless of the suffix (its "nothink" runs still carry hundreds to thousands of reasoning tokens) but strict-nothink is faster with only a small accuracy cost (9/10 vs 10/10).- Verify-always: never trust unexecuted code. Every pass/fail figure on this site comes from running the model's code against hidden tests, not from reading it.
- Context costs roughly one minute of prefill per 10k tokens (GLM-measured, context-scaling experiment) — a tax that applies before generation even starts, independent of the reasoning budget.
- Retry-with-traceback fixes mechanical failures, not conceptual ones. GLM's self-repair loop fixed 2 of 5 failures (missing import, off-by-one class errors) but never budged on
toposortorexpr_eval, where two rounds regenerated the identical wrong idea.
4models.yaml Recommendation
Production default: gpt-oss-120b — 10/10 at 16.2s on the CS exam under strict-nothink, and the local build champion in all three languages (Go 5/7, TS 5/7, C# 3/7 one-shot), the best all-around local performer in the lab and the new headline pick for models.yaml. Fast alternate: Qwen3-Coder-Next — 10/10 at 10.4s under strict-think, edging out Qwen3-Coder-30B on both speed and the toposort gap the 30B never closed; a solid pick when latency matters more than gpt-oss-120b's build-tier margin. Careful tier: Qwen3.6-35B — 10/10 at 111s, worth the latency premium when the strict-tier models' rare misses matter. Handle with care: MiniMax M2.5 clears 10/10 at 65.5s under strict discipline but collapses to 5–7/10 on a minimal prompt — deployable only behind a gateway that enforces the strict system prompt without exception. GLM-4.5-Air: honorable retirement to specialized batch work — now outscored on pass rate and build performance by several other local models, and its unbounded thinking mode remains a worse escalation tier than Qwen3.6's bounded one; still solid for narrow, well-scoped jobs. Thinking tier: the dedicated-reasoner question stays open — Qwen3-30B Thinking's CS-exam profile (best under minimal-nothink) never translated into competitive build results, and resolving whether a dedicated reasoner belongs in the rotation at all awaits a dedicated hybrid benchmark.
5Frontier Baselines
Four subscription models — Fable 5, Sonnet 5, Opus 4.8, Haiku 4.5 — ran the Build Benchmark: a real production Go service built solo, one-shot-plus-fix, from the same frozen spec sheets GLM-4.5-Air originally built from. One-shot pass rate came out perfectly ordered by price tier (7/7, 6/7, 5/7, 4/7), and all four self-recovered to a full 7/7 given fix rounds. Takeaway: the subscription buys one-shot reliability, not a higher capability ceiling — the local delegation tree buys unlimited retries at electricity prices instead. That gap is exactly the arbitrage this whole gateway is built to exploit. The five-model local build campaign that followed confirms it from the other side: gpt-oss-120b's 5/7 one-shot rate matches Opus 4.8's at electricity prices, while the other four local models needed 1-3 escalations apiece — and one file, engine.go, defeated all six local attempts identically.
6Final Findings
- Frontier models reached 84/84 final passes (4 models × 3 languages × 7 files) via one-shot or simple fix rounds, never needing the local escalation ladder. One-shot rates varied by language and model (e.g. Fable 5 was 7/7 one-shot in Go but only 5/7 in TypeScript), but every frontier row in every language converged to a clean 7/7 with ordinary fix rounds — none of the 12 frontier-language cells ever touched the nothink → retry → think → escalation machinery the local tier needed.
- gpt-oss-120b is the local champion in all three languages — Go 5/7, TS 5/7, and C# 3/7 one-shot, the best local one-shot result in each pack even as the absolute numbers slide with language difficulty.
- The engine module went 0-for-24 across all local attempts in Go and TypeScript (8 local models × 2 languages × 2 confirmed universal misses on
engine.go/engine.ts), every failure traced to token-budget truncation mid-file rather than wrong reasoning. The C# figure likely differs: the single-csproj harness there meant a truncated Engine.cs broke compilation for every downstream module, contaminating the in-tree/escalation counts (see the .NET scoreboard footnote), so a clean engine-only tally for C# isn't available from this run. - Language affinity is tier-dependent. C# is the easiest language for the frontier tier (three of four frontier models hit 6/7 or 7/7 one-shot) but the hardest for the local tier (gpt-oss-120b's 3/7 is the best local one-shot score of any language). Go is the strongest language for local models overall. TypeScript drags down every tier via ecosystem traps — the
node:sqlite/vitest resolution issue caught all three frontier finishers and all 8 local models identically. - The dedicated-reasoner exception to the "strict prompt wins" rule stands. Qwen3-30B Thinking remains the one model in the lab where minimal-nothink beat strict prompting on the CS exam (see Strategy Truths, above) — and its build results reinforce rather than contradict that profile: heavy escalation dependence (6 escalations in Go, 5 in TS) alongside genuinely low one-shot rates in every language.
- CS-exam rank is not build rank. Devstral Small (8/10) and Qwen3-30B Thinking (9/10) both scored well on the 40-run CS/strategy exam, but neither aced a single language in the actual builds: Devstral posted 0/7, 0/7, and 1/7 one-shot in Go, TS, and C# respectively, and Thinking posted 0/7, 1/7, and 1/7. Passing a synthetic exam and shipping a real multi-file service are different skills.
Model Lab · Benchmarks
The Build Benchmark — Go
Same frozen spec sheets, same hidden Go tests, one production service · updated 2026-07-05
1What This Is
Every builder here implements the same real production Go service — the delegation gateway itself — from identical frozen spec sheets, split across seven files: archive, registry, provider, verify, store, engine, and server. Each file is checked against hidden Go tests the builder never sees in advance. GLM-4.5-Air's row is the original build that produced this gateway's actual code, run through its full delegation tree (nothink → retry → think → sonnet-fix escalation). The four frontier models — Fable 5, Sonnet 5, Opus 4.8, Haiku 4.5 — each ran the same spec sheets solo, under a simpler one-shot-plus-fix protocol, with no thinking-mode or escalation tier available. Five more gx10 (local) models — Qwen3-Coder-30B, Qwen3.6-35B, gpt-oss-120b, Qwen3-Coder-Next, and MiniMax M2.5 — ran the same harness through the full nothink → retry → think → sonnet-fix escalation tree; that campaign is now complete.
2Scoreboard
| Builder | Tier | One-shot | Fix rounds | Final | Notes |
|---|---|---|---|---|---|
| Fable 5 | frontier | 7/7 | 0 | 7/7 | Clean sweep, no repairs needed. |
| Sonnet 5 | frontier | 6/7 | 1 | 7/7 | Tripped the archive error-wrapping trap; fixed round 1. |
| Opus 4.8 | frontier | 5/7 | 2 | 7/7 | Missed provider and engine; both fixed round 1. |
| Haiku 4.5 | frontier | 4/7 | 3 | 7/7 | Missed archive, provider, server; all fixed round 1. |
| gpt-oss-120b | gx10 (local) | 5/7 | 4 | 7/7 (1 escalated) | Local build champion — fastest run at 701s wall time. Only engine.go escaped the retry/think ladder; everything else resolved one-shot or on first retry. |
| Qwen3-Coder-Next | gx10 (local) | 3/7 | 6 | 7/7 (1 escalated) | Archive, registry, and store clean on the first try; provider/verify/server all resolved by retry. Only engine.go escalated. |
| Qwen3.6-35B | gx10 (local) | 3/7 | 10 | 7/7 (3 escalated) | Its unique failure mode: provider, store, and engine went silent (no_artifact) across two or three local stages, burning full retry budgets without producing code, before escalating. Slowest run in the campaign at 3221s wall time. |
| MiniMax M2.5 | gx10 (local) | 3/7 | 9 | 7/7 (2 escalated) | Archive, registry, and store clean one-shot; verify resolved by retry; server took until the think stage. Provider and engine escalated. |
| Qwen3-Coder-30B | gx10 (local) | 1/7 | 13 | 7/7 (3 escalated) | Only verify.go passed one-shot. Registry, store, and server resolved within the retry/think ladder, but archive, provider, and engine all needed a Sonnet fix. |
| GLM-4.5-Air | gx10 (local) | 0/7 | 14 | 7/7 (1 escalated) | Needed the full nothink/retry/think scaffold on every file, but only one escalation (engine.go) — now mid-pack on escalation count, beaten only by gpt-oss-120b and Qwen3-Coder-Next. |
| Devstral Small | gx10 (local) | 0/7 | 14 | 7/7 (4 escalated) | Resolved 3/7 in-tree via the local nothink/retry/think ladder; the other four (including engine.go) needed a Sonnet-fix escalation. Slowest resolution path in the make-up chain. |
| Qwen3-30B Thinking | gx10 (local) | 0/7 | 14 | 7/7 (6 escalated) | Only 1/7 resolved in-tree; six of seven files needed a Sonnet-fix escalation — the heaviest escalation load of any builder in the Go campaign, despite a strong CS-exam score. |
One-shot pass rate
3What It Means
- The frontier premium is one-shot reliability, not a capability ceiling. All four frontier models reached a clean 7/7 — the only difference was how many fix rounds they needed to get there.
- Price predicts first-try accuracy almost perfectly. One-shot rate ordered exactly by tier: Fable 7/7 → Sonnet 6/7 → Opus 5/7 → Haiku 4/7. (Sonnet edging the pricier Opus fits its newer generation.)
- gpt-oss-120b matched Opus 4.8's one-shot rate (5/7) at electricity prices — the strongest local build result of the campaign, and the fastest wall-clock run (701s) of any local model.
- engine.go defeated all six local attempts identically — by token-budget truncation mid-file, not wrong reasoning. Every local model, regardless of architecture or think mode, ran out of budget on the same file before producing a complete artifact. That's a protocol bug (flat per-file token budgets), not a model weakness; adaptive per-file budgets are now on Dispatch's v2 roadmap.
- Local models trade first-try accuracy for free retries, at wildly different costs. Qwen3-Coder-30B ground from 1/7 one-shot to 7/7 with three escalations; Qwen3.6-35B needed three escalations too, but burned 3221s of wall time doing it — nearly 4.5x gpt-oss-120b's 701s — mostly to silent no-output stalls rather than productive reasoning.
- Benchmarks disagree, and that's the point. Qwen3.6-35B and gpt-oss-120b both scored a perfect 10/10 on the CS exam, but on the real build Qwen3.6 posted the campaign's slowest, most escalation-prone run while gpt-oss-120b was the clear champion. Hire for the job, not the test.
- The arbitrage is the architecture. Subscription buys getting it right the first time; the GX10 buys unlimited retries. Dispatch's decision tree is what converts cheap retries into finished work.
3bProtocol Lessons (feeding Dispatch v2)
- Adaptive
max_tokensby spec complexity. engine.go's flat per-file budget truncated every local model identically mid-artifact; a complexity-aware budget would likely have let several models clear it without escalating. - Detect
no_artifact+ budget-exhausted as its own failure class. Qwen3.6-35B's stalls on provider/store/engine were silent — no code, budget spent — and deserve an immediate strategy change (e.g. skip straight to escalation or shrink the ask) rather than a blind retry at the same budget. - Error-feedback formatting matters more than think/nothink for inert models. Pure instruct models (Qwen3-Coder-30B, Qwen3-Coder-Next) get no benefit from the think suffix; what moves their pass rate is how the retry error is phrased and scoped.
- Final acceptance must include
go vet. Build + test alone let a lostcancel bug slip through in one campaign run — vet needs to be a hard gate before a file is marked resolved.
4Spec-Trap Forensics
Three places in the frozen spec sheets reliably produced wrong-but-plausible code, identified from Sonnet 5's fix-round diagnosis and the recurring failure signatures across builders.
- archive: the
os.IsNotExisttrap. The hidden test assertsos.IsNotExist(err)on a missing-file path, but wrapping the underlying error withfmt.Errorf("...: %w", err)— the idiomatic Go instinct — defeats that assertion unless unwrapped correctly. This tripped Sonnet 5, Haiku 4.5, and GLM-4.5-Air (identical error snippet: "os.IsNotExist broken by fmt.Errorf wrap"). - engine: a run-on sentence conflating two conditions. Spec step 4 blurs "skip this step" and "no artifact produced" into a single run-on sentence, and builders that read it literally implement one condition where two were intended. This was the file that beat every local escalation tier and Opus 4.8's first attempt alike.
- server: a self-contradictory async paragraph. The spec's paragraph on asynchronous request handling contains an internal contradiction about ordering guarantees, forcing builders to guess which half of the paragraph is authoritative. Haiku 4.5 missed it on the first pass; other builders got lucky on which half they picked.
Model Lab · Benchmarks
The Build Benchmark — TypeScript
The same 7-file service exam, ported to Node · frontier + local tiers both done
1What This Is
The same seven-file production service exam from the Go benchmark — archive, registry, provider, verify, store, engine, and server — ported to TypeScript on Node, with the toolchain swapped to match: vitest for hidden tests, node:sqlite (built-in) for storage, and node:http for the server layer instead of Go's standard library equivalents. The Go campaign's one universal failure was engine.go, which defeated every local model identically via token-budget truncation on a syntactically dense file; porting the same spec to TypeScript separates two hypotheses the Go-only result couldn't: is that a Go problem (verbose syntax inflating token count past the budget) or a complexity problem inherent to the spec regardless of language? Frontier tier and the 8-model local slate are both complete, including escalation fixes — every TypeScript workspace now passes.
2Scoreboard
| Builder | Tier | One-shot | Fix rounds | Final | Notes |
|---|---|---|---|---|---|
| Sonnet 5 | frontier | 6/7 | 1 | 7/7 | Only miss was the node:sqlite/vitest tooling trap; found and documented the workaround first. |
| Opus 4.8 | frontier | 6/7 | 1 | 7/7 | Only miss was the same tooling trap — effectively 7/7 on spec comprehension. |
| Fable 5 | frontier | 5/7 | 2 | 7/7 | One genuine semantic miss (registry watch baseline captured lazily — a timing race) plus the tooling trap. Below its perfect Go run. |
| Haiku 4.5 | frontier | 5/7 | 2 | 7/7 | Retake recovered full telemetry: 5/7 one-shot, 7/7 final, no escalations needed. |
| gpt-oss-120b | gx10 (local) | 5/7 | 4 | 7/7 (2 escalated) | Local leader again — matches its own Go one-shot rate (5/7) exactly. Only store and engine needed a Sonnet-fix escalation; every other file resolves clean on the first attempt, and it's the second-fastest local run at 868s. |
| Qwen3-Coder-30B | gx10 (local) | 3/7 | 3 | 7/7 (4 escalated) | Fastest wall time in the pack at 615s (~11 min) — the same sprinter profile as its Go and CS-exam results. Archive, verify, and server clean one-shot; registry, provider, store, and engine all needed a Sonnet-fix escalation after the local ladder. |
| MiniMax M2.5 | gx10 (local) | 2/7 | 3 | 7/7 (3 escalated) | Best resolved-in-tree count of the local slate (4/7) despite a slow 6282s (~105 min) run — provider and server clean one-shot, archive and verify recover on retry. Registry, store, and engine needed escalation. |
| Qwen3.6-35B | gx10 (local) | 1/7 | 3 | 7/7 (4 escalated) | The no-artifact stalling from its Go run recurs here — registry burns all three local stages as no_artifact_budget with zero code produced. Slowest wall time of the whole TS pack at 5163s (~86 min), 8x Qwen3-Coder-30B's. Escalation cleared the remaining four files. |
| GLM-4.5-Air | gx10 (local) | 2/7 | 3 | 7/7 (4 escalated) | Archive and server clean one-shot; verify recovers by the think stage. Registry, provider, store, and engine needed a Sonnet-fix escalation — 3247s (~54 min) total. |
| Qwen3-Coder-Next | gx10 (local) | 1/7 | 3 | 7/7 (5 escalated) | Only archive is clean one-shot; provider recovers by the think stage. Server fails all three local stages outright — its worst per-file showing of any language tested, resolved only by escalation. |
| Devstral Small | gx10 (local) | 0/7 | 3 | 7/7 (4 escalated) | Zero one-shot passes, but archive, provider, and server all recover within the local ladder — 3213s (~54 min) total. Registry, verify, store, and engine needed escalation. |
| Qwen3-30B Thinking | gx10 (local) | 1/7 | 3 | 7/7 (5 escalated) | Provider is the lone one-shot clean file; archive recovers on retry. Registry, verify, store, engine, and server all needed escalation — repeated no_artifact_budget stalls (a thinking model burning its reasoning budget with no code out) push wall time to 4725s (~79 min). |
One-shot pass rate
3What It Means
- The Go price-gradient did not survive the language switch. Go one-shot order was Fable > Sonnet > Opus > Haiku (7/6/5/4); in TS it's Sonnet = Opus (6/7) with Fable at 5/7. Language changes the ranking even at the frontier — the central hypothesis of this benchmark, confirmed before a single local model ran.
- gpt-oss-120b is the local leader again — 5/7 one-shot, matching its Go result exactly. Same model, same rank, a different language: the strongest evidence yet that its build performance is a genuine model property, not a Go-specific fluke.
- The wall-time spread across the local slate is enormous: Qwen3-Coder-30B at ~11 minutes versus Qwen3.6-35B at ~86 minutes — an 8x gap on the same seven files. The gap is driven by stalling, not thinking: Qwen3.6-35B's registry file burns all three local stages as
no_artifact_budget(reasoning spent, zero code returned), the identical failure mode that made it the slowest builder in the Go campaign too. - node:sqlite defeated every one of the 8 local models on
store/sqlite.ts, with zero exceptions. The same builtin-vs-vitest resolution trap that caught all three frontier finishers is, for the local tier, unconditional — no local model, regardless of architecture or think mode, produced a passing store module in this run. - The engine module remains the hardest file for every tier. All 8 local models still show
engine.tsfailing after the local escalation ladder — the same universal wall the Go campaign hit, now confirmed language-independent.
4Trap Forensics
- node:sqlite vs the vitest bundler. A static ESM value-import of the new builtin fails to resolve under vite; the fix is a type-only import plus
createRequire. It caught all three frontier finishers (3-for-3) — the TS counterpart of Go'sos.IsNotExistwrapping trap: it measures ecosystem fluency, not spec comprehension, and is graded accordingly. - Registry watch timing race. The watch baseline is captured lazily, and a builder that reads the spec literally can grab it too early. Caught Fable 5 in its otherwise-clean run.
- Grading note: the frozen hidden tests themselves fail strict
tscundernoUncheckedIndexedAccess, so typecheck grading is scoped tosrc/only.
5Status
Model Lab · Benchmarks
The Build Benchmark — .NET
The same 7-file service exam, ported to .NET · all 12 builders complete
1What This Is
The same seven-file production service exam from the Go benchmark — archive, registry, provider, verify, store, engine, and server — ported to C# on .NET SDK 10.0.301 (net10.0), with the toolchain swapped to match: xUnit for hidden tests, Microsoft.Data.Sqlite for storage, YamlDotNet for the frozen spec/config format, and an ASP.NET Core minimal API for the server layer. All 12 builders have now run against it, and all 36 workspaces pass their full suites after the escalation-fix pass.
2Scoreboard
| Builder | Tier | One-shot | Fix rounds | Final | Notes |
|---|---|---|---|---|---|
| Fable 5 | frontier | 5/7 | 2 | 7/7 ✓ | Caught by the FileNotFoundException/DirectoryNotFoundException sibling-type trap plus a missing using directive. Its weakest language showing. |
| Sonnet 5 | frontier | 7/7 | 0 | 7/7 ✓ | The first perfect one-shot run of any builder in the .NET edition — zero fix rounds, 36/36. |
| Opus 4.8 | frontier | 6/7 | 1 | 7/7 ✓ | Only miss was the server module (one fix round). Verified 36/36. |
| Haiku 4.5 | frontier | 6/7 | 1 | 7/7 ✓ | Best Haiku showing in any language; one miss on base-URL /v1 normalization. Logged properly this time. |
| GLM-4.5-Air | gx10 (local) | 1/7 | n/m† | n/m† | One-shot comprehension held up on the pre-engine modules; downstream in-tree/escalation counts are harness-contaminated (see footnote). |
| Qwen3-Coder-30B | gx10 (local) | 2/7 | n/m† | n/m† | Best local one-shot showing in the .NET pack; downstream in-tree/escalation counts are harness-contaminated (see footnote). |
| Qwen3.6-35B | gx10 (local) | 1/7 | n/m† | n/m† | One-shot comprehension held up on the pre-engine modules; downstream in-tree/escalation counts are harness-contaminated (see footnote). |
| gpt-oss-120b | gx10 (local) | 3/7 | n/m† | n/m† | Local one-shot leader again in the .NET pack; downstream in-tree/escalation counts are harness-contaminated (see footnote). |
| Qwen3-Coder-Next | gx10 (local) | 2/7 | n/m† | n/m† | Matches Qwen3-Coder-30B's one-shot rate; downstream in-tree/escalation counts are harness-contaminated (see footnote). |
| MiniMax M2.5 | gx10 (local) | 1/7 | n/m† | n/m† | One-shot comprehension held up on the pre-engine modules; downstream in-tree/escalation counts are harness-contaminated (see footnote). |
| Devstral Small | gx10 (local) | 1/7 | n/m† | n/m† | One-shot comprehension held up on the pre-engine modules; downstream in-tree/escalation counts are harness-contaminated (see footnote). |
| Qwen3-30B Thinking | gx10 (local) | 1/7 | n/m† | n/m† | One-shot comprehension held up on the pre-engine modules; downstream in-tree/escalation counts are harness-contaminated (see footnote). |
One-shot pass rate
3What It Means
All 36 workspaces now pass their full suites after the escalation-fix pass. Where the TypeScript pack probes the Go-vs-complexity split on engine.go, the .NET pack targets the enterprise-stack hypothesis: whether models perform differently on a heavier, more ceremony-laden statically-typed stack (interfaces, DI conventions, verbose type annotations) than on Go's minimalism or TypeScript's flexibility — and whether that ceremony helps or hurts the same file that broke every local Go attempt. The single-csproj harness design means the in-tree/escalation breakdown for local models is contaminated by cascading compile failures downstream of a truncated Engine.cs (see the scoreboard footnote); one-shot rates for pre-engine modules remain a clean signal, and they show C# as the toughest language yet for the local tier — gpt-oss-120b's 3/7 is the best local one-shot result, well below its Go (5/7) and TS (5/7) showings.
4Trap Forensics
- FileNotFoundException identity through wrapping (to be validated). The C# analog of Go's
os.IsNotExisttrap — wrapping the underlying exception may defeat a type-check the hidden test relies on. - The engine step-4 run-on (to be validated). The same conflated "skip this step" / "no artifact produced" sentence from the Go spec carries over; unclear yet whether C#'s stricter typing makes the ambiguity easier or harder to resolve.
- The server async paragraph (to be validated). The self-contradictory ordering-guarantee language from the Go spec carries over to the ASP.NET Core minimal API port.
5Status
complete — all 12 builders
Model Lab · Profile
GLM-4.5-Air (Q4_K_M)
unsloth GGUF · llama.cpp · Asus GX10 (GB10, 128GB unified) · profiled 2026-07-05
1Verdict
GLM-4.5-Air is a strong code-implementation model with weak self-verification instincts of its own — it needs a tightly-scoped prompt to keep it out of its own way. The deployable configuration is a strict system prompt with /nothink: 9 of 10 hidden-test passes at 13.5s average. Enabling its thinking mode is operationally impractical at this speed without a hard reasoning-token budget — five of ten strict-think runs burned the full 8,000-token budget mid-reasoning and returned no code at all. The failures that remain aren't algorithmic; they cluster on spec-precision details — dependency direction, unary minus, escaped quotes — the kind of ambiguity a sharper prompt resolves.
2Strategy Shootout
Four prompting strategies run against the same 10-problem set (40 runs total).
| Strategy | Pass rate | Avg wall time | Avg output tokens |
|---|---|---|---|
| strict-nothink | 9/10 (90%) | 13.5s | 160 |
| minimal-think | 8/10 (80%) | 358.7s | 4,089 |
| minimal-nothink | 6/10 (60%) | 128.0s | 1,598 |
| strict-think | 5/10 (50%) | 429.1s | 4,779 |
Pass rate
Avg wall time per problem
3Per-Problem Matrix
| Problem | minimal-think | minimal-nothink | strict-nothink | strict-think |
|---|---|---|---|---|
| merge_intervals | PASS | PASS | PASS | PASS |
| lru_ttl_cache | PASS | FAIL | PASS | PASS |
| toposort | PASS | FAIL | FAIL | PASS |
| csv_parse | FAIL | FAIL | PASS | FAIL |
| glob_match | PASS | PASS | PASS | FAIL |
| rle_roundtrip | PASS | PASS | PASS | PASS |
| first_occurrence | PASS | PASS | PASS | FAIL |
| deep_merge | PASS | PASS | PASS | FAIL |
| range_overlap | PASS | PASS | PASS | PASS |
| expr_eval | FAIL | FAIL | PASS | FAIL |
toposort is the only problem strict-nothink misses — it asserts a dependency ordering the model gets backwards, not a broken algorithm.
4Self-Repair Loop
Protocol: take a failing solution plus its traceback, feed both back to the model under strict-nothink, allow up to two repair rounds.
| Problem | Original strategy | Round | Repaired | Wall time | Tokens |
|---|---|---|---|---|---|
| lru_ttl_cache | minimal-nothink | 1 | no | 161.1s | 1,676 |
| lru_ttl_cache | minimal-nothink | 2 | yes | 25.0s | 264 |
| toposort | minimal-nothink | 1 | no | 21.0s | 199 |
| toposort | minimal-nothink | 2 | no | 17.9s | 199 |
| toposort | strict-nothink | 1 | no | 16.3s | 177 |
| toposort | strict-nothink | 2 | no | 16.4s | 179 |
| csv_parse | minimal-nothink | 1 | yes | 18.5s | 172 |
| expr_eval | minimal-nothink | 1 | no | 124.6s | 1,348 |
| expr_eval | minimal-nothink | 2 | no | 115.1s | 1,348 |
2 of 5 failing cases were repaired — csv_parse on round 1 and lru_ttl_cache on round 2. toposort and expr_eval were never repaired across either round.
5Context Scaling
Needle-in-haystack bug-fix task at increasing prompt sizes, strict-nothink.
| Target | Prompt tokens | Prompt tok/s | Prefill time | Total wall time | Correct |
|---|---|---|---|---|---|
| 1k | 1,297 | 221.1 | 5.9s | 10.3s | yes |
| 4k | 4,062 | 250.0 | 16.2s | 21.2s | yes |
| 8k | 7,002 | 211.6 | 33.1s | 38.5s | yes |
| 16k | 14,365 | 175.2 | 82.0s | 88.7s | yes |
| 24k | 19,305 | 145.4 | 132.7s | 141.3s | yes |
Prefill time vs prompt size
All 5 runs found and fixed the injected bug correctly — no accuracy degradation up to roughly 19k prompt tokens. But prefill throughput isn't flat: it drops from 250 tok/s at 4k down to 145 tok/s at 24k as the context grows. Going from 1,297 to 19,305 prompt tokens (about 15×) costs 22× more prefill time.
6Thinking Mode at 16k Budget
Doubling the reasoning budget from 8k to 16k tokens, strict-think, on the problems that previously stalled.
| Problem | Passed | Wall time | Output tokens | Hit cap |
|---|---|---|---|---|
| csv_parse | no | 1461.7s | 16,000 | yes |
| glob_match | no | 1462.7s | 16,000 | yes |
| first_occurrence | yes | 122.4s | 1,530 | no |
| deep_merge | no | 1460.3s | 16,000 | yes |
| expr_eval | no | 1462.2s | 16,000 | yes |
| toposort | yes | 962.0s | 10,620 | no |
Thinking mode solved toposort — the conceptual spec-misread that survived two no-think repair rounds — in 16 minutes and 10,620 tokens. That's the escalation tier working as intended. But 4 of 6 runs burned the entire 16k budget over roughly 24 minutes each without ever emitting code, including deep_merge and glob_match, both of which strict-nothink solved in 7–13 seconds. Thinking mode is actively harmful on problems the model can already do, and doubling the budget from 8k to 16k rescued zero spiralers — csv_parse and expr_eval most likely sit beyond this model's capability edge regardless of budget.
7Concurrency
Throughput under simultaneous requests, single llama.cpp instance.
Phase A — single slot
| Kind | Concurrent | Wall time | Aggregate tok/s | vs. single |
|---|---|---|---|---|
| single | 1 | 9.75s | 13.4 | 1.0× |
| concurrent | 4 | 17.86s | 24.4 | 1.83× |
Phase B — --parallel 4
| Kind | Wall time | Aggregate tok/s |
|---|---|---|
| single | 8.5s | 13.4 |
| 4 concurrent | 18.2s | 24.4 |
--parallel 4 produces the identical 24.4 tok/s aggregate — throughput here is memory-bandwidth-bound, not slot-bound. What slots buy is fairness: 4 simultaneous callers each complete at roughly 2× the latency of a lone request, instead of queuing behind one another.8Delegation Playbook
Four-step decision tree, in order. Do not skip a step.
- 1. Strict system prompt +
/nothink, always first. 9/10 pass rate at ~13s average. This is the default for every problem, no exceptions. - 2. On failure, one repair round with the traceback. Fixes mechanical bugs (missing import, off-by-one) roughly 2 of 5 times in testing, at ~20s. Do not run a second repair round — an identical re-failure means the miss is conceptual, not mechanical.
- 3. Identical re-failure → one thinking-mode attempt, 16k budget. Expect 15–25 minutes wall time. This tier is for conceptual spec misses only — it rescued
toposortafter two failed no-think repair rounds. - 4. Thinking-mode cap-out → escalate to a frontier model. Hitting the 16k cap without emitting code means the problem is beyond this model's capability edge regardless of budget; retrying locally wastes 20+ minutes for nothing.
9Deployment
- systemd service
llama-server— boot-persistent, auto-restart on failure, launched with--parallel 4 --metrics. - DNS —
llm.internalresolves to192.168.3.220via UniFi. - Endpoints — port 8080 serves the web UI and the OpenAI-compatible
/v1API, plus/metricsand/health. - Thermals — steady at 51°C and 96% GPU utilization during sustained inference, drawing 11W.
Model Lab · Profile
Qwen3-Coder-30B
instruct-only, no reasoning mode · llama.cpp · campaign run 2026-07-05
1Verdict
Qwen3-Coder-30B is a pure instruct model — it never emits reasoning tokens under any strategy, so "think" suffixes are inert and the think/nothink distinction that matters so much for GLM and Qwen3.6 simply doesn't apply here. What does matter is the same lesson as everywhere else: a strict system prompt more than doubles the pass rate of a minimal one, while roughly halving wall time. Best config (strict-think, functionally identical to strict-nothink) clears 9/10 in an average 6.7 seconds per problem — the fastest correct-code turnaround in the lab, and the only model whose full 40-run exam finishes inside 10 minutes.
2Strategy Table
Same 10-problem set, four strategies, 40 runs. Recomputed from models/qwen3-coder-30b/benchmarks/2026-07-05-campaign.jsonl.
| Strategy | Pass rate | Avg wall time | Avg output tokens | Avg tok/s |
|---|---|---|---|---|
| strict-think | 9/10 (90%) | 6.7s | 216 | 35.2 |
| strict-nothink | 8/10 (80%) | 6.7s | 217 | 35.2 |
| minimal-think | 8/10 (80%) | 17.3s | 609 | 35.0 |
| minimal-nothink | 6/10 (60%) | 16.3s | 547 | 35.1 |
Pass rate
Avg wall time per problem
reasoning_tokens: 0, had_reasoning: false regardless of strategy — strict-think and strict-nothink differ only by noise (216 vs 217 avg tokens, both 6.7s). The suffix is harmless, not helpful: it costs nothing to append, but it buys nothing either.3Per-Problem Matrix
| Problem | minimal-think | minimal-nothink | strict-nothink | strict-think |
|---|---|---|---|---|
| merge_intervals | PASS | PASS | PASS | PASS |
| lru_ttl_cache | PASS | FAIL | PASS | PASS |
| toposort | FAIL | FAIL | FAIL | FAIL |
| csv_parse | FAIL | FAIL | PASS | PASS |
| glob_match | PASS | FAIL | PASS | PASS |
| rle_roundtrip | PASS | PASS | PASS | PASS |
| first_occurrence | PASS | PASS | PASS | PASS |
| deep_merge | PASS | PASS | PASS | PASS |
| range_overlap | PASS | PASS | PASS | PASS |
| expr_eval | PASS | PASS | FAIL | PASS |
expr_eval's lone failure, under strict-nothink, is a bare unary-minus parse ("-3+5") that strict-think's identical-looking prompt happens to get right — the kind of single-seed flakiness a repair round would likely fix.4Observations
- Token discipline under strict prompts is extreme. Strict strategies output ~216 tokens average versus ~550–610 for minimal ones — a >2.5× reduction with a higher pass rate, the same "strict prompt beats verbosity" pattern seen in every other model tested.
- Generation speed is rock-steady at ~35 tok/s regardless of strategy or prompt length — no thinking-mode variance to manage, which is the main practical advantage over GLM and Qwen3.6 here.
- Best problem coverage: 9/10, one hard failure. Every problem other than
toposortis solved by at least one strategy; strict-think solves everything except it.
Model Lab · Profile
Qwen3.6-35B
hybrid think/nothink · llama.cpp · campaign run 2026-07-05
1Verdict
Qwen3.6-35B is the careful-tier candidate: strict-think clears all 10 hidden-test problems, the only clean sweep recorded across any model or strategy in this lab. It pays for that with latency — 111 seconds average, roughly 15–17× slower than either Qwen3-Coder-30B or GLM's fast configuration — but its reasoning stays bounded. Across the 10 strict-think runs, reasoning ranged from 406 to 5,217 tokens, all well inside the 8,000-token cap, and it never once spiraled the way GLM's think mode does on easy problems.
2Strategy Table
Same 10-problem set, four strategies, 40 runs. Recomputed from models/qwen3.6-35b/benchmarks/2026-07-05-campaign.jsonl.
| Strategy | Pass rate | Avg wall time | Avg output tokens | Avg reasoning tokens |
|---|---|---|---|---|
| strict-think | 10/10 (100%) | 111.3s | 3,235 | 2,608 |
| strict-nothink | 9/10 (90%) | 94.0s | 2,748 | 2,288 |
| minimal-think | 9/10 (90%) | 145.3s | 4,226 | 3,361 |
| minimal-nothink | 8/10 (80%) | 149.2s | 4,344 | 3,412 |
Pass rate
Avg wall time per problem
had_reasoning: true with hundreds to thousands of reasoning tokens — this is a hybrid model that reasons regardless of the suffix. What the suffix buys is a shorter chain (2,288 avg reasoning tokens under strict-nothink vs 2,608 under strict-think) at the cost of one dropped test (9/10 vs 10/10). The full 40-run exam took about 83 minutes wall time, roughly 10× longer than Qwen3-Coder-30B's ~8-minute exam.3Per-Problem Matrix
| Problem | minimal-think | minimal-nothink | strict-nothink | strict-think |
|---|---|---|---|---|
| merge_intervals | PASS | PASS | PASS | PASS |
| lru_ttl_cache | PASS | PASS | PASS | PASS |
| toposort | PASS | PASS | PASS | PASS |
| csv_parse | PASS | PASS | PASS | PASS |
| glob_match | PASS | PASS | PASS | PASS |
| rle_roundtrip | PASS | PASS | PASS | PASS |
| first_occurrence | PASS | PASS | PASS | PASS |
| deep_merge | PASS | PASS | PASS | PASS |
| range_overlap | PASS | FAIL | PASS | PASS |
| expr_eval | FAIL | FAIL | FAIL | PASS |
toposort across all four strategies — the same problem that beats GLM's best config and every strategy Qwen3-Coder-30B has. The one true spiral in the dataset is range_overlap under minimal-nothink: 278.2s, 7,522 reasoning tokens, hit the 8,000-token cap, and returned no code at all — logged as "no code found in response," the same failure signature as GLM's think-mode stalls, but a single isolated occurrence rather than a pattern. expr_eval is the model's one genuinely hard problem, failing under three of four strategies and only clearing under strict-think.4Observations
- Bounded reasoning, contrast with GLM. GLM's think mode burns a fixed 16,000-token budget over ~24 minutes on problems it can already solve in seconds. Qwen3.6-35B's reasoning self-terminates well under its cap on 39 of 40 runs — the one exception (range_overlap / minimal-nothink) is the exception that proves the model usually knows when to stop.
- Slower per-response than Coder-30B, but the only perfect scorer. Where Qwen3-Coder-30B trades reliability for speed (9/10 at 6.7s), Qwen3.6-35B trades speed for reliability (10/10 at 111s) — a genuine speed/accuracy frontier, not a strictly dominated option.
- Strict prompting still wins over mode choice. strict-nothink (94s, 9/10) beats minimal-think (145s, 9/10) on both speed and matches it on accuracy — the prompt discipline lesson holds even for a model whose reasoning is otherwise well-behaved.
Model Lab · Profile
gpt-oss-120b
open-weight MoE · llama.cpp · campaign run 2026-07-05
1Verdict
gpt-oss-120b is a fourth perfect scorer for the lab, and the first local model whose reasoning never fully switches off: every one of its 40 runs, "nothink" included, logs had_reasoning: true. Unlike GLM or Qwen3.6, that reasoning is cheap and short rather than a variable-length gamble — 190 to 310 tokens on average, an order of magnitude below Qwen3.6's thousands. Best config (strict-nothink) clears 10/10 in 16.2s average, a hair behind Qwen3-Coder-Next as the fastest perfect scorer in the lab. It is, however, clearly prompt-sensitive: drop to a minimal prompt and the pass rate falls to 7/10 with wall time more than tripling.
2Strategy Table
Same 10-problem set, four strategies, 40 runs. Recomputed from models/gpt-oss-120b/benchmarks/2026-07-05-campaign.jsonl.
| Strategy | Pass rate | Avg wall time | Avg output tokens | Avg reasoning tokens |
|---|---|---|---|---|
| strict-nothink | 10/10 (100%) | 16.2s | 544 | 308 |
| strict-think | 9/10 (90%) | 11.9s | 401 | 190 |
| minimal-think | 7/10 (70%) | 44.1s | 1,517 | 269 |
| minimal-nothink | 7/10 (70%) | 55.6s | 1,926 | 228 |
Pass rate
Avg wall time per problem
3Per-Problem Matrix
| Problem | minimal-think | minimal-nothink | strict-nothink | strict-think |
|---|---|---|---|---|
| merge_intervals | PASS | PASS | PASS | PASS |
| lru_ttl_cache | PASS | PASS | PASS | PASS |
| toposort | PASS | PASS | PASS | PASS |
| csv_parse | FAIL | FAIL | PASS | PASS |
| glob_match | FAIL | PASS | PASS | FAIL |
| rle_roundtrip | PASS | FAIL | PASS | PASS |
| first_occurrence | PASS | PASS | PASS | PASS |
| deep_merge | PASS | PASS | PASS | PASS |
| range_overlap | FAIL | FAIL | PASS | PASS |
| expr_eval | PASS | PASS | PASS | PASS |
glob_match is strict-nothink's only miss (10/10 elsewhere on that strategy) — and the one problem where strict-think does worse than strict-nothink, an inversion of the usual "think helps or is neutral" pattern seen in every other model.
4Observations
- A fourth perfect scorer, sub-20-second class. With Qwen3-Coder-Next (10.4s), gpt-oss-120b (16.2s) is the second-fastest clean 10/10 in the lab — well ahead of Qwen3.6-35B's 111s and MiniMax M2.5's 65.5s.
- Reasoning is always on but cheap. Unlike Qwen3.6's hybrid chains (hundreds to thousands of tokens) or GLM's unbounded think mode (16k-token spirals), gpt-oss-120b's reasoning never exceeds a few hundred tokens in this dataset — closer to a fixed low-effort setting than a toggle.
- Prompt-sensitive, not prompt-fragile. Minimal prompts cost roughly 3x the wall time and 2 points of pass rate — a real penalty, but nowhere near MiniMax M2.5's collapse under the same conditions.
- Served with
--no-mmap -c 16384on the rebuilt CUDA-arch-121 llama.cpp — the largest resident model in the lab after GLM.
Model Lab · Profile
Qwen3-Coder-Next
coder-tuned successor line, instruct-only · llama.cpp · campaign run 2026-07-05
1Verdict
Qwen3-Coder-Next inherits the 30B's shape — a pure instruct model, 0 reasoning tokens on every one of its 40 runs regardless of suffix — but closes its predecessor's one structural gap: toposort, which beat all four strategies on Qwen3-Coder-30B, passes under all four strategies here. Best config (strict-think) clears 10/10 in 10.4s average, the fastest perfect score recorded in this lab, and minimal-think also reaches 10/10 — the only model where a minimal prompt ties a strict one on pass rate. Its lone weak point is expr_eval, which fails under both nothink strategies and passes under both think ones, the opposite of the "think doesn't matter" pattern the rest of the profile suggests.
2Strategy Table
Same 10-problem set, four strategies, 40 runs. Recomputed from models/qwen3-coder-next/benchmarks/2026-07-05-campaign.jsonl.
| Strategy | Pass rate | Avg wall time | Avg output tokens | Avg tok/s |
|---|---|---|---|---|
| strict-think | 10/10 (100%) | 10.4s | 247 | 25.7 |
| minimal-think | 10/10 (100%) | 23.1s | 574 | 25.6 |
| strict-nothink | 9/10 (90%) | 11.4s | 271 | 25.7 |
| minimal-nothink | 9/10 (90%) | 29.1s | 721 | 25.6 |
Pass rate
Avg wall time per problem
reasoning_tokens: 0, had_reasoning: false, same as Qwen3-Coder-30B — the suffix costs nothing but buys nothing at the token level. What it does correlate with here is expr_eval's pass/fail split, which tracks the think suffix exactly despite no reasoning tokens being spent — most likely single-seed sampling variance on a unary-minus edge case rather than a causal effect of the suffix itself.3Per-Problem Matrix
| Problem | minimal-think | minimal-nothink | strict-nothink | strict-think |
|---|---|---|---|---|
| merge_intervals | PASS | PASS | PASS | PASS |
| lru_ttl_cache | PASS | PASS | PASS | PASS |
| toposort | PASS | PASS | PASS | PASS |
| csv_parse | PASS | PASS | PASS | PASS |
| glob_match | PASS | PASS | PASS | PASS |
| rle_roundtrip | PASS | PASS | PASS | PASS |
| first_occurrence | PASS | PASS | PASS | PASS |
| deep_merge | PASS | PASS | PASS | PASS |
| range_overlap | PASS | PASS | PASS | PASS |
| expr_eval | PASS | FAIL | FAIL | PASS |
expr_eval is the only problem that isn't a clean sweep, and it's the single point separating this model from a perfect 40/40. Every other problem, including toposort, passes under all four strategies.
4Observations
- Closes the 30B's one structural gap.
toposortfailed under all four strategies on Qwen3-Coder-30B — the only 0/4 problem across the first three profiled models — and passes under all four here. The dependency-direction misread that beat the 30B doesn't reproduce on its successor. - Fastest perfect scorer in the lab. 10.4s average under strict-think edges out gpt-oss-120b's 16.2s and dwarfs MiniMax M2.5 (65.5s) and Qwen3.6-35B (111s).
- Strict prompting still roughly halves wall time even though pass rate ties at 10/10 — 10.4s vs 23.1s for think, 11.4s vs 29.1s for nothink — the token-discipline benefit holds even when accuracy doesn't move.
Model Lab · Profile
MiniMax M2.5
MoE, long-context focus · llama.cpp · campaign run 2026-07-05
1Verdict
MiniMax M2.5 is the most prompt-management-sensitive model in the lab: flawless under strict discipline, unusable without it. Both strict configurations clear a clean 10/10 — 65.5s average under strict-nothink, 70.2s under strict-think, functionally a tie — making it the third of four perfect scorers now in the lab. Switch to a minimal prompt and it falls apart: 7/10 under minimal-nothink at 309s average, 5/10 under minimal-think at 372s average, with 8 of those 20 minimal runs (5 of 10 minimal-think, 3 of 10 minimal-nothink) burning the full 8,000-token output cap over roughly 10 minutes each and returning no code at all — the same "no code found in response" failure signature as GLM's think-mode spirals. At ~14.7 tok/s generation, it is also the slowest per-response of the lab's perfect scorers, roughly half gpt-oss-120b's throughput and a fifth of the two Qwen instruct models'.
2Strategy Table
Same 10-problem set, four strategies, 40 runs. Recomputed from models/minimax-m2.5/benchmarks/2026-07-05-campaign.jsonl.
| Strategy | Pass rate | Avg wall time | Avg output tokens | Avg tok/s |
|---|---|---|---|---|
| strict-nothink | 10/10 (100%) | 65.5s | 911 | 14.8 |
| strict-think | 10/10 (100%) | 70.2s | 1,000 | 14.7 |
| minimal-nothink | 7/10 (70%) | 309.3s | 4,100 | 13.8 |
| minimal-think | 5/10 (50%) | 372.3s | 4,850 | 13.7 |
Pass rate
Avg wall time per problem
had_reasoning: true), like Qwen3.6 and gpt-oss-120b, but MiniMax's chains run far longer under a weak prompt: minimal-think's failed runs average roughly 8,300 reasoning tokens against strict-nothink's 300–400.3Per-Problem Matrix
| Problem | minimal-think | minimal-nothink | strict-nothink | strict-think |
|---|---|---|---|---|
| merge_intervals | PASS | FAIL | PASS | PASS |
| lru_ttl_cache | PASS | PASS | PASS | PASS |
| toposort | FAIL | PASS | PASS | PASS |
| csv_parse | FAIL | PASS | PASS | PASS |
| glob_match | FAIL | PASS | PASS | PASS |
| rle_roundtrip | PASS | FAIL | PASS | PASS |
| first_occurrence | PASS | PASS | PASS | PASS |
| deep_merge | FAIL | PASS | PASS | PASS |
| range_overlap | PASS | PASS | PASS | PASS |
| expr_eval | FAIL | FAIL | PASS | PASS |
Both strict strategies sweep all 10 problems. The five minimal-think failures (toposort, csv_parse, glob_match, deep_merge, expr_eval) are all cap-out spirals — the model never gets far enough to produce wrong code, it just never finishes.
4Observations
- The Diva archetype: flawless under discipline, unusable without it. No other model in the lab shows this wide a swing between its best and worst strategy — a 5-point pass-rate spread and better than 5x wall-time spread between strict-nothink and minimal-think.
- Cap-outs are the dominant minimal-prompt failure mode. 8 of 20 minimal runs hit the full 625s / 8,000-token ceiling and returned no code — GLM's think-mode spiral signature, but triggered here by prompt looseness rather than a "think" toggle.
- Slowest per-response of the perfect scorers. ~14.7 tok/s puts it well behind gpt-oss-120b (~36 tok/s) and the two Qwen instruct models (~26–35 tok/s) — a real latency cost even in its best configuration.
- Served with
--no-mmap -c 16384on the rebuilt CUDA-arch-121 llama.cpp, the same build used for gpt-oss-120b.
Model Lab · Profile
Devstral Small
Mistral, 24B dense · Q8 GGUF · llama.cpp · campaign run 2026-07-06
1Hypothesis
Every other model in this lab is MoE — a handful of active experts per token, activating a fraction of total parameters. Devstral Small is dense: all 24B weights fire on every token. That makes it the natural control for a question the roster couldn't otherwise answer: is MoE's dominance on this bandwidth-bound box a genuine architecture advantage, or just a speed profile that happens to correlate with the models tested so far? The result is no magic in density — Devstral lands mid-pack at 8/10 under its best strategy (strict-nothink, 25.2s average), squarely between the lab's weaker and stronger MoE models, at roughly a sixth the generation speed (~6 tok/s vs 30+ tok/s for the MoE models near its size). It scores competitively but pays for every token in wall time, exactly the "read-the-whole-brain" tradeoff the hypothesis predicted — and buys no accuracy premium for it. MoE dominance on this box stands.
2Strategy Table
Same 10-problem set, four strategies, 40 runs. Recomputed from models/devstral-small/benchmarks/2026-07-06-cs-exam.jsonl.
| Strategy | Pass rate | Avg wall time | Avg output tokens | Avg tok/s |
|---|---|---|---|---|
| strict-nothink | 8/10 (80%) | 25.2s | 150 | 6.0 |
| strict-think | 5/10 (50%) | 27.1s | 162 | 6.0 |
| minimal-think | 6/10 (60%) | 104.0s | 622 | 6.0 |
| minimal-nothink | 5/10 (50%) | 95.6s | 572 | 6.0 |
Pass rate
Avg wall time per problem
think suffix costs accuracy without buying reasoning depth on a model that (like Qwen3-Coder-30B) shows no reasoning-token machinery at all.3Per-Problem Matrix
| Problem | minimal-think | minimal-nothink | strict-nothink | strict-think |
|---|---|---|---|---|
| merge_intervals | PASS | PASS | PASS | PASS |
| lru_ttl_cache | PASS | PASS | PASS | PASS |
| toposort | FAIL | FAIL | PASS | FAIL |
| csv_parse | FAIL | FAIL | FAIL | FAIL |
| glob_match | PASS | FAIL | PASS | FAIL |
| rle_roundtrip | PASS | PASS | PASS | PASS |
| first_occurrence | PASS | PASS | PASS | PASS |
| deep_merge | PASS | PASS | PASS | PASS |
| range_overlap | FAIL | FAIL | FAIL | FAIL |
| expr_eval | FAIL | FAIL | PASS | FAIL |
datetime/timedelta import confusion repeated near-identically across every strategy. strict-nothink is the only configuration to clear both toposort and expr_eval, the two problems that split every other strategy on this model.4Observations
- Dense confirms the MoE-dominance hypothesis rather than overturning it. 8/10 at ~6 tok/s sits mid-pack against MoE models running 5-6x faster — Devstral pays a real speed tax and doesn't get an accuracy premium in return.
- Strict prompt still wins on pass rate, but not on the think toggle. strict-nothink (8/10) beats strict-think (5/10) despite matching wall time and token counts — the opposite of a "more thinking helps" story; this looks like prompt-format noise rather than a reasoning effect, consistent with Devstral showing no dedicated reasoning-token machinery.
- Generation speed is rock-steady at ~6 tok/s regardless of strategy — the dense-model signature already seen in wall time, just restated in throughput terms.
Model Lab · Profile
Qwen3-30B Thinking
Qwen3-30B-A3B-Thinking-2507 · Q8 GGUF · llama.cpp · campaign run 2026-07-06
1Hypothesis
Dispatch's escalation tier currently has two imperfect candidates: Qwen3.6-35B, whose reasoning is bounded and reliable but stumbles on Go-specific build tasks, and GLM-4.5-Air, whose think mode spirals unbounded for 24 minutes on problems it can already solve. Qwen3-30B-A3B-Thinking-2507 is purpose-built as a dedicated reasoning model rather than a hybrid think/nothink toggle bolted onto a general model — the question was whether a smaller, reasoning-native architecture can own the escalation tier outright. The result is the most interesting strategy-truths break in the lab: its best score, 9/10 at 144s average, comes from minimal-nothink — both strict configurations land at 7/10, the first time in this lab the strict prompt has lost. A dedicated reasoner appears to want room to think rather than a tightly scoped prompt; the per-model preset system in Dispatch exists for exactly this kind of exception.
2Strategy Table
Same 10-problem set, four strategies, 40 runs. Recomputed from models/qwen3-30b-thinking/benchmarks/2026-07-06-cs-exam.jsonl.
| Strategy | Pass rate | Avg wall time | Avg output tokens | Avg tok/s |
|---|---|---|---|---|
| minimal-nothink | 9/10 (90%) | 144.0s | 4,383 | 31.7 |
| minimal-think | 8/10 (80%) | 134.0s | 4,079 | 32.0 |
| strict-nothink | 7/10 (70%) | 150.6s | 4,555 | 31.5 |
| strict-think | 7/10 (70%) | 154.3s | 4,641 | 31.5 |
Pass rate
Avg wall time per problem
3Per-Problem Matrix
| Problem | minimal-think | minimal-nothink | strict-nothink | strict-think |
|---|---|---|---|---|
| merge_intervals | PASS | PASS | PASS | PASS |
| lru_ttl_cache | PASS | PASS | PASS | PASS |
| toposort | PASS | PASS | FAIL | FAIL |
| csv_parse | FAIL | FAIL | FAIL | FAIL |
| glob_match | PASS | PASS | PASS | PASS |
| rle_roundtrip | PASS | PASS | PASS | PASS |
| first_occurrence | PASS | PASS | PASS | PASS |
| deep_merge | PASS | PASS | PASS | PASS |
| range_overlap | PASS | PASS | PASS | PASS |
| expr_eval | FAIL | PASS | FAIL | FAIL |
toposort is the strategy-flip problem: both minimal configurations pass it, both strict configurations fail it — exactly the reverse of the pattern seen in models where strict wins. expr_eval only clears under minimal-nothink, its single unique pass.4Observations
- The first model in the lab where the strict prompt underperforms. Minimal-nothink (9/10) beats both strict-nothink and strict-think (7/10 each) — the exact opposite of every other model profiled. Dedicated reasoners may need room to explore rather than a narrow scope; per-model strategy presets in Dispatch exist to capture cases like this rather than force a single global default.
- Reasoning is always-on and expensive regardless of suffix. Every strategy produces 4,000+ output tokens at ~32 tok/s and 130-155s wall time — there's no cheap "nothink" mode the way GLM or the coder models have; the think/nothink suffix barely moves the needle here.
- toposort inverts the usual strategy pattern. Both minimal strategies solve it, both strict strategies miss it — a second, independent signal (beyond the overall pass-rate ranking) that this model behaves opposite to the lab's dominant "strict wins" rule.
Model Lab
Infrastructure
GX10-01 deployment topology
1Compute
- Asus GX10 — GB10 unified-memory system, 128GB shared between CPU and GPU.
llama-server— systemd service, boot-persistent, auto-restart on failure, port8080, 4 parallel slots (--parallel 4 --metrics), serving the OpenAI-compatible/v1API plus/metricsand/health.- DNS —
llm.internalresolves to192.168.3.220via UniFi. - Thermals — steady 51°C at 96% GPU utilization under sustained inference, drawing 11W.
2Dispatch Gateway
Small Go service (port 8181) owning the decision tree, model presets, and telemetry — the layer that decides which model and which strategy handles a given request, and escalates when one fails.
research/2026-07-05-buy-vs-build.md) found no existing gateway implementing a generate → run-tests → traceback-retry → thinking-escalation → frontier-escalation loop end to end. LiteLLM Proxy escalates only on transport errors, not test failures; Aider's --auto-test loop is the closest prior art for the retry step. Adopted: llama-swap for model lifecycle. Skipped: LiteLLM and Bifrost — the custom decision tree is the entire value of Dispatch, and their weight buys little on top of it.3Telemetry
Every run in this lab — strategy exams, self-repair rounds, context-scaling sweeps, concurrency tests — is logged as JSONL with problem id, strategy, timestamps, reasoning/output token counts, wall time, and pass/fail against hidden tests. All pass/fail figures on this site are recomputed directly from those logs, not hand-entered.
Model Lab
Roadmap
Future benchmarking and system-design queue
1Queue
- Python exam slate. The matrix anchor — Python is the locals' home language, so a Python-language build/CS pack calibrates the ceiling every other language result gets read against.
- Hybrid team benchmark (frontier thinks / local does). Measures the token exchange rate between tiers; work thesis is that a frontier model planning and a local model executing can cut frontier token spend to roughly 20% of a solo-frontier run at comparable quality.
- Token/cost ledger in Dispatch. Frontier-vs-local spend per unit of verified work, priced against a counterfactual (what the same task would have cost run solo-frontier) rather than raw token counts alone.
- Dispatch MCP interface + "foreman" agents. Named agents per backend, an agent-flow UX, and cost reporting baked in — governed by one design principle: Dispatch executes work orders; it never writes them.
- Bedrock + Cloudflare Workers AI as cloud-GX10 providers. Same exam suite, run against a third substrate tier, to separate "GX10-specific" results from results that generalize across any inference backend.
- Frontend slates. React vs Angular tier-1 logic exams to probe the language-affinity question head-on; an Electron IPC pack to follow later.
- Production niche: specialized batch labor. Chaio transaction/receipt/email categorization as the first real production workload for the local tier — high volume, low individual stakes, exactly the profile this lab has been calibrating for.