{"repo":"NousResearch/hermes-agent","public_id":"102635","display_label":"Route bot events to correct profile and conversation","summary":"These items address a routing bug where background-task output, heartbeat events, and completion events could be delivered through the wrong Telegram bot or conversation when a user interacts with multiple profile bots. A fix targets the gateway layer to ensure each event is dispatched to the profile and conversation that owns it.","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":105356,"merged_at":"2026-09-07T21:16:58+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-07T21:16:58+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":31901,"pr_number":105356,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T21:16:58+00:00"},{"issue_number":85575,"pr_number":105356,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T21:16:58+00:00"},{"issue_number":93851,"pr_number":105356,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T21:16:58+00:00"},{"issue_number":96070,"pr_number":105356,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T21:16:58+00:00"},{"issue_number":102635,"pr_number":105356,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T21:16:58+00:00"}],"members":[{"kind":"issue","number":102635,"title":"Background-task output delivered via wrong Telegram bot when one user DMs two profiles' bots","url":null,"state":"closed"},{"kind":"pr","number":102647,"title":"fix(gateway): route background completions to the owning profile's bot (#102635)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"4810074d73d9419dc82545202d595507a73f4f0e","number":0},{"kind":"pr","value":"#105356","number":105356}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":105356,"title":"fix(gateway): heartbeat and completion events resume the owning conversation","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["evals/gateway_completion/README.md","evals/gateway_completion/delivery_lifecycle.py","evals/heartbeat_idle_wire.py","gateway/AGENTS.md","gateway/kanban_watchers_notifier.py","gateway/platforms/base.py","gateway/platforms/event.py","gateway/run.py","gateway/run_busy.py","gateway/run_goals.py","gateway/run_heartbeat_acceptance.py","gateway/run_heartbeat_restore.py","gateway/run_notifications.py","gateway/run_startup.py","gateway/run_turn.py","gateway/session_context.py","gateway/session_recovery.py","gateway/slash_commands.py","gateway/wake.py","hermes_cli/kanban.py","hermes_cli/kanban_db.py","hermes_cli/kanban_db_connect.py","hermes_cli/kanban_db_graph.py","hermes_cli/kanban_db_notify.py","plugins/platforms/raft/adapter.py","tests/gateway/test_background_process_notifications.py","tests/gateway/test_busy_wake_admission.py","tests/gateway/test_completion_admission.py","tests/gateway/test_completion_delivery.py","tests/gateway/test_completion_session_boundary.py","tests/gateway/test_heartbeat_acceptance.py","tests/gateway/test_heartbeat_execution_ownership.py","tests/gateway/test_heartbeat_poller.py","tests/gateway/test_heartbeat_session_boundaries.py","tests/gateway/test_heartbeat_watch_lifecycle.py","tests/gateway/test_heartbeat_watch_restore.py","tests/gateway/test_kanban_changes_requested_notifier.py","tests/gateway/test_kanban_notifier.py","tests/gateway/test_kanban_notifier_wake_only_ordering.py","tests/gateway/test_kanban_route_anchor_capture.py","tests/gateway/test_kanban_routed_transport.py","tests/gateway/test_kanban_wake_acceptance.py","tests/gateway/test_kanban_wake_scope.py","tests/gateway/test_relay_completion_injection_routing.py","tests/gateway/test_relay_injection_egress_priming.py","tests/hermes_cli/test_kanban_creator_origin.py","tests/tools/test_kanban_provenance.py","tools/async_delegation.py","tools/kanban_tools.py","website/docs/developer-guide/gateway-internals.md","website/docs/user-guide/features/delegation.md","website/docs/user-guide/features/heartbeat.md","website/docs/user-guide/features/kanban.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}