Why a switch loop refuses to start
netplex.'s unmanaged Switch is deliberately simple - a passive L2 bridge with no spanning tree protocol running on it (part of the zero-injection fabric: netplex. never sources a packet of its own, and STP would be exactly that). That means a topology cannot be allowed to loop through switches the way it could on real hardware running RSTP - a cycle would broadcast-storm the host. netplex. catches this at design time, before you ever hit Start.
Three switches wired in a triangle - a textbook L2 loop. On real hardware, RSTP would block one port automatically; netplex. switches never run STP at all (see "How links work"), so this shape is refused instead of silently storming.

Click Start. The request is accepted (starting is asynchronous), but the guard runs as the lab actually comes up and rejects it moments later with an actionable message - which link to remove - over the same live WebSocket connection the rest of the UI uses for status.

Remove the redundant link the message named and Start works normally - same three switches, just no cycle between them.

This is the same zero-injection principle behind the rest of the fabric (see "How links work" and "The unmanaged switch") - netplex. never adds hidden protocol traffic to make a bad topology limp along, it tells you exactly what to fix instead.