{"repo":"NousResearch/hermes-agent","public_id":"102399","display_label":"Corrupt session data no longer crashes session listing","summary":"A single malformed row in the session database (bad timestamp, invalid JSON, or oversized query) previously caused the entire sessions list and related features to fail. These changes make session listing and related operations tolerant of corrupt individual rows.","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":108086,"merged_at":"2026-09-11T13:24:55+00:00"},"resolution":{"state":"resolved","by":"pr-108086"},"freshness":{"state":"verified","last_verified_at":"2026-09-11T13:24:55+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":91536,"pr_number":108086,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-11T13:24:55+00:00"},{"issue_number":94691,"pr_number":108086,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:24:55+00:00"},{"issue_number":99959,"pr_number":108086,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:24:55+00:00"},{"issue_number":102352,"pr_number":108086,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:24:55+00:00"},{"issue_number":102399,"pr_number":108086,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:24:55+00:00"},{"issue_number":106060,"pr_number":108086,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T13:24:55+00:00"}],"members":[{"kind":"issue","number":102399,"title":"[Bug]: sessions list/browse dies with TypeError on a TEXT timestamp — one corrupt row kills the whole listing","url":null,"state":"closed"},{"kind":"pr","number":102400,"title":"fix(cli): render corrupt timestamps as unknown instead of crashing sessions list","url":null,"state":"closed","close_reason":{"category":"stale_abandoned","implication":"active"},"merged":false},{"kind":"pr","number":108086,"title":"state.db: one corrupt row (bad timestamp / malformed marker JSON / oversized IN-list) no longer kills sessions list, export, insights or prune (#102399 #102352 #99959 #94691 #106060; salvage #106071 #101726 #94701 #102679 #100658)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/insights.py","hermes_cli/cli_session_mixin.py","hermes_cli/session_export.py","hermes_cli/session_export_html.py","hermes_cli/session_export_md.py","hermes_cli/session_filters.py","hermes_cli/sessions_cmd.py","hermes_cli/sessions_cmd_browse.py","hermes_cli/timefmt.py","hermes_state_common.py","hermes_state_compression.py","hermes_state_gateway.py","hermes_state_maintenance.py","hermes_state_messages.py","hermes_state_portability.py","hermes_state_schema.py","hermes_state_sessions.py","tests/hermes_state/test_corrupt_row_robustness.py","tests/test_hermes_state.py","tests/test_session_export_batch.py","tests/tools/test_async_delegation_fd_leak.py","tools/async_delegation.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}