Wire method: lifecycle:whenPhase. Awaits LifecyclePhaseState::PhaseNotify instead of polling. Each forward phase transition calls notify_waiters(), so callers wake exactly when the target phase arrives. Hard cap at 30 s.
lifecycle:whenPhase
LifecyclePhaseState::PhaseNotify
notify_waiters()