there should be the option for a callback to terminate the simulation in a way that still counts as simulation success
callbacks can interrupt the simulation by returning a nonzero integer. However, when they do so, the simulation return code becomes nonzero (which counts as an unsuccessful simulation) and thus callbacks aren't finalized. This is good in 90% of applications because we usually use this e.g. for job rescheduling on SLURM. But in 10% of applications it would be nice to regularly terminate and finalize a sim from a callback. I propose using negative return codes for this.
@jisense thoughts?