id: a7917b87885743a8aa08ba3245a808b6
parent_id: 5a114718299746fe981eaa927f150789
item_type: 1
item_id: 3073fa7641ab4c2f9cb9120a98eaa6e0
item_updated_time: 1786269030100
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"d 2026-0\"],[-1,\"7-31\"],[1,\"8-09\"],[0,\". Gen 5 \"]],\"start1\":41,\"start2\":41,\"length1\":20,\"length2\":20},{\"diffs\":[[0,\"g50 \"],[-1,\"pure NN. Gen 4 ends at g48\"],[1,\"+ RangeNet v17. Gen 6 abandoned. NN opponent pool mandatory\"],[0,\".\\\n\\\n#\"]],\"start1\":63,\"start2\":63,\"length1\":34,\"length2\":67},{\"diffs\":[[0,\"ostflop** |\\\n\"],[1,\"| `gen6_preflop` | Gen 6 | PreflopNet NN preflop — **ABANDONED** (-644 BB/100) |\\\n\"],[0,\"| `gen5_rl` \"]],\"start1\":715,\"start2\":715,\"length1\":24,\"length2\":105},{\"diffs\":[[0,\"ts (\"],[-1,\"sanity check / collection\"],[1,\"NN variants — mandatory for all sims/evals)\\\n| Config | Type |\\\n|--------|------|\\\n| `g48_fish_nn`, `g48_whale_nn` | Loose NN variants |\\\n| `g48_tag_nn`, `g48_nit_nn` | Tight NN variants |\\\n| `g48_station_nn`, `g48_lag_nn` | Passive/aggro NN variants |\\\n| `g48_maniac_nn`, `g48_reg_nn` | Aggressive/reg NN variants |\\\n| `cash_nl_gen2` | Gen 2 (EHS rollout) — speed benchmark only |\\\n\\\n### Legacy Opponent Bots (no NN — do not use for evals\"],[0,\")\\\n| \"]],\"start1\":901,\"start2\":901,\"length1\":33,\"length2\":438},{\"diffs\":[[0,\"variants\"],[1,\" (no NN)\"],[0,\" |\\\n\\\n## P\"]],\"start1\":1562,\"start2\":1562,\"length1\":16,\"length2\":24},{\"diffs\":[[0,\"26-0\"],[-1,\"7-31\"],[1,\"8-09\"],[0,\")\\\n\\\n*\"]],\"start1\":1612,\"start2\":1612,\"length1\":12,\"length2\":12},{\"diffs\":[[0,\"     + RangeNet \"],[1,\"v17 \"],[0,\"(pure NN, alpha=\"]],\"start1\":1913,\"start2\":1913,\"length1\":32,\"length2\":36},{\"diffs\":[[0,\"``\\\n\\\n\"],[-1,\"G50 = G48 + RangeNet (pure NN). Without range_model_path, it's identical to G48.\\\n\\\n\"],[0,\"## K\"]],\"start1\":1955,\"start2\":1955,\"length1\":90,\"length2\":8},{\"diffs\":[[0,\"nfig\"],[-1,\" with `range_alpha_min/max`, `range_model_path`\"],[0,\"\\\n- `\"]],\"start1\":2177,\"start2\":2177,\"length1\":55,\"length2\":8},{\"diffs\":[[0,\"s` —\"],[-1,\" `build_opponent_range_v2()`,\"],[0,\" heu\"]],\"start1\":2221,\"start2\":2221,\"length1\":37,\"length2\":8},{\"diffs\":[[0,\"tor`\"],[-1,\" — loads RangeNet, predicts ranges\"],[0,\", `p\"]],\"start1\":2422,\"start2\":2422,\"length1\":42,\"length2\":8},{\"diffs\":[[0,\")` (\"],[-1,\"combo-count fix\"],[1,\"hero+board exclusion\"],[0,\"), `\"]],\"start1\":2449,\"start2\":2449,\"length1\":23,\"length2\":28},{\"diffs\":[[0,\"en4/\"],[-1,\"profile\"],[1,\"mod\"],[0,\".rs` — `\"],[-1,\"PlayerStats`, `PlayerProfile`, three-tier blend\"],[1,\"build_ranges_and_equity()` (excluded_cards = hole.cards + board_cards)\"],[0,\"\\\n- `\"]],\"start1\":2512,\"start2\":2512,\"length1\":70,\"length2\":89},{\"diffs\":[[0,\"en4/\"],[-1,\"mod\"],[1,\"profile\"],[0,\".rs` — `\"],[-1,\"build_ranges_and_equity()` blends NN + heuristic (alpha=1.0 = pure NN)\"],[1,\"PlayerStats`, `PlayerProfile`, three-tier blend\"],[0,\"\\\n\\\n##\"]],\"start1\":2618,\"start2\":2618,\"length1\":89,\"length2\":70},{\"diffs\":[[0,\"ction (8\"],[-1,\"1\"],[1,\"5\"],[0,\" dims), \"]],\"start1\":2766,\"start2\":2766,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"Net \"],[-1,\"network \"],[0,\"(8\"],[-1,\"1\"],[1,\"5\"],[0,\"→512\"]],\"start1\":2881,\"start2\":2881,\"length1\":19,\"length2\":11},{\"diffs\":[[0,\"src/\"],[-1,\"gen5/rl_strategy.rs` — RL strategy (teacher\"],[1,\"bin/train_gen5_range.rs` — Range\"],[0,\" mode\"],[-1,\",\"],[1,\"l\"],[0,\" tra\"],[-1,\"nsition/range recording), `compute_range_input()`. Dead code: `model_infer_equity()`, `model_infer_combined()`\\\n- `holdem_bots/src/gen5/features.rs` — Feature dimensions (FEATURE_DIM=390, FULL=559)\\\n- `holdem_bots/src/gen5/actions.rs` — 11-action space + legality masking\\\n- `holdem_bots/src/gen5/recorder.rs` — JSONL transition recorder\\\n- `holdem_bots/src/bin/train_gen5_range.rs` — Range model training CLI\\\n\\\n### Shared Infrastructure\\\n- `holdem_bots/src/cash/rollout_postflop_base.rs` — shared postflop base\\\n- `holdem_bots/src/cash/rollout_post\"],[1,\"ining CLI\\\n\\\n### Gen 6 PreflopNet (abandoned)\\\n- `holdem_bots/src/gen4/gen6_preflop.rs` — Gen6 preflop strategy (loads PreflopNet, 7-class → Actions)\\\n- `holdem_bots/src/gen5/preflop_net.rs` — PreflopNet (15→128→128→128→7), PreflopTrainer, PreflopInference (GPU), PreflopNetPPO, PpoTrainer, PpoInference (GPU)\\\n- `holdem_bots/src/bin/train_gen5_preflop.rs` — 7-class imitation trainer\\\n- `holdem_bots/src/bin/train_gen5_preflop_ppo.rs` — PPO trainer (Phase 1 value, Phase 2 full PPO)\\\n- `holdem_bots/src/bin/collect_gen5_preflop.rs` — Imitation data collector (postflop fold shortcut)\\\n- `holdem_bots/src/bin/collect_gen5_pre\"],[0,\"flop_\"],[-1,\"gen3\"],[1,\"ppo\"],[0,\".rs` — \"],[-1,\"Gen3 equity, `compute_equity_with_ranges`\"],[1,\"PPO data collector (full hands, hero-only)\\\n\\\n### Shared Infrastructure\"],[0,\"\\\n- `\"]],\"start1\":2942,\"start2\":2942,\"length1\":660,\"length2\":751},{\"diffs\":[[0,\"nutpot)\\\n\"],[1,\"- `holdem_bots/src/common/gpu_mc.rs` — GPU Monte Carlo kernel\\\n\"],[0,\"- `holde\"]],\"start1\":3770,\"start2\":3770,\"length1\":16,\"length2\":78},{\"diffs\":[[0,\"registry\"],[1,\"\\\n- `holdem_bots/src/lib.rs` — `register_bot_from_config()` (pre-resolves configs, re-assembles per instance)\"],[0,\"\\\n\\\n### Co\"]],\"start1\":3897,\"start2\":3897,\"length1\":16,\"length2\":124},{\"diffs\":[[0,\"ure NN, \"],[-1,\"alpha=1.0\"],[1,\"range_v17\"],[0,\")\\\n- `con\"]],\"start1\":4082,\"start2\":4082,\"length1\":25,\"length2\":25},{\"diffs\":[[0,\" live config\"],[1,\" (range_v17, 40K MC budget)\"],[0,\"\\\n- `configs/\"]],\"start1\":4147,\"start2\":4147,\"length1\":24,\"length2\":51},{\"diffs\":[[0,\"ts/g\"],[-1,\"en5_equity_collect.toml` — range data collection (formula-only, no action models)\\\n- `configs/live_bots.toml` — bot auto-detection profiles (default: cash_nl_g50_live)\\\n- `configs/live_server.toml` — live_server gateway config\\\n\\\n### Scripts\\\n- `scripts/sanity_check.sh` — mandatory pre-live validation (3 gates)\\\n- `scripts/gen5_equity_collect.sh` — range data collection (8 tables)\\\n- `scripts/range_rolling_train.sh` — rolling training at 1M milestones\\\n- `scripts/eval_9max.sh` — 9-max evaluation suite\\\n- `scripts/eval_mixed_field.sh` — mixed opponent field evaluation\\\n- `scripts/sweep.sh` — parameter sweep tool\\\n\\\n### Live Integration\\\n- `live_server/src/` — Axum gateway\\\n- `poker_protocol/src/` — wire types\\\n- `hand_replay/` — regression testing\"],[1,\"48_{fish,whale,tag,nit,station,lag,maniac,reg}_nn.toml` — NN opponent variants\\\n- `configs/bots/cash_nl_g60.toml` — Gen6 PreflopNet (abandoned)\\\n- `configs/bots/cash_nl_g62.toml` — Gen6 PPO v2 (abandoned)\\\n- `configs/bots/cash_nl_g63.toml` — Gen6 PPO v3 (abandoned)\\\n\\\n### Scripts\\\n- `scripts/sanity_check.sh` — mandatory pre-live validation (3 gates)\\\n- `/tmp/run_eval_parallel.sh` — parallel eval (MAX_PARALLEL=15, generates per-seed TOML)\"],[0,\"\\\n\\\n##\"]],\"start1\":4273,\"start2\":4273,\"length1\":749,\"length2\":442},{\"diffs\":[[0,\"e_v1\"],[-1,\"4_b1\"],[1,\"7\"],[0,\".saf\"]],\"start1\":4866,\"start2\":4866,\"length1\":12,\"length2\":9},{\"diffs\":[[0,\"sors` — \"],[-1,\"current\"],[1,\"Production\"],[0,\" RangeNe\"]],\"start1\":4879,\"start2\":4879,\"length1\":23,\"length2\":26},{\"diffs\":[[0,\"Net \"],[-1,\"model \"],[0,\"(8\"],[-1,\"1\"],[1,\"5\"],[0,\"-dim, \"],[-1,\"1M samples)\\\n- `/home/jan/gen5_data/equity_v3/` — current range data collection (~1.7\"],[1,\"4.35% top-1, 24.2% top-10)\\\n- `models/preflop_v1.safetensors` — PreflopNet 7-class (abandoned)\\\n- `models/preflop_ppo_v1/v2/v3.safetensors` — PPO models (abandoned)\\\n- `/home/jan/gen5_data/equity_v5_2m4/` — Complete range data (19.2\"],[0,\"M sa\"]],\"start1\":4903,\"start2\":4903,\"length1\":107,\"length2\":246},{\"diffs\":[[0,\" samples\"],[1,\", 85-dim\"],[0,\")\\\n\\\n## Ge\"]],\"start1\":5146,\"start2\":5146,\"length1\":16,\"length2\":24},{\"diffs\":[[0,\"tats\"],[-1,\" (last config: `cash_nl_g48`)\"],[0,\"\\\n- G\"]],\"start1\":5353,\"start2\":5353,\"length1\":37,\"length2\":8},{\"diffs\":[[0,\"Net \"],[-1,\"(1 NN: neural range prediction, pure NN alpha=1.0) — config: `cash_nl_g50`\\\n- Gen 6 (future) = Gen 5 + RL for continuous improvement through self-play\"],[1,\"v17 (pure NN alpha=1.0) — **production**\\\n- Gen 6 = PreflopNet/PPO preflop — **abandoned** (-644 BB/100)\"]],\"start1\":5387,\"start2\":5387,\"length1\":153,\"length2\":107}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-08-09T09:53:33.219Z
created_time: 2026-08-09T09:53:33.219Z
is_locked: 0
type_: 13