Try to break PokerAlpha
What happens when the state is hostile — off-tree sizes, distrusted regions, impossible inputs? Every scenario below is a REAL engine run, and the interesting part is which safeguard fires.
Stress scenarios
| scenario | what should happen | what actually happened |
|---|---|---|
| Gate rejection: independently trained seeds disagree | solver withheld; rollout fallback with its own uncertainty | REJECTED Monte Carlo rollout HIGH_SEED_DISAGREEMENT |
| Off-tree bet size (between trained sizes) | lookup translated + downgraded to LOW CONFIDENCE | LOW CONFIDENCE interpolated abstraction HIGH_SEED_DISAGREEMENT, UNSTABLE_ACROSS_CHECKPOINTS, OFF_TREE_TRANSLATION |
| Known abstraction-risk street (flop) | street abstraction error caps confidence at LOW | LOW CONFIDENCE solver HIGH_SEED_DISAGREEMENT, UNSTABLE_ACROSS_CHECKPOINTS, STREET_ABSTRACTION_ERROR |
| Unsupported state: multiway pot | outside the trained abstraction; rollout only | REJECTED Monte Carlo rollout OUTSIDE_ABSTRACTION |
| Invalid state: not the hero's turn | refusal — no recommendation at all | REFUSED none NOT_HERO_TURN |
| Invalid state: duplicate card | validation error — never analysed | REFUSED none duplicate_cards, hero_board_collision |
The states that break PokerAlpha (automated red team)
A search over 400 randomly generated LEGAL states (engine self-play snapshots, seed 7) scored on separate fragility signals. Gate verdicts across the sample: REJECTED 212 · ACCEPTED 7 · LOW CONFIDENCE 181.
Structural failure clusters
| cluster | states | dominant signals |
|---|---|---|
| Preflop · spr>13 · bet 50-100%pot | 68 | 68 rejected · HIGH_SEED_DISAGREEMENT×68, UNSTABLE_ACROSS_CHECKPOINTS×48 |
| Preflop · spr>13 · no bet | 30 | 30 rejected · HIGH_SEED_DISAGREEMENT×30, UNSTABLE_ACROSS_CHECKPOINTS×22 |
| Turn · spr>13 · no bet | 19 | 19 rejected · HIGH_SEED_DISAGREEMENT×19, UNSTABLE_ACROSS_CHECKPOINTS×10 |
| Flop · spr>13 · no bet | 16 | 16 rejected · HIGH_SEED_DISAGREEMENT×16, UNSTABLE_ACROSS_CHECKPOINTS×15 |
| Preflop · spr>13 · bet>pot | 14 | 14 rejected · HIGH_SEED_DISAGREEMENT×13, UNSTABLE_ACROSS_CHECKPOINTS×4, LOW_VISIT_COUNT×2 |
| River · spr 4-13 · no bet | 10 | 10 rejected · HIGH_SEED_DISAGREEMENT×10, UNSTABLE_ACROSS_CHECKPOINTS×5 |
Descriptive groupings, not causal diagnoses. Extreme values found by random search are DISCOVERY results — the project’s discipline requires replication with independent seeds before any becomes a claim.
Rule-generated research backlog
- abstraction-collision investigation in Preflop/spr>13/bet 50-100%pot (rule: HIGH_SEED_DISAGREEMENT in >=2 members and >=5 states)
- opponent-model robustness investigation in Preflop/spr>13/bet 50-100%pot (rule: mean model sensitivity >= 0.3)
- abstraction-collision investigation in Preflop/spr>13/no bet (rule: HIGH_SEED_DISAGREEMENT in >=2 members and >=5 states)
- opponent-model robustness investigation in Preflop/spr>13/no bet (rule: mean model sensitivity >= 0.3)
- abstraction-collision investigation in Turn/spr>13/no bet (rule: HIGH_SEED_DISAGREEMENT in >=2 members and >=5 states)
Known failure modes (measured, not hidden)
| Flop/turn abstraction error | exact subgames show the encoder merges strategically different hands (lifted strategies 1.4–9.6 BB/hand exploitable vs ~0.02 for raw keys) | permanent LOW-CONFIDENCE cap on those streets |
| Preflop seed disagreement | independently seeded 2M runs genuinely disagree at many preflop nodes | the gate rejects; rollout fallback answers instead |
| Off-tree bet sizes | observed sizes are translated to the nearest trained size (log-space) | flagged OFF_TREE_TRANSLATION and downgraded |
| Rollout model bias | the fallback's opponent model is simple (one response round, check-down) | EVs carry SEs; model-sensitivity analysis provided |
| Full-game exploitability | restricted local best response shows ≥ ~100 bb/100 exploitability remains | stated on every surface; never called GTO |
| Real-screen recognition | no independent held-out validation data exists yet | live observer stays out of the product; BLOCKED label |