> python -m unittest -v

test_all_boolean_snapshots_interlocks (test_controller.ControllerTests.test_all_boolean_snapshots_interlocks) ... ok
test_assist_minimum_run_then_stop (test_controller.ControllerTests.test_assist_minimum_run_then_stop) ... ok
test_boot_requires_quiet_reset (test_controller.ControllerTests.test_boot_requires_quiet_reset) ... ok
test_conflicting_atomic_updates_rejected (test_controller.ControllerTests.test_conflicting_atomic_updates_rejected) ... ok
test_declared_transition_set_reached (test_controller.ControllerTests.test_declared_transition_set_reached) ... ok
test_dry_level_overrides_minimum_run_and_manual (test_controller.ControllerTests.test_dry_level_overrides_minimum_run_and_manual) ... ok
test_failed_lead_is_replaced_at_timeout (test_controller.ControllerTests.test_failed_lead_is_replaced_at_timeout) ... ok
test_feedback_loss_debounce_then_failover (test_controller.ControllerTests.test_feedback_loss_debounce_then_failover) ... ok
test_independent_expected_normal_trace (test_controller.ControllerTests.test_independent_expected_normal_trace) ... ok
test_invalid_sensor_order_latches_until_reset (test_controller.ControllerTests.test_invalid_sensor_order_latches_until_reset) ... ok
test_manual_wet_permissive (test_controller.ControllerTests.test_manual_wet_permissive) ... ok
test_power_loss_and_restore_from_representative_states (test_controller.ControllerTests.test_power_loss_and_restore_from_representative_states) ... ok
test_recovered_feedback_cancels_loss_timer (test_controller.ControllerTests.test_recovered_feedback_cancels_loss_timer) ... ok
test_reset_requires_safe_inputs_and_available_pump (test_controller.ControllerTests.test_reset_requires_safe_inputs_and_available_pump) ... ok
test_simultaneous_events_are_order_independent (test_controller.ControllerTests.test_simultaneous_events_are_order_independent) ... ok
test_stuck_feedback_latches_fault (test_controller.ControllerTests.test_stuck_feedback_latches_fault) ... ok
test_timer_boundary_and_monotonic_time (test_controller.ControllerTests.test_timer_boundary_and_monotonic_time) ... ok
test_unavailable_never_commanded (test_controller.ControllerTests.test_unavailable_never_commanded) ... ok
test_attended_restore_isolates_drains_resets_and_recovers (test_virtual_commissioning.VirtualPlantTests.test_attended_restore_isolates_drains_resets_and_recovers) ... ok
test_failing_start_uses_standby (test_virtual_commissioning.VirtualPlantTests.test_failing_start_uses_standby) ... ok
test_power_return_keeps_inhibit_and_reports_overflow (test_virtual_commissioning.VirtualPlantTests.test_power_return_keeps_inhibit_and_reports_overflow) ... ok
test_timer_quantization_bound (test_virtual_commissioning.VirtualPlantTests.test_timer_quantization_bound) ... ok
test_virtual_reservoir_conserves_volume_and_cycles (test_virtual_commissioning.VirtualPlantTests.test_virtual_reservoir_conserves_volume_and_cycles) ... ok

----------------------------------------------------------------------
Ran 23 tests in 0.693s

OK

> python run.py
PASS: 23 tests
Virtual validation: 36 checks passed; model design failures are separately recorded.


