{"repo":"NousResearch/hermes-agent","public_id":"100381","display_label":"Fix compaction gates to use real provider usage","summary":"These items address a bug where thread compaction decisions were based on a local byte-estimate heuristic rather than the provider's reported token usage, causing incorrect compaction behavior on small or long-lived threads. The fix anchors compaction logic to actual reported usage figures.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":104555,"merged_at":"2026-09-06T20:21:18+00:00"},"resolution":{"state":"resolved","by":"pr-104555"},"freshness":{"state":"verified","last_verified_at":"2026-09-06T20:21:18+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":99421,"pr_number":104555,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-06T20:21:18+00:00"},{"issue_number":100381,"pr_number":104555,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-06T20:21:18+00:00"},{"issue_number":103391,"pr_number":104555,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-06T20:21:18+00:00"},{"issue_number":104462,"pr_number":104555,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-06T20:21:18+00:00"}],"members":[{"kind":"issue","number":100381,"title":"codex_app_server_auto=hermes triggers thread compaction off the local mirror estimate — compacts tiny threads, thrashes on long-lived sessions","url":null,"state":"closed"},{"kind":"pr","number":100447,"title":"fix(compression): anchor codex app-server preflight on reported usage","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"a9e56c048a","number":0},{"kind":"pr","value":"#104555","number":104555}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":104555,"title":"fix(compression): compaction gates follow the provider's real usage, never the bytes/4 estimate (#104462, salvage #99585 #100447)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/agent_init.py","agent/codex_runtime.py","agent/context_breakdown.py","agent/context_compressor.py","agent/conversation_compression.py","agent/conversation_loop.py","agent/model_metadata.py","agent/turn_context.py","agent/turn_context_compaction.py","agent/turn_preflight.py","agent/turn_preflight_gate.py","agent/turn_request_assembly.py","agent/turn_usage.py","agent/usage_anchor.py","evals/token_accounting/replay_gates.py","gateway/run_turn.py","hermes_cli/cli_status_bar_mixin.py","tests/agent/test_budget_reasoning_details_exclusion.py","tests/agent/test_context_compressor.py","tests/agent/test_context_compressor_cross_session_guard.py","tests/agent/test_context_compressor_session_end_clears_state.py","tests/agent/test_replay_budget_accounting.py","tests/agent/test_turn_base_display_anchor.py","tests/agent/test_turn_context_overflow_warning.py","tests/agent/test_usage_anchor.py","tests/run_agent/test_413_compression.py","tests/run_agent/test_compression_budget_rearm.py","website/docs/developer-guide/context-compression-and-caching.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}