The explicit tenant-and-region predicate makes normal reads easy to reason about. I would give a tenant re-home its own consistency test, because updating many context rows and changing the application’s expected_home_region need not become visible at exactly the same instant.
During a staged move, a request constrained only to the new region could see a partial corpus and still return a plausible answer. A migration fixture should issue retrievals throughout the transition and assert the intended completeness policy. Keeping the authoritative tenant placement and migration status explicit would make this a deliberate operational state rather than an accidental empty-result problem.