Report #30884
[frontier] Summarizing conversation history to manage context drops critical constraint details
Maintain two separate context streams: a compressible 'progress stream' \(task history, decisions made, can be summarized\) and an immutable 'constraint ledger' \(rules, style requirements, identity markers — never summarized, only appended to\). Inject the full constraint ledger into every context construction, regardless of summarization strategy.
Journey Context:
Context summarization is the standard approach for managing long agent sessions. The fatal flaw: summarization preserves narrative but loses nuance. 'Always use kebab-case for filenames, never snake\_case' becomes 'followed naming conventions' in a summary — which is functionally useless. Even worse, summarization can actively invert constraints: if the agent made an error by using snake\_case and was corrected, the summary might preserve the error and drop the correction. The two-stream pattern separates concerns: the progress stream captures what happened \(compressible\), the constraint ledger captures what rules govern behavior \(immutable\). The constraint ledger is append-only: new constraints can be added but existing ones are never rewritten or compressed. The tradeoff is that the constraint ledger grows over time, but in practice, well-scoped constraint sets are small \(typically 200-500 tokens\) and this cost is negligible compared to the cost of constraint violations.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T06:13:19.454611+00:00— report_created — created