Gen 1 & Gen 2 Audits — Verified Findings (2026-08-23)

# Gen 1 & Gen 2 Strategie-Audits (2026-08-23)

> Zwei Subagent-Audits, Kernbefunde manuell verifiziert. Framing: eigenständige Produktionssysteme ohne spätere Generationen. Gen2-Strategie: Flock-Platz-1 im losen Feld akzeptiert (Jan).

## VERIFIZIERTE GRAVIERENDE BUGS (beide Gens betreffend)

### 1. num_raises-Off-by-one (Gen1+Gen2 Preflop, beide Preflop-Strategien)
Engine: Blinds werden als `Action::Raise` in `actions_this_hand` aufgezeichnet (Meerkat-Konvention), aber **nie gebroadcastet** (nur 535/591/628 in hand_runner.rs). `ctx.num_raises` zählt daher **nurwillkürliche Raises**. Die Java-Ports (big_stack_preflop.rs:289/308, short_stack_preflop.rs:200) assumieren "BB = 1 Raise": **alle Preflop-Tiers eine Stufe zu locker** — "kein Raise vorne"-Chart feuert gegen einen echten Open-Raise, 3-bet-Tier feuert gegen 2 Raises, AA/KK-Shove braucht DREI Raises.

### 2. Gen1-Postflop: Regeln 2/3/4 sind Laufzeit-toter Code
rules_postflop_v1.rs:110 nutzt `ctx.i_am_aggressor` = "wir haben DIESE STREET bereits erhöht". Beim ersten Flop-Action als Preflop-Raiser ist das IMMER false: **Gen1 c-bettet nie, TPTK/Overpair betten nie, folden stattdessen auf jede Bet** (Regel 5 rettet nur River-Bets <10% Pot). Korrekt wäre `i_am_preflop_aggressor` (existiert, wird nicht genutzt). Unit-Tests setzen das Flag von Hand — testen einen Zustand, den das Framework nie liefert.

### 3. AA flatted 4BB-Opens (beide Preflop-Strategien)
big_stack_preflop.rs:427-431: `raise_amount = (4+callers)*BB; raise_amount.saturating_sub(to_call)` — bei to_call=4BB wird 0 → `Action::Call`. **AA/KK callen statt 3-betten gegen jede Open ≥4BB.** short_stack_preflop.rs:230 identisch (AA callt statt shovet, ≤25BB!). `pdf_raise_sizing`/`reraise_allin_hands` existieren als PDF-korrekte Knobs, default false.

### 4. QQ aus dokumentierter 3-bet-Range
big_stack_preflop.rs:293: `r0 > QUEEN` = nur AA/KK; QQ flatted. Sollte `>=` sein (Kommentar sagt "AA-QQ").

### 5. ke_hu_nash: HU-Position invertiert + degenerierte Pot-Odds
sng/ke_hu_nash.rs:203-204: `our_position==0 → is_sb` — gilt nur für 3+ Seats; HU ist Dealer=SB, Position invertiert → **jede Table-Lookup vertauscht** (nur ≤25BB HU aktiv). Zusätzlich 4 "Mixed-Strategy"-Formeln mit pot_odds∈(0,1) deterministisch degeneriert (immer fold/shove): Zeilen 322, 360, 371, 381.

## Gen2 weitere Befunde (Auswahl)
- **call_otb_river_base geparsed aber nie genutzt** — Short-handed-River-Großbet-Calls bei 0.94 statt 0.83 (Full-Ring-Zwilling): systematischer Overfold exakt HU (die bekannte Schwäche). raise_river: toter Config-Key.
- **mc_seed=42 fix pro Decision** — korreliert Schätzfehler über ALLE Entscheidungen (kein Error-Averaging); sollte hand_number/street-hash.
- Isolation-Sizing überschießt um current_bet; Draw-Call-Test quadriert weg das Vorzeichen (Dimensionen inkommensurabel); rollout.rs (alte Variante) driftet von v4-Config (callers 0.5 vs 0.3 konfiguriert).
- MC-Kern selbst solide (Fisher-Yates korrekt, importance-weighted sampling gegen Brute-Force getestet, 10K Samples SE≈0.5%).

## Gen1 vs Poker-Schule (Fidelity)
- **Fehlende Schul-Regeln komplett**: Draw-Play (Helfer portiert, ungenutzt — Nut-Flush-Draw foldet auf Min-Bet), Check-Call-Line für TPTK, Value-Betting eins-Par-Hände (tot via Bug 2), Raise-Size-Bewusstsein, Blind-Defense (Blinds erhalten LOOSERE statt tightere Ranges).
- River-Call nur bei Bet <10% Pot (Schule: ~½-Pot-Calls mit TPTK); AK foldet auf single 3-bet (Schule: continue); AQo EP-Fold (Schule: MP-open).
- Config shipped alle PDF-korrekten Knobs AUS — encodiert die Abweichungen statt der Schule.

## Auswirkung auf Benchmark-Referenzen
Die gestern etablierten Gen2/Gen1-Referenzwerte (50K/500K-Hände) messen DIESE buggy Versionen. Fixes würden die Referenzen verschieben → Fix FIRST, dann (Über-Nacht-)Re-Benchmark.

## Top-Fix-Liste (Reihenfolge)
1. num_raises-Konvention (einmalig festlegen, beide Strategien + Tests durch build_context)
2. i_am_preflop_aggressor für Gen1-Flop-Regeln (c-bet/TPTK/Overpair beleben)
3. Raise-Sizing vs Raises: 3×current_bet statt (4+callers)BB−to_call; pdf_raise_sizing defaults an
4. call_otb_river_base verdrahten; r0>QUEEN → >=; ke_hu_nash Position aus PlayerInfo.is_small_blind
5. Schul-Regeln ergänzen (Draw-Calls, Call-Down-Lines); mc_seed aus Hand-Kontext

id: 06a42e7f2e5e49d7a3f4ecaf316ab15b
parent_id: 111595e632f1437d8c451eb73811d9c2
created_time: 2026-08-23T10:51:43.886Z
updated_time: 2026-08-23T10:51:43.886Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: 
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1787482303886
user_created_time: 2026-08-23T10:51:43.886Z
user_updated_time: 2026-08-23T10:51:43.886Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 0
is_locked: 0
extracted_resource_ids: 
type_: 1