{"repo":"NousResearch/hermes-agent","public_id":"109727","display_label":"SQLite state.db locking and WAL file safety fixes","summary":"These issues and fixes address bugs in how state.db WAL/SHM files are handled across processes, including lock drops during permission tightening, stray file unlinking by sibling processes, and safer chmod approaches to avoid disrupting live database connections.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":110544,"merged_at":"2026-09-14T12:28:23+00:00"},"resolution":{"state":"resolved","by":"pr-110544"},"freshness":{"state":"verified","last_verified_at":"2026-09-14T12:28:23+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":104596,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":109641,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":109687,"pr_number":109841,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-13T11:29:07+00:00"},{"issue_number":109727,"pr_number":109841,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-13T11:29:07+00:00"},{"issue_number":109727,"pr_number":110544,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":109728,"pr_number":109841,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-13T11:29:07+00:00"},{"issue_number":109786,"pr_number":109841,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-13T11:29:07+00:00"},{"issue_number":109786,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":109824,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":109946,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":110082,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":110106,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":110214,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"},{"issue_number":110276,"pr_number":110544,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:23+00:00"}],"members":[{"kind":"issue","number":109727,"title":"[Bug]: a second Hermes process unlinks the live state.db-wal/-shm and strands the running gateway on Linux (DeletedWalGenerationError)","url":null,"state":"closed"},{"kind":"pr","number":109754,"title":"fix(state): tighten existing db files by chmod(2), not an open/fchmod/close cycle","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#109841","number":109841}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":109841,"title":"fix(state): tightening state.db modes no longer drops the holder's SQLite locks (#109786, salvage #109754)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_state.py","tests/test_hermes_state.py"]},{"kind":"pr","number":110544,"title":"state.db WAL survives sibling closes and stray lock cancellation on every runtime (Desktop chat dies after update; salvage #109758)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_state.py","hermes_state_dbfile.py","hermes_state_lockguard.py","tests/hermes_state/test_deleted_wal_generation_guard.py","tests/hermes_state/test_wal_lock_guard.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}