{"repo":"NousResearch/hermes-agent","public_id":"107688","display_label":"Preventing concurrent writable database opens causing corruption","summary":"These issues and PRs address a pattern where multiple components open the session/state database with write access simultaneously, which can trigger concurrent full-text-search rebuild corruption. The work focuses on making secondary openers read-only to ensure only one writable owner exists at a time.","subsystem":null,"counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":108076},"resolution":{"state":"resolved","by":"pr-108076"},"freshness":{"state":"verified","last_verified_at":"2026-09-11T13:21:49+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":102120,"pr_number":108076,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":102589,"pr_number":108076,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":107440,"pr_number":108076,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":107688,"pr_number":108076,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":107688,"title":"Dashboard does an unconditional writable SessionDB open at startup, exposing the documented concurrent-FTS-rebuild corruption vector","url":null,"state":"closed"},{"kind":"pr","number":107691,"title":"fix(dashboard): keep SessionDB read-only to avoid concurrent FTS corruption","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"1caab41045","number":0},{"kind":"pr","value":"#107974","number":107974},{"kind":"pr","value":"#107701","number":107701}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":107701,"title":"fix(dashboard): eager session-store reconcile opens read-only, removing second writable owner","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#107974","number":107974},{"kind":"pr","value":"#107691","number":107691}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":107729,"title":"fix(dashboard): eager session-store reconcile opens read-only to avoid concurrent FTS rebuilds (#107688)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#107701","number":107701},{"kind":"pr","value":"#107688","number":107688},{"kind":"pr","value":"#107691","number":107691}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":108076,"title":"state.db no longer gets a second writer from profile gateways, the dashboard, the lifecycle guard or doctor --fix (#102120 #107688 #102589 #107440; salvage #103489 #102682 #108012 #105428)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["contributors/emails/[redacted:email]","cron/lifecycle_guard.py","gateway/hosted_room_policy_checkpoint.py","gateway/hosted_rooms.py","hermes_cli/doctor_state.py","hermes_cli/web_server_lifecycle.py","hermes_state_holders.py","tests/cron/test_lifecycle_guard_live_db.py","tests/gateway/test_hosted_rooms.py","tests/hermes_cli/test_doctor_wal_holder_guard.py","tests/hermes_cli/test_web_server.py","tests/state/test_fts_holder_instance_scope.py","tests/tui_gateway/test_groups_methods.py","tests/tui_gateway/test_hosted_room_service.py","tui_gateway/hosted_room_service.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}