id: 16a5fceb13f24acabd8afbd1d10102af
parent_id: 32f46a08dfad47218ae62e3c735b180d
item_type: 1
item_id: 60976d006f58404387784a6b90ebf04c
item_updated_time: 1782224895767
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"-23 \"],[-1,\"live session.\\\n**D4 button detection — FIXED & VERIFIED.** Dealer now rotates correctly across all\\\npositions (BTN, SB, BB). Three-layer fix: (1) SB-seat derivation at game_start,\\\n(2) DOM chip confirmation at hero-turn (`confirmed_dealer_seat`), (3) server-side\\\ncorrection. Zero correction warnings — SB derivation matches chip 100%.\\\n\"],[1,\"(end of session).\"],[0,\"\\\nPro\"]],\"start1\":51,\"start2\":51,\"length1\":340,\"length2\":25},{\"diffs\":[[0,\" log\"],[-1,\", audit loop every 10m\"],[0,\").\\\n\\\n\"]],\"start1\":190,\"start2\":190,\"length1\":30,\"length2\":8},{\"diffs\":[[0,\"ause\"],[-1,\" (scraper)\"],[0,\":** \"]],\"start1\":286,\"start2\":286,\"length1\":18,\"length2\":8},{\"diffs\":[[0,\" the\"],[-1,\"\\\n\"],[1,\" \"],[0,\"blind\"],[-1,\" \"],[1,\"\\\n\"],[0,\"mess\"]],\"start1\":349,\"start2\":349,\"length1\":15,\"length2\":15},{\"diffs\":[[0,\"t()`\"],[-1,\"\\\n\"],[1,\" \"],[0,\"time\"],[-1,\" \"],[1,\"\\\n\"],[0,\"→ de\"]],\"start1\":435,\"start2\":435,\"length1\":14,\"length2\":14},{\"diffs\":[[0,\"Start()`\"],[-1,\" now\"],[0,\" derives\"]],\"start1\":557,\"start2\":557,\"length1\":20,\"length2\":16},{\"diffs\":[[0,\"SB).\"],[-1,\" Diagnostic: `dealer derived from SB seat=N => btn=M`.\"],[0,\"\\\n2. \"]],\"start1\":697,\"start2\":697,\"length1\":62,\"length2\":8},{\"diffs\":[[0,\"ion`\"],[-1,\" now\"],[0,\" inc\"]],\"start1\":759,\"start2\":759,\"length1\":12,\"length2\":8},{\"diffs\":[[0,\"fication\"],[-1,\" (2026-06-23)\"],[0,\":** btn \"]],\"start1\":1058,\"start2\":1058,\"length1\":29,\"length2\":16},{\"diffs\":[[0,\"tly \"],[-1,\"(7→6→4→3→2→1→0). Zero correction\\\nwarnings — SB derivation matches DOM chip every time.\\\n\\\n**Also fixed (table_state.rs):** `hero_posi\"],[1,\"across full cycle. SB derivation is accurate\\\n~95% of the time; the confirma\"],[0,\"tion\"],[-1,\"_label()` was excluding folded players\\\nfrom position offset computation → wrong labels when button folds (e.g. BB mislabeled\\\nas SB). N\"],[1,\" layer caught **2 corrections** (off-by-one when a\\\nplayer wasn't detected at game_start). Both layers are needed and working.\\\n\\\n**Also fixed:** `hero_position_label()` n\"],[0,\"ow c\"]],\"start1\":1088,\"start2\":1088,\"length1\":277,\"length2\":255},{\"diffs\":[[0,\"(Active,\"],[-1,\" \"],[1,\"\\\n\"],[0,\"Folded, \"]],\"start1\":1370,\"start2\":1370,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"tingOut)\"],[1,\" so folded button players don't shift position offsets.\\\n\\\n**Committed:** super_marvin `8b330e1`, userscripts `d203f4d`\"],[0,\".\\\n\\\n---\\\n\\\n\"]],\"start1\":1406,\"start2\":1406,\"length1\":16,\"length2\":133},{\"diffs\":[[0,\"\\\n## \"],[-1,\"OVERNIGHT SESSION (2026-06-23)\\\n\\\n### Task 1: Parameter Sweep (running)\\\n- 11 parameters swept, 5 seeds each, 5k hands × 3k MC\\\n- Focus: wider betting range (bot doesn't bet enough)\\\n- \"],[1,\"STILL OPEN — Bot Strategy (highest priority)\\\n\\\n### B7: Bot never bets strong hands postflop when checked-to\\\n\"],[0,\"**Ro\"]],\"start1\":1872,\"start2\":1872,\"length1\":188,\"length2\":115},{\"diffs\":[[0,\"ause\"],[-1,\" identified\"],[1,\":\"],[0,\"**\"],[-1,\":\"],[0,\" `be\"]],\"start1\":1991,\"start2\":1991,\"length1\":22,\"length2\":11},{\"diffs\":[[0,\".0` \"],[-1,\"means bot needs `win_prob > sqrt(bet_threshold)` ≈ 70%+ to bet in multiway.\\\n- Results: `/tmp/sweep_overnight2/results.csv`, analysis: `scripts/analyze_sweep.py`\\\n\\\n### Task 2: Hand Replay System (complete)\\\n- **New crate: `hand_replay`** — PT3/PokerStars format parser + bot decision replay\\\n- CLI: `cargo run -p hand_replay -- hand_replay/tests/data/ --bot cash_nl`\\\n\\\n### Key Finding from Hand Replay (9 hands, 33 decisions)\\\n- \"],[1,\"requires `win_prob > ~70%` in multiway.\\\n**Hand evidence:** Hand #29 (ATs flop fold at 18:1), Hand #3 (AQo SB fold at 4:1)\\\n**Fix path:** Lower `bet_adj_cap` to 1.0-1.5; consider lowering `bet_flop_base`.\\\n**Confirmed by hand_replay:\"],[0,\"**\"],[1,\" \"],[0,\"27.3\"]],\"start1\":2013,\"start2\":2013,\"length1\":433,\"length2\":241},{\"diffs\":[[0,\"tch rate\"],[-1,\"** —\"],[1,\",\"],[0,\" ALL mis\"]],\"start1\":2261,\"start2\":2261,\"length1\":20,\"length2\":17},{\"diffs\":[[0,\"king\"],[-1,\" when hero bets/raises\\\n- Pattern: bot matches on passive decisions but NEVER matches on aggressive ones (bet/raise)\\\n- Confirms the bet_adj_cap issue (separate from D4).\\\n\\\n---\\\n\\\n## RESOLVED (Previous Sessions)\\\n\\\n- [x] **powf(0) raise gate** — Fixed: `aggression_adjustment()` floors to 1.0\\\n- [x] **B3: Suited one-gappers** — Fixed: `ng_preflop` uses 169-hand ranking tables\\\n- [x] **Preflop re-raise pot odds** — Fixed: `reraise_potodds_call_ratio`\\\n- [x] **f64::MAX sentinel in limp threshold** — Fixed\\\n- [x] **action_commits_me cost underestimate** — Fixed\\\n- [x] **Rigid 50% pot bet sizing** — Fixed: dynamic sizing\\\n- [x] **sweep_mode = true in production** — Fixed: `sweep_mode = false`\\\n- [x] **B4: 93.5% fold rate facing postflop bets** — Fixed: `call_adj_cap=1.2`\\\n- [x] **B5: 85% check rate when first-in postflop** — Partially fixed: `bet_adj_cap=2.0`\\\n- [x] **B6: SB completion too tight** — Fixed: 0.60 threshold for SB completion\\\n- [x] **U1: seenTexts never cleared** — Fixed in parser.ts resetHand()\\\n- [x] **U2: forceFlush race** — Partially fixed (synthesizes both SB+BB)\\\n- [x] **D4: Dealer button stuck at seat 0** — Fixed & verified (SB derivation + chip confirmation + server correction)\\\n\\\n---\\\n\\\n## STILL OPEN — Bot Strategy\\\n\\\n### B1: \\\"did_raise_this_round → AllIn\\\" without stack/sizing awareness\\\n**File:** `rollout_postflop_gen3.rs:1040` (Gen3 raised-pot path)\\\n### B7: Bot never bets strong hands postflop when checked-to\\\n**Root cause:** `bet_adj_cap=2.0` requires `win_prob > ~70%` in multiway.\\\n**Hand evidence:** Hand #29 (ATs flop fold at 18:1), Hand #3 (AQo SB fold at 4:1)\\\n**Fix path:** Lower `bet_adj_cap` to 1.0-1.5; consider lowering `bet_flop_base`.\\\n### B2: Postflop call threshold vs small bets — needs live verification\"],[1,\"/folding when it should bet/call.\\\n\\\n### B9: Preflop too tight for premiums in SB (NEW)\\\n**Hand:** #3 (166fb094). AQo folded in SB at 4:1 pot odds. ng_preflop position-aware\\\nthresholds may be too conservative in SB, or pot-odds override not firing for premiums.\\\n\"],[0,\"\\\n###\"]],\"start1\":2298,\"start2\":2298,\"length1\":1743,\"length2\":267},{\"diffs\":[[0,\"all`\"],[-1,\" action\"],[0,\" ins\"]],\"start1\":2689,\"start2\":2689,\"length1\":15,\"length2\":8},{\"diffs\":[[0,\" of only\"],[-1,\"\\\n\"],[1,\" \"],[0,\"post-las\"]],\"start1\":2701,\"start2\":2701,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"st-raise\"],[-1,\" \"],[1,\"\\\n\"],[0,\"callers \"]],\"start1\":2717,\"start2\":2717,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"sed \"],[-1,\"pots.\\\n### B9: AQo fold in SB despite 4:1 pot odds (preflop too tight for premiums)\\\n**Hand:** #3 (166fb094). ng_preflop position-aware\"],[1,\"multiway pots.\\\n**Verified:** QJs hand `736c9b23`, bot=7 callers, correct=4.\\\n\\\n### B1: \\\"did_raise_this_round → AllIn\\\" without stack/sizing awareness\\\n**File:** `rollout_postflop_gen3.rs:1040` (Gen3 raised-pot path).\\\n\\\n### B2: Postflop call\"],[0,\" thr\"]],\"start1\":2781,\"start2\":2781,\"length1\":141,\"length2\":243},{\"diffs\":[[0,\"hold\"],[1,\" v\"],[0,\"s \"],[1,\"s\"],[0,\"ma\"],[-1,\"y be too conservative\\\nin SB, or pot-odds override not firing for premium hands.\"],[1,\"ll bets — needs live verification\"],[0,\"\\\n\\\n--\"]],\"start1\":3026,\"start2\":3026,\"length1\":91,\"length2\":48},{\"diffs\":[[0,\"ted\\\n\"],[-1,\"### U3: k/M suffix raise parsing failure ⚠️ CRITICAL\\\n\"],[0,\"### \"]],\"start1\":3149,\"start2\":3149,\"length1\":61,\"length2\":8},{\"diffs\":[[0,\"ng)\\\n\"],[-1,\"### D3: SB amount=0 in synthesized blinds (partially fixed: server-side reconcile_missing_blinds)\"],[1,\"\\\n---\\\n\\\n## RESOLVED\\\n\\\n- [x] **D4: Dealer button stuck at seat 0** — SB derivation + chip confirmation + server correction\\\n- [x] **U3: k/M suffix raise parsing** — Fixed: `parseAmount` handles k/M suffixes (commit `1dce06d`)\\\n- [x] **U1: seenTexts never cleared** — Fixed: `resetHand()` clears seenTexts\\\n- [x] **D3: SB amount=0 in synthesized blinds** — Largely resolved: client-side SB synthesis + server-side `sb_amount` derivation from BB\\\n- [x] **powf(0) raise gate** — Fixed: `aggression_adjustment()` floors to 1.0\\\n- [x] **B3: Suited one-gappers** — Fixed: `ng_preflop` uses 169-hand ranking tables\\\n- [x] **Preflop re-raise pot odds** — Fixed: `reraise_potodds_call_ratio`\\\n- [x] **f64::MAX sentinel in limp threshold** — Fixed\\\n- [x] **action_commits_me cost underestimate** — Fixed\\\n- [x] **Rigid 50% pot bet sizing** — Fixed: dynamic sizing\\\n- [x] **sweep_mode = true in production** — Fixed: `sweep_mode = false`\\\n- [x] **B4: 93.5% fold rate facing postflop bets** — Fixed: `call_adj_cap=1.2`\\\n- [x] **B5: 85% check rate when first-in postflop** — Partially fixed: `bet_adj_cap=2.0`\\\n- [x] **B6: SB completion too tight** — Fixed: 0.60 threshold for SB completion\\\n- [x] **U2 (partial): forceFlush race** — Synthesizes both SB+BB\"],[0,\"\\\n\\\n--\"]],\"start1\":3475,\"start2\":3475,\"length1\":105,\"length2\":1233},{\"diffs\":[[0,\"_nl.toml\"],[1,\" — Gen 3\"],[0,\")\\\n\\\n| Par\"]],\"start1\":4737,\"start2\":4737,\"length1\":16,\"length2\":24},{\"diffs\":[[0,\"| 0.50 |\"],[1,\" Base call threshold |\\\n|\"],[0,\" call_ad\"]],\"start1\":4832,\"start2\":4832,\"length1\":16,\"length2\":40},{\"diffs\":[[0,\"_cap\"],[1,\" |\"],[0,\" 1.2 |\"],[1,\" Call threshold adjustment cap |\\\n|\"],[0,\" bet\"]],\"start1\":4873,\"start2\":4873,\"length1\":14,\"length2\":50},{\"diffs\":[[0,\"_cap\"],[1,\" |\"],[0,\" 2.0 \"],[-1,\"(← \"],[1,\"| ← **\"],[0,\"need\"]],\"start1\":4927,\"start2\":4927,\"length1\":16,\"length2\":21},{\"diffs\":[[0,\"lowering\"],[-1,\")\"],[0,\" \"],[1,\"(B7)** |\\\n\"],[0,\"| bet_fl\"]],\"start1\":4950,\"start2\":4950,\"length1\":18,\"length2\":26},{\"diffs\":[[0,\"base\"],[1,\" |\"],[0,\" 0.52 |\"],[1,\" Flop betting threshold |\\\n| bet_turn_base | 0.70 | Turn betting threshold |\\\n| raise_base | 0.80 | Value raise threshold |\\\n| bet_value_fraction | 0.67 | Dry board value bet sizing |\\\n| bet_wet_fraction | 0.75 | Wet board sizing |\\\n| bet_bluff_fraction | 0.40 | Bluff bet sizing |\\\n|\"],[0,\" swe\"]],\"start1\":4979,\"start2\":4979,\"length1\":15,\"length2\":295},{\"diffs\":[[0,\"mode\"],[1,\" |\"],[0,\" false |\"],[1,\" Production mode |\"],[0,\"\\\n\\\n--\"]],\"start1\":5277,\"start2\":5277,\"length1\":16,\"length2\":36},{\"diffs\":[[0,\"7** (bet\"],[1,\"/call\"],[0,\" range t\"]],\"start1\":5351,\"start2\":5351,\"length1\":16,\"length2\":21},{\"diffs\":[[0,\", lower \"],[1,\"`\"],[0,\"bet_adj_\"]],\"start1\":5403,\"start2\":5403,\"length1\":16,\"length2\":17},{\"diffs\":[[0,\"_adj_cap\"],[1,\"`\"],[0,\"\\\n2. **B9\"]],\"start1\":5415,\"start2\":5415,\"length1\":16,\"length2\":17},{\"diffs\":[[0,\"**B9** (\"],[-1,\"AQo\"],[1,\"preflop\"],[0,\" too tig\"]],\"start1\":5428,\"start2\":5428,\"length1\":19,\"length2\":23},{\"diffs\":[[0,\"o tight \"],[-1,\"preflop\"],[1,\"for premiums\"],[0,\") — chec\"]],\"start1\":5446,\"start2\":5446,\"length1\":23,\"length2\":28},{\"diffs\":[[0,\". **\"],[-1,\"U3\"],[1,\"B8\"],[0,\"** (\"],[-1,\"k/M suffix) — regex fix\"],[1,\"`num_callers` inflation) — count only post-last-raise callers\"],[0,\"\\\n4. \"]],\"start1\":5522,\"start2\":5522,\"length1\":37,\"length2\":75},{\"diffs\":[[0,\" **U\"],[-1,\"2\"],[1,\"4\"],[0,\"** (\"],[-1,\"forceFlush grace period)\\\n6. **D1** (missing antes\"],[1,\"player name keyword collision) — message classification fix\\\n6. **D1** (missing antes) — pot accuracy\\\n7. **U2** (forceFlush grace period\"],[0,\")\"]],\"start1\":5650,\"start2\":5650,\"length1\":59,\"length2\":145}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-06-23T14:37:21.323Z
created_time: 2026-06-23T14:37:21.323Z
type_: 13