{"repo":"NousResearch/hermes-agent","public_id":"75017","display_label":"Telegram polling conflict retry and recovery fixes","summary":"Multiple fixes addressing Telegram 409 polling conflict errors, including retry loop behavior, backoff preservation, stale session cleanup, and gateway reconnection handling. Related instrumentation and SQLite warning issues are also touched.","subsystem":"gateway","counts":{"members":8,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":5},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":78344},"resolution":{"state":"resolved","by":"pr-78344"},"freshness":{"state":"verified","last_verified_at":"2026-08-04T09:04:51+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.25},"fix_edges":[{"issue_number":75017,"pr_number":78344,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":75153,"pr_number":78344,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":75017,"title":"Telegram polling conflict: self-perpetuating retry loop from drop_pending_updates=False","url":null,"state":"closed"},{"kind":"pr","number":2297,"title":"fix(gateway): retry Telegram 409 polling conflicts before giving up","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#2312","number":2312}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":25232,"title":"fix(gateway): route conflict-retry start_polling failure to reconnect ladder","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"f260aa6dc0fd6ecafb36964c33a39276fdd8da0a","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":55905,"title":"fix(telegram): recover when polling updater stops while process stays alive (#55769)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":64506,"title":"fix(telegram): instrument getUpdates request via subclass re-tag, not slotted attr (#64482)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#64574","number":64574}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":75073,"title":"fix(telegram): clear stale polling sessions on conflict retry","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":75096,"title":"fix(telegram): preserve conflict retry backoff after transient progress","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#78344","number":78344},{"kind":"pr","value":"#75073","number":75073}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":78344,"title":"fix(telegram+sqlite): resolve polling conflict loop + misleading WAL warning","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["hermes_state.py","plugins/platforms/telegram/adapter.py","tests/gateway/test_telegram_conflict.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}