Gen 6 Phase 1 State — River-Rollout-CAND r6r1 (2026-09-09)

# Gen 6 Phase 1 — River Rollout CAND r6r1 (Nacht 2026-09-09/10)

## Status: CAND läuft über Nacht
Gen 6 gilt als CAND bis das vollständige Scheme (Mirrors + Rollouts + Distillation) steht (Jan, 2026-09-09).

## Was gebaut wurde

**`cash_nl_r6r1`** = cash_nl_ov5 (eingefrorene Gen-5-Oracle-Referenz) + `river_rollout = true`

- Neues Modul `holdem_bots/src/gen6/river_rollout.rs`: River-Entscheidungen per **exakter EV-Enumeration** über den Oracle-Posterior (kein Sampling, keine Runouts am River):
  - `EV(bet s) = Σ_h P(h)·[F(h,s)·pot + C(h,s)·(eq(h)·(pot+2s) − s)]`, Raise-Zweig = 0 (konservativ)
  - `EV(check) = Σ P(h)·eq(h)·pot` (Check-Down-Annahme → Override nur wenn Hero die Action schließt)
  - `EV(call) = Σ P(h)·(eq(h)·(pot+to_call) − to_call)` vs `EV(fold)=0`
  - eq(h) exakt per Evaluator (win/tie/loss), Kosten ~µs (Range-Breite skaliert)
- **Response-Mirror**: Corrector-Likelihood-Kurven (hs-Tilt, gleiche Kurven wie eq_cc-Gate) **verankert an beobachteten Marginalien** (fold_to_bet ≥8 obs, Raise-Freq ×0.5) — wie Idee #8 es für Live-Mirrors verlangt
- Hook in `formula_postflop.rs::get_action` (`river_rollout_action`), Config-Keys `river_rollout`, `river_rollout_sizes`, `river_rollout_edge_bb` (Default 0.5 BB Edge, Passivität gewinnt Ties)
- Debug: `RIVER_ROLLOUT_DEBUG=1` zeigt Bail-Gründe, `RUST_LOG=holdem_bots=debug` zeigt `[gen6 river]`-Entscheidungen

## Wichtiger Negativ-Befund: v22-Corpus als Action-Tabelle UNGEEIGNET
`build_oracle_table` auf equity_v22 (3M Records): River-Straten zeigen Station/Whale **fold=1.00 bei Mittelstärke vs small bets**, Bet nur bei s9 (0.84) — kohärent hyper-tight, widerspricht aber bekanntem Pool-Verhalten (Call-Flatness). Ursachen: Corpus-Bots (cash_nl/g48/g50-Collect) ≠ aktueller Pool + Stärke = P(beat random) ohne Line-Conditioning. → Kurven+Marginalien-Ansatz statt Klassentabelle. (Table liegt unter /tmp/kilo/river_action_table_v22.json zur Inspektion.)

## Gates (alle bestanden)
- 554 lib-Tests grün (5 neue gen6-Tests: Value-Bet schlägt Check, Bluff vs Folding-Mirror, Stack-Cap, EV(call)-Closed-Form, Marginalien-Anker)
- **Harrington 37/37** (HARRINGTON_BOT=cash_nl_r6r1, identisch zu ov5)
- 1000-Hand-Self-Play-Audit: 0 panics, 0 Sim-Fehler, 0 Guardrails für r6r1
- live_server-Build (gen5_nn-Feature) grün

## Beobachtungen aus dem Pool-Smoke (1×r6r1 + 8 Pool, 500 Hände)
- Rollout feuerte 3× (korrekter Fold mit ev_call=−11.6K, 2× CHECK); alle anderen River-Spots bailen korrekt (meist multiway — Phase 1 ist heads-up-only)
- Identischer Self-Play erreicht kaum Rivers (2-26% Flops je Seed — bekanntes Tight-Table-Verhalten), gemischte FelderReach Rivers normal

## Overnight-Runs (2026-09-09 gestartet)
- **Part B** (bgp-Prozess, /tmp/kilo/partb_baseline): ov5 vs Gen1/Gen2/G4, 60K×5=300K/Opponent, Cash-out 200BB — engt die Gen1/Gen2-Gaps auf ±1.5 BB/100 ein (Messlatte für Gen 6)
- **Part A** (/tmp/kilo/parta_ab, chain nach Part B): r6r1 in identischer Geometrie vs Gen1/Gen2/G4 + mixed Pool (1 CAND + 8 g51_*_nn) mit ov5-Control — Kernfrage: schrumpft der Rollout den Gen2-Lineage-Gap?

## Nächste Schritte (morgen)
1. Part A/B-Ergebnisse lesen: r6r1 vs ov5 (pairwise, gleiche Seeds)
2. Multiway-River erweitern (größter Bail-Grund) ODER OOP-Check-Spots (Opp-Stab-Modell)
3. Falls Phase 1 gewinnt: Flop/Turn-Rollouts (Runout-Sampling nötig) → Distillation in EV/Action-Net (EquityNet-Pattern)

id: 343d813434bc41b4883daaaa7a292af1
parent_id: f68035c61cde4435a9c920d625430815
created_time: 2026-09-09T18:31:41.699Z
updated_time: 2026-09-09T18:31:41.699Z
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: 1788978701699
user_created_time: 2026-09-09T18:31:41.699Z
user_updated_time: 2026-09-09T18:31:41.699Z
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