Refactor the headless engine to walk through all 12 MTG turn phases in order (untap → upkeep → draw → main1 → begin_combat → declare_attackers → declare_blockers → combat_damage → end_combat → main2 → end_step → cleanup) instead of the previous flat per-player block. Key changes: - Add Phase str enum and PHASE_ORDER/SORCERY_PHASES constants to models - Track current_phase and active_player_index on SimState - Sync sim.turn with the loop turn counter (fixes latent summoning- sickness bug where turn_played was always compared against 0) - Add second main phase (main2) with shared 2-spell budget across main1 + main2 - _play_spells now accepts max_spells param and returns count played - Unify turn_manager.py PHASES/ACTION_PHASES/RESPONSE_PHASES to derive from the canonical Phase enum in models.py - 33 regression tests covering phase enum, phase progression, spell budget, game log structure, backward compat, and turn manager constant consistency Co-authored-by: Claude <claude@anthropic.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>