{
    "ok": true,
    "version": "3.7.3-gameplay-action-verification-live-readiness",
    "checklist": [
        {
            "key": "pack_opening",
            "label": "Test real pack opening with real cards",
            "migrations": [
                "049",
                "050",
                "051"
            ],
            "tables": [
                "pack_definitions",
                "user_packs",
                "pack_opening_logs",
                "pack_opening_items",
                "rng_proofs",
                "user_cards",
                "economy_ledger"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Buy/open a pack and confirm wallet spend, card mint, proof log, ledger and receipt."
        },
        {
            "key": "squad_save",
            "label": "Test real squad save",
            "migrations": [
                "049",
                "050"
            ],
            "tables": [
                "squad_templates",
                "squad_slots",
                "user_cards"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Save 13 starters + 4 interchange; reject duplicates, invalid positions and unowned cards."
        },
        {
            "key": "battle_result",
            "label": "Test battle result flow",
            "migrations": [
                "049",
                "050",
                "051"
            ],
            "tables": [
                "card_battle_matches",
                "match_reports",
                "economy_ledger",
                "user_challenge_progress"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Start a battle and confirm result, reward-once key, XP/coin reward, mission progress and social hooks."
        },
        {
            "key": "marketplace_escrow",
            "label": "Test marketplace escrow",
            "migrations": [
                "049",
                "050",
                "051"
            ],
            "tables": [
                "market_listings",
                "market_transactions",
                "user_wallets",
                "user_cards",
                "card_ownership_history",
                "economy_ledger"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "List a card, buy it from another user, verify lock/transfer/fee/notification/ledger."
        },
        {
            "key": "trade_escrow",
            "label": "Test trade escrow",
            "migrations": [
                "049",
                "050",
                "051"
            ],
            "tables": [
                "trade_offers",
                "trade_offer_items",
                "phase37_escrow_intents",
                "card_ownership_history"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Create/accept/reject/cancel trades and confirm locks, transfer and notifications."
        },
        {
            "key": "auction_escrow",
            "label": "Test auction escrow",
            "migrations": [
                "049",
                "050",
                "051"
            ],
            "tables": [
                "market_listings",
                "market_bids",
                "user_wallets",
                "economy_ledger"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Bid, refund previous bidder, settle once and verify seller payout/card transfer."
        },
        {
            "key": "mission_engine",
            "label": "Test mission engine",
            "migrations": [
                "050",
                "051"
            ],
            "tables": [
                "phase37_mission_events",
                "user_challenge_progress",
                "challenge_definitions"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Trigger pack/battle/trade/market/guild/social/auction events and claim once."
        },
        {
            "key": "notification_bus",
            "label": "Test notification event bus",
            "migrations": [
                "050",
                "051"
            ],
            "tables": [
                "phase37_notification_events",
                "notifications",
                "notification_preferences"
            ],
            "missing_tables": [
                "notification_preferences"
            ],
            "status": "needs_migration",
            "pass_condition": "Create notifications from actions and confirm read/unread, quiet hours and frequency caps."
        },
        {
            "key": "idempotency_replay",
            "label": "Test idempotency replay",
            "migrations": [
                "049",
                "050"
            ],
            "tables": [
                "idempotency_keys",
                "phase37_player_action_receipts",
                "phase37_action_audit"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Repeat same key/payload and expect same receipt; repeat same key/different payload and expect mismatch."
        },
        {
            "key": "reconciliation_tools",
            "label": "Test reconciliation tools",
            "migrations": [
                "051"
            ],
            "tables": [
                "phase37_2_reconciliation_runs",
                "economy_ledger",
                "card_ownership_history"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Run reconciliation and inspect wallet/ledger/card/listing/trade/auction/mission/proof checks."
        },
        {
            "key": "admin_replay",
            "label": "Test admin replay viewer",
            "migrations": [
                "051"
            ],
            "tables": [
                "phase37_2_action_replay_snapshots",
                "phase37_action_audit"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Open admin replay by idempotency key and confirm request, response, affected rows and warnings."
        },
        {
            "key": "demo_seed",
            "label": "Test demo seed mode",
            "migrations": [
                "051"
            ],
            "tables": [
                "phase37_2_demo_seed_runs",
                "card_definitions",
                "pack_definitions",
                "guilds",
                "social_feed_items"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Create safe demo data for test user and confirm it is clearly marked."
        },
        {
            "key": "integration_self_test",
            "label": "Test integration self-test mode",
            "migrations": [
                "051"
            ],
            "tables": [
                "phase37_2_integration_self_tests"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Run dry-run first, then optional execute mode on a test account only."
        },
        {
            "key": "api_contracts",
            "label": "Review API contract docs",
            "migrations": [
                "051"
            ],
            "tables": [
                "phase37_2_action_contracts"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Use /api/v1/player-actions/contracts before Phase 38 frontend work."
        },
        {
            "key": "troubleshooting_docs",
            "label": "Review server-specific troubleshooting",
            "migrations": [
                "052"
            ],
            "tables": [
                "phase37_3_troubleshooting_notes"
            ],
            "missing_tables": [],
            "status": "ready",
            "pass_condition": "Use the Phase 37.3 troubleshooting page for common cPanel/MySQL issues."
        }
    ]
}