We need to support a drain mode so that we can safely restart the tack while in-flight jobs are still running.
Drain mode should stop accepting new jobs (and don't advance the cursor) and wait for in-flight jobs to complete. We should expose some mechanism to know the current status (a /status HTTP endpoint would be fine).
Then automation can turn on drain mode, wait for it note it is complete, then stop it, replace it, restart it. And since we didn't move cursors, we should catch up to whatever else we needed to do.