c1c991ae9e
Conflict-resolution follow-up composing #68925 (Bob) with the already- applied #20583/#66398 (jordanhubbard) recovery design: - #68925's caller-level second _query_recoverable_session pass (via lookup_session_key=) referenced a variable that no longer exists — the legacy exact-key fallback now lives INSIDE _query_recoverable_session, which also claims the legacy key once per process and rewrites the peer row to the scoped key. Drop the dead caller-level pass. - Keep #68925's _recovered_row_matches_source_scope origin guard wired into both recovery paths: a scoped channel lookup refuses rows whose recorded origin names another workspace (or no workspace at all). - Routing-index migration adoption policy documented at the site: origin names a workspace -> exact match only; scope-less DM -> first workspace claims once; scope-less channel -> refuse.