id: 3f5e1070b921452694745d640fd2f4d9
parent_id: 9d2a0e1a63c547f5971d70908c140ac8
item_type: 1
item_id: ec1518e71453490f8fe5ab75cff7180c
item_updated_time: 1786827551799
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"8-15\"],[-1,\", late)\\\n\\\n> **Production\"],[1,\"/16 overnight — EquityNet build)\\\n\\\n> **Live\"],[0,\": G51 \"],[-1,\"= \"],[1,\"(\"],[0,\"G48 \"]],\"start1\":30,\"start2\":30,\"length1\":39,\"length2\":57},{\"diffs\":[[0,\"_cc \"],[-1,\"value-bet gate.** Deployed live (persistent server, 56b99f0). Commits 58e3456 (NN fallback), 56b99f0 (eq_cc gate).\\\n\\\n## New this session: eq_vs_continue decision math\\\n\\\n**The math**: a bet's value term is `(2·eq_cc − 1)·bet` vs the range that CONTINUES — raw hs assumes callers ≈ current range, collapsing on monotone flops/capped lines (4_5_99 class).\\\n\\\n- `gen4/decision_math.rs`: `continuing_range()` filters a range by P(continue|hand,size,freq) via corrector likelihood curves (call/bet_likelihood public); `equity_vs_continue()` = hero equity vs filtered range, heads-up enumeration. `ContinueFilter::{Call, CallOrRaise, None}` — one primitive for bet/raise/(future) call paths. Designated FutureActionNet swap point.\\\n- `Gen3Equity.eq_vs_call` computed heads-up in `build_ranges_and_equity` when corrector on.\\\n- First-in value bets gated on `eq_cc ≥ eq_cc_min` (0.52, TOML, 0=off); bluff path exempt.\\\n- **4_5_99 PASSES** (un-ignored): turn bet vetoed at eq_cc=0.25 vs hs=0.40; river fold ✓.\\\n- **7_6 kept ignored** (agreed): KK river thin-value vs capped line — range-accuracy defect (needs sequence-aware modeling / offline likelihood fit); not a leak, one missed bet in a specific line pattern.\\\n- eq_cc_min swept 0.48/0.56 vs TAG+Fish: flat\"],[1,\"gate), persistent server.** Overnight: EquityNet (idea #1) phases 1-5 implemented; data collection + first training running autonomously.\\\n\\\n## EquityNet progress (idea #1) — commits 1190941, 9b95def, 55a01ad, 785986f, adc3d15\\\n\\\n**Implemented (all tested, 532 lib tests):**\\\n- `gen5/equity_recorder.rs`: decision-context tap in build_ranges_and_equity (post-corrector ranges; zero-overhead atomic flag; EQUITY_RECORDER_PATH env) + exact-enumeration labels at cards_revealed_event (flop 990/turn 44/river 1 runouts vs actual holdings; split-adjusted equity; ppot/npot/nutpot/rpot same enumeration) + JSONL (per-hand flush; compact floats 26KB→9.5KB)\\\n- `gen5/equity_net.rs`: permutation-invariant net — shared per-opponent encoder 169→128→64, mean‖max pool, trunk 497→512 residual →256, 5 sigmoid heads. 4 tests incl. permutation invariance\\\n- `bin/train_gen5_equity.rs`: convert (JSONL→binary, 2% hash val split) + train (n_opp-bucketed batches, warmup+cosine, per-head MAE + calibration slope, best checkpoint). GPU smoke-tested end-to-end\\\n- **Shadow mode**: Gen48Config `equity_net_path` + `equity_nn_enabled` (default false=shadow log-only; true=replace MC). Shadow log via EQUITY_SHADOW_LOG env; `cash_nl_g52.toml` ready\\\n- Tooling: `scripts/equity_shadow_run.sh` (turnkey shadow sim vs 8 g51-Tag) + `equity_shadow_analyze.py` (per-head MAE, HU/MW split, calibration slope, gate verdicts)\\\n\\\n**Running overnight (persistent background processes):**\\\n1. Collection: 8 tables, g51 pipeline all seats (v17+corrector+eq_cc — train/infer match), neutral g51_*_nn pool → `/home/jan/gen5_data/equity_v6` (~10.4M samples cap, ~500/s; done ~03:00)\\\n2. Pipeline (`/tmp/kilo/overnight_equity_pipeline.sh`): waits for collection → convert 3M cap → train equity_v1 (4 epochs, bs 512, lr 5e-4) → `models/equity_v1.safetensors` (log: equity_v6/overnight_pipeline.log)\\\n\\\n**Acceptance gates (plan):** hs MAE ≤0.03 HU / ≤0.045 MW, slope 0.9-1.1; then shadow run (≥1M decisions); then g52 A/B + sanity gates\"],[0,\" (\"],[1,\"u\"],[0,\"se\"],[-1,\"ed noise), 0.52 retained.\\\n- Validation: 523 lib tests, Harrington 52+1ign, sanity 10/10 (TAG +2.0), 9-max neutral, h2h g50 neutral.\\\n\\\n## Live status\\\n- Server persistent (survives session reloads), pid tracked, `cash_nl_g51_live` default (eq_cc_min=0.52 in config)\\\n- Config-reload kill risk: mitigated by persistent lifetime; reconnect is automatic anyway\\\n\\\n## Next Steps\\\n1. EquityNet (#1) — next multi-day project (planning session first)\\\n2. 7_6: offline likelihood fit from equity_v5_2m4 → sequence-aware capping\\\n3\"],[1,\" the new sanity-gate command: fmt/clippy/test) before any sim adoption; live only after full policy.\\\n\\\n**Morning checklist:**\\\n1. `tail /home/jan/gen5_data/equity_v6/overnight_pipeline.log` — training metrics\\\n2. `bash scripts/equity_shadow_run.sh 5000` — shadow gates\\\n3. If gates pass: A/B `run_ab_parallel.sh cash_nl_g52 cash_nl_g51 eqAB 10000 42 200 1337 7777 31415` + eval_9max + sanity_check.sh cash_nl_g52\\\n4. If gates fail: check `equity_shadow_analyze.py` breakdown (street/n_opp), consider more data or lr/epochs\\\n\\\n## Earlier 2026-08-15 (all committed, pushed)\\\n- G51 corrector (35b4fc6), parser+gate fix (0b18e88), NN fallback (58e3456), eq_cc gate (56b99f0), review fixes (8b467cc) — see previous revision. Harrington: 52 pass / 1 ignored (7_6). Sanity 10/10 ×5. h2h vs g50: dead heat.\\\n\\\n## Backlog (post-EquityNet)\\\n1. 7_6 sequence-aware capping (offline likelihood fit)\\\n2\"],[0,\". Fu\"]],\"start1\":118,\"start2\":118,\"length1\":1768,\"length2\":2869},{\"diffs\":[[0,\"#4) \"],[-1,\"replaces curve\"],[1,\"— drop\"],[0,\"s in\"],[1,\"to\"],[0,\" equ\"]],\"start1\":3002,\"start2\":3002,\"length1\":26,\"length2\":20},{\"diffs\":[[0,\"inue\"],[-1,\"\\\n4. Live data fine-tune of RangeNet\\\n5. Call-path eq_cc (knob-gated, off) after live soak of bet path\"],[1,\" / ContinueFilter\\\n3. Live RangeNet fine-tune (Torn data)\\\n4. Call-path eq_cc (knob-gated)\\\n5. RangeNet v18 Tier-2; repo-wide `cargo fmt` debt (sanity-gate enforces; ~1000 pre-existing diffs in untouched files)\"],[0,\"\\\n\\\n##\"]],\"start1\":3033,\"start2\":3033,\"length1\":108,\"length2\":215},{\"diffs\":[[0,\"Key \"],[-1,\"Joplin \"],[0,\"note\"]],\"start1\":3249,\"start2\":3249,\"length1\":15,\"length2\":8},{\"diffs\":[[0,\"-10 + #7\"],[1,\"/#1\"],[0,\" detail:\"]],\"start1\":3270,\"start2\":3270,\"length1\":16,\"length2\":19},{\"diffs\":[[0,\"3c42f44`\"],[-1,\"\\\n-\"],[1,\" |\"],[0,\" Roadmap\"]],\"start1\":3292,\"start2\":3292,\"length1\":18,\"length2\":18},{\"diffs\":[[0,\"1623\"],[-1,\"e2c6451fb36730ffe93380ea`\\\n- Sanity Policy: `d632cea3\"],[1,\"` | Sanity Policy: `d632cea3`\\\n- Plan file: `.kilo/plans/1786732427268-equitynet-plan.md\"],[0,\"`\"]],\"start1\":3317,\"start2\":3317,\"length1\":57,\"length2\":92}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-08-15T21:05:34.096Z
created_time: 2026-08-15T21:05:34.096Z
is_locked: 0
type_: 13