id: 814f68624106477cb2af7a2445e1e5cc
parent_id: 5bfcdd98478f4d52b9a9bbd4d8c2a2bc
item_type: 1
item_id: 47031623e2c6451fb36730ffe93380ea
item_updated_time: 1782224934328
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"oadmap\\\n\\\n\"],[-1,\"-\"],[1,\"Updated 2026-06-23.\\\n\\\n\"],[0,\"--\"],[1,\"-\"],[0,\"\\\n\\\n## Pha\"]],\"start1\":27,\"start2\":27,\"length1\":19,\"length2\":40},{\"diffs\":[[0,\"ed ✅\"],[-1,\"\\\n\\\n**Status:\"],[0,\" COM\"]],\"start1\":89,\"start2\":89,\"length1\":19,\"length2\":8},{\"diffs\":[[0,\"COMPLETE\"],[-1,\"**\"],[0,\"\\\n\\\n- ✅ Si\"]],\"start1\":94,\"start2\":94,\"length1\":18,\"length2\":16},{\"diffs\":[[0,\"ition, 1\"],[-1,\"4\"],[1,\"5\"],[0,\" registe\"]],\"start1\":208,\"start2\":208,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"lop\\\n\"],[-1,\"- ✅ Gen 2 V4 production baseline — nut-aware (F1+F4+F7) + MC multi-way equity\\\n\"],[0,\"- ✅ \"]],\"start1\":297,\"start2\":297,\"length1\":86,\"length2\":8},{\"diffs\":[[0,\"ture\"],[-1,\" — validated fixes, V4 promoted to production\"],[0,\"\\\n- ✅\"]],\"start1\":406,\"start2\":406,\"length1\":53,\"length2\":8},{\"diffs\":[[0,\"- ✅ \"],[-1,\"Dropped V2 and V3 (superseded by V4)\\\n\\\n---\\\n\\\n## Phase 2: Gen 3 Development 🔄\\\n\\\n### Gen 3: Opponent Modelling ✅ (implemented, tuning in progress)\\\n\\\n**Completed:**\"],[1,\"`hand_replay` crate — PT3/PokerStars parser + bot decision replay/regression\\\n\\\n---\\\n\\\n## Phase 2: Gen 3 Development ✅ COMPLETE (in production)\\\n\"],[0,\"\\\n- ✅\"]],\"start1\":478,\"start2\":478,\"length1\":166,\"length2\":148},{\"diffs\":[[0,\"ng —\"],[-1,\" OR-chain refactored to\"],[0,\" dyn\"]],\"start1\":748,\"start2\":748,\"length1\":31,\"length2\":8},{\"diffs\":[[0,\"nts\\\n- ✅ \"],[-1,\"29\"],[1,\"15\"],[0,\" Gen3Con\"]],\"start1\":779,\"start2\":779,\"length1\":18,\"length2\":18},{\"diffs\":[[0,\"- ✅ \"],[-1,\"345 tests pass\\\n\\\n**In Progress:**\\\n- 🔄 Round 2 parameter sweep analysis\\\n- 🔄 Gen3 underperforms Gen2 V4 in 5v5 10-seat format\\\n\\\n**Pending:**\\\n- [ ] RangePredictor — per-opponent range tracking from observed actions\\\n- [ ] Port missing Java tactics (backAlleyMug, luringBet, scareCardHit)\\\n- [ ] Board texture awareness (connected/monotone/paired detection)\\\n\\\n---\\\n\\\n## Key Metrics (2026-06-15)\\\n\\\n| Metric | Value |\\\n|--------|-------|\\\n| Registered strategies | 14 |\\\n| Total tests | 345 |\\\n| Gen3Config parameters | 29 |\\\n| Gen 2 PostflopThresholds | 82 (incl. mc_samples, mc_seed) |\\\n| V4 vs V3 (10K hands, 10 seeds) | +0.34 BB/hand (6/10 wins\"],[1,\"**Production baseline** — `cash_nl.toml` = `ng_preflop` + `g3_postflop_rollout`\\\n- ✅ Parameter sweep results (19 params × 2 directions × 2 scenarios)\\\n- ✅ hand_replay validation — 27.3% mismatch rate (all passive; B7 root cause identified)\\\n\\\n**Still tuning:**\\\n- 🔄 B7: bet_adj_cap too high (bot too passive postflop)\\\n- 🔄 B8: num_callers inflation bug\\\n- 🔄 B9: preflop too tight for premiums in SB\\\n\\\n**Pending (Gen 4 direction):**\\\n- [ ] RangePredictor — per-opponent range tracking from observed actions\\\n- [ ] Port missing Java tactics (backAlleyMug, luringBet, scareCardHit)\\\n- [ ] Board texture awareness (connected/monotone/paired detection)\\\n\\\n---\\\n\\\n## Phase 3: Live Integration (Torn) 🔄 ACTIVE\\\n\\\n**Status: Functional — playing live hands.**\\\n\\\n### Completed\\\n- ✅ Event-stream protocol (`poker_protocol::TableEvent`) — game_start, deal, player_action, waiting_for_action, win, showdown, game_over\\\n- ✅ `live_server` (Axum gateway) — per-table state machine, bot auto-detection, inline decisions\\\n- ✅ Torn TamperMonkey scraper — DOM parsing (seats, stacks, cards, actions, blinds, dealer)\\\n- ✅ **Dealer button detection (D4)** — three-layer fix: SB-seat derivation + DOM chip confirmation + server-side correction\\\n- ✅ Blind detection + synthesis (SB/BB/ante, fallback amounts)\\\n- ✅ Action parsing (check/fold/bet/raise/call, raise-by vs raise-to)\\\n- ✅ Pot/stack/wager tracking\\\n- ✅ Hand history logging (PokerTracker-style + per-hand files)\\\n- ✅ Auto sit-in / buy-in\\\n- ✅ Decision delay randomization (1-5s)\\\n- ✅ k/M suffix parsing (U3 fixed)\\\n- ✅ seenTexts clearing across hands (U1 fixed)\\\n\\\n### In Progress\\\n- 🔄 Bot strategy tuning vs live play (B7/B8/B9 — see Open Issues Tracker)\\\n- 🔄 Opponent modelling (no per-player range tracking yet — Gen 3 uses generic ranges)\\\n\\\n### Pending\\\n- [ ] U4: Player names containing \\\"flop\\\"/\\\"turn\\\"/\\\"river\\\" misclassified\\\n- [ ] U5: `clickWhenReady` retry doesn't re-validate hand ID\\\n- [ ] U6: Events lost on observer re-attachment\\\n- [ ] D1: Missing ante events (chronic) — pot undercounted\\\n- [ ] Multi-table support\\\n- [ ] Native desktop scrapers (deferred)\\\n\\\n---\\\n\\\n## Phase 4: Reinforcement Learning (future)\\\n\\\nNot started. Depends on Gen 3/4 opponent modelling maturity.\\\n\\\n---\\\n\\\n## Key Metrics (2026-06-23)\\\n\\\n| Metric | Value |\\\n|--------|-------|\\\n| Registered strategies | 15 |\\\n| Production bot | Gen 3 (ng_preflop + g3_postflop_rollout) |\\\n| Live integration | Torn — functional, tuning |\\\n| Total tests | 345+ |\\\n| Hand replay mismatch | 27.3% (all passive — B7\"],[0,\") |\"]],\"start1\":812,\"start2\":812,\"length1\":637,\"length2\":2475}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-06-23T14:37:21.399Z
created_time: 2026-06-23T14:37:21.399Z
type_: 13