← older: smoke__laguna-s-2.1__20260726-201248all runs · task boardnewer: fast__gemma-4-12b__20260727-010519

smoke__gemma-4-12b__20260726-212728

gemma-4-12b first light — smoke 3/4

First benchmark run of gemma-4-12b (Gemma 4 12B Unified, dense 11.95B, Q6_K + MTP drafter, f16 KV, -c 262144, --reasoning on --reasoning-budget 8000). Harness: MinimalPi (baseline), K=1, no fast-fail caps, all knobs at their config/harness.env defaults (thinking=on, qwen_tools=on, max_tokens 65536).

task result total agent in/out tok laguna agent 35b agent
fix-git PASS 1m13s 39s 116124/3319 FAIL 3m44s 18s
nginx-request-logging PASS 1m45s 1m09s 111009/7207 7m02s 15s
openssl-selfsigned-cert PASS 1m18s 44s 100258/4522 4m53s 13s
regex-log ERR 30m44s 30m00s 0/0 PASS 21m30s cut@20m

3/4 passed, 1 errored, elapsed 35m01s. Same score as laguna's first light, but the three passes are 6–9× faster in agent time.

The one failure is a RUNAWAY GENERATION, not a hard task

regex-log did not thrash and did not time out on a slow task. The llama-swap log shows a single generation — task 1056 — that started at 19:29:10, ran for the full 30-minute agent budget at ~118 tok/s, emitted 215,206 tokens in one response, and ended only because pi disconnected (recovered from upstream disconnection during streaming). pi never got a message back, which is why agent/pi.txt is 0 bytes and in/out tokens are 0/0.

It was not even context-bounded: 1718 prompt + 215206 output = 216,924 of the 262,144 window, i.e. it still had ~45k to go.

Diagnosis, all probed directly on the box the same day:

Fix applied (server side, in llama_cpp_on_my_desktop)

llama.cpp's -n/--predict defaults to -1 = infinity, so any client that omits max_tokens can drive any model until the context fills. The gemma-4-12b entry now sets -n 65536 — exactly this repo's own MAX_TOKENS ceiling, so it clamps only requests asking for more than the harness ever intends. Verified: an uncapped would-be-runaway prompt now stops at exactly 65536 with finish_reason: length instead of running to 215k. Worst case goes from unbounded (30 min) to ~9 min.

This is a per-model fix on the one model that demonstrated the problem — every other entry in tools/llama-swap/config.yaml still has the same unbounded exposure. It has simply never been hit, presumably because the other models stop on their own.

Still open: why that request carried no max_tokens when the provider extension declares maxTokens: 65536. The server-side cap makes it survivable either way, but the harness-side question is unanswered and regex-log should be re-run to see whether the capped generation now leaves the agent enough turns to finish.

Model behaviour notes

Caveat on comparability

qwen_tools=on was left at its default, i.e. gemma-4-12b was given the Qwen-named tool surface (read_file/write_file/edit/run_shell_command). That surface was chosen because it matches what Qwen3.6 was post-trained on; there is no reason to think it matches Gemma 4's own tool post-training. A QWEN_TOOLS=off arm is the obvious first A/B for this model.

Run details

modelllama-local/gemma-4-12bagentharnesses.minimal_pi:MinimalPithinkingonreasoning budgetdirect (server/none)* — see journal for the authoritative mechanismmaxTokens / contextWindow65536 / 196608agent timeout ×2.0trials4 of 4 — 3 pass · 0 fail · 1 erroredmean reward0.75tokens (job total)327,391 in / 15,048 outstarted / finished2026-07-26T21:27 / 2026-07-26T22:02wall clock35m01s

Errored trials: AgentTimeoutError (regex-log)

Tasks

fix-git — 1/1 passed

#resulttotalagentin/out tokflags
1PASS1m13s39s116124/3319
🔍 view

nginx-request-logging — 1/1 passed

#resulttotalagentin/out tokflags
1PASS1m45s1m09s111009/7207
🔍 view

openssl-selfsigned-cert — 1/1 passed

#resulttotalagentin/out tokflags
1PASS1m18s44s100258/4522
🔍 view

regex-log — 0/1 passed

#resulttotalagentin/out tokflags
1ERR30m44s30m00s0/0
trial errored: AgentTimeoutError
🔍 view