6fdaef6a9f
The owner ladder's row rung (tile route -> hint -> session row) only searched $sessions (recents). Cron- and messaging-sourced sessions are fetched as their own sidebar slices ($cronSessions / $messagingSessions), so a scheduler-minted cron session had no tile, no hint, and no row the rung could see. On a registry-topology install every session-scoped RPC for such a session then failed closed: Session owner could not be resolved for "xxxx" (approval.respond): no owner route, hint, connection-tagged row or profile probe named the backend ... which made command approvals raised inside a cron chat impossible to answer (the approval bar errors on every choice), even on a single-local-backend install whose cron row - with its profile stamp - was already loaded for the sidebar's cron section. The approval-bar path (requestForOwnedSession) has no async REST-probe rung, so nothing downstream recovered. Fix: ownerLookupSessionRows() returns the union of the three source-scoped slices for OWNER lookups, keeping $sessions' array identity in the common recents-only case so reference-keyed memo caches still hit. All four row-rung call sites (session-rpc-dispatcher, knownOwnerForSession, tile delegate, tile actions) now search it. Repro: any cron session that raises approval.request (open the cron chat, reply with a prompt that triggers a gated command, click Run).