opencode
- 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 model that only says RUN
A fake model drove six coding-agent harnesses through dangerous commands. One block I had credited to a deny rule came from print mode having nobody to ask.
- The typo followed the tag; the failures didn't
Flint misspelled its run folder 495 times, only under run tags with a -fl token. In a renamed-tag A/B the typo moved and the scores didn't.
- To a coding agent, 503 means try again
What Claude Code, opencode and Node clients do with a self-hosted LLM endpoint's 503s and silences, and the status codes that stop the retry loops.
- Flint mistyped its path and blamed the tools
Flint typed one wrong token in its workspace path. OpenCode refused 81 calls without naming the path; the model blamed a tool glitch and called its code done.
- Empty diff, finished code: 124,000 characters of thinking
Two K2-Horizon agent runs scored 29 with an empty diff. The code was in the reasoning: the Go cell's, pasted into the repo, passes 27 of 27 hidden tests.
- The harness decided how long the model thought
One 27B model, one llama.cpp server: 250 s per agent run in OpenCode, 116 s in Pi. Under OpenCode the model reasoned 3.6 times as much.
- My benchmark read my CLAUDE.md
An audit built to check sampler overrides found my OpenCode bench runs carrying my global ~/.claude/CLAUDE.md and skills: 53,483 characters of prompt.