5e5577ab90
Make the v2 path both correct and performant for turning the flag on: - findRuns gains an optional tables: "legacy" | "both" scope (mirroring findRun), threaded through hydrateChildRuns/hydrateParentAndRoot. While an org is not on v2 its runs only live in TaskRun, so callers pass "legacy" to skip the empty task_run_v2 query. - ApiRetrieveRun resolves parent/root and children in parallel (one round-trip instead of two) and scopes the reads to legacy for non-v2 orgs, so the public run-retrieve no longer pays an extra both-table query on every call. - The run-inspector side panel resolves parent/root by id across both tables (was a table-bound relation select that returned null for a cross-table parent in the mixed window). - recover-stuck-runs joins TaskRunExecutionSnapshot against TaskRun UNION task_run_v2 so a stuck v2 run is found and re-enqueued.