mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-11-06 05:17:15 +00:00
With compression.prepare_ahead, compress() re-planned the tail cut and threw the completed background summary away whenever the fresh cut landed before the summary's boundary (the no-LLM prune made tail rows cheaper, tool-group alignment moved the cut), then wrote a second summary inline while the user waited. That breaks the one-summary rule: once the background summary exists it is used, and everything after its boundary is the tail. The splice check no longer consults the fresh cut at all. A summary is still discarded only when the messages it covers changed (rewind, shape change, other session, moved head). The pass planned its own window with a full tail, so the tail is never empty. The now-unreachable inside_tail reason leaves the (unreleased) prepared-compaction metric contract.