test_snippets_and_five_independent_files (test_stages.Documentation.test_snippets_and_five_independent_files) ... ok
test_chase_has_no_automatic_recovery (test_stages.FullRules.test_chase_has_no_automatic_recovery) ... ok
test_collision_rolls_back_both_candidates (test_stages.FullRules.test_collision_rolls_back_both_candidates) ... ok
test_complete_finite_reachable_graph (test_stages.FullRules.test_complete_finite_reachable_graph) ... ok
test_current_action_not_policy_argument (test_stages.FullRules.test_current_action_not_policy_argument) ... ok
test_documented_short_and_safe_wins (test_stages.FullRules.test_documented_short_and_safe_wins) ... ok
test_follow_retreat_into_old_enemy_cell_is_legal (test_stages.FullRules.test_follow_retreat_into_old_enemy_cell_is_legal) ... ok
test_invalid_edge_terminal_do_not_commit (test_stages.FullRules.test_invalid_edge_terminal_do_not_commit) ... ok
test_mutual_is_not_win_and_damage_is_simultaneous (test_stages.FullRules.test_mutual_is_not_win_and_damage_is_simultaneous) ... ok
test_original_policy_fixtures (test_stages.FullRules.test_original_policy_fixtures) ... ok
test_recovery_after_missed_attack_is_one_turn (test_stages.FullRules.test_recovery_after_missed_attack_is_one_turn) ... ok
test_reference_routes_full_state_hashes (test_stages.FullRules.test_reference_routes_full_state_hashes) ... ok
test_retreat_right_edge_and_final_distance (test_stages.FullRules.test_retreat_right_edge_and_final_distance) ... ok
test_slash_miss_counts_and_combo_caps_at_two (test_stages.FullRules.test_slash_miss_counts_and_combo_caps_at_two) ... ok
test_three_waits_forget_votes_but_consume_turns (test_stages.FullRules.test_three_waits_forget_votes_but_consume_turns) ... ok
test_stage_01_distance_and_contact (test_stages.MovementAndSword.test_stage_01_distance_and_contact) ... ok
test_stage_01_edge_and_invalid_are_identity (test_stages.MovementAndSword.test_stage_01_edge_and_invalid_are_identity) ... ok
test_stage_02_miss_and_single_damage (test_stages.MovementAndSword.test_stage_02_miss_and_single_damage) ... ok
test_stage_02_win_freezes (test_stages.MovementAndSword.test_stage_02_win_freezes) ... ok
test_stage_03_combo_previous_action_not_previous_hit (test_stages.MovementAndSword.test_stage_03_combo_previous_action_not_previous_hit) ... ok
test_stage_03_majority_recency_and_wait (test_stages.MovementAndSword.test_stage_03_majority_recency_and_wait) ... ok
test_stage_03_memory_is_three_committed_actions (test_stages.MovementAndSword.test_stage_03_memory_is_three_committed_actions) ... ok
test_stage_03_readonly_preview (test_stages.MovementAndSword.test_stage_03_readonly_preview) ... ok
test_different_pressed_or_held_actions_are_rejected (test_stages.UndoAndController.test_different_pressed_or_held_actions_are_rejected) ... ok
test_idle_and_held_keys_do_not_repeat (test_stages.UndoAndController.test_idle_and_held_keys_do_not_repeat) ... ok
test_invalid_actions_not_saved_and_reset_clears_history (test_stages.UndoAndController.test_invalid_actions_not_saved_and_reset_clears_history) ... ok
test_reset_gate_requires_complete_release (test_stages.UndoAndController.test_reset_gate_requires_complete_release) ... ok
test_same_action_aliases_are_one_action (test_stages.UndoAndController.test_same_action_aliases_are_one_action) ... ok
test_terminal_can_be_undone (test_stages.UndoAndController.test_terminal_can_be_undone) ... ok
test_undo_gate_and_replay_from_terminal (test_stages.UndoAndController.test_undo_gate_and_replay_from_terminal) ... ok
test_undo_restores_complete_state_and_redo (test_stages.UndoAndController.test_undo_restores_complete_state_and_redo) ... ok

----------------------------------------------------------------------
Ran 31 tests in 6.708s

OK
