test_declared_level_b_constants (test_stages.CanonicalTests.test_declared_level_b_constants) ... ok
test_exhaustive_bounded_state_equivalence (test_stages.CanonicalTests.test_exhaustive_bounded_state_equivalence) ... ok
test_mixed_action_timeline_equivalence (test_stages.CanonicalTests.test_mixed_action_timeline_equivalence) ... ok
test_reference_is_unmodified_original_model (test_stages.CanonicalTests.test_reference_is_unmodified_original_model) ... ok
test_documented_exercises_through_real_input_handler (test_stages.InputTests.test_documented_exercises_through_real_input_handler) ... ok
test_held_blink_and_arrow_act_once (test_stages.InputTests.test_held_blink_and_arrow_act_once) ... ok
test_reset_suppresses_same_frame_and_held_blink (test_stages.InputTests.test_reset_suppresses_same_frame_and_held_blink) ... ok
test_undo_suppresses_same_frame_blink (test_stages.InputTests.test_undo_suppresses_same_frame_blink) ... ok
test_all_independent_initial_states (test_stages.ModelTests.test_all_independent_initial_states) ... ok
test_basic_solution_works_in_all_stages (test_stages.ModelTests.test_basic_solution_works_in_all_stages) ... ok
test_bfs_proves_shortest_basic_and_optional_routes (test_stages.ModelTests.test_bfs_proves_shortest_basic_and_optional_routes) ... ok
test_both_bridge_edges_block_and_non_bridge_edges_do_not (test_stages.ModelTests.test_both_bridge_edges_block_and_non_bridge_edges_do_not) ... ok
test_bridge_uses_new_phase_to_close (test_stages.ModelTests.test_bridge_uses_new_phase_to_close) ... ok
test_bridge_uses_new_phase_to_open (test_stages.ModelTests.test_bridge_uses_new_phase_to_open) ... ok
test_departure_does_not_collect_star_at_old_position (test_stages.ModelTests.test_departure_does_not_collect_star_at_old_position) ... ok
test_first_stage_intentionally_has_no_bridge_gate (test_stages.ModelTests.test_first_stage_intentionally_has_no_bridge_gate) ... ok
test_gaze_freezes_one_target_not_other_devices (test_stages.ModelTests.test_gaze_freezes_one_target_not_other_devices) ... ok
test_history_does_not_alias_and_reset_clears_it (test_stages.ModelTests.test_history_does_not_alias_and_reset_clears_it) ... ok
test_new_light_and_new_position_collect_star (test_stages.ModelTests.test_new_light_and_new_position_collect_star) ... ok
test_phase_wrap (test_stages.ModelTests.test_phase_wrap) ... ok
test_prediction_uses_exact_same_model_and_is_pure (test_stages.ModelTests.test_prediction_uses_exact_same_model_and_is_pure) ... ok
test_selection_is_free_and_wraps (test_stages.ModelTests.test_selection_is_free_and_wraps) ... ok
test_star_is_optional_and_documented_seven_move_solution_works (test_stages.ModelTests.test_star_is_optional_and_documented_seven_move_solution_works) ... ok
test_star_is_sticky_and_awarded_before_clear (test_stages.ModelTests.test_star_is_sticky_and_awarded_before_clear) ... ok
test_state_is_immutable (test_stages.ModelTests.test_state_is_immutable) ... ok
test_terminal_state_is_absorbing (test_stages.ModelTests.test_terminal_state_is_absorbing) ... ok
test_undo_empty_noop_and_undo_after_clear (test_stages.ModelTests.test_undo_empty_noop_and_undo_after_clear) ... ok
test_undo_restores_every_field_including_gaze_and_star (test_stages.ModelTests.test_undo_restores_every_field_including_gaze_and_star) ... ok
test_watched_doll_can_collect_star (test_stages.ModelTests.test_watched_doll_can_collect_star) ... ok
test_full_original_notice_in_every_stage (test_stages.PackagingAndStubTests.test_full_original_notice_in_every_stage) ... ok
test_lesson_metadata_matches_actual_excerpts (test_stages.PackagingAndStubTests.test_lesson_metadata_matches_actual_excerpts) ... ok
test_pyxel_stub_smoke_draws_twelve_frames_and_saves (test_stages.PackagingAndStubTests.test_pyxel_stub_smoke_draws_twelve_frames_and_saves) ... ok

----------------------------------------------------------------------
Ran 32 tests in 0.020s

OK
