fb393ee08b
Partial cherry-pick of PR #94901 (joe-rodgers). Surviving scope: - api/sessions: stampActiveConnectionOwner — rows returned by the active non-local gateway are stamped with its registry connection_id (explicit owners from multi-source responses preserved), so a later resume cannot fall back to a same-named local profile. - store/projects: one-shot projects.tree retry when a remote source switch leaves the first read RPC on a newly-opened socket without a response (request timed out / gateway connection closed), only while the same gateway/profile is still foreground. Component fix for the live-confirmed #92352 sidebar-never-paints gap. Dropped scope (superseded on main / by the #94656 anchor landed just below): knownSessionOwner+SessionOwnerScope rewiring in session.ts, session-states.ts, wiring.tsx (main and #94656 carry richer variants), and the $connection-derived optimistic-row stamp in use-session-actions/utils.ts (#94656 stamps the optimistic row from the captured exact owner route instead of ambient state). Original-PR: #94901 Dropped-scope: routing half of 2cb5bdbf1 (session.ts, session-states.ts, wiring.tsx, use-session-actions/utils.ts hunks)