{"repo":"NousResearch/hermes-agent","public_id":"2635","display_label":"Session reset fails to clear compression state","summary":"Multiple bugs and proposed fixes around ContextCompressor not fully resetting per-session state—including summary text, turn counters, and failure cooldown flags—when /clear, /new, or session reset is triggered. Several parallel fix attempts address the same family of stale-state issues.","subsystem":"agent","counts":{"members":9,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":3,"merged_prs":2,"attempt_prs":4},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":3102},"resolution":{"state":"partially_resolved","by":"pr-3102"},"freshness":{"state":"verified","last_verified_at":"2026-05-04T09:30:31+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.19666666666666666},"fix_edges":[{"issue_number":2635,"pr_number":3102,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":15547,"pr_number":19622,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":2635,"title":"[Bug]: /clear and /new leave stale compression summary and turn counter across sessions","url":null,"state":"closed"},{"kind":"issue","number":15547,"title":"[Bug]: _summary_failure_cooldown_until not reset on /new or /reset — compression skipped silently in new session","url":null,"state":"closed"},{"kind":"issue","number":16067,"title":"[Bug]:  ContextCompressor.on_session_reset() fails to reset _summary_failure_cooldown_until, causing compression summary to be silently skipped in new sessions","url":null,"state":"closed"},{"kind":"pr","number":2640,"title":"fix(session): clear compressor summary and turn counter on /clear and /new","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#3102","number":3102}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":2723,"title":"fix(agent): reset turn counter and compression summary on /clear or /new","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"b374f52063788311629c02dcf4c9f2d98a3c2d42","number":0},{"kind":"pr","value":"#3102","number":3102},{"kind":"pr","value":"#2635","number":2635}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":3102,"title":"fix(session): clear compressor summary and turn counter on /clear and /new","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["run_agent.py","tests/test_session_reset_fix.py"]},{"kind":"pr","number":15548,"title":"fix(compressor): reset _summary_failure_cooldown_until in on_session_reset()","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#19622","number":19622}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":16152,"title":"fix(compressor): reset cooldown and model-fallback flag on session reset (#16067)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#15549","number":15549},{"kind":"pr","value":"#15549","number":15549}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":19622,"title":"fix(compressor): reset _summary_failure_cooldown_until on session reset","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/context_compressor.py"],"fix_hunks":[{"file":"agent/context_compressor.py","hunks":["@@ -344,6 +344,7 @@ def on_session_reset(self) -> None:\n         self._last_aux_model_failure_model = None\n         self._last_compression_savings_pct = 100.0\n         self._ineffective_compression_count = 0\n+        self._summary_failure_cooldown_until = 0.0  # transient errors must not block a fresh session\n \n     def update_model(\n         self,\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}