{"repo":"NousResearch/hermes-agent","public_id":"94614","display_label":"False mid-stream drop detection on complete responses","summary":"These issues and fixes address a recurring bug where fully complete streaming responses are incorrectly identified as mid-stream drops. Multiple fixes target the logic responsible for reading completion markers and finish reasons across different stream states and backends.","subsystem":null,"counts":{"members":6,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":100515},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-01T17:27:07+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.3333333333333333},"fix_edges":[{"issue_number":90848,"pr_number":100515,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":91373,"pr_number":100515,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":94614,"pr_number":100515,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":94614,"pr_number":100534,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":94614,"title":"[Bug]: Hermes intermittently reports a client-side mid-stream drop on responses that are in fact complete.","url":null,"state":"closed"},{"kind":"pr","number":94624,"title":"fix(streaming): stop complete responses from being retried as stream drops","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"622883bad7","number":0},{"kind":"pr","value":"#100534","number":100534},{"kind":"pr","value":"#94625","number":94625}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":94625,"title":"fix(agent): accept marker-only finish_reason chunks after stream supersession","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"622883bad7","number":0},{"kind":"pr","value":"#100534","number":100534},{"kind":"pr","value":"#91189","number":91189},{"kind":"pr","value":"#100515","number":100515}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":99344,"title":"fix(agent): harvest finish_reason before the SSE guard can continue past it","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#96333","number":96333},{"kind":"pr","value":"#96333","number":96333}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":100515,"title":"fix(streaming): complete Portal/vLLM streams no longer misread as mid-stream drops (#90848, #91373; salvages #91189, #91376, #96333)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/chat_completion_helpers.py","contributors/emails/[redacted:email]","hermes_cli/proxy/server.py","hermes_cli/proxy/sse_done.py","tests/hermes_cli/test_proxy.py","tests/hermes_cli/test_sse_done.py","tests/run_agent/test_partial_stream_finish_reason.py"]},{"kind":"pr","number":100534,"title":"fix(streaming): superseded streams keep their completion marker — no more false drops (#94614, salvage #94625)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/chat_completion_helpers.py","tests/run_agent/test_partial_stream_finish_reason.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}