I can still make an invalid port placement using swap. But it depends on the how I'm swapping.
Select a port and try to swap it with a tile so that two ports are next to each other: get warning about a port getting refunded, with a non-zero amount of refund.
But select a port and try to swap it with a port so that two ports are next to each other: get warning about a port getting refunded, with cost of 0. And both ports survive.