id: 0d7fade94ba847538c5d90111186a588
parent_id: 2dd0829047f14b4d82e63a0f9135553d
item_type: 1
item_id: 47031623e2c6451fb36730ffe93380ea
item_updated_time: 1784188602267
title_diff: "[]"
body_diff: "[{\"diffs\":[[1,\"# Roadmap\\\nID: 47031623e2c6451fb36730ffe93380ea\\\nNotebook ID: 2c8da247905946c3aa19eb4936e16323\\\nCreated: 1780223822831\\\nUpdated: 1784187489397\\\nIs Todo: No\\\nTags: poker, project-plan, active-project\\\n\\\n---\\\n\\\n\"],[0,\"# Roadmap\\\nID: 47\"]],\"start1\":0,\"start2\":0,\"length1\":16,\"length2\":215},{\"diffs\":[[0,\"0388132\\\n\"],[-1,\"\"],[0,\"Is Todo:\"]],\"start1\":330,\"start2\":330,\"length1\":16,\"length2\":16},{\"diffs\":[[0,\"res)\\\n- [\"],[-1,\" \"],[1,\"x\"],[0,\"] Per-pl\"]],\"start1\":3498,\"start2\":3498,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"le VPIP)\"],[1,\" — DONE (2026-07-16): G48 `opp_looseness()` now keys off the bettor's individual VPIP (`aggressor_vpip`), falling back to table VPIP when first-in. Thresholds now match the per-player range equity in `build_ranges_and_equity`.\"],[0,\"\\\n- [ ] C\"]],\"start1\":3565,\"start2\":3565,\"length1\":16,\"length2\":242},{\"diffs\":[[0,\"so`)\\\n2. \"],[-1,\"**\"],[1,\"~~\"],[0,\"Per-play\"]],\"start1\":6657,\"start2\":6657,\"length1\":18,\"length2\":18},{\"diffs\":[[0,\"ness\"],[-1,\"** — use individual VPIP instead of table-level VPIP\"],[1,\"~~ ✅ DONE (2026-07-16) — G48 thresholds now use the bettor's individual VPIP (was table-level); `aggressor_vpip()` with graceful fallback. Live server rebuilt & restarted.\"],[0,\"\\\n3. \"]],\"start1\":6683,\"start2\":6683,\"length1\":60,\"length2\":179}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-07-16T08:06:39.317Z
created_time: 2026-07-16T08:06:39.317Z
type_: 13