{"repo":"NousResearch/hermes-agent","public_id":"102120","display_label":"state.db corruption from concurrent gateway writes","summary":"These items address a shared state.db corruption problem caused by multiple processes or concurrent gateway restarts writing simultaneously. Fixes involve serialization, opt-out flags, cross-process locking, and restricting which processes are permitted to write to state.db.","subsystem":"gateway","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":102120,"title":"hosted_room_worker corrupts shared state.db on simultaneous multi-profile gateway restart (e.g. via `hermes update`)","url":null,"state":"closed"},{"kind":"pr","number":102153,"title":"fix(gateway): serialize hosted-rooms first-open of shared state.db","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#102120","number":102120},{"kind":"pr","value":"#102120","number":102120}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":102176,"title":"hosted_rooms: add cross-process lock to prevent state.db corruption on concurrent gateway startup","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":102237,"title":"fix(gateway): opt-out flag for hosted rooms worker to prevent concurrent-restart corruption (#102120)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"902eccae3f","number":0},{"kind":"pr","value":"#108076","number":108076}],"category":"superseded_by_pr","implication":"superseded"},"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}}