{
  "schemaVersion": 2,
  "modelVersion": 2,
  "published": "2026-09-04",
  "generatedBy": "scripts/generate-plo-pot-sized-raise-data.mjs",
  "question": "At one pot-limit decision point, what is the full pot-sized wager, how many chips must the actor add now, and what is the final raise-to amount?",
  "unitContract": "Every value is a non-negative integer in one consistent unit. Decimal stakes must first be scaled to cents or another whole unit.",
  "inputContract": {
    "sizingPotBeforeAction": "The rules-profiled sizing pot immediately before the actor acts. It normally includes every current-street wager and the actor’s prior contribution; a named exception may use a deemed amount.",
    "amountToMatch": "The rules-profiled amount the actor must match on the current betting round. It can differ from the largest physical wager under a named full-blind normalization.",
    "actorCommittedThisStreet": "The actor’s chips already committed on the current betting round.",
    "stackBehind": "Optional chips still available to the actor before acting."
  },
  "equations": {
    "callAmount": "amountToMatch - actorCommittedThisStreet",
    "sizingPotAfterCall": "sizingPotBeforeAction + callAmount",
    "maximumRaiseIncrement": "sizingPotAfterCall",
    "chipsAddedForFullPot": "callAmount + maximumRaiseIncrement",
    "fullPotRaiseTo": "actorCommittedThisStreet + chipsAddedForFullPot",
    "sizingPotAfterFullPotAction": "sizingPotBeforeAction + chipsAddedForFullPot; a sizing checksum, not necessarily the physical pot under a deemed-pot profile",
    "stackCappedChipsAdded": "min(stackBehind, chipsAddedForFullPot), when stackBehind is provided"
  },
  "assumptions": [
    "The governing rules profile has already determined which chips count in the pot and the amount to match.",
    "All inputs describe one decision point on one betting round.",
    "The actor is otherwise eligible to act."
  ],
  "exclusions": [
    "Minimum-raise and betting-reopening decisions.",
    "Side-pot eligibility and returned uncalled wagers.",
    "Accepted-action, string-bet, undercall, and overbet-correction rulings.",
    "Room-specific rounding, bring-ins, straddles, and dead/short blind treatment not named by a fixture.",
    "Strategy, expected value, equity, and solver recommendations."
  ],
  "primarySources": [
    {
      "title": "Poker TDA 2024 Rules Version 1.0",
      "url": "https://www.pokertda.com/view-poker-tda-rules/",
      "locations": [
        "Rule 54-B, Examples 1 and 2",
        "Rule 57 pot definition"
      ],
      "accessed": "2026-09-04"
    },
    {
      "title": "2026 World Series of Poker Official Tournament Rules",
      "url": "https://assets.wsopcdn.com/wsop/1a72ba28-781c-409d-a9c3-5ca13c4c5718.pdf",
      "locations": [
        "Rule 101",
        "Rule 129",
        "Pot Limit section, PDF page 29",
        "ALL-IN glossary, printed page 35",
        "CALL glossary, printed page 36",
        "POT and RAISE glossary entries, printed page 39"
      ],
      "accessed": "2026-09-04"
    }
  ],
  "fixtures": [
    {
      "id": "standard-one-two-open",
      "label": "$1/$2 full-blind opening maximum",
      "claimSet": "derived-standard",
      "rulesProfile": "full posted blinds",
      "input": {
        "sizingPotBeforeAction": 3,
        "amountToMatch": 2,
        "actorCommittedThisStreet": 0,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 2,
        "sizingPotAfterCall": 5,
        "maximumRaiseIncrement": 5,
        "chipsAddedForFullPot": 7,
        "fullPotRaiseTo": 7,
        "sizingPotAfterFullPotAction": 10,
        "stackCappedChipsAdded": 7,
        "stackCappedWagerTo": 7,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "tda-dead-small-blind",
      "label": "TDA 2024 dead-small-blind example",
      "claimSet": "official-result-with-derived-ledger",
      "rulesProfile": "Poker TDA 2024 Rule 54-B full-blind assumption",
      "sourceLocation": "Poker TDA 2024 Rule 54-B, Example 1",
      "note": "Rule 54-B prints the 700 maximum. The 300 sizing pot, 200 amount to match, intermediate values, and physical-pot checks are labeled ledger derivations.",
      "physicalLargestWager": 200,
      "physicalPotBeforeAction": 200,
      "physicalPotAfterCall": 400,
      "physicalPotAfterAction": 900,
      "input": {
        "sizingPotBeforeAction": 300,
        "amountToMatch": 200,
        "actorCommittedThisStreet": 0,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 200,
        "sizingPotAfterCall": 500,
        "maximumRaiseIncrement": 500,
        "chipsAddedForFullPot": 700,
        "fullPotRaiseTo": 700,
        "sizingPotAfterFullPotAction": 1000,
        "stackCappedChipsAdded": 700,
        "stackCappedWagerTo": 700,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "tda-short-big-blind",
      "label": "TDA 2024 short-all-in-big-blind example",
      "claimSet": "official-result-with-derived-ledger",
      "rulesProfile": "Poker TDA 2024 Rule 54-B full-blind assumption",
      "sourceLocation": "Poker TDA 2024 Rule 54-B, Example 2",
      "note": "Rule 54-B prints the 700 maximum when both posted blinds are 100 at 100/200. The rules-profiled amount to match is 200 even though the largest physical wager is 100; all intermediate and physical-pot values are labeled ledger derivations.",
      "physicalLargestWager": 100,
      "physicalPotBeforeAction": 200,
      "physicalPotAfterCall": 400,
      "physicalPotAfterAction": 900,
      "input": {
        "sizingPotBeforeAction": 300,
        "amountToMatch": 200,
        "actorCommittedThisStreet": 0,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 200,
        "sizingPotAfterCall": 500,
        "maximumRaiseIncrement": 500,
        "chipsAddedForFullPot": 700,
        "fullPotRaiseTo": 700,
        "sizingPotAfterFullPotAction": 1000,
        "stackCappedChipsAdded": 700,
        "stackCappedWagerTo": 700,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "wsop-dead-small-blind-derived",
      "label": "WSOP 2026 dead-small-blind true-value derivation",
      "claimSet": "rules-derived-not-official-example",
      "rulesProfile": "WSOP 2026 true-value tournament profile",
      "sourceLocation": "WSOP 2026 Pot Limit section and CALL glossary",
      "note": "Derived from true-value counting and the full-big-blind call definition; the WSOP tournament document does not print this worked example.",
      "physicalLargestWager": 200,
      "physicalPotBeforeAction": 200,
      "physicalPotAfterCall": 400,
      "physicalPotAfterAction": 800,
      "input": {
        "sizingPotBeforeAction": 200,
        "amountToMatch": 200,
        "actorCommittedThisStreet": 0,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 200,
        "sizingPotAfterCall": 400,
        "maximumRaiseIncrement": 400,
        "chipsAddedForFullPot": 600,
        "fullPotRaiseTo": 600,
        "sizingPotAfterFullPotAction": 800,
        "stackCappedChipsAdded": 600,
        "stackCappedWagerTo": 600,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "hundred-pot-hundred-bet",
      "label": "$100 pot, $100 bet, pot-sized raise",
      "claimSet": "derived-standard",
      "rulesProfile": "actual postflop pot",
      "input": {
        "sizingPotBeforeAction": 200,
        "amountToMatch": 100,
        "actorCommittedThisStreet": 0,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 100,
        "sizingPotAfterCall": 300,
        "maximumRaiseIncrement": 300,
        "chipsAddedForFullPot": 400,
        "fullPotRaiseTo": 400,
        "sizingPotAfterFullPotAction": 600,
        "stackCappedChipsAdded": 400,
        "stackCappedWagerTo": 400,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "forty-five-pot-first-repot",
      "label": "$45 pot, $45 bet, first pot-sized raise",
      "claimSet": "derived-standard",
      "rulesProfile": "actual postflop pot",
      "input": {
        "sizingPotBeforeAction": 90,
        "amountToMatch": 45,
        "actorCommittedThisStreet": 0,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 45,
        "sizingPotAfterCall": 135,
        "maximumRaiseIncrement": 135,
        "chipsAddedForFullPot": 180,
        "fullPotRaiseTo": 180,
        "sizingPotAfterFullPotAction": 270,
        "stackCappedChipsAdded": 180,
        "stackCappedWagerTo": 180,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "forty-five-pot-second-repot",
      "label": "$45 pot, $45 bet, raise to $180, second pot-sized raise",
      "claimSet": "reader-dispute-reconstruction",
      "rulesProfile": "actual postflop pot",
      "note": "$540 is added now; $585 is the actor’s final wager because $45 was already committed.",
      "input": {
        "sizingPotBeforeAction": 270,
        "amountToMatch": 180,
        "actorCommittedThisStreet": 45,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 135,
        "sizingPotAfterCall": 405,
        "maximumRaiseIncrement": 405,
        "chipsAddedForFullPot": 540,
        "fullPotRaiseTo": 585,
        "sizingPotAfterFullPotAction": 810,
        "stackCappedChipsAdded": 540,
        "stackCappedWagerTo": 585,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "big-blind-facing-seven",
      "label": "$1/$2 big blind faces an open to $7",
      "claimSet": "derived-prior-commitment",
      "rulesProfile": "actual full-blind pot",
      "input": {
        "sizingPotBeforeAction": 10,
        "amountToMatch": 7,
        "actorCommittedThisStreet": 2,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 5,
        "sizingPotAfterCall": 15,
        "maximumRaiseIncrement": 15,
        "chipsAddedForFullPot": 20,
        "fullPotRaiseTo": 22,
        "sizingPotAfterFullPotAction": 30,
        "stackCappedChipsAdded": 20,
        "stackCappedWagerTo": 22,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "multiway-bet-and-call",
      "label": "$30 pot, $20 bet, one $20 call",
      "claimSet": "derived-multiway",
      "rulesProfile": "actual postflop pot",
      "input": {
        "sizingPotBeforeAction": 70,
        "amountToMatch": 20,
        "actorCommittedThisStreet": 0,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 20,
        "sizingPotAfterCall": 90,
        "maximumRaiseIncrement": 90,
        "chipsAddedForFullPot": 110,
        "fullPotRaiseTo": 110,
        "sizingPotAfterFullPotAction": 180,
        "stackCappedChipsAdded": 110,
        "stackCappedWagerTo": 110,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "limped-pot-big-blind-option",
      "label": "$1/$2 four-way limped pot, big blind option",
      "claimSet": "derived-prior-commitment",
      "rulesProfile": "actual full-blind pot",
      "note": "The counted pot is 8, the big blind has 2 committed, and the call is zero.",
      "input": {
        "sizingPotBeforeAction": 8,
        "amountToMatch": 2,
        "actorCommittedThisStreet": 2,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 0,
        "sizingPotAfterCall": 8,
        "maximumRaiseIncrement": 8,
        "chipsAddedForFullPot": 8,
        "fullPotRaiseTo": 10,
        "sizingPotAfterFullPotAction": 16,
        "stackCappedChipsAdded": 8,
        "stackCappedWagerTo": 10,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "prior-bet-facing-raise",
      "label": "$60 pot, bet $20, opponent raises to $70",
      "claimSet": "derived-prior-commitment",
      "rulesProfile": "actual postflop pot",
      "input": {
        "sizingPotBeforeAction": 150,
        "amountToMatch": 70,
        "actorCommittedThisStreet": 20,
        "stackBehind": null
      },
      "expected": {
        "callAmount": 50,
        "sizingPotAfterCall": 200,
        "maximumRaiseIncrement": 200,
        "chipsAddedForFullPot": 250,
        "fullPotRaiseTo": 270,
        "sizingPotAfterFullPotAction": 400,
        "stackCappedChipsAdded": 250,
        "stackCappedWagerTo": 270,
        "canCoverCall": true,
        "isStackCapped": false
      }
    },
    {
      "id": "stack-capped-raise",
      "label": "$100 pot, $100 bet, actor has $250 behind",
      "claimSet": "derived-stack-cap",
      "rulesProfile": "actual postflop pot",
      "note": "The pot cap permits 400 added, but table stakes cap the actor at 250 added and 250 total on this street.",
      "input": {
        "sizingPotBeforeAction": 200,
        "amountToMatch": 100,
        "actorCommittedThisStreet": 0,
        "stackBehind": 250
      },
      "expected": {
        "callAmount": 100,
        "sizingPotAfterCall": 300,
        "maximumRaiseIncrement": 300,
        "chipsAddedForFullPot": 400,
        "fullPotRaiseTo": 400,
        "sizingPotAfterFullPotAction": 600,
        "stackCappedChipsAdded": 250,
        "stackCappedWagerTo": 250,
        "canCoverCall": true,
        "isStackCapped": true
      }
    }
  ]
}
