id: 50bc5ee7a8684756bbfdf337dc231de0
parent_id: 8d8b45d89fb04e1496082f9743d2c147
item_type: 1
item_id: ec1518e71453490f8fe5ab75cff7180c
item_updated_time: 1786789334927
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"-08-\"],[-1,\"09\"],[1,\"15\"],[0,\")\\\n\\\n> \"],[-1,\"Gen 5\"],[1,\"**Production: G51\"],[0,\" = G\"]],\"start1\":28,\"start2\":28,\"length1\":20,\"length2\":32},{\"diffs\":[[0,\" v17\"],[-1,\". Gen 6 PreflopNet/PPO abandoned. Live config updated to v17.\\\n\\\n## Current State\\\n\\\n**Gen 5 = G48 formula + RangeNet v17 (pure NN, alpha=1.0\"],[1,\" + action-likelihood corrector.** Live since 2026-08-15, commits 0609ebb..042876b pushed to origin.\\\n\\\n## Current State\\\n\\\n**G51 = G50 + corrector (`corr_enabled=true`\"],[0,\")** \"]],\"start1\":81,\"start2\":81,\"length1\":145,\"length2\":171},{\"diffs\":[[0,\"— config\"],[1,\"s\"],[0,\": `cash_\"]],\"start1\":252,\"start2\":252,\"length1\":16,\"length2\":17},{\"diffs\":[[0,\"l_g5\"],[-1,\"0`\\\n\\\n### Completed\\\n- **equity_v5_2m4 collection** (85-dim features, 19.2M samples, 2.4M hands) ✅\\\n- **range_v17 trained** (85-dim, 4.35% top-1, 24.2% top-10) ✅ **Production model**\\\n- **Sanity check passed** (all gates — 53 Harrington, self-play audit, performance vs field) ✅\\\n- **Live config updated** to range_v17 (`cash_nl_g50_live.toml`) ✅\\\n- **Parallel eval script** (`/tmp/run_eval_parallel.sh`, MAX_PARALLEL=15) ✅\\\n- **NN opponent configs** (`g48_{fish,whale,tag,nit,station,lag,maniac,reg}_nn.toml`) ✅\\\n- **PreflopNet trained** (99.38% eval accuracy, 142K model) — **DEPLOYED -644 BB/100** ❌\\\n- **PPO Phase 1** (value head corr=0.10, passes gate) — **Too weak signal** ❌\\\n- **PPO Phase 2** (off-policy v2, on-policy v3) — **No improvement over G60** ❌\\\n- **Gen 6 abandoned** — PreflopNet architecture insufficient ❌\\\n\\\n### Sanity Check (range_v17, 10 seeds × 5K hands)\\\n| Gate | Result | BB/100 |\\\n|------|--------|--------|\\\n| Harrington | 18/18 pass | — |\\\n| Self-play audit | ✓ passed | — |\\\n| G48_nn | ✓ +3.73 chips/hand |\"],[1,\"1.toml` (sim) / `cash_nl_g51_live.toml` (live, DEFAULT in live_bots.toml)\\\n\\\nThe corrector (`gen4/range_corrector.rs`): Bayesian refinement `P(hand|actions,board) ∝ P(actions|hand) × P(hand)` after the RangeNet prior. XpotTable per street (exact hs enumeration + 128 shared runouts, 4ms warm, cached), hand-fit likelihood curves per StreetAction with bet-size/aggression/bet-freq/barrel/VPIP-floor conditioning, range-width invariant. Fixes the KK-overplay defect class (turn AllIn→Raise, river Raise→Check). Sim-neutral vs g50 (−0.29 BB/100 h2h); sanity gates 10/10.\\\n\\\n### G51 eval summary (2026-08-15)\\\n- Sanity: Gen2 +0.6, Gen3 +1.0, G48\"],[0,\" +1\"],[-1,\"8\"],[0,\".7\"],[-1,\" |\\\n| TAG_nn | ✓ | +1.8 |\\\n| Nit_nn | ✓ |\"],[1,\", TAG +1.5, Nit\"],[0,\" +0.1\"],[-1,\" |\\\n|\"],[1,\",\"],[0,\" Mixed \"],[-1,\"(vs field) | ✓ | +0.3 |\\\n| Fish | ✓ | +4.5 |\\\n| Whale | ✓ | +4.3 |\\\n\\\n### Gen 6 Eval (PreflopNet/PPO, 10 seeds × 5K hands)\\\n| Bot | Avg chips/hand | BB/100 |\\\n|-----|---------------|--------|\\\n| G48_nn (baseline) | +3.73 | +18.7 |\\\n| G60 (PreflopNet imitation) | -128.75 | -643.8 |\\\n| G62 (PPO v2 off-policy) | -128.75 | -643.8 |\\\n| G63 (PPO v3 on-policy) | -129.45 | -647.3 |\\\n\\\nAll Gen6 bots catastrophically bad. PPO made zero improvement. G47 formula remains preflop.\\\n\\\n### Next Steps\\\n1. **Play live with G48_nn + range_v17** — already deployed\\\n2. **RangeNet improvement**: feature quality (showdown history\"],[1,\"+0.4 — identical to g50\\\n- Head-to-head g51 vs g50: −0.29 BB/100 (200K hands, dead heat)\\\n- 9-max specialists: Fish 53.4 (g50: 59.0), Maniac 102 (113), rest ~equal — small on-distribution cost, accepted\\\n\\\n### Completed (all)\\\n- equity_v5_2m4 collection (85-dim, 19.2M samples) ✅\\\n- range_v17 trained + production ✅\\\n- G51 corrector implemented, reviewed, sanity-passed, committed, LIVE ✅\\\n- Gen6 PreflopNet/PPO abandoned (−644 BB/100) — code removed, models archived `models/abandoned_gen6/` ✅\\\n\\\n## Cleanup (2026-08-15)\\\n- Removed: gen6/preflop_net modules\"],[0,\", \"],[1,\"p\"],[0,\"po\"],[-1,\"sitional stats, pot-odds context), live opponent data collection\\\n3. **Consider NN postflop sizing** — smaller problem than preflop, better leverage\\\n4. **Gen 6 revisit only if**: redesigned with 50+ features + continuous sizing\\\n\\\n## Sim Speed Analysis (2026-08-09)\\\n\\\n| Setup | Speed | Notes |\\\n|-------|-------|-------|\\\n| 9 Gen2 (formula) | 133 h/s | Baseline |\\\n| 9 Tag_nn | 1300 h/s | Tight opponents = few multiway pots |\\\n| 9 Fish_nn | 4.8 h/s | 27× slower — loose = 5-7 way flops |\\\n| G63 + 8 mixed G48_nn | 9.9 h/s | Mixed = many multiway postflop situations |\\\n\\\n**Bottleneck**: Multiway postflop computation (G48 formula per active player per street), NOT NN inference.\\\n- RangeNet forward pass: ~0.1ms (fast)\\\n- MC budget (1K vs 10K): zero effect on speed\\\n- Loose opponents create exponentially more postflop decisions\\\n\\\n## Parallel Eval Script\\\n\\\n`/tmp/run_eval_parallel.sh <bot_type> <name_tag> <seeds...>`\\\n- MAX_PARALLEL=15 (32 cores available)\\\n- Generates per-seed TOML configs dynamically\\\n- 10 seeds × 5K hands in ~11 min (was 83 min sequential)\"],[1,\" bins, g60/g62/g63 + ppo + sweep2 configs, 8 sweep scripts, collect_gen5_preflop tooling, `data/gen5_transitions/` (17G)\\\n- Review fixes: chips/BB unit bug in street_bet_ratios (ratios were saturated at clamp), NN-blend+corrector hoisted out of narrow_enabled gate (was silently disabled with narrowing off), inert corr_max_boost removed, +2 tests (9 total)\\\n\\\n## Next Steps\\\n1. **Sanity Gate 1 NN gap** (in progress): add `--features holdem_bots/gen5_nn` to hand_replay invocation — then fix the exposed `4_5_99` turn-barrel (bet_threshold 0.085 on loose tables)\\\n2. **EquityNet (idea #1)**: range-conditioned equity histogram, trains on equity_v5_2m4, replaces multiway MC (10x sim speedup)\\\n3. **RangeNet v18 Tier-2**: per-combo Xpot profile as 169 extra inputs (merges corrector into net)\\\n4. **Live data collection** for RangeNet fine-tune (Torn VPIP 0.6-0.7 vs sim 0.08-0.40)\\\n5. NN-returns-None fallback (empty-range risk in production path)\\\n\\\n## Sim Speed (unchanged)\\\n9 Tag_nn 1300 h/s; 9 Fish_nn 4.8 h/s (multiway postflop = bottleneck, not NN). eval_9max.sh now parallel (8×4 threads); A/B harness `/tmp/kilo/run_ab_parallel.sh`.\"],[0,\"\\\n\\\n##\"]],\"start1\":270,\"start2\":270,\"length1\":2734,\"length2\":2359},{\"diffs\":[[0,\"dim,\"],[-1,\" 19.2M samples,\"],[0,\" 4.3\"]],\"start1\":2698,\"start2\":2698,\"length1\":23,\"length2\":8},{\"diffs\":[[0,\"els/\"],[-1,\"preflop_v1.safetensors` — PreflopNet 7-class (142K, abandoned)\\\n- `models/\"],[1,\"abandoned_gen6/` — \"],[0,\"preflop_\"],[1,\"v1, \"],[0,\"ppo_v1/v\"],[-1,\"2/v3.safetensors` — PPO models (178K each, abandon\"],[1,\"1b/v1c/v2/v3 (archiv\"],[0,\"ed)\\\n\"]],\"start1\":2736,\"start2\":2736,\"length1\":147,\"length2\":67},{\"diffs\":[[0,\"ms)\\\n\"],[-1,\"\\\n**\"],[0,\"53 base \"],[-1,\"features:**\\\n- Player \"],[1,\"(\"],[0,\"EMA \"]],\"start1\":2840,\"start2\":2840,\"length1\":40,\"length2\":17},{\"diffs\":[[0,\"ats \"],[-1,\"(\"],[0,\"11\"],[-1,\"): vpip, pfr, af, fold_to_bet, bet/raise/call/cbet/threebet/wtsd/call_raise_freq\\\n- Confidence (1): hands_observed / 50\\\n- Table stats (2): table_vpip, table_pfr\\\n- Position (3): normalized pos, is_sb, is_bb\\\n- Game context (5): pot_bb, stack_bb, num_active, num_seats, street\\\n- Board texture (4): high_rank, paired, monotone, connected\\\n- B\"],[1,\", confidence 1, table 2, position 3, game 5, board texture 4, b\"],[0,\"oard\"]],\"start1\":2859,\"start2\":2859,\"length1\":347,\"length2\":73},{\"diffs\":[[0,\"rds \"],[-1,\"(\"],[0,\"10\"],[-1,\"): 5 ranks + 5 suits\\\n- Max sizing per street (4): pot-fraction capped at 3×\\\n- In-hand\"],[1,\", max sizing 4,\"],[0,\" act\"]],\"start1\":2935,\"start2\":2935,\"length1\":96,\"length2\":25},{\"diffs\":[[0,\"tes \"],[-1,\"(\"],[0,\"9)\"],[-1,\": aggressive/passive counts per street + total_wagered_bb\\\n\\\n**\"],[1,\" + \"],[0,\"32 r\"]],\"start1\":2971,\"start2\":2971,\"length1\":72,\"length2\":13},{\"diffs\":[[0,\"story (8\"],[-1,\" per \"],[1,\"/\"],[0,\"street ×\"]],\"start1\":2997,\"start2\":2997,\"length1\":21,\"length2\":17},{\"diffs\":[[0,\" × 4\"],[-1,\" streets):**\\\n- num_raises, num_calls (0-3 each)\\\n- total_wagered_bb (log normalized)\\\n- max_bet_frac (largest bet as pot fraction)\\\n- faced_bet, first_action, last_action, aggression_ratio\\\n\\\nShared function:\"],[1,\"). Shared\"],[0,\" `co\"]],\"start1\":3012,\"start2\":3012,\"length1\":211,\"length2\":17},{\"diffs\":[[0,\"y()` in \"],[-1,\"`\"],[0,\"range_re\"]],\"start1\":3053,\"start2\":3053,\"length1\":17,\"length2\":16},{\"diffs\":[[0,\"r.rs\"],[-1,\"` — used by both training and inference.\"],[1,\".\\\n\\\n## Key Joplin notes\\\n- Improvement ideas top-10 + #7 implementation detail: `f3c42f44`\\\n- Roadmap: `47031623e2c6451fb36730ffe93380ea`\\\n- Sanity Check Policy: `d632cea3`\"]],\"start1\":3074,\"start2\":3074,\"length1\":44,\"length2\":172}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-08-15T10:25:30.793Z
created_time: 2026-08-15T10:25:30.793Z
is_locked: 0
type_: 13