Eval Results5 models × 24 gated cases2026-06-17

Local Model Eval — Results

Which installed model wins per task, measured on your machine. Quality = gate pass-rate · Speed = median latency · Cost = mean output tokens.

Headline: on bounded easy/medium work, every coding model passes nearly everything — so the differentiator is speed, not quality. And the surprise: the 30B MoE is as fast as the tiny model while having the most headroom. The reasoning model and the 14B are the losers.

The ladder I'd pick

recommended  Two rungs cover the offload workload:

Per-model summary

ModelPassMedian latencyMean tokens
DeepSeek-Coder-V2-Lite (turbo)24/24544ms37
Qwen2.5-Coder-7B (fast)24/24922ms27
Qwen2.5-Coder-14B (everyday)24/241.7s28
Qwen3-Coder-30B-A3B (quality, MoE)24/24649ms28
Qwen3.5-27B Opus-Distilled (reasoning)22/2429.5s264

Pass = gate pass-rate across all 24 cases. Latency = median wall-clock per case. Tokens = mean completion tokens (cost/verbosity proxy).

Quality heatmap — gate pass-rate by category

Modelboilerplatesummarizeextractreviewexplaincodegen
DeepSeek-Coder-V2-Lite (turbo)4/44/44/44/44/44/4
Qwen2.5-Coder-7B (fast)4/44/44/44/44/44/4
Qwen2.5-Coder-14B (everyday)4/44/44/44/44/44/4
Qwen3-Coder-30B-A3B (quality, MoE)4/44/44/44/44/44/4
Qwen3.5-27B Opus-Distilled (reasoning)4/44/44/44/44/42/4

Hover a cell for its latency + tokens. Only the reasoning model dropped cases — and those were gate failures: it wraps code in chain-of-thought prose, so the whole-output compile check fails.

Speed heatmap — median latency by category

Modelboilerplatesummarizeextractreviewexplaincodegen
DeepSeek-Coder-V2-Lite (turbo)1107.5ms496.0ms432.0ms327.0ms583.0ms950.0ms
Qwen2.5-Coder-7B (fast)1.9s831.5ms684.0ms315.0ms1273.5ms1242.0ms
Qwen2.5-Coder-14B (everyday)4.2s1.7s1121.0ms482.5ms2.4s2.2s
Qwen3-Coder-30B-A3B (quality, MoE)917.5ms647.0ms516.5ms372.0ms677.5ms1155.5ms
Qwen3.5-27B Opus-Distilled (reasoning)20.3s26.7s26.5s41.1s33.4s35.8s

Green <1.5s · amber <6s · red ≥6s. The 27B reasoning model is off-the-charts slow (20–41s per case).

The operational finding (matters for the product)

You cannot sweep all 5 models in one pool — the warm pool OOMs.

The first full sweep loaded the small models first; by the time the big ones were requested, the engine pool was full and they returned 507 Insufficient Storage (and the 14B got knocked over with 400/connection errors under the pressure). The harness's resilience held — it recorded failures instead of crashing — and clean numbers came from running each big model in isolation (one big model at a time fits; two ~17GB models do not, under the ~24.5GB ceiling).

This is the exact warm-pool/eviction problem the routing design flagged — now proven empirically on your hardware. It directly shapes the deferred auto-ladder selector: it must evict before loading a big model, and never try to co-resident two big ones. A practical sweep harness needs a "big models run solo" mode.

Caveats — read before trusting the ladder

Next steps