8a86c56ddb
Sibling of the heartbeat fix: a /loop set from a messaging chat carries the gateway's pinned ``route`` (platform + chat_id), and ``gateway/run_goals.py::_loop_wakeup_fire_one`` already defers route-less CLI/TUI loops to their own schedulers. The TUI/Desktop poller never returned the favor, so a Desktop viewer of the same session could fire the wakeup on its own surface and the reply never reached the chat. Mirror the rule: a routed loop is skipped before the session is claimed, so the tick stays due for the gateway scanner. Live probe (temp HERMES_HOME, qqbot-routed loop, Desktop viewer of the same session): before -> loop.ticks=1 awaiting=True (consumed on Desktop); after -> ticks=0, still due. Desktop-owned control loop still fires.