Transporter Movement Gate Ifc
Asked, at every zone boundary, whether a transporter may carry on.
A zone boundary is the only place a transporter can be stopped without leaving the guide path in a state the space layer cannot describe. Part way into a zone it is physically between two places: it has claimed the zone ahead and there is nothing there to arrive at, so a stop would leave a claimed zone with no arrival. Answering false here instead lets the transporter complete the entry it is committed to and halt on a zone it holds -- stationary, still occupying space, and still owning the rest of its route.
The space layer neither knows nor asks why. A flat battery, a breakdown, a shift ending, an operator stopping the line: all of them are the same event to the guide path, which is that a vehicle stopped where it stands. A halted transporter is GuidedTransporter.isHalted and reads as TransporterState.IDLE, because that is what it is doing; the reason belongs to whatever installed the gate and is reported there.
A halted transporter does not resume by itself. Nothing is scheduled for it and nothing waits on it, which is the honest model of a vehicle stopped mid-aisle: it obstructs everyone behind it for the rest of the run. GuidedPathSpace.resumeHaltedTransporter is what starts it again, and whatever halted it is responsible for calling that.
One gate per transporter, because a gate is a veto: two of them would need a rule for what to do when they disagree, and the only sensible rule -- any veto stops the vehicle -- is something the installer can write in one line.