Fix: onDismiss and awaited navigation on user-driven back
A pushed destination leaves the stack two ways: programmatically (pop(), popToRoot(), …), or because SwiftUI wrote a shorter path through the NavigationStack binding — the back button, the interactive back swipe, a long-press pop-to-root.
Only the first resolved. On any user-driven back navigation, onDismiss never fired and routeAndWait(to:) never resumed, leaving the calling task suspended for the lifetime of the app.
reconstructDestinations, the setter behind the flow's path binding, rebuilt its arrays by keeping the entries still present in the incoming path and silently discarding the rest — without resolving them. Dropped destinations are now resolved once the arrays settle, topmost first. A dropped destination also takes its subtree with it, so backing out of a pushed child coordinator no longer strands the screens that child had pushed.
Resolution stays single-shot: a programmatic pop() that SwiftUI is only now catching up with still fires exactly once.
Not a 3.5.0 regression — reconstructDestinations has never resolved what it dropped. Behaviour only, no API changes. New tests drive the path binding directly, which nothing covered before.
Full Changelog: 3.5.0...3.5.1