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.
recommended Two rungs cover the offload workload:
| Model | Pass | Median latency | Mean tokens |
|---|---|---|---|
| DeepSeek-Coder-V2-Lite (turbo) | 24/24 | 544ms | 37 |
| Qwen2.5-Coder-7B (fast) | 24/24 | 922ms | 27 |
| Qwen2.5-Coder-14B (everyday) | 24/24 | 1.7s | 28 |
| Qwen3-Coder-30B-A3B (quality, MoE) | 24/24 | 649ms | 28 |
| Qwen3.5-27B Opus-Distilled (reasoning) | 22/24 | 29.5s | 264 |
Pass = gate pass-rate across all 24 cases. Latency = median wall-clock per case. Tokens = mean completion tokens (cost/verbosity proxy).
| Model | boilerplate | summarize | extract | review | explain | codegen |
|---|---|---|---|---|---|---|
| DeepSeek-Coder-V2-Lite (turbo) | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 |
| Qwen2.5-Coder-7B (fast) | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 |
| Qwen2.5-Coder-14B (everyday) | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 |
| Qwen3-Coder-30B-A3B (quality, MoE) | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 |
| Qwen3.5-27B Opus-Distilled (reasoning) | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 2/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.
| Model | boilerplate | summarize | extract | review | explain | codegen |
|---|---|---|---|---|---|---|
| DeepSeek-Coder-V2-Lite (turbo) | 1107.5ms | 496.0ms | 432.0ms | 327.0ms | 583.0ms | 950.0ms |
| Qwen2.5-Coder-7B (fast) | 1.9s | 831.5ms | 684.0ms | 315.0ms | 1273.5ms | 1242.0ms |
| Qwen2.5-Coder-14B (everyday) | 4.2s | 1.7s | 1121.0ms | 482.5ms | 2.4s | 2.2s |
| Qwen3-Coder-30B-A3B (quality, MoE) | 917.5ms | 647.0ms | 516.5ms | 372.0ms | 677.5ms | 1155.5ms |
| Qwen3.5-27B Opus-Distilled (reasoning) | 20.3s | 26.7s | 26.5s | 41.1s | 33.4s | 35.8s |
Green <1.5s · amber <6s · red ≥6s. The 27B reasoning model is off-the-charts slow (20–41s per case).
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.