936a6ea8f7
The SDK's focusedSessionOwner store fails closed to null whenever the focused session has no unique bot owner (a normal chat, ambiguous owner hints) - the common case while the user browses the Bots pane. resolveRoutineOwner treated that null as an error and returned null before consulting the roster selection, so the Routines pane pinned every agent on 'Cronjobs are unavailable until this agent appears in the roster.' Drop the fail-closed null gate and fall through to the existing selection ladder (focusedBot || selectedBot || ...). An authoritative focused owner still wins through its exact roster row and still fails closed when that row is absent; a null owner with no matching selection also still fails closed. Regression tests prove red pre-fix, green post-fix.