runner.py::_dispatch_implementation is split into one private function per scene (fresh claim, restart in flight, external takeover, ops) plus one shared closeout, with the public entry keeping its signature and dispatching by scene, no logic, message or label change, and no new function over 100 lines.