{"repo":"NousResearch/hermes-agent","public_id":"105670","display_label":"Fix stale WAL checkpoint corrupting state.db at shutdown","summary":"A bug allowed handles that had lost their WAL generation to perform a checkpoint into state.db during graceful shutdown, potentially corrupting it. These issues and fixes add guards to skip or block that stale checkpoint when the WAL generation has been replaced or deleted.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":106315,"merged_at":"2026-09-09T06:51:20+00:00"},"resolution":{"state":"resolved","by":"pr-106315"},"freshness":{"state":"verified","last_verified_at":"2026-09-09T06:51:20+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":105670,"pr_number":106315,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-09T06:51:20+00:00"}],"members":[{"kind":"issue","number":105670,"title":"WAL generation split-brain: DeletedWalGenerationError guarded writes, but the graceful-shutdown checkpoint then corrupted state.db (field report)","url":null,"state":"closed"},{"kind":"pr","number":105686,"title":"fix(sessions): skip stale WAL checkpoint at shutdown","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#105692","number":105692},{"kind":"pr","value":"#105670","number":105670}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":105692,"title":"fix(state): guard close-time checkpoint for replaced/deleted-generation handles","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"f290946e4e","number":0},{"kind":"pr","value":"#106315","number":106315},{"kind":"pr","value":"#105686","number":105686}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":106315,"title":"fix(state): a handle that lost its WAL generation no longer checkpoints stale frames into state.db at shutdown (#105670; salvage #105692, dup #105686)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_state.py","hermes_state_schema.py","tests/hermes_state/test_deleted_wal_checkpoint_guard.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}