c61394923c8a3124706204b56d132f9dad8e3517
Seth asked "was this with think=false?" Yes — and that was the only question that mattered. Everything I concluded in round 1 and round 2 was wrong. Actual cause, isolated in round 3: - At identical message state, gemma4:26b with think=false returns eval=4 (silent stop); with think unset or think=true, returns eval=165 and emits the correct tool call. - Original round-1 write_file harness + think unset: 26B passes in 8 iters, 20s. No mitigations needed. - 31B dense and qwen3-coder:30b tolerate think=false; 26B MoE does not. Red herrings (kept on-record in the bakeoff doc, not silently erased): - Round 1: "write_file tool-call argument size" — wrong - Round 2a: refuted the arg-size theory but for the wrong reason (still failed because think=false was still set) - Round 2b: "cumulative tool-response context size" — truncating did make 26B pass, but by coincidence. Shorter context at the decision turn dodged the think=false side effect. Why the existing "always think:false" guidance was misleading: it was derived from AI_Visualizer (single-turn JSON pipelines) where thinking tokens do eat num_predict invisibly. In multi-turn tool-calling agents the channels are separate and the flag has a different effect — catastrophic on 26B specifically. Doc updates: - GOTCHAS: replaced the 26B entry with the actual cause; scoped the original "Thinking Mode Eats Context" entry to single-turn pipelines - SYNTHESIS: split the "Mandatory Ollama Settings" block into single-turn vs multi-turn variants; updated anti-patterns and quick-start checklist - CORPUS_cli_coding_agent.md: revised pointer and config template - docs/reference/bakeoff-2026-04-18.md: added Round 3 section with the correction notice at the top of the file and full diagnostic methodology New artifacts: harness_no_think_flag.py, harness_write_no_think.py, and 4 new log files demonstrating all three models pass when think is left at default.
gemma4-research
Research corpus and implementation guidance for Google Gemma 4, based on production use in Seth's homelab.
Files
| File | What | When to Read |
|---|---|---|
SYNTHESIS.md |
Start here. Opinionated guide — how to build with Gemma 4 | Before any new Gemma 4 implementation |
GOTCHAS.md |
Known issues and workarounds, severity-ranked | When debugging Gemma 4 issues or starting a new project |
IMPLEMENTATIONS.md |
Patterns from Simon and AI_Visualizer | When designing a new Gemma 4 integration |
CORPUS_architecture.md |
Model architecture details (layers, attention, PLE, MoE) | When you need to understand WHY Gemma 4 behaves a certain way |
CORPUS_ollama_variants.md |
Available models, sizes, VRAM, Ollama settings | When choosing a model variant or configuring Ollama |
CORPUS_capabilities.md |
Modalities (vision, audio, video, tools), what it can/can't do | When scoping what Gemma 4 can handle |
CORPUS_benchmarks.md |
Full benchmark table vs Gemma 3, arena scores, agentic scores | When comparing Gemma 4 to alternatives |
CORPUS_tool_calling_format.md |
Native token format + JSON API format for function calling | When implementing tool calling |
CORPUS_cli_coding_agent.md |
Positioning Gemma 4 for CLI coding agent use (openclaw / open code / pi / hermes / aider style). Honest take on what Google did and didn't measure, head-to-head with qwen3-coder:30b, homelab setup pointer |
When scoping a CLI coding agent or deciding Gemma 4 vs Qwen3-Coder |
docs/reference/bakeoff-2026-04-18.md |
Raw results: CLI-coding-agent bakeoff of gemma4:26b / gemma4:31b / qwen3-coder:30b on steel141 3090 Ti. 31B clean, Qwen3-Coder correct but chatty, 26B reproducibly silent-stops at write_file. Harness at scripts/bakeoff/ |
When deciding which model to back a CLI agent with, or debugging a similar tool-call halt |
tooling/ |
Canonical upstream tooling — real scripts, notebooks, model cards, and configs pulled from Google / HF / framework maintainers (147 files). Subdirs: google-official/, huggingface/, inference-frameworks/, gemma-family/, fine-tuning/. See tooling/README.md for index and findings that update the older CORPUS_* docs |
When you need authoritative source material — model cards, chat templates, fine-tuning recipes, serving commands for vLLM / llama.cpp / MLX, or to scope a specialized sibling (ShieldGemma, EmbeddingGemma, etc.) |
Source Projects
- Simon (
~/bin/FreibergFamily/simon/) — Multi-turn chat agent with 6 tools, genealogy historian - AI Visualizer (
~/bin/AI_Visualizer/) — Music video generator, 4-stage Gemma pipeline + vision
Key Insight
Gemma 4 is ultra-compliant and highly capable but doesn't know who it is. It needs explicit system prompts, not hand-holding. Due to fast local inference, sequential tool calls beat long JSON requests.
Description
Languages
Jupyter Notebook
79.5%
HTML
12.5%
Python
7.5%
Jinja
0.4%