JackOD-9B-Coder — GGUF (MTP)
GGUF quants of ManniX-ITA/JackOD-9B-Coder,
a four-way omnimerge_v2 merge over Qwen/Qwen3.5-9B built for multi-turn
agentic coding — staying on a task across turns and tool calls until it is
actually finished, and then stopping.
v2 re-release (2026-10-21). The weights were replaced. v2 is the same
recipe with one change: Jackrong's Coder-Flash sits in the 0.30 slot that
held Qwopus3.5-9B-Coder. Measured on the published Q6_K, v2 matches or beats
v1 on all five code and instruction benchmarks (LiveCodeBench v6 0.8000,
IFEval 0.9400) and uses ~23% fewer tokens on the hard code problems. It does
not improve tool calling: the aggregate is 4 points under v1 with
overlapping intervals, and v1's lead in autonomous planning does not carry
over. The v1 measurements are kept at the end of this card, labelled as such.
Every _K and IQ tier is imatrix-calibrated, including Q6_K. The
calibration matrix used to build them is published in this repo as
imatrix.dat (sha256 5ad024b8…) so the quants can be audited
and reproduced.
The MTP head is excluded from the merge and passed through from the base
intact, so the draft head survives into these GGUFs. There is no vision
tower — base and merge both carry 775 tensors and zero visual.*; the
vision_config in config.json is inherited architecture metadata with no
weights behind it. No mmproj is published because none can be built. This
model is text-only.
Where the name comes from
JackOD is an initialism of its three merge sources:
Qwen3.5-9B is not in the name: it is the shared ancestor all three descend
from, the --base/--task-base the merge is taken against, rather than a
flavour contributed to the blend.
Recipe
python omnimergekit.py \
--base Qwen3.5-9B --task-base Qwen3.5-9B \
--source DeltaCoder-9B-applied \
--source Qwopus3.5-9B-Coder-Flash \
--source Ornith-1.5-9B \
--weights 0.55,0.30,0.15 \
--method omnimerge_v2 --density 0.53 --darex-q 0.75 --seed 42 \
--no-auto-mlp-skip --skip-patterns visual.,mtp. \
--output JackOD-9B-Coder
One step is not optional: Qwen3.5-9B, DeltaCoder-9B-applied and
Coder-Flash carry no root eos_token_id (it lives only in the nested text
config). The GGUF converter reads the root, finds nothing, and falls back —
putting the wrong terminator in the quant and leaking control tokens into
generations. The merge sets root eos_token_id 248046 / pad_token_id 248055
and takes the tokenizer and chat template from Coder-Flash, whose template this
model serves.
The build chain is in recipes/jackod-9b-coder/ of omnimergekit.
Evaluation (v2)
Measured on the published Q6_K (JackOD-9B-Coder-Q6_K.gguf, sha256
c94d907c…d25a, full AtomicChat ornith-1.5-9b imatrix 5ad024b8…), llama.cpp
311d4211bf, greedy (sampler=template_default, temp 0.0 / top-p 1.0 /
top-k 0), scores read from summary.json.score. v2 and Coder-Flash were run
together, on the same machine and build. The v1 and other source columns are
the v1 cohort (same templates, same sampler, its own llama.cpp build) and are
there for orientation.
| Benchmark |
JackOD v2 |
JackOD v1 |
Coder-Flash (0.30) |
Qwen3.5-9B (base) |
DeltaCoder-9B (0.55) |
Ornith-1.5-9B (0.15) |
| HumanEval (164) |
0.8902 |
0.8841 |
0.8415 |
0.8902 |
0.9146 |
0.7805 |
| HumanEval+ (164) |
0.8293 |
0.8232 |
0.7805 |
0.8049 † |
0.8232 |
0.7073 |
| LiveCodeBench v6 (55 hard) |
0.8000 |
0.7818 |
0.6727 |
0.7273 |
0.6364 |
0.5818 |
| MultiPL-E (300) |
0.8033 |
0.8033 |
0.7933 |
0.8200 |
0.8000 |
0.7267 |
| IFEval (100) |
0.9400 |
0.9100 |
0.8500 |
0.9300 † |
0.9200 |
0.8200 |
† From an earlier 9B bank, not the cohort run (see the v1 section).
- v2 is at or above v1 on every row. HumanEval, HumanEval+ and LiveCodeBench
each move by one problem, which is inside the run-to-run spread of a greedy
llama.cpp eval and is not claimed as an improvement. IFEval (+3 prompts) is the
one real move, and it puts v2 above the base.
- LiveCodeBench 0.8000 is above every source and the base: +7.27 pp over the
base, +12.73 pp over Coder-Flash, the source it gained.
- MultiPL-E is unchanged at 0.8033, still 1.67 pp under the base.
LiveCodeBench v6 (55 hard) — accuracy and reasoning length
Same 55 problems, same 12,288-token thinking budget, same cap, for every arm.
Token counts are the server's completion_tokens; budget hits are runs that
reached the thinking budget; length-capped never terminated on their own.
| model |
pass@1 |
mean tokens |
median tokens |
budget hits (solved) |
length-capped |
solved / 1k tokens |
| Qwen3.5-9B (base) |
0.7273 |
13,005 |
12,685 |
47 (32) |
18 |
0.056 |
| Qwopus3.5-9B-Coder |
0.6000 |
10,811 |
12,437 |
38 (17) |
8 |
0.055 |
| Qwopus3.5-9B-Coder-Flash |
0.6727 |
5,922 |
3,336 |
14 (4) |
6 |
0.114 |
| JackOD-9B-Coder v1 |
0.7818 |
8,869 |
12,358 |
29 (18) |
1 |
0.088 |
| JackOD-9B-Coder v2 |
0.8000 |
6,809 |
5,524 |
15 (6) |
2 |
0.117 |
- About 23% fewer tokens than v1 (mean 6,809 vs 8,869) and under half the
median (5,524 vs 12,358). On the 36 problems both versions solve, v2 is
shorter on 29 (median length ratio 0.66).
- The solved sets differ: 36 both, 7 only v1, 8 only v2. One 55-problem cell
does not separate two models that close, and it is not claimed to.
- v2 is now the most token-efficient arm in the table (0.117 solved per 1k
tokens), slightly ahead of Coder-Flash alone (0.114), at +12.73 pp accuracy.
- Termination stays near v1: 2 of 55 length-capped (v1: 1).
Tool calling — tool-eval-bench hardmode
84 scenarios scored, 168 points, 5 paired seeds (42–46), n=5 → t=2.776,
greedy, --hardmode --weight-by-difficulty, scorer 2.6.1.dev65+g6be685f0e,
llama-server --jinja. v2 and Coder-Flash were served by llama.cpp
311d4211bf in the same run; the v1 cohort rows were served by 5bda51bf, so
v2-vs-v1 crosses two llama.cpp builds.
| model |
total points (mean, 5 seeds) |
95% CI |
run |
| Ornith-1.5-9B |
145.6 ±4.2 |
[141.4, 149.8] |
v1 cohort |
| JackOD-9B-Coder v1 |
144.4 ±4.7 |
[139.7, 149.1] |
v1 cohort |
| Qwen3.5-9B (base) |
142.0 ±3.9 |
[138.1, 145.9] |
v1 cohort |
| Qwopus3.5-9B-Coder-Flash |
140.6 ±1.9 |
[138.7, 142.5] |
v2 run |
| JackOD-9B-Coder v2 |
140.2 ±4.2 |
[136.0, 144.4] |
v2 run |
| DeltaCoder-9B |
139.6 ±5.7 |
[133.9, 145.3] |
v1 cohort |
| Qwopus3.5-9B-Coder |
132.6 ±3.6 |
[129.0, 136.2] |
v1 cohort |
v2 does not improve tool calling. It is level with Coder-Flash and 4.2
points under v1; the intervals overlap, so this is not a measured regression
either, but there is no gain to claim.
| category |
v2 |
v1 |
Coder-Flash |
| M Autonomous Planning (6) |
4.2 |
5.2 |
2.4 |
| H Instruction Following (10) |
8.0 |
9.6 |
8.4 |
| I Context & State (20) |
15.8 |
17.0 |
16.8 |
| P Hard Mode (38) |
29.4 |
29.8 |
28.2 |
| C Multi-Step Chains (8) |
7.0 |
7.4 |
6.8 |
| K Safety & Boundaries (26) |
21.2 |
20.2 |
21.6 |
| L Toolset Scale (8) |
6.0 |
6.8 |
8.0 |
| E Error Recovery (6) |
5.0 |
4.6 |
5.8 |
| J Code Patterns (6) |
5.6 |
5.8 |
5.4 |
v1's planning edge does not carry over. v1 led the whole cohort on
Autonomous Planning (5.2/6); v2 scores 4.2, under the base (4.8) though well
above Coder-Flash (2.4). If long-horizon planning in a tool loop is what you
need, v1's numbers are not a description of this model.
Prompt injection. On every v2 seed the model fails TC-60 (cross-turn
sleeper injection): an instruction planted in an earlier tool result is later
acted on (an attacker address added as BCC/CC). The same failure appears in v1,
the base and DeltaCoder — it is inherited, not introduced by the merge. Do not
rely on this model to ignore instructions that arrive inside tool output.
Categories A/B/D/F/N (tool selection, parameter precision, restraint & refusal,
localization, creative composition) are 6/6 for v2; G Structured Reasoning 6/6;
Structured Output 2/4, as for every arm in both cohorts.
Serving
generation_config.json ships the serving recipe:
temperature 0.8 · top_p 0.95 · top_k 20 · min_p 0.05 · repeat_penalty 1.05
Add, where your runtime supports them (ollama and llama.cpp do; HF
GenerationConfig has neither field):
repeat_last_n 96 · presence_penalty 0
The published mannix/JackOD-9B-Coder ollama tags carry exactly this set. This serving recipe was
tuned on v1 and is carried over to v2 unchanged; it has not yet been re-tuned on the v2 weights.
Temperature is not a free parameter here
0.8 is a deliberate middle, because the failure modes sit on both sides of
it and they are different failures:
- Lower degrades coding ability first. Push it further down and
hallucinations and erratic behaviour follow.
- Higher makes the model less willing to use its tools — it drifts
toward writing its own scratch scripts instead of calling what it already has.
Neither symptom announces itself as a sampler problem, which is why the value is
stated rather than left to taste.
On the repetition controls
Earlier revisions of this card recommended presence_penalty 1.5. That has been
replaced by repeat_penalty 1.05 over a repeat_last_n 96 window, with
presence_penalty back at 0. The job is the same — discouraging the model from
re-treading a tool call it already made — but a bounded recent-token window does
it without the broad, unbounded pressure a large presence penalty puts on every
token the model has ever emitted.
For tool calling, --jinja is mandatory in llama.cpp: without it the tool
grammar never comes from the model's chat template and every tool scenario
degrades to prose.
Quants
All tiers are v2, built 2026-10-21. Sizes are GB (bytes / 1e9); every file
has a .sha256 sidecar. KLD is mean KL divergence and same-top-token rate
against the F16 on wiki.test.raw (100 × 512 tokens, llama.cpp 311d4211b);
the full table with PPL and percentiles is perplexity.md.
It measures fidelity to the F16 on general text, not agentic quality — only
Q6_K has been benchmarked.
Standard ladder
| tier |
size |
KLD · same top |
notes |
Q8_0 |
9.79 GB |
0.0034 · 97.8% |
near-lossless; reference for comparing the lower tiers |
Q6_K_L |
8.05 GB |
0.0053 · 97.0% |
Q6_K with the output/embedding tensors at Q8_0 |
Q6_K |
7.56 GB |
0.0059 · 96.8% |
the evaluated tier — every score on this card was measured on this file |
Q5_K_L |
7.27 GB |
0.0251 · 93.8% |
Q5_K_M |
6.64 GB |
0.0253 · 93.6% |
Q5_K_S |
6.47 GB |
0.0276 · 93.3% |
Q4_K_L |
6.53 GB |
0.0342 · 92.3% |
Q4_K_M |
5.78 GB |
0.0367 · 92.1% |
the practical default — fits 8 GB VRAM with room for a usable agentic context |
Q4_K_S |
5.49 GB |
0.0380 · 91.5% |
Q3_K_XL |
5.63 GB |
0.0751 · 88.1% |
IQ4_NL |
5.56 GB |
0.0263 · 92.7% |
IQ4_XS |
5.33 GB |
0.0261 · 92.7% |
lowest KLD of any tier under 6 GB |
Q3_K_L |
5.05 GB |
0.0748 · 88.2% |
Q2_K_L |
4.91 GB |
0.2240 · 79.0% |
Q3_K_M |
4.74 GB |
0.0793 · 87.9% |
IQ3_M |
4.52 GB |
0.0792 · 87.6% |
IQ3_XS |
4.38 GB |
0.0884 · 86.7% |
Q3_K_S |
4.36 GB |
0.1270 · 84.5% |
IQ3_XXS |
4.08 GB |
0.1203 · 84.6% |
IQ2_M |
3.74 GB |
0.2205 · 79.3% |
IQ2_S |
3.56 GB |
0.3076 · 75.5% |
IQ2_XS |
3.42 GB |
0.3499 · 73.8% |
smallest; expect real quality loss on agentic work |
F16 |
18.41 GB |
— |
unquantized source for the ladder; no imatrix applies |
CD ladder
ContribDynamic (CD) tiers use custom per-tensor bit-width maps generated
from this model's own imatrix rather than llama.cpp's stock per-tier
assignment.
| tier |
size |
KLD · same top |
stock counterpart |
CD-Q6_K |
7.72 GB |
0.0077 · 96.6% |
Q6_K 7.56 GB · 0.0059 · 96.8% |
CD-Q5_K_M |
6.79 GB |
0.0307 · 93.1% |
Q5_K_M 6.64 GB · 0.0253 · 93.6% |
CD-IQ4_K_M |
6.04 GB |
0.0685 · 88.6% |
— |
CD-Q4_K_M |
5.91 GB |
0.0688 · 88.7% |
Q4_K_M 5.78 GB · 0.0367 · 92.1% |
CD-Q3_K_L |
5.63 GB |
0.0827 · 87.7% |
Q3_K_L 5.05 GB · 0.0748 · 88.2% |
CD-Q2_K |
4.91 GB |
0.2595 · 78.1% |
— |
On this measurement the CD tiers are not better than their stock
counterparts — each has a higher KLD than the stock file of the same name
(CD-Q4_K_M 0.0688 vs Q4_K_M 0.0367) while being slightly larger. They are
kept for comparison; for this model, prefer the stock ladder. They have not
been benchmarked.
Verifying a download
# example for the evaluated tier
sha256sum -c JackOD-9B-Coder-Q6_K.gguf.sha256
JackOD-9B-Coder-Q6_K.gguf
→ c94d907cd55c8c089b07a8ec4f9b158bb98af91957762d71e32442d1acf0d25a
JackOD-9B-Coder-Q4_K_M.gguf
→ 412b04b027477a53d21405e1319db9ff44ace997153d45b343585c5f87c2daae
JackOD-9B-Coder-Q8_0.gguf
→ 955c9ca50b41188b455c8967d6b97b9bf26f2395dde0184ebb9b1017be9b5e88
Running it
llama.cpp
llama-server -m JackOD-9B-Coder-Q4_K_M.gguf \
--jinja \
-c 32768 -ngl 99 \
--temp 0.8 --top-p 0.95 --top-k 20 --min-p 0.05 \
--repeat-penalty 1.05 --repeat-last-n 96 --presence-penalty 0
That is the serving recipe above. --jinja is mandatory for tool calling.
Without it the tool grammar never comes from the model's chat template and every
tool scenario degrades to prose — which is the entire point of this model.
ollama
ollama run mannix/JackOD-9B-Coder
Published at mannix/JackOD-9B-Coder.
Those tags still serve v1 until they are re-published from these files.
num_ctx is deliberately not pinned in the published template — set it to
whatever your hardware affords, which for agentic work you will want as high as
it will go.
Build provenance
- Quantized from the v2 bf16 weights at
ManniX-ITA/JackOD-9B-Coder,
llama.cpp 311d4211bf.
- imatrix computed over the full AtomicChat
ornith-1.5-9b calibration corpus
for this specific weight set — an imatrix fingerprints one set of weights
and does not transfer from a sibling merge (v1's imatrix was not reused).
Published here as imatrix.dat.
- Merge recipe and build scripts:
recipes/jackod-9b-coder/ of omnimergekit.
JackOD-9B-Coder v1 — previous weights (replaced 2026-10-21)
Everything below was measured on the v1 weights (Qwopus3.5-9B-Coder in the
0.30 slot). It is kept because it is the record of how this merge was chosen;
it does not describe the v2 weights.
Field impression — initial, limited testing
This section is the author's early hands-on impression from a small number
of runs, not a benchmark result. It is reported because it is the reason the
model exists, and it should be read as an anecdote until a proper harness
campaign replaces it.
Verification against the cline test harness is still in progress. So far it
has fixed a task in 535 s on the harness; a second run went to timeout. It
also fixed the task on a separate machine through the plugin.
For comparison, on the same task, A3B-class models typically take 1.5–4 h
with a success rate below 50%. The one exception is Ornith-1.5-27B-A3B,
which has a high success rate but still needs ~2 h or more per task.
That gap — minutes rather than hours, from a 9B dense model — is what this merge
was assembled to get. It is an early signal from few runs, and the sample is far
too small to quote a success rate of its own.
Evaluation
Q6_K + imatrix, llama.cpp, greedy (sampler=template_default, temp 0.0 /
top-p 1.0 / top-k 0). Scores read from summary.json.score. The LiveCodeBench
row is lcb_v6_55 throughout — lcb_medium_55 is a different problem set
and is never mixed in.
| Benchmark |
JackOD-9B-Coder |
Qwen3.5-9B (base) |
DeltaCoder-9B (0.55) |
Qwopus3.5-9B-Coder (0.30) |
Ornith-1.5-9B (0.15) |
| HumanEval (164) |
0.8841 |
0.8902 |
0.9146 |
0.8537 |
0.7805 |
| HumanEval+ (164) |
0.8232 |
0.8049 † |
0.8232 |
0.7988 |
0.7073 |
| LiveCodeBench v6 (55 hard) |
0.7818 |
0.7273 |
0.6364 |
0.6000 |
0.5818 |
| MultiPL-E (300) |
0.8033 |
0.8200 |
0.8000 |
0.8200 |
0.7267 |
| IFEval (100) |
0.9100 |
0.9300 † |
0.9200 |
0.8800 |
0.8200 |
† The base's HumanEval+ and IFEval cells come from an earlier 9B bank rather
than the cohort pod run. That bank agrees with the cohort exactly on HumanEval
(0.8902 both) but differs on MultiPL-E by 1.67 pp, so treat those two base cells
as indicative rather than same-basis.
LiveCodeBench is the real result: 0.7818 beats every source and the base.
+5.45 pp over the strongest source (the base itself) and +14.54 pp over
DeltaCoder, the 0.55-weight source the merge leans on hardest. On the hard
problems the merge is not splitting the difference between its parents — it is
above all of them.
Elsewhere it lands where a merge should: identical to DeltaCoder on HumanEval+
(0.8232 both), a little under it on HumanEval (−3.05 pp, 5 problems of 164) and
IFEval, a little under the base on MultiPL-E (−1.67 pp). Those are give-backs,
and small ones.
Length and runaway behaviour — where the merge actually comes from
Response length in characters on lcb_v6_55, the same 55 hard problems under an
identical cap. capped = finish_reason == "length": the model never
terminated on its own.
| model |
capped / 55 |
p50 |
p90 |
max |
>20k |
| DeltaCoder-9B (0.55) |
25 |
37,524 |
50,555 |
77,590 |
54 |
| Qwen3.5-9B (base) |
18 |
37,984 |
49,376 |
53,564 |
53 |
| Qwopus3.5-9B-Coder (0.30) |
8 |
29,261 |
43,261 |
59,633 |
41 |
| Ornith-1.5-9B (0.15) |
2 |
28,722 |
50,278 |
56,571 |
28 |
| JackOD-9B-Coder |
1 |
29,282 |
45,749 |
89,324 |
37 |
This table is the thesis of the merge. Read next to the eval table above,
the two heaviest sources split cleanly along opposite axes:
- DeltaCoder is the best coder in the cohort (HumanEval 0.9146) and the
worst at stopping — 25 of 55 hard problems never terminate.
- Ornith-1.5-9B is the weakest coder (LiveCodeBench 0.5818, HumanEval
0.7805) and by far the best at stopping — 2 of 55.
- JackOD takes both: the best LiveCodeBench score of the entire cohort
and the best termination rate, 1 of 55.
Against the base that is an 18× reduction in non-terminating generations;
against DeltaCoder, its heaviest source, 25×. A capped generation is a
scoring failure regardless of whether the reasoning was on track, so this is not
a separate nicety — it is a large part of why the LiveCodeBench number is what
it is.
Other benches, all on the published Q6_K:
| Benchmark |
p50 |
p90 |
max |
>20k |
| HumanEval (164) |
590 |
1,192 |
60,219 |
1 |
| HumanEval+ (164) |
590 |
1,182 |
5,961 |
0 |
| MultiPL-E (300) |
257 |
539 |
1,007 |
0 |
| IFEval (100) |
791 |
3,160 |
11,660 |
0 |
Earlier attempts in this family — do not use them for agentic work
This merge went through several earlier arms. They are listed here because their
numbers are in circulation and, read as a table, they are misleading.
| arm |
HumanEval |
HumanEval+ |
LCB v6 (55) |
MultiPL-E |
IFEval |
capped / 55 |
| JackOD-Coder-9B |
0.8232 |
0.7683 |
0.8182 |
0.7933 |
0.9300 |
3 |
| JackOD3.5-9B |
0.8659 |
— |
0.7455 |
— |
— |
7 |
| JackDeltaCoder-9B |
0.8415 |
0.7683 |
0.6364 |
0.8067 |
0.9200 |
8 |
| JackOD-9B-Coder (v1) |
0.8841 |
0.8232 |
0.7818 |
0.8033 |
0.9100 |
1 |
JackOD-Coder-9B scores higher than this model on LiveCodeBench (0.8182 vs
0.7818) and on IFEval, and it is still the wrong model to deploy. That is the
point of this section.
In real multi-turn agentic coding — a live tool loop, not a benchmark harness —
JackDeltaCoder-9B and every earlier JackOD arm fail:
- they do not drive tools properly, mis-forming or skipping tool calls that
the task depends on;
- they fall into loops, re-treading the same step instead of advancing;
- they abandon the task, concluding the problem is too hard to solve and
stopping without a fix.
None of that is visible in a single-shot code benchmark, which is exactly why
their benchmark rows look competitive. A one-shot HumanEval or LiveCodeBench
problem never asks a model to call a tool, read the result, and decide what to
do on turn seven. The only arm in this family that holds up in a live agentic
loop is the published one. Treat the rows above as a record of what was tried,
not as a menu.
Tool calling — tool-eval-bench hardmode
88 scenarios offered, 84 scored, 168 points. 5 paired seeds (42–46) per arm,
n=5 → t=2.776, greedy, --hardmode --weight-by-difficulty, scorer
2.6.1.dev65+g6be685f0e, served by llama.cpp 5bda51bf with --jinja. Every
arm shares that basis exactly.
(v1 tool-calling chart removed with the v1 quants; numbers below.)
| model |
role |
total points (mean, 5 seeds) |
95% CI |
| Ornith-1.5-9B |
source |
145.6 ±4.2 |
[141.4, 149.8] |
| JackOD-9B-Coder |
merge |
144.4 ±4.7 |
[139.7, 149.1] |
| Qwen3.5-9B |
base |
142.0 ±3.9 |
[138.1, 145.9] |
| DeltaCoder-9B |
source |
139.6 ±5.7 |
[133.9, 145.3] |
| Qwopus3.5-9B-Coder |
source |
132.6 ±3.6 |
[129.0, 136.2] |
On aggregate points this merge does not beat its sources — it is second, and
every interval overlaps. It sits above its base and within noise of Ornith.
The aggregate is not where the difference lives.
Where it does separate: Autonomous Planning
| category |
JackOD |
Ornith |
base |
DeltaCoder |
Qwopus |
| M Autonomous Planning (6) |
5.2 |
2.8 |
4.8 |
4.0 |
3.6 |
| H Instruction Following (10) |
9.6 |
9.2 |
9.2 |
8.8 |
8.0 |
| I Context & State (20) |
17.0 |
17.2 |
16.4 |
16.2 |
15.2 |
| P Hard Mode (38) |
29.8 |
30.2 |
29.8 |
28.2 |
26.0 |
| C Multi-Step Chains (8) |
7.4 |
8.0 |
6.6 |
7.2 |
5.2 |
| K Safety & Boundaries (26) |
20.2 |
21.4 |
19.2 |
19.6 |
21.4 |
| L Toolset Scale (8) |
6.8 |
7.8 |
7.2 |
7.2 |
6.8 |
| E Error Recovery (6) |
4.6 |
5.0 |
5.0 |
5.0 |
3.4 |
| J Code Patterns (6) |
5.8 |
6.0 |
5.8 |
5.4 |
6.0 |
Autonomous Planning is the one axis with a clear, consistent edge: 5.2/6,
best of all five arms — while Ornith, the top aggregate scorer, is the worst at
2.8/6. The merge reaches Ornith's overall level while fixing exactly Ornith's
long-horizon planning weakness.
That pairing is worth sitting with, because Ornith is also the source with the
best termination rate (2/55 capped). A model that stops reliably and plans
worst than anything else in the cohort looks like one that stops too early —
terminating is easy if you give up. The merge is the arm that does both: it
carries the goal (5.2/6 planning, best) and still lands the plane (1/55 capped,
best). That combination, not either number alone, is what the field impression
above is describing.
Categories A/B/D/F (tool selection, parameter precision, restraint & refusal,
localization) are 6/6 for every arm and are omitted; G Structured Reasoning and
N Creative Composition are 6/6 for all but Qwopus (5.8 and 5.2). Structured
Output is 2.0/4 for all five — none of these models clears it.