{"repo":"NousResearch/hermes-agent","public_id":"103030","display_label":"Bot Chat DM delivery and ownership routing fixes","summary":"These items address how local direct messages and cron events are routed to an active Bot Chat owner, correcting cases where delivery was refused due to incorrect tab or lease ownership checks.","subsystem":null,"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":105442,"merged_at":"2026-09-07T23:48:30+00:00"},"resolution":{"state":"resolved","by":"pr-105442"},"freshness":{"state":"verified","last_verified_at":"2026-09-07T23:48:30+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":99956,"pr_number":105442,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-07T23:48:30+00:00"},{"issue_number":101060,"pr_number":105442,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-07T23:48:30+00:00"},{"issue_number":103030,"pr_number":105442,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-07T23:48:30+00:00"}],"members":[{"kind":"issue","number":103030,"title":"target_busy delivery refused by background-tab lease: ownership tracks open chat, not viewed tab (follow-up to #99956)","url":null,"state":"closed"},{"kind":"pr","number":103437,"title":"fix(bot-mode): deliver local DMs into a live Bot Chat owner instead of refusing","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"5280fe99872a58f1b9d25b00a79d240ecd035f7d","number":0},{"kind":"pr","value":"#101564","number":101564}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":105442,"title":"fix: cron and local DMs reach an open Desktop Bot Chat","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/monitoring/cron_health.py","contributors/emails/[redacted:email]","cron/executions.py","cron/scheduler.py","cron/scheduler_delivery.py","hermes_cli/cron.py","tests/cron/test_cron_live_bot_delivery.py","tests/tools/test_bot_live_owner_delivery.py","tests/tools/test_bot_mode_dm.py","tests/tui_gateway/test_auto_continue.py","tests/tui_gateway/test_bot_live_owner_delivery.py","tools/bot_live_delivery.py","tools/bot_mode_dm.py","tools/cronjob_tools.py","tui_gateway/prompt_turn.py","tui_gateway/session_auto_continue.py","tui_gateway/session_lifecycle.py","tui_gateway/session_notifications.py","tui_gateway/turn_marker.py","website/docs/developer-guide/cron-internals.md","website/docs/user-guide/bot-mode.md","website/docs/user-guide/features/cron.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}