Runtime simulation scheduler for Hermes.
This module provides the Scheduler class for controlling simulation
execution with support for multiple operating modes.
Operating Modes:
realtime: Paced to wall-clock time (for HIL, visualization)
afap: As fast as possible (for batch runs, Monte Carlo)
single_frame: Manual stepping (for debugging, scripted scenarios)
Determinism:
Time is tracked internally as integer nanoseconds to ensure
reproducibility across runs and platforms. The float `time` property
is provided for API convenience, while `time_ns` gives the exact value.
For rates that don't divide evenly into 1 billion (e.g., 600 Hz),
the timestep is rounded to the nearest nanosecond. This introduces
bounded error (~0.72ms/hour at 600 Hz) but remains deterministic.