{"repo":"NousResearch/hermes-agent","public_id":"119001","display_label":"Preserve partial output when retries exhausted","summary":"These items address a bug where partial streamed output is discarded rather than retained when retries are exhausted due to 429 rate-limit or network errors. Fixes aim to keep delivered partial content visible and offer continuation.","subsystem":"agent","counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":1,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":121628,"merged_at":"2026-09-24T17:03:59+00:00"},"resolution":{"state":"resolved","by":"pr-121628"},"freshness":{"state":"verified","last_verified_at":"2026-09-24T17:03:59+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":96465,"pr_number":121628,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-24T17:03:59+00:00"},{"issue_number":119001,"pr_number":121628,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-24T17:03:59+00:00"}],"members":[{"kind":"issue","number":119001,"title":"Desktop: rate-limit (429) or network errors mid/before stream discard delivered partial output instead of persisting it and offering continuation","url":null,"state":"closed"},{"kind":"pr","number":119027,"title":"fix(streaming): keep partial answers after exhausted retries","url":null,"state":"open","close_reason":{"category":"silent_close","implication":"active"},"merged":false},{"kind":"pr","number":119081,"title":"fix(agent): retain delivered partial output on retry-exhausted 429/network errors","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"6cb1aa025c","number":0},{"kind":"pr","value":"#121628","number":121628},{"kind":"pr","value":"#119001","number":119001}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":121628,"title":"fix(agent,desktop): keep delivered partials on retry exhaustion; settle transform_llm_output finals onto the streamed bubble","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/turn_api_error.py","agent/turn_recovery.py","agent/turn_truncation.py","apps/desktop/src/app/session/hooks/use-message-stream/gateway-event/message-stream.ts","apps/desktop/src/app/session/hooks/use-message-stream/gateway-event/types.ts","apps/desktop/src/app/session/hooks/use-message-stream/index.ts","apps/desktop/src/app/session/hooks/use-message-stream/transformed-final.test.tsx","apps/desktop/src/lib/chat-messages/types.ts","apps/shared/src/gateway-contract.generated.ts","apps/shared/src/gateway-contract.openrpc.json","contributors/emails/4663659+orcunulutas@users.noreply.github.com","tests/agent/test_retry_exhaustion_partial_retention.py","tests/tui_gateway/test_turn_payload_response_transformed.py","tui_gateway/contracts/events.py","tui_gateway/prompt_turn.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}