d0e73ff30c
Unify @null-runner's selector approach with the merged #77019 keepalive: the reapers now match live delegations by origin UI sid AND (when the TUI owns the durable lifecycle, never for gateway-viewer tabs, #60609) by the durable session_key, so a delegation dispatched from an earlier tab of the same resumed session still keeps it alive. has_live_for_session also counts 'stalling' to match the #77019 live-state set. Explicit teardown (_finalize_session) interrupt semantics unchanged.