"Nine Macs, one lane, and not a single model-cleaned dictation. Every one of them was following a default nobody had picked."
The Second War Story
The lane split fixed the cathedral. Two months later the lightest model lane turned out to have its own disease, and it hid better. The "local fast" lane was meant to run a small Ollama model with a tight prompt and a hard timeout. Its model field was empty on almost every Mac, and an empty field quietly inherited the Local Mini model — gemma4:31b, 18.5 GB. So the heaviest model on each Mac became the fast lane's default, was prewarmed at every launch and held in memory for thirty minutes. Nobody chose it. It fell out of a fallback.
The Census
On 2026-09-15 every Mac in the fleet was checked. Not one had produced a model-cleaned dictation through that lane:
air, mini no Ollama -> every dictation went straight to deterministic
music, pro2024 tag not installed -> 404, then deterministic
server, worker, pro2023, gemma4:31b -> stalled the full 4 s budget, then deterministic
macbook
office glm-5.3:cloud -> stalled 4 s the same way
# The lane looked configured everywhere. It worked nowhere.
Thinking Was On, and Nobody Said So
The request never set Ollama's think field, so thinking models used their own default: think. Measured on one short Korean 반말 sample, warm: gemma4:31b with thinking took 32 seconds on the M3 Ultra (811 tokens), so the budget cut it every time. With thinking off it took 3.1–4.6 seconds — and turned 반말 into 해요체, changing how Dad sounds. glm-5.3:cloud returned empty content with thinking on, and with thinking off it wrote its reasoning into the content field. That reasoning — "The transcript is …" and a paragraph of analysis — was inserted into Dad's text field ahead of a one-word dictation.
candidate latency (warm) what it did to the text
--------- -------------- -----------------------
gemma4:31b think 32 s cut by the budget, never used
gemma4:31b no-think 3.1-4.6 s 반말 -> 해요체 (register changed)
glm-5.3:cloud - empty / reasoning written as the answer
ministral-3 8.9B 1.6 s softened meaning ("것 같다")
qwen3:30b-a3b 1.6 s barely cleaned
llama3.2 3B 0.65 s garbled text, dropped content
cwkPippa utility 0.74 s register kept
Dad's Call
A memory-tier default would have picked among models that all failed the lane in different ways. A server-tier default would have kept the same 18.5 GB problem. A cloud default would send transcripts off the Mac without anyone choosing that. So: the fast lane runs a model only when one is named in its own field, and it sends think:false. Empty means deterministic cleanup with nothing loaded. And because think:false is a request a model can ignore, a second guard watches the output: DictationCleanupGuard refuses a dictation cleanup longer than the transcript plus half again (at least 40 characters of slack), in every dictation lane, falling back to deterministic. Leaked reasoning quotes the transcript and then repeats the answer, so it usually blows far past that bound; a short stray sentence does not, and passes.
A Code Default Is Not a Deployed Default
One more trap made this subtle: every field of Firekeeper's settings is written to disk at first launch. A new code default never reaches a Mac whose settings.json already stores the old value. Here the luck ran the right way — eight Macs had stored an empty string, and the empty string's new meaning reached them without a migration. The plan still lists the open question honestly: no model on the fleet yet fits a 24 GB Mac, answers in about a second with thinking off, and keeps the speaker's register.