{
  "schema": "bj51-table-v1-verify",
  "engine": "bj51-table-v1",
  "classicEngine": "2.0.0",
  "date": "2026-09-29",
  "node": "v24.16.0",
  "checks": [
    {
      "name": "the classic engine in index.html is byte-for-byte the v3.2 engine",
      "pass": true,
      "ms": 1
    },
    {
      "name": "one spot deals, plays and pays exactly as engine v2.0.0 over 10,000 seeded streams",
      "pass": true,
      "ms": 2939,
      "rounds": 65016,
      "streamsSkippedBecauseV2ShoeRanOut": 0,
      "splits": 2097,
      "doubles": 20720,
      "naturals": 2126,
      "dealerNaturals": 2125
    },
    {
      "name": "several spots: casino deal order, one split per spot, dealer rule, exact accounting over 20,000 rounds",
      "pass": true,
      "ms": 1309,
      "coverage": {
        "rounds": 20000,
        "twoSpot": 9514,
        "fiveSpot": 3984,
        "sitOut": 8886,
        "splits": 2041,
        "splitAces": 60,
        "doubles": 8986,
        "dealerStayedForNaturalsOrBusts": 1890,
        "dealer21": 640
      }
    },
    {
      "name": "a round that runs the shoe dry continues from a seeded shuffle of the cards not on the table",
      "pass": true,
      "ms": 49,
      "roundsThatContinued": 192
    },
    {
      "name": "the same seed, stakes and choices replay to the same table, byte for byte",
      "pass": true,
      "ms": 224
    },
    {
      "name": "stakes must be covered: deals, doubles and splits beyond the bank are refused; the input is never changed",
      "pass": true,
      "ms": 1
    }
  ],
  "scope": "Seeded finite tests: one-spot equivalence with the unchanged v2.0.0 engine, multi-spot deal order, dealer rule, splits, doubles, continuation shoes and exact accounting. Not an exhaustive proof or a strategy analysis."
}
