If this sounds like your week
the port looks free in WSL — and Windows still says it's taken.
With WSL2 (especially mirrored networking), a port can be bound on the Windows side, the Linux side, or a forwarded path between them. You run `ss -ltnp` inside the distro, see nothing, switch to Windows, and `the process holding the port` still refuses to bind. The two network views disagree and you're stuck translating between them.
Where tooling usually breaks
Two networking stacks, one port number, zero clear answers.
`netstat` on Windows and `ss` in the distro show different worlds, and `wslrelay`/`wslhost` bindings make it worse. You end up guessing which side owns the port, killing things on both, and hoping. That's not debugging — that's superstition.