Spanda schedules periodic robot tasks on a deterministic simulation clock. Tasks declare timing contracts; the compiler validates them; the runtime records deadline misses and jitter.
task safety_monitor critical every 5ms deadline 2ms {
check_emergency_stop();
}
task control_loop every 10ms deadline 8ms jitter <= 1ms {
perceive();
reason();
act();
}
Rules enforced at compile time:
deadline <= periodjitter <= deadline slackcritical tasks receive highest scheduler prioritycritical isolated tasks cannot be starved by lower-priority worktask SafetyMonitor critical isolated {
check_safety();
}
task AIPlanner low {
plan_route();
}
Isolated tasks are sorted ahead of non-isolated tasks at the same priority tier.
spanda run rover.sd --trace-realtime
spanda sim rover.sd --trace-realtime --record
spanda run rover.sd --metrics-json
--trace-realtime enables scheduler, task, trigger, and event traces. --metrics-json emits JSON
metrics (same payload as --json).
By default the scheduler advances a simulation clock (deterministic, fast). For hardware-in-the-loop or latency characterization, use wall-clock mode:
spanda sim rover.sd --wall-clock
Wall-clock mode sleeps between scheduler ticks using real time. Mission trace recording and
--deterministic replay remain on the sim clock for reproducibility.
See also: reliability, watchdogs, replay.