{
    "$schema": "https://mintayn.io/wp-json/mintayn/v2/rulepack-schema/0.1.0",
    "schema_version": "0.1.0",
    "rulepack_id": "snap",
    "version": "1.0.0-playtest.3",
    "status": "playtest_published",
    "language": "en",
    "generated_for": "Mintayn Rules AP 0.3 Single-Card Lock-in Correction",
    "source_layers": {
        "how_to_play": "/how-to-play/snap/",
        "core_rulebook": "/rules/snap-format/",
        "comprehensive_reference": "/rules/snap-format/comprehensive/",
        "rules_plugin_version": "0.6.3"
    },
    "implementation_policy": {
        "single_normative_machine_source": true,
        "server_authoritative_validation": true,
        "validate_before_persist": true,
        "match_freezes_rulepack_version": true,
        "match_freezes_card_revisions": true,
        "presentation_data_live_for_decks": true,
        "gameplay_data_snapshot_for_matches": true
    },
    "deck_construction": {
        "main_deck_exact": 25,
        "monster_lineup_exact": 5,
        "support_deck_exact": 20,
        "support_types": [
            "spell",
            "counter"
        ],
        "lineup_types": [
            "monster",
            "prime_singular"
        ],
        "singleton": {
            "enabled": true,
            "max_per_identity": 1,
            "technical_identity": "card_definition_id",
            "printing_variants_share_identity": true
        },
        "prime_singular": {
            "max_in_lineup": 1,
            "counts_toward_monster_lineup": true,
            "physical_start_zone": "monster_reserve"
        },
        "evolution_cards": {
            "count_toward_main_deck": false,
            "count_toward_monster_lineup": false,
            "physical_start_zone": "monster_reserve",
            "must_correspond_to_lineup_chain": true,
            "reserve_size_cap": null
        }
    },
    "zones": {
        "active_slots": 1,
        "standard_bench_slots": 4,
        "flex_slots": 1,
        "flex_available_by_default": false,
        "support_deck": true,
        "locked_support_max": 3,
        "hand_max": null,
        "monster_reserve_private": true,
        "graveyard_public": true,
        "legal_reserve_contents": [
            "corresponding_evolution",
            "corresponding_prime_evolution",
            "included_prime_singular"
        ],
        "illegal_reserve_contents": [
            "ordinary_monster",
            "spell",
            "counter"
        ]
    },
    "setup": {
        "starting_player": {
            "core_method": "policy_defined",
            "online_default": "server_random_50_50",
            "manual_playtest_default": "mutual_or_judge_selection"
        },
        "monster_placement": {
            "active_face_down_initially": true,
            "active_must_be_non_prime": true,
            "bench_face_down_initially": true,
            "without_prime": {
                "active": 1,
                "standard_bench": 4,
                "prime_reserve": 0,
                "empty_standard_bench": 0
            },
            "with_prime": {
                "active": 1,
                "standard_bench": 3,
                "empty_standard_bench": 1,
                "prime_reserve": 1
            },
            "flex_used_at_setup": false
        },
        "opening_reveal": {
            "timing": "after_both_players_complete_setup_before_player_1_turn",
            "active_monsters_revealed_simultaneously": true,
            "bench_remains_face_down": true,
            "on_reveal_triggers_wait_for_first_legal_trigger_resolution": true
        },
        "starting_support": {
            "selection_is_random": false,
            "starting_hand_exact": 5,
            "selected_from_support_deck": true,
            "selected_cards_move_to_hand": true,
            "opening_lock_in_exact": 3,
            "opening_lock_in_selected_from_support_deck": true,
            "opening_lock_in_destination": "locked_support"
        }
    },
    "first_round": {
        "player_1_attacks_allowed": false,
        "player_2_attacks_allowed": false,
        "spells_allowed_in_legal_spell_phase": true,
        "counters_allowed_in_legal_response_windows_for_both_players": true,
        "player_1_unlock_exact": 0,
        "player_2_unlock_exact": 1,
        "player_2_unlock_compensates_for_acting_second": true,
        "opening_lock_in_completed_during_setup": true,
        "additional_round_1_lock_in_allowed": false
    },
    "support_access": {
        "random_draw": false,
        "opening_lock_in": {
            "timing": "setup_after_starting_hand_before_opening_reveal",
            "exact": 3,
            "selected_from": "support_deck",
            "destination": "locked_support"
        },
        "opening_unlock_schedule": {
            "player_1_rounds": [
                2,
                3,
                4
            ],
            "player_2_rounds": [
                1,
                2,
                3
            ],
            "exact_per_eligible_turn_if_available_and_legal": 1,
            "order": "controller_choice"
        },
        "ongoing_single_card_lock_in": {
            "first_round": 4,
            "repeat_each_own_turn_from_first_round": true,
            "timing": "own_lock_in_phase",
            "exact_if_available_and_legal": 1,
            "destination": "locked_support",
            "normally_unlocks": "next_own_turn"
        },
        "unlock": {
            "timing": "start_of_turn_before_flip",
            "exact_if_available_and_legal": 1,
            "order": "controller_choice",
            "destination": "hand_available_support"
        },
        "locked_support_cap": 3,
        "locked_support_order_fixed": false
    },
    "turn_structure_from_round_2": [
        "unlock_step",
        "flip_step",
        "trigger_resolution",
        "spell_phase",
        "evolution_step",
        "prime_singular_step",
        "attack_phase",
        "swap_phase",
        "lock_in_phase",
        "end_phase"
    ],
    "flip_step": {
        "exactly_one_if_eligible_face_down_bench_exists": true,
        "skip_if_none_exists": true,
        "actions_during_flip_step": false
    },
    "triggers": {
        "use_chain_by_default": false,
        "simultaneous_order": "active_player_orders",
        "resonance": {
            "enabled_for_base_set": false,
            "schema_reserved_for_future": true
        }
    },
    "combat": {
        "default_attacker": "active_monster",
        "default_target": "opposing_active_monster",
        "disruptor_can_target": "face_up_opposing_bench_monster",
        "blocker_window_before_counter_window": true,
        "compare_current_imp_after_windows": true,
        "higher_imp_defeats_lower": true,
        "equal_imp_result": "no_monster_defeated",
        "combat_finality_after_comparison": true,
        "overdrive": {
            "max_additional_attacks_default": 1,
            "repeats_all_attack_windows": true
        }
    },
    "chains": {
        "created_or_extended_only_by_counters": true,
        "max_counter_contributions_per_player": 3,
        "max_total_links": 6,
        "resolution": "LIFO",
        "additions_after_resolution_starts": false,
        "combat_window_order": [
            "attack_declaration",
            "blocker_window",
            "counter_window",
            "combat_resolution"
        ]
    },
    "swap": {
        "manual_swap_per_player_per_game": 1,
        "timing": "swap_phase",
        "requires_face_up_bench_monster": true,
        "effect_caused_swap_consumes_manual_swap": false,
        "default_response_window": false
    },
    "evolution": {
        "source_zone": "monster_reserve",
        "eligible_locations": [
            "active_slot",
            "standard_bench",
            "flex_slot_if_available"
        ],
        "base_must_be_face_up": true,
        "exact_next_stage_required": true,
        "global_max_per_turn": 1,
        "prime_evolution_counts_toward_limit": true,
        "stack_is_one_monster_object": true,
        "entire_stack_to_graveyard_on_defeat": true,
        "attacks_disabled_for_controller_after_evolution_that_turn": true
    },
    "prime_singular": {
        "threshold_revealed_or_played_monsters": 4,
        "printed_condition_also_required": true,
        "timing": "prime_singular_step",
        "entry_method": "replace_active_monster",
        "replaced_monster_default_destination": "graveyard",
        "enters_face_up_active": true,
        "counts_as_evolution": false
    },
    "forced_active_replacement": {
        "when_active_leaves_and_monsters_remain": "controller_chooses_legal_remaining_bench_monster",
        "face_down_choice_becomes_face_up": true,
        "timing": "immediate_state_based_action"
    },
    "victory": {
        "condition": "opponent_has_no_remaining_monsters",
        "check_timing": "immediately_after_any_state_change_that_can_remove_remaining_monster_status",
        "life_points": false,
        "deck_out": false,
        "simultaneous_last_monsters_playtest_result": "draw_unless_policy_or_card_overrides"
    },
    "information_visibility": {
        "own_complete_deck_manifest_visible": true,
        "own_card_identities_visible": true,
        "own_current_card_zones_visible": true,
        "opponent_private_zone_assignments_hidden": true,
        "opponent_hidden_identity_zones": [
            "hand",
            "locked_support",
            "face_down_monsters",
            "monster_reserve"
        ]
    },
    "editorial_alignment_required": [],
    "published_at": "2026-08-04T00:00:00+02:00",
    "publication": {
        "normative_machine_source": true,
        "rest_endpoint": "/wp-json/mintayn/v2/rulepacks/snap",
        "versioned_rest_endpoint": "/wp-json/mintayn/v2/rulepacks/snap/1.0.0-playtest.3",
        "editorial_json_is_separate": true,
        "editorial_rulebook_url": "/rules/snap-format/"
    },
    "compatibility": {
        "minimum_rules_plugin_version": "0.6.3",
        "intended_consumers": [
            "mintayn-deckbuilder",
            "mintayn-collector",
            "mintayn-play"
        ],
        "future_game_core_provider_contract": "mintayn/v2"
    }
}