{"repo":"NousResearch/hermes-agent","public_id":"102766","display_label":"Distinguishing clean EOF from network drop in streams","summary":"These items address a conflation bug where a clean EOF with no finish_reason is incorrectly labeled the same as a transport/network drop. The work involves separating diagnostics, labels, and handling for these two distinct stream-ending conditions.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":121639,"merged_at":"2026-09-26T00:40:55+00:00"},"resolution":{"state":"resolved","by":"pr-121639"},"freshness":{"state":"verified","last_verified_at":"2026-09-26T00:40:55+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":90215,"pr_number":121639,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-26T00:40:55+00:00"},{"issue_number":91717,"pr_number":121639,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-26T00:40:55+00:00"},{"issue_number":102766,"pr_number":121639,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-26T00:40:55+00:00"}],"members":[{"kind":"issue","number":102766,"title":"[Bug]: \"Response truncated — stream ended before completion\" conflates two distinct failure modes; type-2 (clean EOF, no finish_reason) needs its own diagnostics and is mislabeled as a network drop","url":null,"state":"closed"},{"kind":"pr","number":102772,"title":"fix(stream): distinguish clean-EOF no-finish_reason from a transport drop","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"1f041552d7","number":0},{"kind":"pr","value":"#121639","number":121639},{"kind":"pr","value":"#102766","number":102766}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":121639,"title":"fix(agent): honest truncation/stream-drop labels (clean EOF vs network, finish_reason gate, 1-indexed attempts)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/chat_completion_helpers.py","agent/stream_diag.py","agent/turn_failure_copy.py","agent/turn_tool_validation.py","agent/turn_truncation.py","contributors/emails/164521089+rainbowgits@users.noreply.github.com","tests/agent/test_partial_stream_finish_reason.py","tests/agent/test_run_agent.py","tests/agent/test_stream_drop_logging.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}