Skip to content

v0.38.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 18:45
· 862 commits to master since this release

Highlights

ctx_reduce nudges actually fire now

The context-hygiene nudge system was rebuilt end to end. The old severity metric divided unreduced tool output by your entire prompt, so on large context windows the reminders quietly stopped firing — agents accumulated hundreds of kilobytes of spent tool output with no prompt to clean it up. Severity is now the share of the agent's working tail that is unreduced tool output, computed by one shared instrument across OpenCode, Pi, and the Rust module, with escalating bands (gentle → firm → urgent → a once-per-cycle interrupt). Reasoning tokens are excluded from the math, the newest reduce calls are protected as in-context examples, and the interrupt re-arms only after the tail genuinely resets.

Display surfaces tell the truth about context (#326)

The TUI sidebar, /ctx-status, and the Pi footer now show percentages relative to the usable context window — the same number the scheduler acts on — instead of raw window arithmetic that required knowing MC internals to interpret. The sidebar separates reasoning tokens so "Conversation" no longer silently includes thinking.

Fixes

  • Anthropic streaming could append a late empty text block to the previous assistant message, shifting bytes one pass later and forcing a large cache rewrite every turn. Decisions about trailing blanks are now frozen per message and replayed deterministically (both plugin legs and the module).
  • output_reserve was ignored by the new window-geometry derivation introduced in 0.37.0; an explicit reserve now takes precedence over every derived source, and the precedence is documented in the configuration reference. (#325)
  • Auto-update no longer rewrites an explicit @latest (or any version range you authored) to an exact pin; bare and exact specs keep the pinning that protects running sessions from mid-session package deletion. (#322)
  • Dreamer manifest validation is fail-closed: malformed model output now triggers retry/fallback at validation time instead of corrupting memory mappings or recording incomplete work as complete. (#323)
  • A successful verify-broad run no longer reports its progress in the error field, so the dashboard stops rendering healthy runs in red. (#324)
  • Pi: a mural state read could oscillate the cache baseline, causing periodic full prompt rewrites on quiet passes; state is now threaded consistently and an end-to-end invariant asserts zero cache busts across consecutive quiet passes on both legs.
  • Pi: the Channel-2 reminder lease is token-bound, so concurrent processes cannot revert each other's in-flight claims.
  • Rust transform mode: responses can no longer omit message content on cache edge cases (typed refusals + an adapter-side retry); flat block IDs are format-pinned; large-session serve latency reduced.

Upgrade notes

No new database migrations. Config surface unchanged; output_reserve behavior returns to its documented pre-0.37.0 precedence.