test_final_map_equals_packaged_original_reference (__main__.CanonicalTests.test_final_map_equals_packaged_original_reference) ... ok
test_optional_direct_canonical_model (__main__.CanonicalTests.test_optional_direct_canonical_model) ... ok
test_original_controller_reference_every_frame (__main__.CanonicalTests.test_original_controller_reference_every_frame) ... ok
test_fixture_edges_are_realistic (__main__.ControllerTests.test_fixture_edges_are_realistic) ... ok
test_holding_arrow_does_not_repeat (__main__.ControllerTests.test_holding_arrow_does_not_repeat) ... ok
test_pause_blocks_reset_undo_and_movement (__main__.ControllerTests.test_pause_blocks_reset_undo_and_movement) ... ok
test_pause_has_priority_over_reset (__main__.ControllerTests.test_pause_has_priority_over_reset) ... ok
test_reset_after_win (__main__.ControllerTests.test_reset_after_win) ... ok
test_reset_has_priority_over_gameplay (__main__.ControllerTests.test_reset_has_priority_over_gameplay) ... ok
test_space_holding_does_not_repeat (__main__.ControllerTests.test_space_holding_does_not_repeat) ... ok
test_undo_has_priority_over_space (__main__.ControllerTests.test_undo_has_priority_over_space) ... ok
test_up_wins_over_right_even_when_up_invalid (__main__.ControllerTests.test_up_wins_over_right_even_when_up_invalid) ... ok
test_delivery_only_on_space (__main__.DeliveryTests.test_delivery_only_on_space) ... ok
test_repeated_wrong_exit_increments_mistakes (__main__.DeliveryTests.test_repeated_wrong_exit_increments_mistakes) ... ok
test_reset_restores_same_symbols_and_targets (__main__.DeliveryTests.test_reset_restores_same_symbols_and_targets) ... ok
test_second_stage_always_visible (__main__.DeliveryTests.test_second_stage_always_visible) ... ok
test_stage_two_non_exit_space_names_only_exit (__main__.DeliveryTests.test_stage_two_non_exit_space_names_only_exit) ... ok
test_standing_at_exit_does_not_deliver (__main__.DeliveryTests.test_standing_at_exit_does_not_deliver) ... ok
test_terminal_freezes_gameplay (__main__.DeliveryTests.test_terminal_freezes_gameplay) ... ok
test_wrong_exit_keeps_position_and_allows_recovery (__main__.DeliveryTests.test_wrong_exit_keeps_position_and_allows_recovery) ... ok
test_first_four_share_small_ten_cell_map (__main__.GridTests.test_first_four_share_small_ten_cell_map) ... ok
test_grid_is_never_changed_by_actions (__main__.GridTests.test_grid_is_never_changed_by_actions) ... ok
test_initial_position_all_stages (__main__.GridTests.test_initial_position_all_stages) ... ok
test_invalid_move_does_not_change_position_or_steps (__main__.GridTests.test_invalid_move_does_not_change_position_or_steps) ... ok
test_one_legal_step (__main__.GridTests.test_one_legal_step) ... ok
test_stage_one_has_no_delivery_or_observation (__main__.GridTests.test_stage_one_has_no_delivery_or_observation) ... ok
test_unknown_input_does_nothing (__main__.GridTests.test_unknown_input_does_nothing) ... ok
test_arrival_at_exit_does_not_reveal (__main__.ObservationTests.test_arrival_at_exit_does_not_reveal) ... ok
test_board_replaces_scope_not_union (__main__.ObservationTests.test_board_replaces_scope_not_union) ... ok
test_board_scope_is_independent_of_target (__main__.ObservationTests.test_board_scope_is_independent_of_target) ... ok
test_delivered_marker_survives_reveal_expiry (__main__.ObservationTests.test_delivered_marker_survives_reveal_expiry) ... ok
test_hidden_initially_from_stage_three (__main__.ObservationTests.test_hidden_initially_from_stage_three) ... ok
test_idle_has_no_expiry (__main__.ObservationTests.test_idle_has_no_expiry) ... ok
test_invalid_move_keeps_reveal_reads_and_steps (__main__.ObservationTests.test_invalid_move_keeps_reveal_reads_and_steps) ... ok
test_lookout_reveals_all_without_delivering (__main__.ObservationTests.test_lookout_reveals_all_without_delivering) ... ok
test_repeated_read_counts_reads_without_steps (__main__.ObservationTests.test_repeated_read_counts_reads_without_steps) ... ok
test_stage_three_ignores_future_board_site (__main__.ObservationTests.test_stage_three_ignores_future_board_site) ... ok
test_two_original_board_scopes (__main__.ObservationTests.test_two_original_board_scopes) ... ok
test_valid_move_expires_only_visibility (__main__.ObservationTests.test_valid_move_expires_only_visibility) ... ok
test_visible_property_returns_copy (__main__.ObservationTests.test_visible_property_returns_copy) ... ok
test_diffs_are_exact (__main__.PackagingTests.test_diffs_are_exact) ... ok
test_exact_mit_headers_and_pinned_pyxel (__main__.PackagingTests.test_exact_mit_headers_and_pinned_pyxel) ... ok
test_lesson_schema_and_real_snippets (__main__.PackagingTests.test_lesson_schema_and_real_snippets) ... ok
test_metadata_fields (__main__.PackagingTests.test_metadata_fields) ... ok
test_pngs_have_actual_pyxel_output_dimensions (__main__.PackagingTests.test_pngs_have_actual_pyxel_output_dimensions) ... ok
test_render_reports_match_shipped_controller_fixtures (__main__.PackagingTests.test_render_reports_match_shipped_controller_fixtures) ... ok
test_duplicate_delivery_not_a_mistake (__main__.UndoTests.test_duplicate_delivery_not_a_mistake) ... ok
test_empty_undo (__main__.UndoTests.test_empty_undo) ... ok
test_final_terminal_blocks_every_action (__main__.UndoTests.test_final_terminal_blocks_every_action) ... ok
test_finish_any_order_and_no_return (__main__.UndoTests.test_finish_any_order_and_no_return) ... ok
test_invalid_actions_do_not_add_history (__main__.UndoTests.test_invalid_actions_do_not_add_history) ... ok
test_snapshot_copies_sets (__main__.UndoTests.test_snapshot_copies_sets) ... ok
test_undo_after_win_then_deliver_again (__main__.UndoTests.test_undo_after_win_then_deliver_again) ... ok
test_undo_read_restores_reads (__main__.UndoTests.test_undo_read_restores_reads) ... ok
test_undo_restores_reveal_and_step (__main__.UndoTests.test_undo_restores_reveal_and_step) ... ok
test_undo_wrong_delivery_restores_mistakes (__main__.UndoTests.test_undo_wrong_delivery_restores_mistakes) ... ok

----------------------------------------------------------------------
Ran 56 tests in 0.250s

OK
