{"repo":"NousResearch/hermes-agent","public_id":"125124","display_label":"Fix concurrent first-turn session interleaving bug","summary":"A bug where concurrent API requests on a new session ID caused turns to interleave incorrectly (resulting in lost responses) was identified and addressed by acquiring a turn lease before reading session state.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":126309,"merged_at":"2026-09-28T12:29:18+00:00"},"resolution":{"state":"resolved","by":"pr-126309"},"freshness":{"state":"verified","last_verified_at":"2026-09-28T12:29:18+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":125124,"pr_number":126309,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-28T12:29:18+00:00"}],"members":[{"kind":"issue","number":125124,"title":"[Bug]: concurrent API requests on a new session id interleave their turns (user, user, assistant, assistant; one answer lost)","url":null,"state":"closed"},{"kind":"pr","number":125125,"title":"fix(agent): the first turn on a new session id takes the turn lease too","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"f06c354bc120d687df14cc48b6f0a136cf495f27","number":0},{"kind":"commit","value":"29625ef05277be8eee6dcc8225e30c6b1ddb4459","number":0},{"kind":"commit","value":"41755854adfd96e2871badefdec7993f62324481","number":0},{"kind":"commit","value":"dd3ba4b4b8d6dd8cd85d1ba64d42d7e5f516a068","number":0},{"kind":"commit","value":"e63b6fa197e7a941ba5a51d0a0e90d7b7ab136fc","number":0},{"kind":"pr","value":"#84235","number":84235},{"kind":"pr","value":"#125199","number":125199}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":125199,"title":"fix(agent): acquire first-turn lease before reading session state","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"66a0f47fd7","number":0},{"kind":"commit","value":"057bbb3fb9","number":0},{"kind":"commit","value":"6c1f0bc3c8","number":0},{"kind":"commit","value":"d9b456ed00","number":0},{"kind":"pr","value":"#126309","number":126309},{"kind":"pr","value":"#125125","number":125125}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":126309,"title":"fix(agent): concurrent API requests on a new session id no longer interleave their turns (#125124, salvage #125125)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/turn_facade_lease.py","tests/agent/test_cross_process_turn_lease.py","tests/agent/test_turn_facade_lease.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}