test_attack_hits_each_target_once (__main__.Combat.test_attack_hits_each_target_once) ... ok
test_attack_survives_owner_death (__main__.Combat.test_attack_survives_owner_death) ... ok
test_circle_rectangle_corner (__main__.Combat.test_circle_rectangle_corner) ... ok
test_dodge_has_no_invulnerability (__main__.Combat.test_dodge_has_no_invulnerability) ... ok
test_enemy_timing_36_and_42 (__main__.Combat.test_enemy_timing_36_and_42) ... ok
test_friendly_two_damage_owner_excluded (__main__.Combat.test_friendly_two_damage_owner_excluded) ... ok
test_held_dodge_and_release (__main__.Combat.test_held_dodge_and_release) ... ok
test_held_sword_and_release (__main__.Combat.test_held_sword_and_release) ... ok
test_last_attack_retained_for_draw (__main__.Combat.test_last_attack_retained_for_draw) ... ok
test_memory_exercise (__main__.Combat.test_memory_exercise) ... ok
test_perception_pillar_and_distance (__main__.Combat.test_perception_pillar_and_distance) ... ok
test_simultaneous_loss_wins (__main__.Combat.test_simultaneous_loss_wins) ... ok
test_sword_timing_and_no_stagger (__main__.Combat.test_sword_timing_and_no_stagger) ... ok
test_sword_wins_simultaneous_press (__main__.Combat.test_sword_wins_simultaneous_press) ... ok
test_terminal_identity (__main__.Combat.test_terminal_identity) ... ok
test_waypoint_and_wall_collision (__main__.Combat.test_waypoint_and_wall_collision) ... ok
test_frozen_manifest_if_present (__main__.Contract.test_frozen_manifest_if_present) ... skipped 'Not frozen yet'
test_json_schema_and_exact_snippets (__main__.Contract.test_json_schema_and_exact_snippets) ... ok
test_metadata_keys (__main__.Contract.test_metadata_keys) ... ok
test_no_other_stage_imports (__main__.Contract.test_no_other_stage_imports) ... ok
test_text_file_access_explicit_utf8 (__main__.Contract.test_text_file_access_explicit_utf8) ... ok
test_arrows_hold_and_opposites (__main__.ControllerTests.test_arrows_hold_and_opposites) ... ok
test_cli_before_pyxel_import (__main__.ControllerTests.test_cli_before_pyxel_import) ... ok
test_controller_replays_same_inputs (__main__.ControllerTests.test_controller_replays_same_inputs) ... ok
test_draw_read_only_and_text_bounds (__main__.ControllerTests.test_draw_read_only_and_text_bounds) ... ok
test_moved_renamed_single_files (__main__.ControllerTests.test_moved_renamed_single_files) ... ok
test_pause_no_time_and_release_sync (__main__.ControllerTests.test_pause_no_time_and_release_sync) ... ok
test_reset_new_press_priority (__main__.ControllerTests.test_reset_new_press_priority) ... ok
test_reset_staggered_inputs (__main__.ControllerTests.test_reset_staggered_inputs) ... ok
test_terminal_reset (__main__.ControllerTests.test_terminal_reset) ... ok
test_01_diagonal_and_clamp (__main__.Stages.test_01_diagonal_and_clamp) ... ok
test_01_literal_speed_exercise (__main__.Stages.test_01_literal_speed_exercise) ... ok
test_01_stationary_and_no_attack (__main__.Stages.test_01_stationary_and_no_attack) ... ok
test_01_walk_ten_frames (__main__.Stages.test_01_walk_ten_frames) ... ok
test_02_demo_avoids_damage (__main__.Stages.test_02_demo_avoids_damage) ... ok
test_02_literal_windup_exercise (__main__.Stages.test_02_literal_windup_exercise) ... ok
test_02_lock_direction_before_move (__main__.Stages.test_02_lock_direction_before_move) ... ok
test_02_no_clear_or_enemy_movement (__main__.Stages.test_02_no_clear_or_enemy_movement) ... ok
test_02_timing_and_loss (__main__.Stages.test_02_timing_and_loss) ... ok
test_03_demo_checkpoint_and_clear (__main__.Stages.test_03_demo_checkpoint_and_clear) ... ok
test_03_literal_sword_exercise (__main__.Stages.test_03_literal_sword_exercise) ... ok
test_04_demo_checkpoint_and_clear (__main__.Stages.test_04_demo_checkpoint_and_clear) ... ok
test_04_literal_friendly_exercise (__main__.Stages.test_04_literal_friendly_exercise) ... ok
test_05_all_original_successes (__main__.Stages.test_05_all_original_successes) ... ok
test_demo_run_length_encoding_exact (__main__.Stages.test_demo_run_length_encoding_exact) ... ok
test_movement_respects_boundaries (__main__.Stages.test_movement_respects_boundaries) ... ok
test_no_mutation_and_independent_instances (__main__.Stages.test_no_mutation_and_independent_instances) ... ok
test_optional_canonical_bytes (__main__.Stages.test_optional_canonical_bytes) ... skipped 'Set KNIGHT_ORIGINAL_SOURCE for direct canonical provenance check'
test_random_traces_reference_3000_ticks (__main__.Stages.test_random_traces_reference_3000_ticks) ... ok
test_replay_every_frame_matches_reference (__main__.Stages.test_replay_every_frame_matches_reference) ... ok
test_source_ast_original_final (__main__.Stages.test_source_ast_original_final) ... ok

----------------------------------------------------------------------
Ran 51 tests in 2.507s

OK (skipped=2)
CP932 SENTINEL: implicit read decoded actual CP932 bytes
CP932 OPEN COUNTS: {'implicit': 1, 'explicit_utf8': 38}
