Skip to content

docs: J7o 40 BB walkthrough Tests 1-4 (long-overdue completion)#179

Merged
amaster97 merged 1 commit into
mainfrom
j7o-walkthrough-tests-1-4
May 28, 2026
Merged

docs: J7o 40 BB walkthrough Tests 1-4 (long-overdue completion)#179
amaster97 merged 1 commit into
mainfrom
j7o-walkthrough-tests-1-4

Conversation

@amaster97

Copy link
Copy Markdown
Owner

Summary

Notes

  • Engine is preflop-only — Tests 1-3 report preflop strategy exactly and use Monte Carlo equity (poker_solver.equity.equity) for the flop/turn/river continuation. The postflop cbet+raise tree in Test 3 is a hypothetical (no postflop DCFR solve at this budget).
  • Test 4's BB defends ~43% vs 5x (below the user-spec "~50%+" hand-wave) — this is GTO-consistent (MDF ≈ 28.5% at the given pot odds).
  • The 4-bet call infoset in Test 2 shows 100%-call across all BB hands that 3-bet; this is correct GTO at raise cap = 4, since pot odds force everyone in.

Test plan

  • Engine runs without crash on baseline + off-distribution input
  • J7o opens majority at SB root at 40 BB (~97% raise mass)
  • AA opens 100%, 72o folds 100% (canonical anchors)
  • BB calls J7o at 100% vs 3x open (Test 1)
  • J7o equity collapses from ~46% preflop -> ~14% river on A89dd 2c 3s

🤖 Generated with Claude Code

Completes the user-requested J7o (and 27o, Test 4) 40 BB walkthrough first
asked for prior to the cs-bug fix (PR #165) and True Path B engine
(PR #171). All four tests use the 169-class True Path B fast engine
(`_rust.solve_hunl_preflop_rvr_class169`) at 10000 DCFR iterations.

Tests:
- T1 baseline: SB opens J7o, BB calls, equity walk preflop->flop->turn->river
- T2 3-bet/4-bet: SB J7o vs BB 3-bet vs SB 4-bet vs BB call line
- T3 postflop raise: J7o equity vs BB's likely raise range on A89dd
  (engine is preflop-only; postflop equity from MC enumeration)
- T4 off-distribution: 27o + 5x open, engine crash-check + defend dist

Findings: J7o opens majority at 40 BB (matches published chart);
SB prefers 2x over 3x open (GTO-consistent at 40 BB stack depth);
72o folds 100%; AA opens 100%; engine doesn't crash on off-tree play.

Total wall: ~52s (29s solve + 23s postflop equity MC).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@amaster97 amaster97 merged commit 37a3d40 into main May 28, 2026
5 of 8 checks passed
amaster97 added a commit that referenced this pull request May 28, 2026
#183)

Companion to docs/j7o_walkthrough_tests_1_4_2026-05-28.md (PR #179),
which reported equity only. This doc reports **actual GTO action
distributions** from postflop subgame solves at each decision point —
true player-POV format.

Architecture per street:
- Preflop: read SB's 169-class blueprint at the root infoset (||p|);
  J7o gets its action distribution directly.
- Turn / River: call ``solve_postflop_from_blueprint`` with the
  preflop action sequence and the board, then extract J7o's per-class
  strategy and J♠7♦'s specific per-history strategy.

Limitation surfaced honestly: flop subgame solves are DEFERRED.
Empirical measurement (2026-05-28): the vector-form Rust solver runs
> 5 minutes of CPU per flop solve at the smallest viable parameters
(top-K = 4 hand classes + J7o pin, 5 DCFR iterations). The chance
tree from flop to river blows up per-iter cost. Turn solves succeed
in ~15s and river solves in <1s (TerminalCache amortizes the dominant
evaluator cost on a constant board). Flop directional reads are from
the equity-only walkthrough in PR #179.

Headline result for Test 1 (J7o, 40 BB, A♦8♥9♦ 2♣ 3♠):
- Preflop: open_to_200 = 92.1%, open_to_300 = 6.3%, call = 1.6%,
  fold ≈ 0%. The 169-class engine confirms J7o is an opening hand at
  this stack.
- Turn (2♣): raise_33 = 30%, raise_75 = 19%, fold = 17%, raise_100 =
  14%. J7o still raises a lot of the time as a polarized bluff after
  following BB's modal turn action.
- River (3♠): all_in = 49%, bet_100 = 15%, bet_200 = 11%, check =
  7%. SB bombs the river half the time (BB's modal action is check
  at 84.5%, so this is SB facing a checked river with J-high).

Total wall time: 21.6s (preflop blueprint 4.5s, turn solve 14.7s,
river solve 0.5s, overhead 1.9s).

Script: scripts/run_j7o_walkthrough_full_pov.py — designed so the
SKIP_FLOP_SOLVES gate can be flipped to False in a future burst
once the flop-subgame perf path is improved.

Depends on: PR #182 (fix(blueprint_subgame): normalize b/r token
equivalence at preflop boundary), which unblocks the postflop wiring
for SB's opening raise.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant