Build on #114643 (@KoNit-K): the renderer now keys the live overlay on an
authoritative owner map, but that map was derived from the overview tree's
`previewSessions` (capped at 3) plus hydrated lanes (empty in overview mode),
so any owned row beyond the preview window still fell back to the cwd walk
and re-appeared under an ancestor project.
- `projects.tree` nodes now carry `sessionIds`: every row `build_tree`
assigned to the project (contract + regenerated shared TS/OpenRPC).
- `projectOwnerBySessionId` reads `sessionIds` first, keeping the row-derived
fallback for a backend that predates the field.
- `index.tsx` imports the helper the pick referenced (typecheck failed on
the contributor head) and tolerates an undefined tree.
- Tests: the exact issue layout (/work explicit, /work/repos/app explicit,
cwd=/work/repos/app-2) with git_repo_root null AND populated; the entered
ancestor gets nothing, the entered repo shows the linked-worktree lane, a
row the tree does not know still lands by cwd; the backend keeps the
claimed set complete in overview mode.