{"repo":"NousResearch/hermes-agent","public_id":"109946","display_label":"state.db WAL locking and read-only access fixes","summary":"These items address improper write access and WAL file lifecycle issues when reading state.db, including fixes to ensure read paths open the database read-only and sidebar profile reads are properly scoped to avoid stray lock or WAL generation.","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":110718,"merged_at":"2026-09-14T12:28:47+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-14T12:28:47+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":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":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":109824,"pr_number":110718,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:47+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":109946,"pr_number":110718,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-14T12:28:47+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":109946,"title":"Desktop/dashboard all-profile sidebar can trigger deleted WAL generation in live profile gateways","url":null,"state":"closed"},{"kind":"pr","number":110088,"title":"fix(dashboard): scope desktop sidebar profile reads","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"de626c5a36","number":0},{"kind":"commit","value":"75e155ab09","number":0},{"kind":"commit","value":"274fd56dca","number":0},{"kind":"commit","value":"a30ccdbeab","number":0},{"kind":"commit","value":"9d75f20630","number":0},{"kind":"commit","value":"5b68d2271b","number":0},{"kind":"pr","value":"#109946","number":109946},{"kind":"pr","value":"#110544","number":110544},{"kind":"pr","value":"#110718","number":110718}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"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"]},{"kind":"pr","number":110718,"title":"fix(state): read paths open state.db read-only instead of taking a writer","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["contributors/emails/B0on@users.noreply.github.com","contributors/emails/samalone@users.noreply.github.com","hermes_cli/cli_info_mixin.py","hermes_cli/main_agent_cmds.py","tests/hermes_cli/test_cli_insights_command.py","tests/tui_gateway/test_profile_db_readonly.py","tests/tui_gateway/test_tui_gateway_server.py","tui_gateway/methods_projects.py","tui_gateway/methods_session.py","tui_gateway/methods_session_foreign.py","tui_gateway/server.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}