{"repo":"NousResearch/hermes-agent","public_id":"78183","display_label":"Fix gateway timeout error type preservation","summary":"These items address a bug where an empty error string from httpx timeout exceptions caused incorrect error classification in the gateway, potentially leading to duplicate message delivery. The fix preserves the exception type regardless of whether the error string is empty.","subsystem":"gateway","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":96322,"merged_at":"2026-08-27T11:51:27+00:00"},"resolution":{"state":"resolved","by":"pr-96322"},"freshness":{"state":"verified","last_verified_at":"2026-08-27T11:51:27+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":78183,"pr_number":96322,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-08-27T11:51:27+00:00"}],"members":[{"kind":"issue","number":78183,"title":"[BlueBubbles] Empty httpx timeout error string defeats _is_timeout_error(), causing duplicate message delivery","url":null,"state":"closed"},{"kind":"pr","number":78249,"title":"fix(gateway): preserve exception type when error string is empty (#78183)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#96322","number":96322},{"kind":"pr","value":"#78183","number":78183},{"kind":"pr","value":"#14061","number":14061}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":96322,"title":"fix(gateway): preserve exception type when error string is empty — stop duplicate delivery on httpx timeouts (salvage #78249)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["gateway/platforms/bluebubbles.py","gateway/platforms/qqbot/adapter.py","gateway/platforms/whatsapp_cloud.py","gateway/platforms/yuanbao.py","tests/gateway/test_bluebubbles.py","tests/gateway/test_qqbot.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}