1e638e1e3b
The summary ledger is regenerated every turn. At the head of history it invalidated the cached retained turns on every request once trimming started. Insert it immediately before the current turn's HumanMessage so system, tools and retained history stay byte-identical; excerpts of dropped turns stay at the head since they only change when the cut moves. Reserve a fixed ledger ceiling (SUMMARY_RESERVE_TOKENS) rather than its current size, so a shrinking ledger cannot pull the cut back and change the retained prefix; fall back to the actual size for tight budgets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>