{
  "schemaVersion": 1,
  "title": "Constructed GTO Gecko river-engine snapshot",
  "runDate": "2026-09-04",
  "provenance": {
    "publicArticlePublisher": "GTO Solutions AS",
    "serviceResponseSha256": "cedaf75d76594a66b2fc9d08ed03eaa4552ce55186ade7cf9aed2992f7d1b982",
    "repeatedRuns": 3,
    "byteIdenticalResponses": true,
    "perCombinationFrequencyResolution": 0.01,
    "aggregationUsesRoundedFrequencies": true,
    "serverDeploymentRevisionExposed": false
  },
  "setup": {
    "game": "Heads-up no-limit Holdem river subgame",
    "board": [
      "Js",
      "4d",
      "2c",
      "Ah",
      "8s"
    ],
    "potBeforeRiver": 100,
    "effectiveRiverStack": 300,
    "oopRange": [
      "AsJc",
      "AsJd",
      "AcJc",
      "AcJd",
      "AdJc",
      "AdJd",
      "8c8d",
      "8c8h",
      "8d8h",
      "As7d",
      "Ac7c",
      "Ad7d",
      "Ac5c",
      "Ad5d",
      "As5h",
      "KcJc",
      "KdJd",
      "QcJc",
      "QdJd",
      "TcJc",
      "TdJd",
      "Jh9h",
      "TcTd",
      "9c9d",
      "7c7d",
      "6c6d",
      "5c5d",
      "3c3d",
      "KcQc",
      "KdQd",
      "QcTc",
      "QdTd",
      "Tc9c",
      "Td9d",
      "7c6c",
      "7d6d",
      "6c5c",
      "6d5d",
      "5h3h"
    ],
    "ipRange": [
      "As8c",
      "Ac8d",
      "Ad8h",
      "8c8d",
      "8c8h",
      "8d8h",
      "AsJc",
      "AcJd",
      "AdJc",
      "AcKc",
      "AdKd",
      "AsKh",
      "AcQc",
      "AdQd",
      "AsQh",
      "AcTc",
      "AdTd",
      "KcJh",
      "KdJc",
      "QcJh",
      "QdJc",
      "JdTd",
      "JcTc",
      "KcKd",
      "QcQd",
      "TcTh",
      "9c9h",
      "7c7h",
      "6c6h",
      "KcQh",
      "KdQh",
      "QcTh",
      "QdTh",
      "Tc9h",
      "Td9h",
      "7h6h",
      "7s6s",
      "6h5h",
      "6s5s",
      "5c3c"
    ],
    "rangeWeights": "Each listed physical combination had weight 1 before card-removal conditioning.",
    "allowedRootActions": [
      "CHECK",
      "BET 25",
      "BET 300"
    ],
    "configuredTree": {
      "oopRiverBetPercentages": [
        25
      ],
      "oopRaisePercentage": 100,
      "ipRiverBetPercentage": 75,
      "ipRaisePercentage": 100,
      "allInThreshold": 2
    },
    "solveSettings": {
      "threadCount": 1,
      "accuracyParameter": 0.02,
      "maximumIterations": 1000,
      "printInterval": 10,
      "useIsomorphism": true,
      "dumpRounds": 6,
      "note": "The engine does not expose a unit for the accuracy parameter in the response; it is not described as a percentage."
    }
  },
  "aggregation": {
    "cartesianPairCount": 1560,
    "removedCardCollisionCount": 195,
    "legalPairCount": 1365,
    "method": "Weight each OOP physical-combination strategy by the count of compatible IP physical combinations.",
    "dealWeightedRootFrequency": {
      "check": 0.6956263736263736,
      "bet25": 0.23950183150183146,
      "bet300": 0.06487179487179487
    }
  },
  "perOopCombinationRootFrequency": [
    {
      "hand": "AsJc",
      "legalOpponentCombos": 32,
      "check": 0.8,
      "bet25": 0.2,
      "bet300": 0
    },
    {
      "hand": "AsJd",
      "legalOpponentCombos": 34,
      "check": 0,
      "bet25": 1,
      "bet300": 0
    },
    {
      "hand": "AcJc",
      "legalOpponentCombos": 30,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "AcJd",
      "legalOpponentCombos": 34,
      "check": 0.82,
      "bet25": 0.18,
      "bet300": 0
    },
    {
      "hand": "AdJc",
      "legalOpponentCombos": 31,
      "check": 0.97,
      "bet25": 0.03,
      "bet300": 0
    },
    {
      "hand": "AdJd",
      "legalOpponentCombos": 33,
      "check": 0.59,
      "bet25": 0.41,
      "bet300": 0
    },
    {
      "hand": "8c8d",
      "legalOpponentCombos": 35,
      "check": 0.5,
      "bet25": 0.5,
      "bet300": 0
    },
    {
      "hand": "8c8h",
      "legalOpponentCombos": 35,
      "check": 0.67,
      "bet25": 0,
      "bet300": 0.33
    },
    {
      "hand": "8d8h",
      "legalOpponentCombos": 35,
      "check": 0.32,
      "bet25": 0.68,
      "bet300": 0
    },
    {
      "hand": "As7d",
      "legalOpponentCombos": 36,
      "check": 0.03,
      "bet25": 0.97,
      "bet300": 0
    },
    {
      "hand": "Ac7c",
      "legalOpponentCombos": 34,
      "check": 0.05,
      "bet25": 0.95,
      "bet300": 0
    },
    {
      "hand": "Ad7d",
      "legalOpponentCombos": 35,
      "check": 0.01,
      "bet25": 0.99,
      "bet300": 0
    },
    {
      "hand": "Ac5c",
      "legalOpponentCombos": 34,
      "check": 0.23,
      "bet25": 0.77,
      "bet300": 0
    },
    {
      "hand": "Ad5d",
      "legalOpponentCombos": 35,
      "check": 0.01,
      "bet25": 0.99,
      "bet300": 0
    },
    {
      "hand": "As5h",
      "legalOpponentCombos": 35,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "KcJc",
      "legalOpponentCombos": 31,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "KdJd",
      "legalOpponentCombos": 34,
      "check": 0.99,
      "bet25": 0.01,
      "bet300": 0
    },
    {
      "hand": "QcJc",
      "legalOpponentCombos": 31,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "QdJd",
      "legalOpponentCombos": 34,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "TcJc",
      "legalOpponentCombos": 32,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "TdJd",
      "legalOpponentCombos": 36,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "Jh9h",
      "legalOpponentCombos": 35,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "TcTd",
      "legalOpponentCombos": 33,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "9c9d",
      "legalOpponentCombos": 39,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "7c7d",
      "legalOpponentCombos": 39,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "6c6d",
      "legalOpponentCombos": 39,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "5c5d",
      "legalOpponentCombos": 39,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "3c3d",
      "legalOpponentCombos": 39,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "KcQc",
      "legalOpponentCombos": 32,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "KdQd",
      "legalOpponentCombos": 32,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "QcTc",
      "legalOpponentCombos": 32,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "QdTd",
      "legalOpponentCombos": 33,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "Tc9c",
      "legalOpponentCombos": 35,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "Td9d",
      "legalOpponentCombos": 37,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "7c6c",
      "legalOpponentCombos": 38,
      "check": 1,
      "bet25": 0,
      "bet300": 0
    },
    {
      "hand": "7d6d",
      "legalOpponentCombos": 40,
      "check": 0.24,
      "bet25": 0.76,
      "bet300": 0
    },
    {
      "hand": "6c5c",
      "legalOpponentCombos": 38,
      "check": 0,
      "bet25": 0,
      "bet300": 1
    },
    {
      "hand": "6d5d",
      "legalOpponentCombos": 40,
      "check": 0.22,
      "bet25": 0.78,
      "bet300": 0
    },
    {
      "hand": "5h3h",
      "legalOpponentCombos": 39,
      "check": 0,
      "bet25": 0,
      "bet300": 1
    }
  ],
  "interpretation": [
    "This is an author-constructed teaching input, not a library spot or population sample.",
    "The output includes a 300-chip shove as well as check and the 25-chip lead.",
    "It shows only that one specified model can mix a small lead with other actions.",
    "It does not prescribe these frequencies for another board, range, stack, action tree, or opponent.",
    "The separate EV sensitivity table is synthetic and is not derived from this solve.",
    "Byte-identical responses show service repeatability for the recorded request; they do not independently certify equilibrium accuracy."
  ]
}
