{"repo":"NousResearch/hermes-agent","public_id":"121734","display_label":"Fix compression archiving held rows incorrectly","summary":"These issues and PRs address a bug where in-place compression archives rows by position rather than by ID, causing turns the compressor never saw to be lost. The fixes aim to ensure only the rows the compressor actually held are archived, preserving unseen turns.","subsystem":"agent","counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":1,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":121780,"merged_at":"2026-09-24T16:57:57+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-24T16:57:57+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":121734,"pr_number":121780,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-24T16:57:57+00:00"}],"members":[{"kind":"issue","number":121734,"title":"[Bug]: in-place compaction still archives by position — a foreign-row gap below the newest held row, or an unpersisted current turn, loses turns the compressor never saw","url":null,"state":"closed"},{"kind":"pr","number":121750,"title":"fix(compression): keep unseen turns after in-place compression","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"f53c0f6b20a","number":0},{"kind":"commit","value":"1a632c3ab3b","number":0},{"kind":"commit","value":"4d5899868a5","number":0},{"kind":"pr","value":"#121750","number":121750},{"kind":"pr","value":"#121734","number":121734},{"kind":"pr","value":"#121302","number":121302},{"kind":"pr","value":"#118481","number":118481},{"kind":"pr","value":"#121489","number":121489},{"kind":"pr","value":"#121777","number":121777},{"kind":"pr","value":"#121780","number":121780}],"category":"partial_fix","implication":"needs_llm"},"merged":false},{"kind":"pr","number":121777,"title":"fix(compression): archive held rows by id","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#121780","number":121780}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":121780,"title":"fix(compression): archive the rows the compressor held, not every row up to the newest","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/agent_runtime_helpers.py","agent/context_compressor.py","agent/conversation_compression.py","agent/conversation_compression_archive.py","agent/conversation_compression_manual.py","agent/micro_compaction.py","hermes_state_messages.py","tests/agent/test_conversation_compression_manual.py","tui_gateway/server.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}