v0.12.5 — seven shipped bugs found by live use, fixed, and re-verified live
A day of scripted live-use sessions across the four documented reference serving configurations surfaced seven shipped bugs — one of them live since the earliest releases. All seven are fixed here; every fix was adversarially reviewed, and every fix was re-verified against a real server after landing.
The bugs (full detail in the CHANGELOG):
- The tool-result audit trail capped every logged result at 200 characters and stamped it
truncated: false— the model always saw full results, but every audit surface lied about what tools returned (#133) - Large-read eviction could trap a turn in a read→evict→restore→re-read loop for 24+ minutes at small context budgets; restored content is now pinned for the rest of the turn, and the same ask completes unaided in ~6 minutes (#134)
- Bare
/modelstranded text in the input box, so the next command was appended and misparsed —/quitsilently became a no-op (#135) - The speed ledger recorded physically impossible tok/s on vLLM from chunk-arrival timing artifacts; samples now need real substance (#136)
doctorignored per-model context pins and could judge a pin against the wrong model's served window (#137)- A dead endpoint made startup repeat its identical probe cycle three times (#138)
- Trace packs emitted empty tool messages — live since trace packs shipped in v0.9.25 (#139)
Also in this release: the context-management spec is reconciled to the implementation (it taught three false specifics; the previously undocumented eviction layer is now written up), per-model context pins are documented, and the reference-architecture docs carry the measured decode rates with provenance labels — controlled figures as headlines, live-session spread labeled as such, and the one config the pass didn't cover saying so.
Known gap, deliberately unfixed and documented: memory-recall output is not yet marked untrusted in the content-store taint model (#140 tracks the hardening).