We could allow runtime_hook decorated function to return some value (e.g., a "signal") to control simulation runtime, e.g.,
- break the current time step and continue the simulation from the next time step
- break the current stage and continue the simulation from the next stage
- stop the simulation
Those cases could be enumerated into a RuntimeSignal Enum class.