d90c06dd70
Create the relay host-route pin in the Windows client before the TAP adapter is opened and marked connected. The guard is held until after `ClientSession` shutdown so both the active tunnel and the QUIC close path keep using the pre-TAP interface. Route inspection or route creation failure now aborts startup before TAP activation, and the client explicitly closes the relay session in that failure path. Once the pin is installed, the client reports both the original best-route snapshot and the pinned route. Default-route takeover detection/neutralization is still future work. Verification note: I attempted to check `lanparty-client-win` for `x86_64-pc-windows-msvc`, but this host still lacks the Windows C headers needed by `ring`; the build stops at `assert.h` before the binary crate can be typechecked for Windows. Test Plan: - cargo fmt --check - cargo test --workspace - cargo clippy --workspace --all-targets -- -D warnings - cargo check -p lanparty-client-route --target x86_64-pc-windows-msvc - cargo clippy -p lanparty-client-route --target x86_64-pc-windows-msvc --all-targets -- -D warnings - git diff --check Refs: PLAN.md