pub async fn drive_migration<T: Transport + ?Sized>(
transport: &T,
community: &Community,
) -> Result<Option<String>, String>Expand description
Drive a held v1 community’s migration to completion when a pointer is present and the
flip hasn’t happened: open m (catching a stale root up first, no-erase), join the v2
twin through the ban-gated accept path, then run the flip transaction. Idempotent and
resumable — safe to call from the boot sweep, the live fold, and the fallback door.
Returns Ok(Some(v2_id)) on a completed flip, Ok(None) when nothing was actionable
(no pointer, already flipped, or m unopenable — the straggler CTA case).