[
  {
    "id": "command_create_room",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_create_room",
      "scope_kind": "player",
      "scope_id": "p1",
      "expected_version": null,
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "create_room",
      "payload": {
        "rules": {
          "ante": "1",
          "minimum_buy_in": "20",
          "bet_limit": "101",
          "category_order": "flush_over_straight",
          "blind_compare_enabled": true
        },
        "buy_in_amount": "100"
      }
    }
  },
  {
    "id": "command_join_room",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_join_room",
      "scope_kind": "player",
      "scope_id": "p1",
      "expected_version": null,
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "join_room",
      "payload": {
        "invite_code": "0123456789ABCDEF",
        "buy_in_amount": "100"
      }
    }
  },
  {
    "id": "command_ready",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_ready",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "ready",
      "payload": {
        "ready": true,
        "rule_version": "1"
      }
    }
  },
  {
    "id": "command_set_rules",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_set_rules",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "set_rules",
      "payload": {
        "rules": {
          "ante": "1",
          "minimum_buy_in": "20",
          "bet_limit": "101",
          "category_order": "flush_over_straight",
          "blind_compare_enabled": true
        }
      }
    }
  },
  {
    "id": "command_start_hand",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_start_hand",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "start_hand",
      "payload": {
        "rule_version": "1"
      }
    }
  },
  {
    "id": "command_rotate_invite",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_rotate_invite",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "rotate_invite",
      "payload": {}
    }
  },
  {
    "id": "command_transfer_host",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_transfer_host",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "transfer_host",
      "payload": {
        "target_player_id": "p2"
      }
    }
  },
  {
    "id": "command_kick_member",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_kick_member",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "kick_member",
      "payload": {
        "target_player_id": "p2",
        "reason": "between hands"
      }
    }
  },
  {
    "id": "command_close_room",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_close_room",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "close_room",
      "payload": {}
    }
  },
  {
    "id": "command_leave_room",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_leave_room",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "leave_room",
      "payload": {}
    }
  },
  {
    "id": "command_look",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_look",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "look",
      "payload": {}
    }
  },
  {
    "id": "command_bet",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_bet",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "bet",
      "payload": {
        "amount": "11"
      }
    }
  },
  {
    "id": "command_call",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_call",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "call",
      "payload": {}
    }
  },
  {
    "id": "command_raise",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_raise",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "raise",
      "payload": {
        "amount": "21"
      }
    }
  },
  {
    "id": "command_compare",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_compare",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "compare",
      "payload": {
        "target_player_id": "p2"
      }
    }
  },
  {
    "id": "command_fold",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_fold",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "fold",
      "payload": {}
    }
  },
  {
    "id": "command_request_topup",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_request_topup",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": "1",
      "command": "request_topup",
      "payload": {}
    }
  },
  {
    "id": "command_topup",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_topup",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": "1",
      "command": "topup",
      "payload": {
        "amount": "20"
      }
    }
  },
  {
    "id": "command_revise_intent",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_revise_intent",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": "1",
      "command": "revise_intent",
      "payload": {
        "amount": "22"
      }
    }
  },
  {
    "id": "manual_fraction_rejected",
    "schema": "Command",
    "expect_valid": false,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_bet",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "bet",
      "payload": {
        "amount": "5.5"
      }
    }
  },
  {
    "id": "client_compare_price_rejected",
    "schema": "Command",
    "expect_valid": false,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_compare",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "compare",
      "payload": {
        "target_player_id": "p2",
        "amount": "40"
      }
    }
  },
  {
    "id": "multiple_targets_rejected",
    "schema": "Command",
    "expect_valid": false,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_compare",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "compare",
      "payload": {
        "target_player_id": "p2",
        "targets": [
          "p2",
          "p3"
        ]
      }
    }
  },
  {
    "id": "max_round_rejected",
    "schema": "Command",
    "expect_valid": false,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_set_rules",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "set_rules",
      "payload": {
        "rules": {
          "ante": "1",
          "minimum_buy_in": "20",
          "bet_limit": "101",
          "category_order": "flush_over_straight",
          "blind_compare_enabled": true,
          "max_round": 20
        }
      }
    }
  },
  {
    "id": "actor_injection_rejected",
    "schema": "Command",
    "expect_valid": false,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_look",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "look",
      "payload": {
        "player_id": "p2"
      }
    }
  },
  {
    "id": "missing_revision_rejected",
    "schema": "Command",
    "expect_valid": false,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_topup",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": "h1",
      "turn_id": "t1",
      "intent_revision": null,
      "command": "topup",
      "payload": {
        "amount": "20"
      }
    }
  },
  {
    "id": "system_amount_5.5",
    "schema": "Amount",
    "expect_valid": true,
    "note": "",
    "value": "5.5"
  },
  {
    "id": "system_amount_101",
    "schema": "Amount",
    "expect_valid": true,
    "note": "",
    "value": "101"
  },
  {
    "id": "system_amount_202",
    "schema": "Amount",
    "expect_valid": true,
    "note": "",
    "value": "202"
  },
  {
    "id": "system_amount_922337203685477580.7",
    "schema": "Amount",
    "expect_valid": true,
    "note": "",
    "value": "922337203685477580.7"
  },
  {
    "id": "noncanonical_amount_01",
    "schema": "Amount",
    "expect_valid": false,
    "note": "",
    "value": "01"
  },
  {
    "id": "noncanonical_amount_5.0",
    "schema": "Amount",
    "expect_valid": false,
    "note": "",
    "value": "5.0"
  },
  {
    "id": "noncanonical_amount_-0",
    "schema": "Amount",
    "expect_valid": false,
    "note": "",
    "value": "-0"
  },
  {
    "id": "noncanonical_amount_1e3",
    "schema": "Amount",
    "expect_valid": false,
    "note": "",
    "value": "1e3"
  },
  {
    "id": "noncanonical_amount_5.5",
    "schema": "Amount",
    "expect_valid": false,
    "note": "",
    "value": 5.5
  },
  {
    "id": "unbounded_round",
    "schema": "PositiveSeq",
    "expect_valid": true,
    "note": "",
    "value": "184467440737095516160000"
  },
  {
    "id": "applied_receipt",
    "schema": "Receipt",
    "expect_valid": true,
    "note": "",
    "value": {
      "action_id": "a_compare",
      "scope_kind": "room",
      "scope_id": "r1",
      "state_version": "13",
      "references": {
        "room_id": "r1",
        "hand_id": "h1",
        "ledger_id": "l1"
      },
      "status": "COMMITTED",
      "outcome": "APPLIED",
      "error": null
    }
  },
  {
    "id": "unknown_no_success",
    "schema": "Receipt",
    "expect_valid": true,
    "note": "",
    "value": {
      "action_id": "a_compare",
      "scope_kind": "room",
      "scope_id": "r1",
      "state_version": null,
      "references": {
        "room_id": null,
        "hand_id": null,
        "ledger_id": null
      },
      "status": "UNKNOWN",
      "outcome": null,
      "error": {
        "code": "COMMAND_IN_PROGRESS",
        "message": "Query original action",
        "retry": "QUERY_ONLY",
        "retry_after_ms": null
      }
    }
  },
  {
    "id": "unknown_cannot_apply",
    "schema": "Receipt",
    "expect_valid": false,
    "note": "",
    "value": {
      "action_id": "a_compare",
      "scope_kind": "room",
      "scope_id": "r1",
      "state_version": null,
      "references": {
        "room_id": null,
        "hand_id": null,
        "ledger_id": null
      },
      "status": "UNKNOWN",
      "outcome": "APPLIED",
      "error": {
        "code": "COMMAND_IN_PROGRESS",
        "message": "Query original action",
        "retry": "QUERY_ONLY",
        "retry_after_ms": null
      }
    }
  },
  {
    "id": "ws_auth",
    "schema": "ClientMessage",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "authenticate",
      "protocol_version": "threecard.v1",
      "request_id": "q1",
      "access_token": "example-not-a-token"
    }
  },
  {
    "id": "ws_subscribe",
    "schema": "ClientMessage",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "subscribe",
      "request_id": "q2",
      "room_id": "r1",
      "after_seq": "42"
    }
  },
  {
    "id": "ws_command",
    "schema": "ClientMessage",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "command",
      "request_id": "q3",
      "body": {
        "protocol_version": "threecard.v1",
        "action_id": "a_look",
        "scope_kind": "room",
        "scope_id": "r1",
        "expected_version": "12",
        "hand_id": "h1",
        "turn_id": "t1",
        "intent_revision": null,
        "command": "look",
        "payload": {}
      }
    }
  },
  {
    "id": "ws_result",
    "schema": "ServerMessage",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "ack",
      "request_id": "q3",
      "receipt": {
        "action_id": "a_compare",
        "scope_kind": "room",
        "scope_id": "r1",
        "state_version": "13",
        "references": {
          "room_id": "r1",
          "hand_id": "h1",
          "ledger_id": "l1"
        },
        "status": "COMMITTED",
        "outcome": "APPLIED",
        "error": null
      },
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "blind_no_cards",
    "schema": "Snapshot",
    "expect_valid": true,
    "note": "No cards disclosed without a persisted grant; full active-hand sequence is documented in scenarios.md.",
    "value": {
      "room_id": "r1",
      "state_version": "12",
      "event_seq": "42",
      "delivery_generation": "3",
      "availability": "SERVING",
      "host_player_id": "p1",
      "rule_version": "1",
      "rules": {
        "ante": "1",
        "minimum_buy_in": "20",
        "bet_limit": "101",
        "category_order": "flush_over_straight",
        "blind_compare_enabled": true
      },
      "members": [
        {
          "player_id": "p1",
          "display_name": "Player 1",
          "seat": 0,
          "ready": false,
          "online": true,
          "hand_status": "BLIND",
          "escrow": "19",
          "contribution": "1"
        },
        {
          "player_id": "p2",
          "display_name": "Player 2",
          "seat": 1,
          "ready": false,
          "online": true,
          "hand_status": "BLIND",
          "escrow": null,
          "contribution": "1"
        }
      ],
      "hand": {
        "hand_id": "h1",
        "phase": "ACTIVE",
        "rule_version": "1",
        "rules": {
          "ante": "1",
          "minimum_buy_in": "20",
          "bet_limit": "101",
          "category_order": "flush_over_straight",
          "blind_compare_enabled": true
        },
        "round_id": "round1",
        "round_no": "1",
        "base_amount": null,
        "pot": "2",
        "turn": {
          "turn_id": "t1",
          "player_id": "p1",
          "turn_epoch": "1",
          "deadline": "2026-10-25T05:30:15.000Z",
          "saved_remaining_ms": null
        },
        "pause": null,
        "outcome": null
      },
      "self_invite": {
        "invite_code": "0123456789ABCDEF",
        "invite_version": "1",
        "expires_at": "2026-10-26T05:00:00.000Z"
      },
      "self_intent": null,
      "self_topup_budget": {
        "budget_ms": 300000,
        "used_ms": 0,
        "remaining_ms_at_server_time": 300000,
        "config_version": "1"
      },
      "visible_hands": [],
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "ws_snapshot",
    "schema": "ServerMessage",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "snapshot",
      "request_id": "q2",
      "subscription_id": "sub1",
      "snapshot": {
        "room_id": "r1",
        "state_version": "12",
        "event_seq": "42",
        "delivery_generation": "3",
        "availability": "SERVING",
        "host_player_id": "p1",
        "rule_version": "1",
        "rules": {
          "ante": "1",
          "minimum_buy_in": "20",
          "bet_limit": "101",
          "category_order": "flush_over_straight",
          "blind_compare_enabled": true
        },
        "members": [
          {
            "player_id": "p1",
            "display_name": "Player 1",
            "seat": 0,
            "ready": false,
            "online": true,
            "hand_status": "BLIND",
            "escrow": "19",
            "contribution": "1"
          },
          {
            "player_id": "p2",
            "display_name": "Player 2",
            "seat": 1,
            "ready": false,
            "online": true,
            "hand_status": "BLIND",
            "escrow": null,
            "contribution": "1"
          }
        ],
        "hand": {
          "hand_id": "h1",
          "phase": "ACTIVE",
          "rule_version": "1",
          "rules": {
            "ante": "1",
            "minimum_buy_in": "20",
            "bet_limit": "101",
            "category_order": "flush_over_straight",
            "blind_compare_enabled": true
          },
          "round_id": "round1",
          "round_no": "1",
          "base_amount": null,
          "pot": "2",
          "turn": {
            "turn_id": "t1",
            "player_id": "p1",
            "turn_epoch": "1",
            "deadline": "2026-10-25T05:30:15.000Z",
            "saved_remaining_ms": null
          },
          "pause": null,
          "outcome": null
        },
        "self_invite": {
          "invite_code": "0123456789ABCDEF",
          "invite_version": "1",
          "expires_at": "2026-10-26T05:00:00.000Z"
        },
        "self_intent": null,
        "self_topup_budget": {
          "budget_ms": 300000,
          "used_ms": 0,
          "remaining_ms_at_server_time": 300000,
          "config_version": "1"
        },
        "visible_hands": [],
        "server_time": "2026-10-25T05:30:00.000Z"
      }
    }
  },
  {
    "id": "ws_subscribed",
    "schema": "ServerMessage",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "subscribed",
      "request_id": "q2",
      "subscription_id": "sub1",
      "room_id": "r1",
      "delivery_generation": "3",
      "mode": "SNAPSHOT",
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "ws_unsubscribed",
    "schema": "ServerMessage",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "unsubscribed",
      "request_id": "q4",
      "subscription_id": "sub1",
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "covered_private_gap",
    "schema": "ServerMessage",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "progress",
      "subscription_id": "sub1",
      "room_id": "r1",
      "covered_through_seq": "43",
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "public_compare_no_cards",
    "schema": "Event",
    "expect_valid": true,
    "note": "",
    "value": {
      "type": "event",
      "subscription_id": "sub1",
      "room_id": "r1",
      "hand_id": "h1",
      "event_id": "e44",
      "event_seq": "44",
      "state_version": "13",
      "effect": {
        "kind": "compare_resolved",
        "initiator_player_id": "p1",
        "target_player_id": "p2",
        "winner_player_id": "p1",
        "loser_player_id": "p2",
        "charged_amount": "11"
      },
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "public_compare_cards_rejected",
    "schema": "Event",
    "expect_valid": false,
    "note": "",
    "value": {
      "type": "event",
      "subscription_id": "sub1",
      "room_id": "r1",
      "hand_id": "h1",
      "event_id": "e44",
      "event_seq": "44",
      "state_version": "13",
      "effect": {
        "kind": "compare_resolved",
        "initiator_player_id": "p1",
        "target_player_id": "p2",
        "winner_player_id": "p1",
        "loser_player_id": "p2",
        "charged_amount": "11",
        "cards": [
          "2C",
          "3D",
          "5H"
        ]
      },
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "private_compare",
    "schema": "Event",
    "expect_valid": true,
    "note": "Only either compare participant, not an arbitrary subscriber; schema does not prove authorization.",
    "value": {
      "type": "event",
      "subscription_id": "sub1",
      "room_id": "r1",
      "hand_id": "h1",
      "event_id": "e45",
      "event_seq": "45",
      "state_version": "13",
      "effect": {
        "kind": "cards_disclosed",
        "visible_hands": [
          {
            "subject_player_id": "p2",
            "cards": [
              "AC",
              "AD",
              "AH"
            ],
            "reason": "COMPARE",
            "source_seq": "45"
          }
        ]
      },
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "bonus_zero",
    "schema": "BonusUpdate",
    "expect_valid": true,
    "note": "",
    "value": {
      "amount": "0",
      "expected_config_version": "1"
    }
  },
  {
    "id": "bonus_max",
    "schema": "BonusUpdate",
    "expect_valid": true,
    "note": "",
    "value": {
      "amount": "1000000000",
      "expected_config_version": "1"
    }
  },
  {
    "id": "bonus_above_max",
    "schema": "BonusUpdate",
    "expect_valid": false,
    "note": "",
    "value": {
      "amount": "1000000001",
      "expected_config_version": "1"
    }
  },
  {
    "id": "signed_negative_zero",
    "schema": "SignedAmount",
    "expect_valid": false,
    "note": "",
    "value": "-0"
  },
  {
    "id": "utc_millis_required",
    "schema": "Timestamp",
    "expect_valid": false,
    "note": "",
    "value": "2026-10-25T05:30:00Z"
  },
  {
    "id": "ledger_page",
    "schema": "LedgerPage",
    "expect_valid": true,
    "note": "",
    "value": {
      "items": [
        {
          "ledger_seq": "7",
          "ledger_id": "l7",
          "account_kind": "ROOM_ESCROW",
          "created_at": "2026-10-25T05:30:00.000Z",
          "kind": "BET",
          "delta": "-5.5",
          "balance_after": "14.5",
          "hand_id": "h1",
          "room_id": "r1"
        }
      ],
      "high_watermark": "7",
      "page_size": 20,
      "next_cursor": null
    }
  },
  {
    "id": "history_page",
    "schema": "HistoryPage",
    "expect_valid": true,
    "note": "",
    "value": {
      "items": [],
      "start": "2026-09-25T05:30:00.000Z",
      "end": "2026-10-25T05:30:00.000Z",
      "high_watermark": "100",
      "page_size": 20,
      "next_cursor": null
    }
  },
  {
    "id": "paused_public_timing_private_budget",
    "schema": "Snapshot",
    "expect_valid": true,
    "note": "server_time is 05:30, 30s into the second pause; 300000-120000-30000=150000. Audience checks remain NOT_RUN.",
    "value": {
      "room_id": "r1",
      "state_version": "12",
      "event_seq": "42",
      "delivery_generation": "3",
      "availability": "SERVING",
      "host_player_id": "p1",
      "rule_version": "1",
      "rules": {
        "ante": "1",
        "minimum_buy_in": "20",
        "bet_limit": "101",
        "category_order": "flush_over_straight",
        "blind_compare_enabled": true
      },
      "members": [
        {
          "player_id": "p1",
          "display_name": "Player 1",
          "seat": 0,
          "ready": false,
          "online": true,
          "hand_status": "BLIND",
          "escrow": "19",
          "contribution": "1"
        },
        {
          "player_id": "p2",
          "display_name": "Player 2",
          "seat": 1,
          "ready": false,
          "online": true,
          "hand_status": "BLIND",
          "escrow": null,
          "contribution": "1"
        }
      ],
      "hand": {
        "hand_id": "h1",
        "phase": "TOPUP_PAUSED",
        "rule_version": "1",
        "rules": {
          "ante": "1",
          "minimum_buy_in": "20",
          "bet_limit": "101",
          "category_order": "flush_over_straight",
          "blind_compare_enabled": true
        },
        "round_id": "round1",
        "round_no": "1",
        "base_amount": null,
        "pot": "2",
        "turn": {
          "turn_id": "t1",
          "player_id": "p1",
          "turn_epoch": "1",
          "deadline": null,
          "saved_remaining_ms": 6000
        },
        "pause": {
          "pause_id": "pause2",
          "pause_epoch": "2",
          "requester_player_id": "p1",
          "started_at": "2026-10-25T05:29:30.000Z",
          "deadline": "2026-10-25T05:32:30.000Z"
        },
        "outcome": null
      },
      "self_invite": {
        "invite_code": "0123456789ABCDEF",
        "invite_version": "1",
        "expires_at": "2026-10-26T05:00:00.000Z"
      },
      "self_intent": null,
      "self_topup_budget": {
        "budget_ms": 300000,
        "used_ms": 120000,
        "remaining_ms_at_server_time": 150000,
        "config_version": "1"
      },
      "visible_hands": [],
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "public_pause_budget_rejected",
    "schema": "Pause",
    "expect_valid": false,
    "note": "",
    "value": {
      "pause_id": "pause2",
      "pause_epoch": "2",
      "requester_player_id": "p1",
      "started_at": "2026-10-25T05:29:30.000Z",
      "deadline": "2026-10-25T05:32:30.000Z",
      "used_before_segment_ms": 120000
    }
  },
  {
    "id": "request_id_ascii",
    "schema": "Id",
    "expect_valid": true,
    "note": "",
    "value": "req_123-A"
  },
  {
    "id": "request_id_dot_rejected",
    "schema": "Id",
    "expect_valid": false,
    "note": "",
    "value": "req.123"
  },
  {
    "id": "kick_optional_reason",
    "schema": "Command",
    "expect_valid": true,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_kick_member",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "kick_member",
      "payload": {
        "target_player_id": "p2"
      }
    }
  },
  {
    "id": "kick_short_reason_rejected",
    "schema": "Command",
    "expect_valid": false,
    "note": "",
    "value": {
      "protocol_version": "threecard.v1",
      "action_id": "a_kick_member",
      "scope_kind": "room",
      "scope_id": "r1",
      "expected_version": "12",
      "hand_id": null,
      "turn_id": null,
      "intent_revision": null,
      "command": "kick_member",
      "payload": {
        "target_player_id": "p2",
        "reason": "short"
      }
    }
  },
  {
    "id": "process_draining_not_room_availability",
    "schema": "Snapshot",
    "expect_valid": false,
    "note": "",
    "value": {
      "room_id": "r1",
      "state_version": "12",
      "event_seq": "42",
      "delivery_generation": "3",
      "availability": "DRAINING",
      "host_player_id": "p1",
      "rule_version": "1",
      "rules": {
        "ante": "1",
        "minimum_buy_in": "20",
        "bet_limit": "101",
        "category_order": "flush_over_straight",
        "blind_compare_enabled": true
      },
      "members": [
        {
          "player_id": "p1",
          "display_name": "Player 1",
          "seat": 0,
          "ready": false,
          "online": true,
          "hand_status": "BLIND",
          "escrow": "19",
          "contribution": "1"
        },
        {
          "player_id": "p2",
          "display_name": "Player 2",
          "seat": 1,
          "ready": false,
          "online": true,
          "hand_status": "BLIND",
          "escrow": null,
          "contribution": "1"
        }
      ],
      "hand": {
        "hand_id": "h1",
        "phase": "TOPUP_PAUSED",
        "rule_version": "1",
        "rules": {
          "ante": "1",
          "minimum_buy_in": "20",
          "bet_limit": "101",
          "category_order": "flush_over_straight",
          "blind_compare_enabled": true
        },
        "round_id": "round1",
        "round_no": "1",
        "base_amount": null,
        "pot": "2",
        "turn": {
          "turn_id": "t1",
          "player_id": "p1",
          "turn_epoch": "1",
          "deadline": null,
          "saved_remaining_ms": 6000
        },
        "pause": {
          "pause_id": "pause2",
          "pause_epoch": "2",
          "requester_player_id": "p1",
          "started_at": "2026-10-25T05:29:30.000Z",
          "deadline": "2026-10-25T05:32:30.000Z"
        },
        "outcome": null
      },
      "self_invite": {
        "invite_code": "0123456789ABCDEF",
        "invite_version": "1",
        "expires_at": "2026-10-26T05:00:00.000Z"
      },
      "self_intent": null,
      "self_topup_budget": {
        "budget_ms": 300000,
        "used_ms": 120000,
        "remaining_ms_at_server_time": 150000,
        "config_version": "1"
      },
      "visible_hands": [],
      "server_time": "2026-10-25T05:30:00.000Z"
    }
  },
  {
    "id": "id_trailing_lf_rejected",
    "schema": "Id",
    "expect_valid": false,
    "value": "req_123\n"
  },
  {
    "id": "input_amount_trailing_lf_rejected",
    "schema": "InputAmount",
    "expect_valid": false,
    "value": "11\n"
  },
  {
    "id": "amount_trailing_lf_rejected",
    "schema": "Amount",
    "expect_valid": false,
    "value": "5.5\n"
  }
]
