Part 1 describes the benchmark design and the runtime failures that had to be resolved before collecting these results: Debugging Local LLM Benchmarks.
Snapshot status, July 27, 2026: 8 models have complete 225-exercise runs and are included in the aggregate tables. All scheduled full-batch runs are complete.
This report summarizes eight quantized GGUF artifacts in one local Aider setup.
Each artifact was evaluated on all 225 Aider Polyglot exercises with the same
diff edit format and a maximum of two attempts per exercise. The primary
outcome is the number of exercises whose tests passed by the end of the second
attempt.
This is not a controlled model leaderboard. The runner controls were fixed, but the long-running batches were resumed over several days while the local serving stack was being maintained. In particular, the active AgentWorld chat template changed after 10 of its 225 result files had been produced. Some later results also span llama.cpp package updates. The aggregate rows remain useful as an operational record of this system, but they cannot isolate model quality from serving configuration.
The highest aggregate Pass@2 values were 70.2% for Qwen AgentWorld 35B A3B and 69.3% for Ornith 1.0 35B. That two-exercise difference does not establish a stable ordering: each artifact was run once, generation was stochastic, and no repeated-seed experiment was performed. AgentWorld’s mixed-template run adds a separate confound. The defensible conclusion is limited to the recorded rows: the two runs produced similar aggregate solve counts but different resource and failure profiles.
Protocol and measurement
The benchmark used the Aider Polyglot dataset at commit
7e0611e:
225 Exercism-derived tasks across C++, Go, Java, JavaScript, Python, and Rust.
For each task, Aider supplied repository context, requested an edit, applied any
parseable patch, and ran the task’s tests.
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Control | Value |
|---|---|
| Aider edit format | diff |
| Maximum attempts | 2 |
| Benchmark workers | 1 |
| llama.cpp slots | 1 |
| Temperature | 0.7 |
| Aider model metadata: maximum input | 131,072 tokens |
| Aider model metadata: maximum output | 32,768 tokens |
| Per-request timeout | 1,800 seconds |
| Aider commit | 5dc9490 plus a local timeout patch |
| Dataset commit | 7e0611e |
The local patch adds a --timeout option and forwards it to LiteLLM. It changes
request containment, not the benchmark’s scoring logic. The Aider checkout is
therefore recorded as 5dc9490-dirty. The patch is not publicly archived, so
the upstream commit alone is insufficient to reproduce the runner.
All local runs used one OpenAI-compatible llama.cpp endpoint and executed serially. The endpoint URL and runner parameters were stable; the underlying server package and some model-template configuration were not frozen for the entire collection. Wall time includes model generation, Aider processing, patch application, and tests. It is not a pure inference-throughput metric.
The metrics used below are:
- Pass@1: tests passed after the first attempt.
- Pass@2: tests passed after either the first or second attempt.
- Malformed case: at least one Aider
num_malformed_responsesevent was recorded for the exercise. - No malformed event: the complement of malformed cases. This does not imply that the patch applied or passed tests.
- Completion tokens / solved: total recorded completion tokens for the entire run divided by its Pass@2 solve count.
- Seconds / solved: total recorded wall time for the entire run divided by its Pass@2 solve count.
Pass@2 is an agent-loop metric, not the statistical pass@k estimator used for independent code samples. Because there is one run per artifact, the tables report observed outcomes only; they do not estimate run-to-run variance.
The exporter reads each native .aider.results.json and retains one row per
completed exercise. A watchdog timeout sidecar contributes to handled coverage
but not to the Pass@1 or Pass@2 denominator unless a result file exists. The
export contains 225 result files for every included artifact and no exporter
warnings. Completeness here means complete task coverage, not a claim that the
serving environment was immutable.
Evaluated artifacts
The measured unit is the complete stack: checkpoint, quantization, chat template, llama.cpp serving configuration, Aider, and edit protocol. Because parts of that stack changed during collection, the table is descriptive rather than a controlled comparison. The results must not be attributed to the unquantized model families alone.
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Model | GGUF artifact | Quantization | Status in this snapshot |
|---|---|---|---|
| Qwen AgentWorld 35B A3B | Qwen-AgentWorld-35B-A3B-UD-Q4_K_XL.gguf | UD-Q4_K_XL | Complete, included |
| Ornith 1.0 35B | Ornith-1.0-35B-UD-Q4_K_XL.gguf | UD-Q4_K_XL | Complete, included |
| Qwen3 Coder Next | Qwen3-Coder-Next-UD-IQ3_XXS.gguf | UD-IQ3_XXS | Complete, included |
| Agents-A1 APEX | Agents-A1-APEX-I-Balanced.gguf | APEX I Balanced | Complete, included |
| Qwen3.6 35B A3B Unsloth | Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf | UD-Q4_K_XL | Complete, included |
| Qwen3.6 35B A3B Aggressive | Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_P.gguf | Q4_K_P | Complete, included |
| Gemma4 26B A4B Unsloth | gemma-4-26B-A4B-it-UD-Q4_K_XL.gguf | UD-Q4_K_XL | Complete, included |
| Gemma4 26B A4B Balanced | Gemma4-26B-A4B-Uncensored-HauhauCS-Balanced-Q4_K_P.gguf | Q4_K_P | Complete, included |
Qwen AgentWorld needs a role qualification. Its model card and technical report describe a language world model that predicts environment state from interaction history and agent actions. Here it was used directly as Aider’s coding model. Its aggregate row also combines 10 cases produced before an active-template change with 215 produced afterward. The result is therefore exploratory evidence of transfer to the coding-actor role, not a clean estimate for one AgentWorld serving configuration.
Observed aggregate results
Only complete 225-exercise runs appear in this table.
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Model | Pass@1 | Pass@2 | Cases without malformed-response events | Mean time/case | Median time/case | Completion tokens |
|---|---|---|---|---|---|---|
| Qwen AgentWorld 35B A3B | 78/225 (34.7%) | 158/225 (70.2%) | 94.7% | 513.3s | 369.1s | 4,201,718 |
| Ornith 1.0 35B | 70/225 (31.1%) | 156/225 (69.3%) | 100.0% | 331.2s | 243.4s | 2,663,745 |
| Qwen3 Coder Next | 70/225 (31.1%) | 145/225 (64.4%) | 90.2% | 256.7s | 143.4s | 1,089,826 |
| Agents-A1 APEX | 63/225 (28.0%) | 130/225 (57.8%) | 82.2% | 162.9s | 62.6s | 766,050 |
| Qwen3.6 35B A3B Unsloth | 68/225 (30.2%) | 117/225 (52.0%) | 95.1% | 88.1s | 44.5s | 663,437 |
| Qwen3.6 35B A3B Aggressive | 55/225 (24.4%) | 112/225 (49.8%) | 89.3% | 82.2s | 42.0s | 668,523 |
| Gemma4 26B A4B Unsloth | 29/225 (12.9%) | 86/225 (38.2%) | 48.4% | 255.0s | 164.7s | 1,222,562 |
| Gemma4 26B A4B Balanced | 32/225 (14.2%) | 83/225 (36.9%) | 25.3% | 367.8s | 237.6s | 1,723,683 |
AgentWorld and Ornith differed by two Pass@2 solves. Their task-level outcomes were not interchangeable: both solved 126 exercises, AgentWorld alone solved 32, Ornith alone solved 30, and neither solved 37. This paired breakdown is more informative than the 0.9-point aggregate gap. It still does not support a model ordering because the runs were neither repeated nor configuration-matched.
The recorded resource difference is larger. Relative to Ornith, AgentWorld consumed 58% more completion tokens and 55% more total wall time while solving two additional exercises. Qwen3 Coder Next solved 145 exercises with substantially less recorded output and wall time than either top row. These are properties of the recorded runs, not normalized model-efficiency estimates.
All scheduled full-batch models have complete 225-exercise result sets.
The chart visualizes the same local Pass@1 and Pass@2 values as the canonical table above.
Bar chart. Two attempts, fixed diff protocol, 225 exercises per model. Source: Local Aider Polyglot snapshot, July 27, 2026. Data table with 9 rows and 3 columns follows.
| Pass@1 | Pass@2 | |
|---|---|---|
| AgentWorld | 34.7% | 70.2% |
| Ornith | 31.1% | 69.3% |
| Qwen3 Coder | 31.1% | 64.4% |
| Agents-A1 | 28% | 57.8% |
| Qwen3.6 Unsloth | 30.2% | 52% |
| Qwen3.6 Agg. | 24.4% | 49.8% |
| Gemma4 Unsloth | 12.9% | 38.2% |
| Gemma4 Balanced | 14.2% | 36.9% |
Cloud Reference: GPT-5.4 Mini Without Reasoning
One hosted run provides a reference point, not a ninth row in the local
comparison. GPT-5.4 mini used the OpenAI API, reasoning_effort=none, the same
diff format, and at most two attempts. Aider recorded zero thinking tokens and
approximately $3.53 in API cost.
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Model | Deployment | Reasoning effort | Pass@1 | Pass@2 | Cases without malformed-response events | Mean time/case | Completion tokens | Recorded API cost |
|---|---|---|---|---|---|---|---|---|
| GPT-5.4 mini | OpenAI API | none | 33/225 (14.7%) | 93/225 (41.3%) | 94.2% | 13.3s | 302,489 | $3.53 |
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Model | C++ | Go | Java | JavaScript | Python | Rust |
|---|---|---|---|---|---|---|
| GPT-5.4 mini | 14/26 (53.8%) | 15/39 (38.5%) | 16/47 (34.0%) | 18/49 (36.7%) | 15/34 (44.1%) | 15/30 (50.0%) |
Its latency is not comparable with local serial inference, and its no-reasoning configuration is not a matched counterpart to the local serving profiles. The run establishes only the result of this budget-constrained API configuration. Any claim about the effect of reasoning would require a paired run with reasoning enabled.
Contribution of the second attempt
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Model | Pass@1 | Pass@2 | Gain |
|---|---|---|---|
| Ornith 1.0 35B | 31.1% | 69.3% | +38.2 percentage points |
| Qwen AgentWorld 35B A3B | 34.7% | 70.2% | +35.6 percentage points |
| Qwen3 Coder Next | 31.1% | 64.4% | +33.3 percentage points |
| Agents-A1 APEX | 28.0% | 57.8% | +29.8 percentage points |
| Qwen3.6 35B A3B Aggressive | 24.4% | 49.8% | +25.3 percentage points |
| Gemma4 26B A4B Unsloth | 12.9% | 38.2% | +25.3 percentage points |
| Gemma4 26B A4B Balanced | 14.2% | 36.9% | +22.7 percentage points |
| Qwen3.6 35B A3B Unsloth | 30.2% | 52.0% | +21.8 percentage points |
Every artifact gained at least 21.8 percentage points from the second attempt. The gain belongs to the combined model-Aider loop: the second request includes feedback from the first patch and its tests. It does not measure two independent samples from the original prompt.
For deployment, both columns matter. Pass@1 approximates how often one model round is sufficient; Pass@2 measures the tested repair loop. Reporting only Pass@2 hides the additional requests, tokens, and time required to reach it.
Recorded solve rate, wall time, and output volume
No artifact dominates all three dimensions.
- AgentWorld recorded 158 solves, 513.3 seconds per case, and 4.20 million completion tokens.
- Ornith recorded 156 solves, 331.2 seconds per case, and 2.66 million completion tokens.
- Qwen3 Coder Next recorded 145 solves, 256.7 seconds per case, and 1.09 million completion tokens.
- Qwen3.6 Unsloth and Aggressive were the fastest local runs at 88.1 and 82.2 seconds per case, with 117 and 112 solves respectively.
- Both Gemma4 artifacts combined lower solve counts with high malformed-case rates; their wall time was not offset by higher Pass@2.
These values are descriptive run totals. Since the serving stack was not frozen throughout collection, they should not be used as a controlled speed ranking or extrapolated to other hardware. GPT-5.4 mini is excluded because its hosted execution path is different.
This chart visualizes recorded Pass@2 and median wall time. The serving configuration was not frozen across all runs, so it is not a controlled speed ranking. Bubble size encodes completion tokens per solved exercise.
Bubble chart. Recorded runs; serving configuration was not frozen. Bubble size scales with completion tokens per solve. Source: Local Aider Polyglot snapshot, July 27, 2026. Data table with 9 rows and 4 columns follows.
| Median seconds per case | Pass@2 | Relative token radius | |
|---|---|---|---|
| AgentWorld | 369.1 | 70.2 | 17.9 |
| Ornith | 243.4 | 69.3 | 14.9 |
| Qwen3 Coder | 143.4 | 64.4 | 10.9 |
| Agents-A1 | 62.6 | 57.8 | 10 |
| Qwen3.6 Unsloth | 44.5 | 52 | 9.9 |
| Qwen3.6 Agg. | 42 | 49.8 | 10.1 |
| Gemma4 Unsloth | 164.7 | 38.2 | 13.9 |
| Gemma4 Balanced | 237.6 | 36.9 | 16.2 |
Results by programming language
The language groups contain different numbers of exercises, so counts and percentages are reported together.
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Model | C++ | Go | Java | JavaScript | Python | Rust |
|---|---|---|---|---|---|---|
| Qwen AgentWorld 35B A3B | 19/26 (73.1%) | 27/39 (69.2%) | 30/47 (63.8%) | 37/49 (75.5%) | 24/34 (70.6%) | 21/30 (70.0%) |
| Ornith 1.0 35B | 18/26 (69.2%) | 27/39 (69.2%) | 27/47 (57.4%) | 37/49 (75.5%) | 26/34 (76.5%) | 21/30 (70.0%) |
| Qwen3 Coder Next | 15/26 (57.7%) | 28/39 (71.8%) | 23/47 (48.9%) | 35/49 (71.4%) | 28/34 (82.4%) | 16/30 (53.3%) |
| Agents-A1 APEX | 16/26 (61.5%) | 19/39 (48.7%) | 22/47 (46.8%) | 33/49 (67.3%) | 23/34 (67.6%) | 17/30 (56.7%) |
| Qwen3.6 35B A3B Unsloth | 13/26 (50.0%) | 21/39 (53.8%) | 20/47 (42.6%) | 28/49 (57.1%) | 20/34 (58.8%) | 15/30 (50.0%) |
| Qwen3.6 35B A3B Aggressive | 10/26 (38.5%) | 19/39 (48.7%) | 20/47 (42.6%) | 31/49 (63.3%) | 18/34 (52.9%) | 14/30 (46.7%) |
| Gemma4 26B A4B Unsloth | 5/26 (19.2%) | 18/39 (46.2%) | 18/47 (38.3%) | 18/49 (36.7%) | 12/34 (35.3%) | 15/30 (50.0%) |
| Gemma4 26B A4B Balanced | 8/26 (30.8%) | 14/39 (35.9%) | 13/47 (27.7%) | 16/49 (32.7%) | 20/34 (58.8%) | 12/30 (40.0%) |
The largest observed per-language value is Qwen3 Coder Next’s 28/34 on Python. AgentWorld and Ornith are more even across the six groups. These subgroup sizes are too small for broad claims about language competence, and the tasks are not matched for difficulty across languages.
Protocol failures
Malformed output is separate from test failure. A syntactically parseable edit can apply and still fail tests; a malformed response can prevent Aider from applying the intended edit at all.
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Model | Cases with malformed response | Context-exhausted cases | Test-timeout cases |
|---|---|---|---|
| Qwen AgentWorld 35B A3B | 12 (5.3%) | 2 (0.9%) | 3 (1.3%) |
| Ornith 1.0 35B | 0 (0.0%) | 5 (2.2%) | 0 (0.0%) |
| Qwen3 Coder Next | 22 (9.8%) | 0 (0.0%) | 2 (0.9%) |
| Agents-A1 APEX | 40 (17.8%) | 13 (5.8%) | 1 (0.4%) |
| Qwen3.6 35B A3B Unsloth | 11 (4.9%) | 0 (0.0%) | 1 (0.4%) |
| Qwen3.6 35B A3B Aggressive | 24 (10.7%) | 1 (0.4%) | 1 (0.4%) |
| Gemma4 26B A4B Unsloth | 116 (51.6%) | 2 (0.9%) | 1 (0.4%) |
| Gemma4 26B A4B Balanced | 168 (74.7%) | 2 (0.9%) | 1 (0.4%) |
In these artifacts, num_malformed_responses is Aider’s protocol-level
counter. It includes failures such as SEARCH/REPLACE blocks that cannot be
matched; it does not mean that the OpenAI-compatible HTTP response contained
invalid JSON.
Ornith recorded no malformed-response events, although five exercises exhausted
context. Qwen3.6 Unsloth had the lowest malformed-case rate after Ornith at
4.9%. The Gemma4 variants were incompatible with this fixed diff setup in
51.6% and 74.7% of cases respectively. That result is specific to the tested
artifacts, templates, and edit format; it does not measure their performance
with a model-specific format.
The aggregate export does not classify every patch rejection or valid-patch test failure. Such a taxonomy requires transcript-level analysis and is not inferred here.
The failure-rate chart summarizes protocol reliability; the adjacent table remains the exact accessible source.
Bar chart. Case-level protocol failures; a valid patch that fails tests is a different event. Source: Local Aider Polyglot snapshot, July 27, 2026. Data table with 9 rows and 4 columns follows.
| Malformed response | Context exhausted | Test timeout | |
|---|---|---|---|
| AgentWorld | 5.3% | 0.9% | 1.3% |
| Ornith | 0% | 2.2% | 0% |
| Qwen3 Coder | 9.8% | 0% | 0.9% |
| Agents-A1 | 17.8% | 5.8% | 0.4% |
| Qwen3.6 Unsloth | 4.9% | 0% | 0.4% |
| Qwen3.6 Agg. | 10.7% | 0.4% | 0.4% |
| Gemma4 Unsloth | 51.6% | 0.9% | 0.4% |
| Gemma4 Balanced | 74.7% | 0.9% | 0.4% |
Token and time efficiency
The following two ratio columns divide total run resources by the number of Pass@2 solves. They are run-level cost ratios, not conditional means over only the successful exercises.
Swipe or scroll horizontally to view all columns. Keyboard users can use the arrow keys.
| Model | Mean time/case | Median time/case | Completion tokens/case | Completion tokens/solved | Seconds/solved |
|---|---|---|---|---|---|
| Qwen3.6 35B A3B Aggressive | 82.2s | 42.0s | 2,971 | 5,969 | 165.2s |
| Qwen3.6 35B A3B Unsloth | 88.1s | 44.5s | 2,949 | 5,670 | 169.4s |
| Agents-A1 APEX | 162.9s | 62.6s | 3,405 | 5,893 | 281.9s |
| Gemma4 26B A4B Unsloth | 255.0s | 164.7s | 5,434 | 14,216 | 667.1s |
| Qwen3 Coder Next | 256.7s | 143.4s | 4,844 | 7,516 | 398.3s |
| Ornith 1.0 35B | 331.2s | 243.4s | 11,839 | 17,075 | 477.7s |
| Gemma4 26B A4B Balanced | 367.8s | 237.6s | 7,661 | 20,767 | 997.0s |
| Qwen AgentWorld 35B A3B | 513.3s | 369.1s | 18,674 | 26,593 | 730.9s |
Qwen3.6 Unsloth has the lowest completion-token ratio per solve; Qwen3.6 Aggressive has the lowest wall-time ratio. AgentWorld’s solve count is highest, but its completion-token ratio is 56% above Ornith’s and 254% above Qwen3 Coder Next’s. These ratios capture operational cost under the measured stack, not architectural efficiency or energy use.
Excluded qualification run
One candidate was stopped during qualification after an observed pass rate of approximately 0.1. It did not enter the full-run roster or aggregate table.
Full batch complete
All scheduled full-batch models have 225 completed exercise results.
Comparison with BenchLocal
BenchLocal and Aider Polyglot measure different system behavior. BenchLocal is a set of short, deterministic checks for structured output, instruction following, tool selection, extraction, and debugging. Aider Polyglot measures repository edits validated by tests through a particular text-edit protocol.
The observed rank changes are substantial. Gemma4 Unsloth placed second in BenchLocal but seventh here, where 51.6% of cases contained a malformed-response event. Qwen3 Coder Next placed sixth in BenchLocal and third here. Agents-A1 moved from eighth to fourth. These reversals show that short-form contract compliance is not a substitute for testing a repository-editing loop. They are not evidence for a precise cross-benchmark ranking, especially given the serving confound in the Aider collection.
They do not show which benchmark is more correct. Each result is conditional on its task distribution, parser, prompts, and scoring rules.
Candidates for a controlled follow-up
The snapshot is sufficient to choose candidates for a stricter rerun, not to select a production default:
- Ornith 1.0 35B should be retained because its run combined 156 solves with no malformed-response cases. Five cases exhausted context.
- Qwen3 Coder Next should be retained because its run reached 145/225 with lower output than the two highest-scoring rows. It recorded a 9.8% malformed-case rate.
- Qwen3.6 35B A3B Unsloth provides a lower-cost comparison point: 117/225 solves and 4.9% malformed cases in the recorded run.
- Agents-A1 APEX is relevant for testing the trade-off between its 130/225 solve count and its 17.8% malformed-case rate.
- Qwen3.6 Aggressive adds little evidence beyond the Unsloth artifact: it solved five fewer tasks and had more than twice the malformed-case rate.
- The tested Gemma4 artifacts should not be rerun unchanged under
diff. A follow-up would need a justified protocol or template change declared in advance. - AgentWorld requires a clean rerun from zero with one frozen template and server build before its aggregate score can be compared with the other rows.
A controlled follow-up should pin the llama.cpp build and configuration, checksum every template, start new run directories, record a seed where the backend supports it, and repeat each selected artifact across multiple seeds.
Limitations and data availability
The report does not support claims beyond the recorded runs:
- The serving environment was not immutable. AgentWorld crossed an active chat-template change after 10 cases, and some resumed runs crossed llama.cpp package updates. This prevents a controlled model-to-model comparison.
- Each artifact was run once at temperature 0.7. There are no repeated seeds, confidence intervals, or estimates of run-to-run variance.
- The benchmark is a fixed set of 225 tasks, not a random sample of all software-engineering work.
- The artifacts differ in checkpoint, quantization, template, architecture, and reasoning representation. The comparison does not isolate any one of those factors.
- The fixed
diffprotocol measures both coding ability and compatibility with Aider’s parser. No per-model format tuning was performed. - Wall time includes the complete Aider exercise path and serial execution. It is not pure inference time.
- Completion-token counts are those reported through Aider and LiteLLM. Server-side handling of hidden or tagged reasoning may differ between templates, so the counts are operational billing-style measurements rather than direct measures of internal computation.
- The failure counters overlap at the case level and do not provide a complete causal taxonomy.
- GPT-5.4 mini used a hosted API with reasoning disabled. Its latency, cost, and solve rate are not directly comparable to the local rows.
The raw CSV files, per-case results, runner patch, and native Aider artifacts are not currently public. The aggregate tables therefore cannot be independently audited from this article alone. Until a versioned archive is published, this report should be treated as a documented operational snapshot rather than a reproducible benchmark release.
The snapshot identifies three useful signals: second attempts changed every aggregate result materially; edit-protocol failure rates varied from 0% to 74.7%; and similar solve counts could require very different amounts of output and wall time. It does not establish a model leaderboard. The next experiment must freeze and publish the full serving configuration before using these rows to make a deployment decision.
Leave a Reply