Two more suites, 69 checks, bringing the fast tests to 125 in 0.3 s. test_control_messages: roundtrip for all ten message types, a guard that fails if a type is added without a test, wrong version, unknown type, truncation, the control-state range rules including negative and non-finite speed, and sequence comparison across the 32-bit wrap and the ambiguous 2^31 boundary. test_session_state: the safety properties that previously only ran inside Lab041. Safe boot on both sides, status and authorization not being a movement command, a new operator command being required, stale session, boot and epoch identifiers, replay, sequence wrap, ambiguity, persisted emergency intent surviving a restart, acknowledgement not clearing it, ordinary commands not releasing the latch, idempotent reset, and reset not restoring the previous command. Two of these were literal zeros in the Lab041 report and measured nothing: negative speed and speed above the limit are now genuinely exercised against the encoder. PROJECT_LOG entry 018 records the RF architecture decision: 200-250 MHz with frequency hopping, a directional ground antenna and spread spectrum for the command channel, with the rejected alternatives and why. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
11 KiB
11 KiB