{"repo":"NousResearch/hermes-agent","public_id":"77127","display_label":"WebSocket disconnect/reconnect session race conditions","summary":"These items address race conditions and TOCTOU bugs in the TUI gateway where WebSocket disconnect and reconnect sequences can incorrectly close or orphan sessions that have already resumed. Includes related regression tests.","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":96438},"resolution":{"state":"resolved","by":"pr-96438"},"freshness":{"state":"verified","last_verified_at":"2026-08-27T14:51:23+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":77127,"pr_number":96438,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":77127,"title":"WS disconnect teardown race can close or orphan a session reconnected via session.resume","url":null,"state":"closed"},{"kind":"pr","number":77129,"title":"fix(tui-gateway): close WS disconnect/reconnect session race","url":null,"state":"closed","close_reason":{"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":77212,"title":"fix(tui-gateway): WS disconnect/reconnect TOCTOU fix + real regression test (RAH-05 + RAH-06)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#77129","number":77129},{"kind":"pr","value":"#77127","number":77127},{"kind":"pr","value":"#77129","number":77129},{"kind":"pr","value":"#77129","number":77129},{"kind":"pr","value":"#77127","number":77127},{"kind":"pr","value":"#77191","number":77191},{"kind":"pr","value":"#77192","number":77192},{"kind":"pr","value":"#77129","number":77129}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":95709,"title":"fix(tui-gateway): serialize WS session transport ownership","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"7c28eda02b1bdb9125b866d27466677951749986","number":0},{"kind":"commit","value":"0dfba37b11ff2ca908ae2df85b55f4f4c9b7fd8b","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":96438,"title":"fix(tui-gateway): a reconnected session no longer dies to the old socket's disconnect teardown (#77127, salvage #95197)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["tests/test_tui_gateway_server.py","tui_gateway/server.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}