Whether the scheduler is currently active, paused indefinitely, or
paused until a specific Instant. The Option<Instant> in
PausedUntil is None for indefinite pauses and Some(deadline)
for time-bounded ones.
Abstraction over the two clocks the pause module reads from. The
snapshot/restore path samples both Instant::now() and
SystemTime::now() to bridge monotonic deadlines and on-disk epoch
timestamps. Tests can substitute a FakeClock that advances both in
lockstep so assertions don’t need ±slack.
Atomically write the current pause state to disk. The deadline is
stored as an absolute epoch timestamp so a paused-until-X is honoured
across process restarts.
Reconstruct a PauseState from the on-disk snapshot, used at
scheduler boot. Timed pauses whose deadline already passed are
cleared back to Running and the snapshot is rewritten.