id: f1cda9abc8f04517b87fe2fb87d6e9c6
parent_id: e5fb838dc98846aca09f356f335e85f4
item_type: 1
item_id: 8f9a294ec08d4a65ba90f901c64b1f81
item_updated_time: 1787740000986
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"> **\"],[-1,\"Current state, 2026-07-31.** Monte Carlo equity computation. The foundation fo\"],[1,\"FROZEN BASELINE, 2026-08-26.** Gen 2 ist final kalibriert und eingefroren — Referenz-Baseline und Standard-Gegner fü\"],[0,\"r all\"],[-1,\" modern postflop play. Gen 2's `g2_ke_hu_nash` is chained into every production config (Gen 3-5) for HU play\"],[1,\"e Folge-Sweeps (Gen3+-Kalibrierung läuft gegen Gen2). **Einzige erlaubte künftige Änderung: HU-Preflop-Optimierung** (Refactoring des hardcoded HU-Blocks in `g1_big_stack_preflop` zu sweepbaren `hu_*`-Knobs, EV-neutral verifizierbar via bit-identische Seed-Sims unter `sweep_mode=true`). Kein Fork-Konsolidierungs-Refactoring — die OTB-Fork-Struktur bleibt wie sie ist (Baseline-Schutz)\"],[0,\".\\\n\\\n#\"]],\"start1\":29,\"start2\":29,\"length1\":199,\"length2\":515},{\"diffs\":[[0,\"opponent\"],[1,\", neutral pool, Sweep-Gegner\"],[0,\")\\\n- As *\"]],\"start1\":846,\"start2\":846,\"length1\":16,\"length2\":44},{\"diffs\":[[0,\"p only, \"],[-1,\"15-\"],[1,\"≤\"],[0,\"25BB) — \"]],\"start1\":925,\"start2\":925,\"length1\":19,\"length2\":17},{\"diffs\":[[0,\"HU, \"],[-1,\"15-\"],[1,\"≤\"],[0,\"25 B\"]],\"start1\":1162,\"start2\":1162,\"length1\":11,\"length2\":9},{\"diffs\":[[0,\"\\\n| 3 | `\"],[-1,\"n\"],[0,\"g\"],[1,\"1_big_stack\"],[0,\"_preflop\"]],\"start1\":1268,\"start2\":1268,\"length1\":18,\"length2\":28},{\"diffs\":[[0,\"B → \"],[-1,\"169-hand ranking tables |\"],[1,\"hand-group thresholds, hardcoded HU-Loosening (~60% limp-lastig) |\\\n\\\nAchtung: Gen2 nutzt `g1_big_stack_preflop` (nicht `ng_preflop` — das ist Gen3s Preflop). Die HU-Schwäche (limp-lastig, nur ~25-30% Open) ist bekannt und das einzige zugelassene spätere Optimierungsziel.\"],[0,\"\\\n\\\n##\"]],\"start1\":1305,\"start2\":1305,\"length1\":33,\"length2\":278},{\"diffs\":[[0,\"hs. \"],[-1,\"Tournament-verified: **+2.97 to +4.46 BB/hand** in HU matchups. Chained first in every production config\"],[1,\"**Deckt nur ≤25 BB ab** (`max_stack_bb=25.0`) — bei 75 BB Cash-Stacks ist Nash nie applicable, dann übernimmt der jeweilige Big-Stack-Preflop-Teil\"],[0,\".\\\n\\\n#\"]],\"start1\":1725,\"start2\":1725,\"length1\":112,\"length2\":154},{\"diffs\":[[0,\"his base\"],[-1,\" (27 methods)\"],[0,\". Provid\"]],\"start1\":1990,\"start2\":1990,\"length1\":29,\"length2\":16},{\"diffs\":[[0,\"ion \"],[-1,\"via Monte Carlo (`compute_equity`)\\\n- Threshold-based decision logic (`should_call`, `should_raise`, `should_bet`)\\\n- Bet sizing fractions\\\n- Draw evaluation\"],[1,\"(exhaustive HU, MC multiway)\\\n- Full-Ring- und OTB-Threshold-Pfade (kompletter Action-Tree-Fork via `is_short_handed`)\\\n- Bet sizing, AllIn-Konversionen, Raise-Capping\\\n\\\n**Gate-Semantik (fixiert 2026-08-25):** `is_short_handed` zählt dealt-in-Spieler (ohne `SittingOut`), NICHT `active_players` — Preflop-Attrition am Full-Ring-Tisch schaltet also nicht mehr fälschlich auf OTB-Thresholds um. Commit `2b77670`, 3 Regressionstests.\"],[0,\"\\\n\\\n##\"]],\"start1\":2027,\"start2\":2027,\"length1\":162,\"length2\":435},{\"diffs\":[[0,\"_rollout\"],[-1,\"`\\\n\"],[1,\"_v4`\\\nNut-aware V4. \"],[0,\"Computes\"]],\"start1\":2492,\"start2\":2492,\"length1\":18,\"length2\":35},{\"diffs\":[[0,\"ds**\"],[-1,\". No r\"],[1,\" (uniform). Kein R\"],[0,\"ange\"],[-1,\" m\"],[1,\"-M\"],[0,\"odel\"],[1,\"l\"],[0,\"ing\"],[-1,\".\\\n\\\n## Key Equity Metrics (from `PotentialResult`)\\\n\\\n| Metric | Meaning | Used For |\\\n|---|---|---|\\\n| `hs` | Hand strength (P(we have best hand now)) | Bets, raises |\\\n| `win_prob` | EHS (hs adjusted for future cards) | Calls |\\\n| `ppot` | Positive potential (P(improve to best)) | Draw calling |\\\n| `npot` | Negative potential (P(lose current best)) | Conservative adjustments |\\\n| `nutpot` | Probability of improving to nuts | Nut-aware equity |\\\n| `rpot` | Robustness (equity stability across runouts) | Multiway adjustments |\"],[1,\" — bewusst, das ist der Gen2-Charakter und macht ihn zum neutralen Benchmark.\\\n\\\n## Finale Kalibrierung (2026-08-25, commit 2b77670)\\\n\\\nDrei Sweep-Runden (600+672+648 Sims) + Fine Sweep (0.05-Granularität, 641/648 Sims):\\\n- `value_bet_floor`: 0.65 → **0.55**\\\n- `raise_heavy_action`: **0.85** (neu aktiviert)\\\n- `raise_otb_cbet_into_raiser`: **0.70** (neu aktiviert)\\\n- `bet_otb_nonaggressor_flop`: 0.24 → **0.14**\\\n- `bet_flop_base`: **0.00**, `bet_turn_base`: **0.45**, `bet_river`: **0.45**\\\n- Fine Sweep: alle 9 Live-Knobs konvergiert (±0.3 BB/100 Band = Rauschen, keine Adoption)\\\n\\\n**Trajektorie vs Gen1:** 3.73 → 5.01 → **5.46** BB/100 mean (duel/t3/5v4/4v5).\\\n**Bekannte Limitationen (dokumentiert, nicht gefixt):** KQs-Top-Pair-Fold im 4-way (aggression_adjustment-Exponent im Full-Ring-Pfad; Gen2-typisch, keine Harrington-Regression); HU schwach gegen kalibriertes Gen3 (+150 BB/100 aus Gen3-Sicht).\"],[0,\"\\\n\\\n##\"]],\"start1\":2559,\"start2\":2559,\"length1\":548,\"length2\":937},{\"diffs\":[[0,\"stack → \"],[-1,\"ng\"],[1,\"**g1_big_stack\"],[0,\"_preflop\"],[1,\"**\"],[0,\" → g2_po\"]],\"start1\":3578,\"start2\":3578,\"length1\":26,\"length2\":40},{\"diffs\":[[0,\"lout\"],[1,\"_v4\"],[0,\" |\\\n\\\n\"],[-1,\"Used as a sanity-check opponent (neutral pool).\\\n\\\n\"],[0,\"## K\"]],\"start1\":3628,\"start2\":3628,\"length1\":61,\"length2\":15},{\"diffs\":[[0,\"base\"],[-1,\" (27 methods) |\\\n| `holdem_bots/src/cash/rollout_postflop_v2.rs` | Gen 2 original postflop\"],[1,\"; `is_short_handed`-Fix + OTB/Full-Ring-Pfade\"],[0,\" |\\\n|\"]],\"start1\":3741,\"start2\":3741,\"length1\":97,\"length2\":53},{\"diffs\":[[0,\"stflop_v\"],[-1,\"3\"],[1,\"4\"],[0,\".rs` | G\"]],\"start1\":3827,\"start2\":3827,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"rc/cash/\"],[-1,\"ng\"],[1,\"big_stack\"],[0,\"_preflop\"]],\"start1\":3889,\"start2\":3889,\"length1\":18,\"length2\":25},{\"diffs\":[[0,\"` | \"],[-1,\"NG preflop (169-hand tables\"],[1,\"Gen1-Hand-Grouping-Preflop (inkl. HU-Block :321\"],[0,\") |\\\n\"]],\"start1\":3917,\"start2\":3917,\"length1\":35,\"length2\":55},{\"diffs\":[[0,\"s |\\\n\"],[-1,\"\\\n## Open Issues\\\n\\\n- **Random opponent assumption**: Gen 2 computes equity vs random hands, ignoring that opponents who bet/call have stronger ranges. **Addressed by Gen 3** (range-aware equity).\\\n- **No opponent adaptation**: Same thresholds regardless of opponent type. **Addressed by Gen 4** (adaptive observer).\\\n\\\n## Where This Goes Next\\\n\\\nGen 2 is stable. `g2_ke_hu_nash` is chained into every production config (Gen 3-5). No active development beyond maintenance\"],[1,\"| `scripts/gen2_{river,turn,flop,raise,fine}_sweep.sh` | Sweep-Toolkit (Referenz für Gen3-Sweeps) |\\\n\\\n## Open Issues\\\n\\\n- **Random opponent assumption**: Gen 2 computes equity vs random hands. **Addressed by Gen 3** (range-aware equity) — by design, nicht fixen.\\\n- **HU-Preflop limp-lastig**: einziger zugelassener künftiger Umbau (hu_*-Knobs, siehe Header). Reihenfolge: erst Gen3-Kalibrierung abschließen, dann Gen2-HU.\\\n- Fine Sweep bestätigt: auf 0.05-Granularität ist nichts mehr zu holen. Gen2-Postflop ist konvergiert\"],[0,\".\"]],\"start1\":4177,\"start2\":4177,\"length1\":468,\"length2\":525}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-08-26T10:29:04.474Z
created_time: 2026-08-26T10:29:04.474Z
is_locked: 0
type_: 13