Abort the tour with a reason — timeout (under
HintMissingTargetPolicy.abortTour) or userSkipped. A spotlighted target
that vanishes does NOT abort: the machine returns to waiting and re-arms
the timeout. detail carries reason context (timeout duration, targetId) —
the controller enriches it with entity data before diagnostics.
Outward commands: the machine executes nothing itself — the controller
applies effects (timers, overlay, diagnostics). The machine's purity is
what makes it headlessly testable and independent of render mechanics.
Go one step back. On the first step — a no-op (there is nothing to go
back to; the waiting timer is NOT re-armed, so spamming back does not
extend the wait).