id: 0f2959e207864fb3b0fd54ea9765371b
parent_id: 03ba833dfc9e4a979e33ff0a9af0f508
item_type: 1
item_id: a9fdebe8c23b4840b9d1d273ba0812f6
item_updated_time: 1782196294168
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"ues \"],[-1,\"are \"],[0,\"logged \"],[-1,\"here \"],[0,\"for \"]],\"start1\":205,\"start2\":205,\"length1\":24,\"length2\":15},{\"diffs\":[[0,\"ht**\"],[-1,\" (per instructions)\"],[0,\". Fu\"]],\"start1\":291,\"start2\":291,\"length1\":27,\"length2\":8},{\"diffs\":[[0,\"8`, \"],[-1,\"`RUST_LOG=live_server=debug,holdem_bots=debug,info`\"],[1,\"debug log\"],[0,\" → `\"]],\"start1\":403,\"start2\":403,\"length1\":59,\"length2\":17},{\"diffs\":[[0,\"Bots\"],[-1,\" registered\"],[0,\"**: \"]],\"start1\":446,\"start2\":446,\"length1\":19,\"length2\":8},{\"diffs\":[[0,\"- **\"],[-1,\"Build**: rebuilt `live_server` (release) incl. uncommitted `table_state.rs` changes; commit `514ab95`\\\n- **Artifacts**:\"],[1,\"Audit loop**: 10-min, findings in\"],[0,\" `/t\"]],\"start1\":484,\"start2\":484,\"length1\":126,\"length2\":41},{\"diffs\":[[0,\",jsonl}`\"],[-1,\",\"],[1,\" +\"],[0,\" `/tmp/l\"]],\"start1\":552,\"start2\":552,\"length1\":17,\"length2\":18},{\"diffs\":[[0,\".md`\"],[-1,\", `/tmp/super_marvin_hand_history.log`, `/tmp/super_marvin_hands/{hands,decisions,events}/`\\\n\\\n## Run 1 @ 2026-06-23 07:19:27 — baseline\\\n- health: ok, tables=0 → then a live `torn-holdem` session connected.\\\n- **Findings: none** at that instant (server fresh).\\\n\\\n## Investigated findings (manual, this session)\\\n\\\n### D4 — Dealer button stuck at seat 0 (HIGH, data pipeline/scraper) 🔴\\\n- **Blinds**: ✅ correctly detected. `SmallBlind`/`BigBlind` events arrive with correct seats+amounts and rotate each hand (0/1 → 8/0 → 7\"],[1,\"\\\n\\\n## D4 — Dealer button stuck at seat 0 (scraper) — fix BUILT, NOT YET ACTIVE\\\n- **Root cause**: `buildGameStart()` (parser.ts:650) ignored the correctly-detected\\\n  `snap.dealerSeat` (from the `dealer___ position-N___` div) and keyed off flaky\\\n  `dealerName`, defaulting to `0` ~95% of hands.\\\n- **Fix applied** (parser.ts, built to `torn/dist/torn.user.js` @ 07:58): prefer `snap.dealerSeat`.\\\n- **STATUS: NOT ACTIVE in browser.** The userscript is self-contained (no `@require`/`@updateURL`,\\\n  static `@version 0.1.0`), so TamperMonkey keeps its installed copy — a page refresh does NOT\\\n  reload the rebuilt dist. **User must re-import `dist/torn.user.js` into TamperMonkey, then refresh.**\\\n- Live data after 10m still shows mostly `dealer=0` (old script running). Blinds themselves\\\n  rotate correctly (SB/BB at 3/4 → 2/3 → 1/2 → 0/1 → 6\"],[0,\"/8 → \"],[-1,\"6/7 …).\\\n- **Button**: ❌ `dealer_seat=0` in **19/20 hands** (only 1 correct, `de\"],[1,\"5/6 …); only the button is wrong.\\\n\\\n## B8 — `num_callers` counts all calls, not c\"],[0,\"al\"],[1,\"l\"],[0,\"er\"],[-1,\"=7`). Hero (seat 0) is wrongly treated as BTN almost every hand.\\\n- Symptom: decision context shows `hero=0(BTN…)` + `bb=0` at once (button == BB, impossible 3+ handed).\\\n- **Impact**: corrupts `our_position` + BTN/SB/BB tags + position-aware preflop thres\"],[1,\"s of the last raise (bot) 🔴 NEW\\\n**File:** `holdem_bots/src/strategy_bot.rs:119-122`\\\n```rust\\\nlet num_callers = our_street_actions\\\n    .iter()\\\n    .filter(|ra| matches!(ra.action, Action::Call))\\\n    .count() as u32;   // BUG: includes SB post + limpers before the last raise\\\n```\\\n**Definition (per user):** callers = only players who called the LAST raise/bet on the street.\\\n- S\"],[0,\"ho\"],[1,\"u\"],[0,\"ld\"],[-1,\"s → bot plays as if always on the button → loose open-limp/call (J5s, Q8s, A8o, JTs). **Likely the root cause of \\\"preflop limps with anything\\\".**\\\n- **Derivable fix**: `button_seat = (sb_seat + num_seats − 1) % num_seats` (button sits one seat before the SB; clockwise = +1 mod seats). Confirmed by the one good hand (`dealer=7`, `SB=8`).\"],[1,\" count `Call` actions occurring **after the last `Raise`** on the street.\\\n- **Demonstrated on QJs hand (736c9b23)**, facing a 3-bet to 7000: bot computes\\\n  `num_callers=7` (SB-post + 2 pre-raise limps + hero limp + 3 callers), correct value = **4**\\\n  (only the 4 callers of seat2's 3-bet).\\\n- **Impact:** inflates `num_callers` → widens `determine_call_cards_threshold`\\\n  (`to_call_bb <= 6.0 + num_callers`) and limp-threshold blending → calls too wide in raised\\\n  multiway pots. (For promotion to Open Issues Tracker as B8.)\"],[0,\"\\\n- *\"]],\"start1\":586,\"start2\":586,\"length1\":1207,\"length2\":1839},{\"diffs\":[[0,\"NOT \"],[-1,\"yet \"],[0,\"fixe\"]],\"start1\":2426,\"start2\":2426,\"length1\":12,\"length2\":8},{\"diffs\":[[0,\"* — \"],[-1,\"flagged as D4 in the Open Issues Tracker\"],[1,\"bot logic, out of in-flight scope.\\\n\\\n## num_raises — verified CORRECT ✅\\\nUses `GameInfo.num_raises` (TableState: BB=1, each Bet/Raise +1). QJs hand: 3 raises\\\n(BB + seat1 + seat2). Blinds count as one raise; postflop bets count as raises. Sound\"],[0,\".\\\n\\\n\"],[-1,\"#\"],[0,\"## L\"]],\"start1\":2436,\"start2\":2436,\"length1\":52,\"length2\":252},{\"diffs\":[[0,\"y — \"],[-1,\"NOT fixed, \"],[0,\"logg\"]],\"start1\":2720,\"start2\":2720,\"length1\":19,\"length2\":8},{\"diffs\":[[0,\"ged only\"],[1,\", not fixed\"],[0,\")\\\n- J5s \"]],\"start1\":2727,\"start2\":2727,\"length1\":16,\"length2\":27},{\"diffs\":[[0,\"aise\"],[-1,\" (BTN-labelled seat)\"],[1,\"; Q8s/A8o/JTs limps — aggravated by D4 (wrong button) + B8\"],[0,\".\\\n- \"]],\"start1\":2771,\"start2\":2771,\"length1\":28,\"length2\":66},{\"diffs\":[[0,\"ard,\"],[-1,\" pure\"],[0,\" air\"]],\"start1\":2874,\"start2\":2874,\"length1\":13,\"length2\":8},{\"diffs\":[[0,\"sion\"],[-1,\"; see B7/Open Issues.\\\n- Decision context anomalies (button==BB) stem from D4\"],[1,\" (B7)\"],[0,\".\\\n\\\n#\"]],\"start1\":2906,\"start2\":2906,\"length1\":84,\"length2\":13},{\"diffs\":[[0,\"ed here \"],[-1,\"on \"],[0,\"each int\"]],\"start1\":3032,\"start2\":3032,\"length1\":19,\"length2\":16}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-06-23T06:37:19.893Z
created_time: 2026-06-23T06:37:19.893Z
type_: 13