Stop Control Ifc
Decides, stop by stop, whether a vehicle serves the next place in its tour.
A question with an answer, not a duration. A dwell time is the special case; the general one is that a vehicle may need to be told to hold, to skip, or to turn back, and the instruction may be asked for by the vehicle or pushed by a controller that has decided this one is running late. One seam serves both directions: ksl.modeling.fleet.policies.DispatcherStopControl asks, and Dispatcher.instruct is how a controller answers before it is asked.
Asked before the leg, not on arrival, and that is the decision inside the decision. Asked on arrival, Skip would mean drive all the way there and then not serve it, which is not what an express service does. Asked before the leg it means do not make this leg at all.
The cost of asking early is that an instruction which depends on the arrival time cannot be computed then. That is not a gap: a TourStopActionIfc runs on arrival and may suspend, so a hold that depends on how late the vehicle actually was is expressed there. The division is clean:
The control decides where — go, skip, or stop here. The action decides what and how long.
Suspending, because asking may take simulated time -- a radio call, a decision epoch, a dispatching pass. One per vehicle, on the standing rule: one of anything that decides.
A control reads the tour and does not edit it. It is handed the whole of it, because a genuine short-turn decision needs to see what comes later; it returns an instruction and never a stop list, so it cannot rewrite an itinerary through the back door.