We have a somewhat common (but fairly infrequent) pattern of visits crashing
hard, and lingering forever in an ongoing state.
Adding a new component "origin visit reaper" in charge of updating those
lingering origin visits sounds the appropriate way to deal with those.
If we allow noop state transitions, we can use them as a heartbeat process. We
can then specify that ongoing visits with no state update in the last
$timeframe are dead, and should be set as failed by an external process. This
process would not depend on the worker scaffolding, but just be a janitorial
process that runs once in a while to keep the archive tidy.
Original idea appeared in T2310#43199 discussion.