{"repo":"NousResearch/hermes-agent","public_id":"111721","display_label":"Bot DM retry and output stream classification fixes","summary":"These items address bugs in bot-mode DM delivery retry logic, specifically that retries never fired due to incorrect stream classification (reading stderr when the CLI writes errors to stdout), and that fixing the classifier risked double-delivery. Related work also covers dropped stdout in `failed` cron bot chat delivery logging.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":113183,"merged_at":"2026-09-17T00:19:59+00:00"},"resolution":{"state":"resolved","by":"pr-113183"},"freshness":{"state":"verified","last_verified_at":"2026-09-17T00:19:59+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":111721,"pr_number":113183,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-17T00:19:59+00:00"},{"issue_number":111721,"pr_number":113435,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-16T23:58:29+00:00"}],"members":[{"kind":"issue","number":111721,"title":"[Bug]: neither bot-to-bot DM delivery retry ever fires — the classifier reads `(proc.stderr or proc.stdout)` but the CLI writes the provider error to stdout; fixing that alone double-delivers the DM","url":null,"state":"closed"},{"kind":"pr","number":105529,"title":"fix(bot-mode): neither DM delivery retry ever fired — classify from the stream the CLI actually writes","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"3719e04d7448","number":0},{"kind":"pr","value":"#113435","number":113435}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":113183,"title":"fix(bot-mode): a bot DM's transient-failure retry fires and delivers exactly once (#111721, salvage #105529)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cli.py","hermes_cli/quiet_single_query.py","tests/hermes_cli/test_quiet_single_query.py","tests/tools/test_bot_retry_policy.py","tools/bot_failure_reasons.py","tools/bot_mode_dm.py","tools/bot_relay.py","tui_gateway/methods_bot_relay.py","website/docs/user-guide/bot-mode.md"]},{"kind":"pr","number":113435,"title":"fix(cron): a failed Bot Chat delivery records the exit code and both streams (stdout no longer dropped when stderr is present) (#104056, salvage #104068)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cron/scheduler_delivery.py","tests/cron/test_cron_bot_chat_delivery.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}