ab782a7685
The gateway's idle-command path resolved skill slash commands inline on the loop: a cold skill scan, skill file loads and the unavailable-skill rglob over every skills dir. On a 1.5k-skill install that held the loop ~2 minutes, the loop-liveness watchdog fired and the gateway exited mid-session (#111091). _hm_skill_slash_rewrite now runs through _run_in_executor_with_context so the profile contextvars the scan is scoped to survive the hop. Known commands still short-circuit before any I/O (previous commit). Same class in the Telegram inline picker: build_inline_results rebuilds the command/skill catalog per keystroke via _collect_gateway_skill_entries, the same path-resolution pass #110707 traced in the command menu. One invariant test: a known command triggers no scan; an unknown command's scan runs while the loop keeps ticking. Red on origin/main and on the reorder-only tree, green here.