{
  "recordType": "dry-side-pot-river-casebook",
  "schemaVersion": 1,
  "publicationDate": "2026-09-05",
  "setup": {
    "game": "No-Limit Texas Holdem river chip EV",
    "board": "Kc 9d 7s 4h 2c",
    "mainPotChips": 300,
    "currentSidePotChips": 0,
    "heroBetChips": 150,
    "allInHand": "As9c",
    "activePlayers": [
      "Hero",
      "Villain"
    ],
    "allInPlayers": [
      "All-in"
    ],
    "assumptions": [
      "The board is complete, so there are no future cards.",
      "The fixed all-in hand is revealed to the reader for retrospective full-state analysis; during live action, replace an unknown hand with a conditional range.",
      "Hero may check or bet 150; Villain may fold or call; raises are excluded.",
      "Villain combinations have equal conditional weight and a declared deterministic response.",
      "An uncalled bet is returned and is not a contested pot.",
      "Earlier contributions are sunk; payoffs are decision-point receipts minus any new Hero wager.",
      "There is no rake, tournament payout conversion, bounty, jackpot, or collusive agreement."
    ]
  },
  "specialCaseFormula": {
    "scope": "Hero has zero check EV, loses every main and side pot when called, and q is expected main-pot share conditional on Villain folding.",
    "expression": "EV(bet) = f*q*M - (1-f)*B",
    "checkEv": "0",
    "breakEvenForPositiveQ": "f* = B / (q*M + B)",
    "zeroShareBoundary": "If q = 0, the bet is never strictly better than checking; it ties only when f = 1."
  },
  "cases": [
    {
      "id": "dead-bluff",
      "label": "Case A — dead bluff",
      "claim": "Hero loses to the all-in player and every live-opponent combination.",
      "hero": "QhJh",
      "board": "Kc 9d 7s 4h 2c",
      "allIn": "As9c",
      "rangeWeights": "equal",
      "villainCombinationCount": 10,
      "foldFrequency": 0.4,
      "callFrequency": 0.6,
      "checkEvChips": 0,
      "betEvChips": -90,
      "betMinusCheckChips": -90,
      "branches": [
        {
          "villain": "KdQd",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KsQs",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KdJd",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KsJs",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KdTd",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KsTs",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "Kd8d",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": null,
          "betPayoffChips": 0
        },
        {
          "villain": "Ks8s",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": null,
          "betPayoffChips": 0
        },
        {
          "villain": "Kd6d",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": null,
          "betPayoffChips": 0
        },
        {
          "villain": "Ks6s",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": false,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": null,
          "betPayoffChips": 0
        }
      ]
    },
    {
      "id": "main-pot-isolation",
      "label": "Case B — main-pot isolation",
      "claim": "Hero beats the all-in player but loses to every live-opponent combination.",
      "hero": "Kh5h",
      "board": "Kc 9d 7s 4h 2c",
      "allIn": "As9c",
      "rangeWeights": "equal",
      "villainCombinationCount": 10,
      "foldFrequency": 0.4,
      "callFrequency": 0.6,
      "checkEvChips": 0,
      "betEvChips": 30,
      "betMinusCheckChips": 30,
      "branches": [
        {
          "villain": "KdQd",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KsQs",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KdJd",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KsJs",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KdTd",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "KsTs",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 0,
          "betSideShare": 0,
          "betPayoffChips": -150
        },
        {
          "villain": "Kd8d",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        },
        {
          "villain": "Ks8s",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        },
        {
          "villain": "Kd6d",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        },
        {
          "villain": "Ks6s",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": false,
          "checkMainShare": 0,
          "checkPayoffChips": 0,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        }
      ]
    },
    {
      "id": "thin-value",
      "label": "Case C — value against the live opponent",
      "claim": "Hero beats the all-in player and every live-opponent combination.",
      "hero": "KhQh",
      "board": "Kc 9d 7s 4h 2c",
      "allIn": "As9c",
      "rangeWeights": "equal",
      "villainCombinationCount": 10,
      "foldFrequency": 0.6,
      "callFrequency": 0.4,
      "checkEvChips": 300,
      "betEvChips": 360,
      "betMinusCheckChips": 60,
      "branches": [
        {
          "villain": "KdJd",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": 1,
          "betPayoffChips": 450
        },
        {
          "villain": "KsJs",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": 1,
          "betPayoffChips": 450
        },
        {
          "villain": "KdTd",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": 1,
          "betPayoffChips": 450
        },
        {
          "villain": "KsTs",
          "response": "call",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": 1,
          "betPayoffChips": 450
        },
        {
          "villain": "Kd8d",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        },
        {
          "villain": "Ks8s",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        },
        {
          "villain": "Kd6d",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        },
        {
          "villain": "Ks6s",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        },
        {
          "villain": "Kd3d",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        },
        {
          "villain": "Ks3s",
          "response": "fold",
          "weight": 1,
          "heroBeatsAllIn": true,
          "heroBeatsVillain": true,
          "checkMainShare": 1,
          "checkPayoffChips": 300,
          "betMainShare": 1,
          "betSideShare": null,
          "betPayoffChips": 300
        }
      ]
    }
  ],
  "thresholdRows": [
    {
      "mainPotChips": 300,
      "betChips": 75,
      "betAsMainPotFraction": "1/4",
      "conditionalMainPotShare": "1/4",
      "breakEvenFoldFrequency": "1/2",
      "breakEvenFoldPercent": 50
    },
    {
      "mainPotChips": 300,
      "betChips": 75,
      "betAsMainPotFraction": "1/4",
      "conditionalMainPotShare": "1/2",
      "breakEvenFoldFrequency": "1/3",
      "breakEvenFoldPercent": 33.3333
    },
    {
      "mainPotChips": 300,
      "betChips": 75,
      "betAsMainPotFraction": "1/4",
      "conditionalMainPotShare": "3/4",
      "breakEvenFoldFrequency": "1/4",
      "breakEvenFoldPercent": 25
    },
    {
      "mainPotChips": 300,
      "betChips": 75,
      "betAsMainPotFraction": "1/4",
      "conditionalMainPotShare": "1/1",
      "breakEvenFoldFrequency": "1/5",
      "breakEvenFoldPercent": 20
    },
    {
      "mainPotChips": 300,
      "betChips": 150,
      "betAsMainPotFraction": "1/2",
      "conditionalMainPotShare": "1/4",
      "breakEvenFoldFrequency": "2/3",
      "breakEvenFoldPercent": 66.6667
    },
    {
      "mainPotChips": 300,
      "betChips": 150,
      "betAsMainPotFraction": "1/2",
      "conditionalMainPotShare": "1/2",
      "breakEvenFoldFrequency": "1/2",
      "breakEvenFoldPercent": 50
    },
    {
      "mainPotChips": 300,
      "betChips": 150,
      "betAsMainPotFraction": "1/2",
      "conditionalMainPotShare": "3/4",
      "breakEvenFoldFrequency": "2/5",
      "breakEvenFoldPercent": 40
    },
    {
      "mainPotChips": 300,
      "betChips": 150,
      "betAsMainPotFraction": "1/2",
      "conditionalMainPotShare": "1/1",
      "breakEvenFoldFrequency": "1/3",
      "breakEvenFoldPercent": 33.3333
    },
    {
      "mainPotChips": 300,
      "betChips": 300,
      "betAsMainPotFraction": "1/1",
      "conditionalMainPotShare": "1/4",
      "breakEvenFoldFrequency": "4/5",
      "breakEvenFoldPercent": 80
    },
    {
      "mainPotChips": 300,
      "betChips": 300,
      "betAsMainPotFraction": "1/1",
      "conditionalMainPotShare": "1/2",
      "breakEvenFoldFrequency": "2/3",
      "breakEvenFoldPercent": 66.6667
    },
    {
      "mainPotChips": 300,
      "betChips": 300,
      "betAsMainPotFraction": "1/1",
      "conditionalMainPotShare": "3/4",
      "breakEvenFoldFrequency": "4/7",
      "breakEvenFoldPercent": 57.1429
    },
    {
      "mainPotChips": 300,
      "betChips": 300,
      "betAsMainPotFraction": "1/1",
      "conditionalMainPotShare": "1/1",
      "breakEvenFoldFrequency": "1/2",
      "breakEvenFoldPercent": 50
    }
  ],
  "sources": [
    {
      "url": "https://www.pokertda.com/view-poker-tda-rules/",
      "accessed": "2026-09-05T03:14:00+02:00",
      "use": "Current published 2024 rules: continued action after an all-in, separate side pots, and individual-play/soft-play boundaries."
    },
    {
      "url": "https://www.pokerstars.com/help/articles/poker-rules-master/217448/",
      "accessed": "2026-09-05T03:09:00+02:00",
      "use": "Official side-pot creation and contributor-eligibility explanation."
    },
    {
      "url": "https://assets.wsopcdn.com/wsop/1a72ba28-781c-409d-a9c3-5ca13c4c5718.pdf",
      "accessed": "2026-09-05",
      "use": "2026 WSOP rules: separate side-pot settlement, return of an uncalled amount, and collusion/soft-play rules."
    }
  ],
  "limitations": [
    "This is a disclosed casebook, not an equilibrium solve or population model.",
    "The response policies are synthetic inputs, not claims about optimal or observed fold frequencies.",
    "Turn and flop incentives require future-card and future-betting branches that this river model excludes.",
    "Tournament ICM, bounty value, rake, raises, ties, side pots already in existence, and room-specific procedures can change decisions."
  ]
}
