44 Downloads Updated yesterday
ollama run mannix/JackOD-9B-Coder:Q3_K_S
~9B dense · Qwen3.5-9B lineage · text-only · MTP draft head intact · 4-way omnimerge_v2 merge
A four-way merge over Qwen3.5-9B built for one job: staying on a coding task across turns and tool calls until it is actually finished, and then stopping. It is not built to win knowledge benchmarks, and its world knowledge is limited for its size. What it does is finish, and stop — and on the hardest code benchmark in the set it is the best model in its own family tree.
Full model card & methodology: ManniX-ITA/JackOD-9B-Coder (weights) · GGUF repo · full build recipe.
JackOD is an initialism of its three merge sources:
| Letter | Source | Weight |
|---|---|---|
| Jack | Jackrong/Qwopus3.5-9B-coder | 0.30 |
| O | ornith-ai/Ornith-1.5-9B | 0.15 |
| D | danielcherubini/Qwen3.5-DeltaCoder-9B | 0.55 |
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. The MTP head (15 tensors) is excluded from the merge and passed through from the base, so the draft head survives.
There is no vision tower. config.json inherits a populated vision_config from the Qwen3_5ForConditionalGeneration architecture, but that is metadata with no weights behind it: base and merge both carry 775 tensors and zero visual.*. No mmproj exists and none can be built — there are no vision- tags for this model, and it is text-only.
This is the author's early hands-on impression from a small number of runs, not a benchmark result. It is here because it is the reason the model exists, and 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. Minutes rather than hours, from a 9B dense model, is what this merge was assembled to get — on a sample far too small to quote a success rate of its own.
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 | This model | Qwen3.5-9B (base) | DeltaCoder-9B (0.55) | Qwopus (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.67pp — 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.45pp over the strongest source (the base itself) and +14.54pp 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.05pp, 5 problems of 164) and IFEval, a little under the base on MultiPL-E. Small give-backs.
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 along opposite axes:
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 a large part of why the LiveCodeBench number is what it is.
Other benches, all on the published Q6_K — HumanEval p50 590 / max 60,219 / 1 over 20k · HumanEval+ p50 590 / max 5,961 / 0 · MultiPL-E p50 257 / max 1,007 / 0 · IFEval p50 791 / max 11,660 / 0.
This merge went through several earlier arms. They are listed 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 (this model) | 0.8841 | 0.8232 | 0.7818 | 0.8033 | 0.9100 | 1 |
JackOD-Coder-9Bscores 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:
None of that is visible in a single-shot code benchmark, which is exactly why their 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-eval-bench hardmode (88 offered, 84 scored, 168 pts)5 paired seeds (42–46) per arm, n=5 → t=2.776, greedy, --hardmode --weight-by-difficulty. Every arm shares that basis exactly — same scorer build, same llama.cpp build, same denominator.
| 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 the 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.
| 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: Ornith is also the source with the best termination rate (2/55 capped). A model that stops reliably and plans worse 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 describes.
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. Structured Output is 2.0/4 for all five — none of these models clears it.
Every _K and IQ tier is built with an importance matrix, including Q6_K, from this model's own imatrix — an imatrix fingerprints one specific weight set and cannot be shared with a sibling merge. Sizes are GB (bytes ÷ 1e9).
| Tier | Size | Notes |
|---|---|---|
| Q8_0 | 9.79 GB | near-lossless reference |
| Q6_K_L | 8.05 GB | Q6_K with output/embeddings at Q8_0 |
| Q6_K | 7.56 GB | this is the eval tier — every score above was measured on it |
| Q5_K_L | 7.27 GB | — |
| Q5_K_M | 6.64 GB | — |
| Q4_K_L | 6.53 GB | — |
| Q5_K_S | 6.47 GB | — |
| Q4_K_M | 5.78 GB | recommended default — fits 8 GB VRAM with usable agentic context |
| Q3_K_XL | 5.63 GB | — |
| IQ4_NL | 5.56 GB | — |
| Q4_K_S | 5.49 GB | — |
| IQ4_XS | 5.33 GB | best quality under 5.5 GB |
| Q3_K_L | 5.05 GB | — |
| Q2_K_L | 4.91 GB | — |
| Q3_K_M | 4.74 GB | — |
| IQ3_M | 4.52 GB | — |
| Q3_K_S | 4.36 GB | — |
| IQ2_M | 3.74 GB | — |
| IQ2_XS | 3.42 GB | smallest; expect real loss on agentic work |
ContribDynamic (CD) tags use custom per-tensor bit-width maps generated from this model's own imatrix instead of llama.cpp's stock per-tier assignment — the same idea as Unsloth's UD quants, built from our own imatrix. The map spends extra bits on the tensors the imatrix flags as most sensitive, so a CD- file is slightly larger than its stock namesake and should hold up better at the same nominal tier. They are not separately benchmarked — the eval tier is stock Q6_K.
| Tag | Size | Stock counterpart |
|---|---|---|
| CD-Q6_K | 7.72 GB | 7.56 GB |
| CD-Q5_K_M | 6.79 GB | 6.64 GB |
| CD-IQ4_K_M | 6.04 GB | — |
| CD-Q4_K_M | 5.91 GB | 5.78 GB |
| CD-Q3_K_L | 5.63 GB | 5.05 GB |
| CD-Q2_K | 4.91 GB | — |
ollama run mannix/JackOD-9B-Coder # default tag
ollama run mannix/JackOD-9B-Coder:Q4_K_M # recommended
ollama run mannix/JackOD-9B-Coder:Q6_K # the eval tier
ollama run mannix/JackOD-9B-Coder:CD-Q4_K_M # imatrix-shaped ladder
The published Modelfile already sets:
temperature 0.6
top_p 0.95
top_k 20
presence_penalty 1.5
presence_penalty 1.5 is doing real work on long agentic runs — it is what discourages re-treading a tool call that already happened. Don't drop it because it looks unusual.
num_ctx is deliberately not pinned in the published template. Set it to whatever your hardware affords — for agentic work you want it as high as it will go, and a template-pinned value would silently cap you below that.
imatrix.dat used to build them.