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

scenariowhat should happenwhat actually happened
Gate rejection: independently trained seeds disagreesolver withheld; rollout fallback with its own uncertaintyREJECTED Monte Carlo rollout
HIGH_SEED_DISAGREEMENT
Off-tree bet size (between trained sizes)lookup translated + downgraded to LOW CONFIDENCELOW CONFIDENCE interpolated abstraction
HIGH_SEED_DISAGREEMENT, UNSTABLE_ACROSS_CHECKPOINTS, OFF_TREE_TRANSLATION
Known abstraction-risk street (flop)street abstraction error caps confidence at LOWLOW CONFIDENCE solver
HIGH_SEED_DISAGREEMENT, UNSTABLE_ACROSS_CHECKPOINTS, STREET_ABSTRACTION_ERROR
Unsupported state: multiway potoutside the trained abstraction; rollout onlyREJECTED Monte Carlo rollout
OUTSIDE_ABSTRACTION
Invalid state: not the hero's turnrefusal — no recommendation at allREFUSED none
NOT_HERO_TURN
Invalid state: duplicate cardvalidation error — never analysedREFUSED 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

clusterstatesdominant signals
Preflop · spr>13 · bet 50-100%pot6868 rejected · HIGH_SEED_DISAGREEMENT×68, UNSTABLE_ACROSS_CHECKPOINTS×48
Preflop · spr>13 · no bet3030 rejected · HIGH_SEED_DISAGREEMENT×30, UNSTABLE_ACROSS_CHECKPOINTS×22
Turn · spr>13 · no bet1919 rejected · HIGH_SEED_DISAGREEMENT×19, UNSTABLE_ACROSS_CHECKPOINTS×10
Flop · spr>13 · no bet1616 rejected · HIGH_SEED_DISAGREEMENT×16, UNSTABLE_ACROSS_CHECKPOINTS×15
Preflop · spr>13 · bet>pot1414 rejected · HIGH_SEED_DISAGREEMENT×13, UNSTABLE_ACROSS_CHECKPOINTS×4, LOW_VISIT_COUNT×2
River · spr 4-13 · no bet1010 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

Known failure modes (measured, not hidden)

Flop/turn abstraction errorexact 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 disagreementindependently seeded 2M runs genuinely disagree at many preflop nodesthe gate rejects; rollout fallback answers instead
Off-tree bet sizesobserved sizes are translated to the nearest trained size (log-space)flagged OFF_TREE_TRANSLATION and downgraded
Rollout model biasthe fallback's opponent model is simple (one response round, check-down)EVs carry SEs; model-sensitivity analysis provided
Full-game exploitabilityrestricted local best response shows ≥ ~100 bb/100 exploitability remainsstated on every surface; never called GTO
Real-screen recognitionno independent held-out validation data exists yetlive observer stays out of the product; BLOCKED label

See where the gate trusts itself Evidence for every claim

Method
random legal self-play states scored on separate objectives (gate, seed disagreement, visits, bet-translation distance, ±10% local sensitivity, archetype sensitivity); 400 states scored in 34.1s
Limitation
DISCOVERY results from random search; extreme values must be replicated with independent seeds/samples before becoming claims
Data
PRECOMPUTED redteam.json
Reproduce
python scripts/build_web_research_data.py
Commit
503af8690f83
Strategy
sha256:f1860de75526…

← Research Lab