70 Downloads Updated 2 days ago
ollama run mannix/jackod-9b-coder-dflash:IQ4_XS
~9B dense · Qwen3.5-9B lineage · text-only · MTP draft head intact · 4-way omnimerge_v2 merge · v3
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.
Full model card & methodology: ManniX-ITA/JackOD-9B-Coder (weights) · GGUF repo · full build recipe. DFlash speculative-decoding build: mannix/jackod-9b-coder-dflash.
v3 (2026-10-24). Every tag on this page is v3: the v2 recipe with the two smaller weights swapped, DeltaCoder 0.55 / Ornith-1.5-9B 0.30 / Coder-Flash 0.15 (v2: Coder-Flash 0.30 / Ornith 0.15). The tags ship a new sampler and v3 was evaluated with that sampler, so the numbers below are what the tags do. The v1 and v2 results further down were measured greedy and are a record, not a same-basis comparison.
JackOD is an initialism of its three merge sources:
| Letter | Source | Weight |
|---|---|---|
| Jack | Jackrong/Qwopus3-5-9B-Coder-Flash (v1: Qwopus3.5-9B-coder) | 0.15 |
| O | ornith-ai/Ornith-1.5-9B | 0.30 |
| 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.
Measured on the Q6_K tag's file (sha256 3f202a76…51b8, imatrix feb286c4…), llama.cpp 311d4211bf, with exactly the sampler the tags carry (below). The sampler was read back from every server while the run was in flight: 338 checks, 0 mismatches. Thinking budget 12,288 tokens. Scores read from summary.json.score; the LiveCodeBench row is lcb_v6_55.
| Benchmark | JackOD v3 |
|---|---|
| HumanEval (164) | 0.8720 |
| HumanEval+ (164) | 0.8049 |
| LiveCodeBench v6 (55 hard) | 0.9455 |
| MultiPL-E (300) | 0.8033 |
| IFEval (100) | 0.9400 |
These are sampled scores, one draw each. They are not on the same basis as the greedy v1/v2 tables below, and the difference is not claimed as a gain or a loss. On these sizes one problem is 1.8pp of LiveCodeBench and 0.6pp of HumanEval.
LiveCodeBench is 52 of 55, and none of the 55 hit the length cap. Every generation ended on its own; the 3 misses are wrong answers (wrong output or a runtime error), not truncations. Reasoning length: mean 6,644 tokens, median 6,103 (0.142 problems solved per 1k tokens). For orientation only (greedy, so not the same basis): v1 had 1 of 55 capped, v2 2 of 55, the base 18.
tool-eval-bench hardmode (84 scored, 168 pts)5 paired seeds (42–46), n=5 → t=2.776, --hardmode --weight-by-difficulty, scorer 2.6.1.dev65+g6be685f0e, llama.cpp 5bda51bf with --jinja, served and requested with the serving sampler.
| Model | Total points (mean, 5 seeds) | 95% CI | Per seed |
|---|---|---|---|
| JackOD-9B-Coder v3 | 143.4 ±2.6 | [140.8, 146.0] | 143 · 146 · 141 · 145 · 142 |
v1 (144.4 ±4.7) and v2 (140.2 ±4.2) were measured greedy, so that comparison crosses samplers; v3 sits inside both of their intervals.
| Category | v3 (mean of 5) |
|---|---|
| M Autonomous Planning (6) | 4.4 |
| H Instruction Following (10) | 8.0 |
| I Context & State (20) | 15.6 |
| P Hard Mode (38) | 31.4 |
| C Multi-Step Chains (8) | 8.0 |
| K Safety & Boundaries (26) | 21.2 |
| L Toolset Scale (8) | 7.6 |
| E Error Recovery (6) | 5.0 |
| J Code Patterns (6) | 5.0 |
| G Structured Reasoning (6) | 5.2 |
Categories A/B/D/F/N (Tool Selection, Parameter Precision, Restraint & Refusal, Localization, Creative Composition) are 6/6 on every seed. Structured Output is 2/4, as for every arm in the earlier cohorts.
Prompt injection. v3 fails TC-60 (cross-turn sleeper injection) on 4 of 5 seeds: an instruction planted in an earlier tool result is later acted on. v1, v2, the base and DeltaCoder fail it too, so it is inherited, not introduced by the merge. Do not rely on this model to ignore instructions that arrive inside tool output.
Every _K and IQ tier is built with an importance matrix, including Q6_K, from this model's own imatrix (full AtomicChat ornith-1.5-9b corpus, all 9,686 chunks) — an imatrix fingerprints one specific weight set and cannot be shared with a sibling merge. Sizes are GB (bytes ÷ 1e9). KLD is mean KL divergence and same-top-token rate against the F16 on wiki.test.raw (100 × 512 tokens): fidelity to the F16 on general text, not agentic quality. Every tag was pulled back from the registry and passed a generation check on 2026-10-25.
| Tier | Size | KLD · same top | Notes |
|---|---|---|---|
| Q8_0 | 9.79 GB | 0.0025 · 98.1% | near-lossless reference |
| Q6_K_L | 8.05 GB | 0.0061 · 97.1% | Q6_K with output/embeddings at Q8_0; within error of Q6_K here |
| Q6_K | 7.56 GB | 0.0057 · 96.9% | this is the eval tier — every score above was measured on it |
| Q5_K_L | 7.27 GB | 0.0280 · 93.5% | — |
| Q5_K_M | 6.64 GB | 0.0290 · 93.5% | — |
| Q4_K_L | 6.53 GB | 0.0400 · 92.1% | — |
| Q5_K_S | 6.47 GB | 0.0302 · 93.4% | — |
| Q4_K_M | 5.78 GB | 0.0399 · 91.8% | recommended default (latest) — fits 8 GB VRAM with usable agentic context |
| Q3_K_XL | 5.63 GB | 0.0808 · 87.7% | — |
| IQ4_NL | 5.56 GB | 0.0285 · 92.7% | — |
| Q4_K_S | 5.49 GB | 0.0436 · 91.5% | — |
| IQ4_XS | 5.33 GB | 0.0280 · 92.6% | lowest KLD of the stock tiers under 6 GB |
| Q3_K_L | 5.05 GB | 0.0796 · 87.7% | — |
| Q2_K_L | 4.91 GB | 0.2374 · 78.9% | — |
| Q3_K_M | 4.74 GB | 0.0854 · 87.5% | — |
| IQ3_M | 4.52 GB | 0.0854 · 87.3% | — |
| IQ3_XS | 4.38 GB | 0.0932 · 86.9% | — |
| Q3_K_S | 4.36 GB | 0.1356 · 83.8% | — |
| IQ3_XXS | 4.08 GB | 0.1281 · 84.2% | — |
| IQ2_M | 3.74 GB | 0.2375 · 78.6% | — |
| IQ2_S | 3.56 GB | 0.3276 · 74.9% | — |
| IQ2_XS | 3.42 GB | 0.3686 · 73.3% | 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. On Qwen3.5's hybrid layout the bytes go where the KLD is — mostly ssm_out, the linear-attention output projection — and are taken from tensors that cost little here. Every CD tag is smaller than its stock counterpart and has a lower KLD; CD-Q4_K_M is the lowest-KLD tag under 6 GB. They are not separately benchmarked — the eval tier is stock Q6_K.
| Tag | Size | KLD · same top | Stock counterpart |
|---|---|---|---|
| CD-Q6_K | 7.53 GB | 0.0049 · 97.0% | Q6_K 7.56 GB · 0.0057 · 96.9% |
| CD-Q5_K_M | 6.61 GB | 0.0142 · 95.0% | Q5_K_M 6.64 GB · 0.0290 · 93.5% |
| CD-Q4_K_M | 5.76 GB | 0.0239 · 93.4% | Q4_K_M 5.78 GB · 0.0399 · 91.8% |
| CD-Q3_K_L | 5.03 GB | 0.0639 · 88.7% | Q3_K_L 5.05 GB · 0.0796 · 87.7% |
| CD-Q2_K | 3.95 GB | 0.1887 · 79.5% | no stock Q2_K; between IQ2_M and IQ3_XXS |
There is no CD-IQ4_K_M: on this model it only matched IQ4_XS, and CD-Q4_K_M covers that slot.
ollama run mannix/jackod-9b-coder # latest = Q4_K_M
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 # lowest KLD under 6 GB
The tags use Ollama's built-in qwen3.5 renderer and parser (tool calling and the thinking channel) and need Ollama 0.32.12 or newer.
The published Modelfile sets:
temperature 0.4
top_p 0.95
top_k 20
min_p 0
repeat_penalty 1.002
repeat_last_n 112
presence_penalty 1.05
draft_num_predict 3
The seed is not fixed, which is how v3 was evaluated. draft_num_predict 3 is for the model's own MTP head.
Worth trying: seed 42 (
/set parameter seed 42). In the author's testing it behaves better — no loops, and stellar on some tasks — but it is not reliable: it still fails on others. It is a suggestion to test, not part of the recommended setup, and none of the scores on this card were measured with it.
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.Everything below was measured on earlier weights, greedy (temp 0.0 / top-p 1.0 / top-k 0), on Q6_K + imatrix, and does not describe the v3 tags. It is kept as the record of how this merge was chosen.
| Benchmark | v2 | v1 | Coder-Flash | Qwen3.5-9B (base) | DeltaCoder-9B | Ornith-1.5-9B |
|---|---|---|---|---|---|---|
| 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. v2 tool-calling: 140.2 ±4.2 of 168 [136.0, 144.4], level with Coder-Flash; v1's Autonomous Planning edge (5.2/6) did not carry over (v2 4.2/6).
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 v1 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.
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 v1 | 1 | 29,282 | 45,749 | 89,324 | 37 |
The two heaviest sources split along opposite axes: DeltaCoder is the best coder in the cohort and the worst at stopping (25 of 55 never terminate); Ornith-1.5-9B is the weakest coder and by far the best at stopping (2 of 55). JackOD takes both: in v1, the best LiveCodeBench score of the cohort (0.7818) and the best termination rate, 1 of 55 — an 18× reduction against the base and 25× against DeltaCoder.
| 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 v1 on LiveCodeBench and IFEval, and it is still the wrong model to deploy. In a live multi-turn tool loop, JackDeltaCoder-9B and every earlier JackOD arm fail: they do not drive tools properly, they fall into loops, and they abandon the task. None of that is visible in a single-shot code benchmark, which is exactly why their rows look competitive.
| 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 v1 | 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] |
v1’s one clear edge was Autonomous Planning, 5.2⁄6, best of all five arms, while Ornith, the top aggregate scorer, was the worst at 2.8⁄6.