id: 81c461164c654d208a65afe6b5c0fe1e
parent_id: 912c1620b7f44ca78628c4ffb188ba1c
item_type: 1
item_id: 60976d006f58404387784a6b90ebf04c
item_updated_time: 1782190829590
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"06-2\"],[-1,\"2 after Gen 3 call/bet aggression fixes + sweeps\"],[1,\"3 overnight session: parameter sweeps + hand replay system\"],[0,\".\\\n\\\nP\"]],\"start1\":49,\"start2\":49,\"length1\":56,\"length2\":66},{\"diffs\":[[0,\"8088\"],[-1,\".\\\n\\\n---\\\n\\\n## RESOLVED Thi\"],[1,\" (STOPPED for overnight sweep).\\\n\\\n---\\\n\\\n## 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- **Root cause identified**: `bet_adj_cap=2.0` means bot needs `win_prob > sqrt(bet_threshold)` ≈ 70%+ to bet in multiway. A set of 9s in 8-way shows ~65% MC equity → checks instead of betting.\\\n- Parameters: bet_adj_cap (0.5-3.0), bet_flop_base (0.35-0.60), call_adj_cap (0.8-2.0), bet_turn_base (0.55-0.78), conti_bet_fold_thresh, semi_bluff thresholds, check_raise_flop, bluff_factor, raise_w_bluff, raise_w_draw\\\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- Parses hand histories, replays actions, builds GameInfo at each HERO decision\\\n- Compares bot's decision to HERO's actual action (Exact/Aggressive/Passive/Mismatch)\\\n- CLI: `cargo run -p hand_replay -- hand_replay/tests/data/ --bot cash_nl`\\\n- 14 unit tests, 9 test hands from live session\\\n- Converter script: `scripts/convert_hand.py`\\\n\\\n### Key Finding from Hand Replay (9 hands, 33 decisions)\\\n- **27.3% mismatch rate** — ALL mismatches are bot checking when hero bets/raises\\\n- **Bot NEVER bets or raises postflop when first-in** (checked-to spots)\\\n- Specific cases:\\\n  - **99 set → full house** [3d 9d 2d]: bot checks ALL 3 streets (0/4 match)\\\n  - **AA** [6c Jc Qc]: bot checks flop instead of betting (mismatch)\\\n  - **AKo** [flop]: bot checks when hero bets (mismatch)\\\n  - **AJo** [flop]: bot checks when hero bets (mismatch, 2 cases)\\\n- Pattern: bot matches on passive decisions (check/fold/call) but NEVER matches on aggressive ones (bet/raise)\\\n- This confirms the bet_adj_cap issue — need lower cap for wider betting range\\\n\\\n---\\\n\\\n## RESOLVED (Previou\"],[0,\"s Se\"]],\"start1\":220,\"start2\":220,\"length1\":31,\"length2\":1905},{\"diffs\":[[0,\" Session\"],[1,\"s)\"],[0,\"\\\n\\\n- [x] \"]],\"start1\":2122,\"start2\":2122,\"length1\":16,\"length2\":18},{\"diffs\":[[0,\"ixed\"],[-1,\": returns 0.0 instead of MAX\"],[0,\"\\\n- [\"]],\"start1\":2419,\"start2\":2419,\"length1\":36,\"length2\":8},{\"diffs\":[[0,\"ixed\"],[-1,\": passes `to_call + raise_amount`\"],[0,\"\\\n- [\"]],\"start1\":2474,\"start2\":2474,\"length1\":41,\"length2\":8},{\"diffs\":[[0,\"zing\"],[-1,\" (value 67%, wet 75%, bluff 40%)\"],[0,\"\\\n- [\"]],\"start1\":2533,\"start2\":2533,\"length1\":40,\"length2\":8},{\"diffs\":[[0,\"— Fixed:\"],[-1,\" added\"],[0,\" `call_a\"]],\"start1\":2661,\"start2\":2661,\"length1\":22,\"length2\":16},{\"diffs\":[[0,\"1.2`\"],[-1,\" to limit multi-way call threshold exponent (was effectively 2.25+, now capped at 1.2). Sweep confirmed cap 1.0 best (+2.43), 1.5 most consistent (+1.81).\"],[0,\"\\\n- [\"]],\"start1\":2684,\"start2\":2684,\"length1\":162,\"length2\":8},{\"diffs\":[[0,\"* — \"],[-1,\"Fixed: added\"],[1,\"Partially fixed:\"],[0,\" `be\"]],\"start1\":2739,\"start2\":2739,\"length1\":20,\"length2\":24},{\"diffs\":[[0,\".0` \"],[-1,\"to limit multi-way bet threshold exponent (was num_active-1 = up to 8, now capped at 2.0). Sweep confirmed cap 2.0 best (+3.03).\\\n- [x] **B6: SB completion too tight** — Fixed: `determine_limp_cards_threshold` now returns 0.60 (top 60%) when `to_call <= bb/2` (SB completion). Q5o-type hands now playable.\"],[1,\"— **but still too tight per replay analysis**\\\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; grace period not yet implemented)\"],[0,\"\\\n\\\n--\"]],\"start1\":2774,\"start2\":2774,\"length1\":312,\"length2\":311},{\"diffs\":[[0,\"th)\\\n\"],[-1,\"```rust\\\nif self.base.did_raise_this_round(ctx) {\\\n    return Action::AllIn;\\\n}\\\n```\\\n\"],[0,\"**Im\"]],\"start1\":3249,\"start2\":3249,\"length1\":89,\"length2\":8},{\"diffs\":[[0,\"pth.\"],[-1,\" Needs stack-depth check before converting to AllIn.\\\n\\\n### B2: Postflop call threshold vs small bets — needs live verification\\\nThe `call_adj_cap` fix should address the 93.5% fold rate. Needs more live data to confirm.\\\n\\\n---\\\n\\\n## STILL OPEN — Userscript (super-marvin-userscripts repo)\\\n\\\n### U1: `seenTexts` never cleared between hands\"],[1,\"\\\n\\\n### B7: Bot never bets strong hands postflop when checked-to (NEW)\\\n**Root cause:** `determine_bet_adjustment()` with `bet_adj_cap=2.0` requires `win_prob > ~70%` in multiway. MC equity for sets/overpairs in 6-8 way pots is often 55-65%.\\\n**Evidence:** Hand replay shows 0/6 match on aggressive postflop decisions (bot always checks).\\\n**Fix path:** Lower `bet_adj_cap` to 1.0-1.5 (sweep will confirm optimal value). Also consider lowering `bet_flop_base`.\\\n\\\n### B2: Postflop call threshold vs small bets — needs live verification\\\n\\\n---\\\n\\\n## STILL OPEN — Userscript\\\n\"],[0,\"\\\n###\"]],\"start1\":3343,\"start2\":3343,\"length1\":339,\"length2\":570},{\"diffs\":[[0,\"### U2: \"],[-1,\"`\"],[0,\"forceFlu\"]],\"start1\":3910,\"start2\":3910,\"length1\":17,\"length2\":16},{\"diffs\":[[0,\"lush\"],[-1,\"`\"],[0,\" \"],[1,\"g\"],[0,\"race \"],[-1,\"— game_start before blind messages (⚠️ 134 warnings in current log)\"],[1,\"period not implemented\"],[0,\"\\\n###\"]],\"start1\":3924,\"start2\":3924,\"length1\":82,\"length2\":37},{\"diffs\":[[0,\"inds\"],[-1,\"\\\n\\\n---\\\n\\\n## STILL OPEN — Edge Cases\\\nM1-M4 (see below)\\\n\\\n---\\\n\\\n## Parameter Sweep Results (2026-06-22)\\\n\\\n### Round 1: Production baseline vs 4 variants (3 seeds × 10k hands)\\\n| Variant | Avg Profit/Hand | Notes |\\\n|---------|----------------|-------|\\\n| **S1 (baseline)** | **+2.81** | Best, most consistent |\\\n| S3 (looser) | +1.63 | High variance |\\\n| S5 (bigger bets) | +1.02 | |\\\n| S4 (check-raise agg) | +0.84 | Very high variance |\\\n| S2 (tighter) | +0.42 | |\\\n\\\n### Round 2: call_adj_cap sweep (3 seeds × 10k hands)\\\n| Cap | Avg Profit/Hand | Notes |\\\n|-----|----------------|-------|\\\n| 1.0 | **+2.43** | Best avg, high variance |\\\n| 1.5 | +1.81 | Most consistent |\\\n| 1.2 | (production) | Chosen balance |\\\n| 3.0 | +1.32 | Worst (confirms old behavior was too tight) |\\\n\\\n### Round 3: bet_adj_cap sweep (3 seeds × 10k hands)\\\n| Cap | Avg Profit/Hand | Notes |\\\n|-----|----------------|-------|\\\n| **2.0** | **+3.03** | Best, most consistent |\\\n| 4.0 | +1.73 | High variance |\\\n| 1.5 | +1.60 | Too aggressive |\"],[1,\" (partially fixed: server-side reconcile_missing_blinds)\"],[0,\"\\\n\\\n--\"]],\"start1\":4374,\"start2\":4374,\"length1\":998,\"length2\":64},{\"diffs\":[[0,\"way bet exponent\"],[1,\" **← likely needs lowering**\"],[0,\" |\\\n| bet_flop_ba\"]],\"start1\":4833,\"start2\":4833,\"length1\":32,\"length2\":60},{\"diffs\":[[0,\"ng threshold\"],[1,\" **← likely needs lowering**\"],[0,\" |\\\n| bet_tur\"]],\"start1\":4915,\"start2\":4915,\"length1\":24,\"length2\":52},{\"diffs\":[[0,\"\\\n## \"],[-1,\"Priority Remaining Fixes\\\n\\\n1\"],[1,\"Test Hands (hand_replay/tests/data/)\\\n\\\n| File | Hand | Key Decision | Issue |\\\n|------|------|-------------|-------|\\\n| qq_overpair.txt | QQ on [6h 7h 3s] | Check flop, fold turn | Overpair not bet |\\\n| a6o_toppair.txt | A6o on [3s As 4c] | Check flop with top pair | Top pair not bet |\\\n| aa_wet_board.txt | AA on [6c Jc Qc] | Check flop (hero bets) | AA not bet on wet board |\\\n| 99_set_fullhouse.txt | 99 on [3d 9d 2d] | Check all streets | Full house not bet! |\\\n| tt_overpair_fold.txt | TT on [8c 8h 4h] | Fold turn to pot bet | Correct fold ✓ |\\\n| ako_flop_raise.txt | AKo | Hero bets flop, bot checks | Strong hand not bet |\\\n| ajo_checkraise_flop.txt | AJo | Hero check-raises | Aggression mismatch |\\\n| ajo_raise_fold.txt | AJo | Hero bets flop, bot checks | Strong hand not bet |\\\n| a6o_preflop_fold.txt | A6o preflop | Hero folds, bot calls | Preflop range mismatch |\\\n\\\n---\\\n\\\n## Priority Remaining Fixes\\\n\\\n1. **B7** (bet range too tight) — apply sweep results to production config\\\n2\"],[0,\". **\"]],\"start1\":5352,\"start2\":5352,\"length1\":35,\"length2\":987},{\"diffs\":[[0,\"parsing\\\n\"],[-1,\"2\"],[1,\"3\"],[0,\". **B1**\"]],\"start1\":6399,\"start2\":6399,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"lIn\\\n\"],[-1,\"3\"],[1,\"4\"],[0,\". **U\"],[-1,\"1\"],[1,\"2\"],[0,\"** (\"],[-1,\"seenTexts clear) — 1-line fix, prevents action loss\\\n4. **D1** (missing antes) — server-side pot reconciliation\\\n5. **U4** (name misclassification) — reorder classific\"],[1,\"forceFlush grace period) — timestamp tracking in resetHand\\\n5. **D1** (missing antes) — server-side pot reconcili\"],[0,\"atio\"]],\"start1\":6474,\"start2\":6474,\"length1\":184,\"length2\":131}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-06-23T05:07:19.895Z
created_time: 2026-06-23T05:07:19.895Z
type_: 13