posts
- In opencode 1.19.5, my workaround protected nothing
I renamed model keys so opencode wouldn't force top_p on my local models. In 1.19.5 it matches the id I sent anyway, and the qwen rule is gone.
- Another guard's test list found holes in mine
114 example commands from a separately built shell-parsing guard went through my regex guard. Most held. The worst gap was a guard that could quietly vanish.
- Two rounds, seventeen arms: the engine set the speed, not the quant
17 local-model setups on one 128 GB box. Q2_0 generated 2.2x faster than IQ4_XS; a same-file engine A/B puts most of that on the engine.
- Five languages, two reps: the round-two ranking
Five local models in six setups, 144 coding-agent runs on one 128 GB box. Flash-Next leads in both quants, and the bugs line up by ticket.
- Nine accusations, one lie: re-reading round two's judges
137 reviewed local-model agent runs, 14 "false" verdicts from two judges. On the raw sessions 9 fell, 4 were about docs, and 1 was a lie.
- The third run mattered where it cost the most
739 three-run groups from my agent bench: 19% split on basic tasks, 56% on Zig. So basic drops to two runs, and Zig runs only after the hard tier earns it.
- The race detector saw my requests in order
A mutant removed a lock in my Go proxy and survived -race. The test sent its requests one after another, and that order hid the unlocked read.
- The poller that wasn't stuck
One timestamp an hour older than its process sent me after a hung Go poller. A goroutine dump killed that theory; a local-time RTC after DST explained it.
- The config said 32k. The engine still ran 64k.
Adding SIGHUP reload to a Go LLM proxy: a whitelist of three settings, a model list that runs ahead of the engines, and a refresh that finished last.
- My isolation guard checked itself
A guard meant to prove my Go tests couldn't reach the live proxy compared a path with the env var it guarded, and passed on any shell that had set it.