Same architecture, new weights. The only clean A/B in the field.
3.8 is clearly faster than 3.6 on both machines. It is not measurably more correct. Gemma4:26b remains the seat.
Head-to-head after the Qwen3.8:27b drop. Both 27Bs are dense (not MoE — that is the 35B-A3B sibling). Same qwen35 hybrid-attention stack, same quant, think off. Power rankings and the ruled-out list live on Local Lane.
Nothing here is UID-verified. It will move.
Desktop, cold load, n=4 each (three reps plus the 14 Aug baseline), num_ctx 16384:
| Model | mean tok/s | range |
|---|---|---|
qwen3.8:27b |
44.6 | 43.5–45.7, sd 1.19 |
qwen3.6:27b |
37.3 | 36.4–38.4, sd 0.98 |
+19.7% on the stock tag. No overlap: 3.8's slowest run beats 3.6's fastest. Welch t=9.53. That figure mixed a small weight gain with MTP already on at the wrong depth — see below.
z13, AC / performance, matched num_ctx 8192: 16.3 vs 13.0, +25%. Same direction on Vulkan / unified as on CUDA / discrete. 3.8 fits at 4096 (15.5) and 8192, and OOMs at 12288 / 16384 because of the CLIP projector. 3.6 runs at 16384 (12.0). Neither clears the ~20 tok/s interactive floor on the laptop. Machine specs are on Local Lane.
The stock Ollama tag qwen3.8:27b already sets draft_num_predict 4. Embedded MTP tensors are in the GGUF. Ollama was speculating. A 3090 peaks at 2 draft tokens, not 4 — same shape as the llama.cpp community table. Measured 16 Aug 2026, same Q4_K_M blob, ctx 16384, temp 0.8, think off, 128-token gen, cold load, n=4, 100% GPU, 320 W:
| Tag | draft | tok/s | sd / range | vs MTP off |
|---|---|---|---|---|
qwen3.6:27b |
— | 37.5 | 0.55 · 36.5–37.8 | — |
qwen38-mtp-0 |
0 | 40.3 | 0.05 · 40.3–40.4 | 1.00 |
qwen3.8:27b stock |
4 | 41.4 | 4.21 · 36.1–46.9 | +3% |
qwen38-mtp-4 |
4 | 42.5 | 3.68 · 37.8–46.5 | +5% |
qwen38-mtp-2 |
2 | 50.3 | 2.71 · 46.3–53.8 | +25% |
Split the old +20%: weights only are 40.3 vs 37.5 (~+8%). MTP at 2 is another +25% on 3.8. Prompt eval stayed ~90–106 tok/s. Load 10–13 s. vs 26b at 133 tok/s this is still 0.38×. Seat does not move. Interactive 3.8 does.
z13, same tags, ctx 8192 (16k OOMs), AC plugged in, governor was powersave/balanced — so these are conservative vs the 16.3 @ performance figure. n=3, 100% GPU:
| Tag | draft | tok/s | vs MTP off |
|---|---|---|---|
qwen38-mtp-0 |
0 | 13.0 | 1.00 |
qwen38-mtp-4 (stock depth) |
4 | 17.7 | +36% |
qwen38-mtp-2 |
2 | 21.4 | +65% |
Draft 2 is the z13 setting too. It is the first time 3.8 clears the ~20 tok/s “I’m watching this” floor on this laptop. Stock draft 4 is slower. Daily: ollama run qwen38-mtp-2 on both machines. Same layers as stock. Do not use the Ollama library :27b-mtp- tag — a same-weekend report had that path 2× slower.
Stub writeup — fix, gain, likely cause: Paper 1.44 · The Default Draft Is Too Deep.
Pooled L2 field. 3.6 per-fixture rows use the E11 n=12 baseline; totals use the pooled /54.
| Model | Pass | Rate |
|---|---|---|
gemma4:26b / 31b |
36/54 | 66.7% |
qwen3.8:27b |
34/54 | 63.0% |
qwen3.6:27b |
28/54 | 51.9% |
34/54 vs 36/54 is p=0.84. 3.8 is the first Qwen in the Gemma band on this battery. That is not the same as beating 3.6 in a head-to-head you can defend.
76/105 vs 73/105 is a slightly higher count. It is not a finding of improvement. Fisher p=0.76.
| Pack | 3.8 | 3.6 | Read |
|---|---|---|---|
| Ladder, 3 fixtures | 34/54 | 28/54 | Most of the gap is strict-log-format (15/18 vs 2/12, p=0.0005) |
strict-table-render |
14/18 | 18/18 | Replication failed; direction reversed. Zero contract violations from either model. |
constant-and-callers |
13/18 | 12/18 | Mid-band fixture with headroom. p=1.000. |
| Comprehension probes | 15/15 | 15/15 | Saturated. |
| Total | 76/105 | 73/105 | p=0.761 |
The one significant contract win did not generalize. A run_command / verify difference (p=0.0455) died on retest (p=0.733). On bounded local-agent work these two revisions do not separate.
Vendor benches are a different claim and a different harness (think on, 256K, Claude Code harness on some rows). Qwen's card: SWE-bench Pro 53.5 → 61.7, Terminal-Bench 2.1 63.4 → 73.0, LiveCodeBench v6 83.9 → 90.3. Those numbers are not this ladder.
Pass rate is a wash. The traces are not. 3.6 is persistent after a patch miss (tool said the hunk did not apply; file unchanged). 3.8 can get a similar score by jumping in instead of reading first.
| What | qwen3.6 |
qwen3.8 |
Hold? |
|---|---|---|---|
| Reads the files first | 13 read_file on the 5-edit fixture |
2 across the same 18 cells | Recorded. Same patch count (45/45). Cost nothing on that item. |
| Runs the checker | 0/18 on the table fixture | 5/18 (p=0.0455) | Died on retest. 3.6 then verified 10/18 on the next fixture. |
| Recovers a failed patch | 13/13 failed-call cells recovered | 6/7; three cells barely engaged | Direction only. p=0.104. |
| Works from a human prompt | — | L1 7/18 vs 26b 14/18 | Yes at p=0.04. 3.8 wants a numbered plan. |
On the table fixture 3.6 went 18/18 without ever running the test; 3.8 went 14/18 while verifying in five cells. The gate stays the deterministic checker, not the trajectory.
csv-summarize-repair is the hard item: quoted currency, thousands separators, accounting negatives, empty amounts. Characteristic failure is a total that is wrong but plausible.
qwen3.8:27b L2: 3/18gemma4:26b L2 (E11): 0/12Frontier control, same three fixtures, n=1 Flash-class oneshot: logsum pass, limits pass, and this ceiling item pass. Single trial, not a ranking. Locals are bunched with each other. They are not bunched with frontier on that class of silent-wrong-total repair.