{
  "schema": "poker51-table-v2-verify",
  "rules": "poker51-table-v1",
  "riemann": "poker51-table-riemann-v2",
  "steve": "poker51-table-steve-v1",
  "steveTable": {
    "version": "steve-jev-v1",
    "sha256": "b2a52050b61e55fe2a24050b91be8bdb52804d2cf99955db6c5264fedafe8d76"
  },
  "service": "table51-v2",
  "date": "2026-10-02",
  "node": "v24.16.0",
  "checks": [
    {
      "name": "Steve’s table is intact: its bytes hash to the SHA-256 it declares, and every entry is a probability distribution",
      "pass": true,
      "ms": 4,
      "bytes": 56671,
      "sha256": "b2a52050b61e55fe2a24050b91be8bdb52804d2cf99955db6c5264fedafe8d76",
      "persona": "default"
    },
    {
      "name": "legal play at 2 to 5 seats with Riemann, Steve and random players: every move is accepted by the rules, chips are conserved, and each decision uses only that player’s cards and public information (6,000 hands)",
      "pass": true,
      "ms": 4076,
      "tally": {
        "hands": 6000,
        "steveDecisions": 28428,
        "riemannDecisions": 14404,
        "steveBets": 3857,
        "steveRaises": 1955,
        "steveFolds": 3197,
        "stevePat": 415,
        "steveKicker": 2073,
        "allIns": 990
      }
    },
    {
      "name": "across hands Steve’s public hash follows his table: the share of each opening action and each draw is within 2 points of the table’s mean",
      "pass": true,
      "ms": 379,
      "opening before the draw": {
        "check": {
          "table": 0.5387,
          "played": 0.5374
        },
        "bet100": {
          "table": 0.3189,
          "played": 0.3184
        },
        "bet200": {
          "table": 0.0893,
          "played": 0.0858
        },
        "bet400": {
          "table": 0.0271,
          "played": 0.0309
        },
        "bet800": {
          "table": 0.026,
          "played": 0.0275
        }
      },
      "the draw": {
        "rule": {
          "table": 0.508,
          "played": 0.5067
        },
        "kicker": {
          "table": 0.2184,
          "played": 0.2177
        },
        "pat": {
          "table": 0.0617,
          "played": 0.0637
        },
        "twohigh": {
          "table": 0.212,
          "played": 0.2118
        }
      }
    },
    {
      "name": "Riemann’s table policy v2 differs from v1 only where the Rule Card says: against a rival who stood pat, and in not bluff-raising a bet above 1 jbit",
      "pass": true,
      "ms": 1589,
      "sameDecision": 11386,
      "differsFacingAStandPat": 224,
      "bluffRaiseWithheld": 57
    },
    {
      "name": "abits with two published players: 1,500 seeded table sessions with Riemann and Steve coming and going; each person cashes out buy-in + net against other people, and no view shows another seat’s cards",
      "pass": true,
      "ms": 22479,
      "stats": {
        "hands": 12847,
        "riemannHands": 6979,
        "steveHands": 6526,
        "bothHands": 2491,
        "departures": {
          "riemann": 2047,
          "steve": 2101
        },
        "oneLeftWhileOtherStayed": 1281,
        "leaves": 2979,
        "midHandLeaves": 613,
        "heldReturned": 2846,
        "abitsWon": 3105,
        "viewsChecked": 138205,
        "steveDecisions": 16510,
        "riemannDecisions": 18110
      }
    },
    {
      "name": "the published players never play a hand without a person in it: with the only person out of jbits or sitting out, no hand is dealt",
      "pass": true,
      "ms": 0
    },
    {
      "name": "fixture: jbits lost to Steve are held by Steve and jbits lost to Riemann by Riemann; removing one returns only its own",
      "pass": true,
      "ms": 1,
      "heldWhenSteveWasRemoved": {
        "steve": 1000
      },
      "bothStillSeated": true
    },
    {
      "name": "upgrade: a table stored by service v1 with jbits held by Riemann opens under v2, plays on, and returns them",
      "pass": true,
      "ms": 4,
      "heldByRiemannUnderV1": 300,
      "tablesTried": 1
    }
  ],
  "scope": "Seeded finite tests of the code against the Rule Card: legality, conservation, what each published player can see, the abits invariant with two published players, and the upgrade of a stored v1 table. They do not prove the rules correct for every input and say nothing about how well either player plays."
}
