id: ed915e76f0204692a737cd7725785c8c
parent_id: 
item_type: 1
item_id: d632cea3d15f4323bbac7eda687f2467
item_updated_time: 1787493032610
title_diff: "[{\"diffs\":[[1,\"Sanity Check & Live Promotion Policy\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":36}]"
body_diff: "[{\"diffs\":[[1,\"# Sanity Check & Live Promotion Policy\\\n\\\n## Two tiers\\\n\\\n### Full Sanity Check (strategy changes, sweep optimizations, new features)\\\n\\\nRun: `scripts/sanity_check.sh <bot_config_name>`\\\n\\\nAll three gates MUST pass:\\\n\\\n1. **Hand tests** — All hand replay tests pass (`cargo test --release -p hand_replay`)\\\n2. **Self-play audit** — 1000 hands vs mixed chump/flock table:\\\n   - No panics or fatal errors\\\n   - Guardrail fires reviewed (low count acceptable, investigate patterns)\\\n   - Both candidate instances profitable\\\n3. **Performance vs field** — Positive BB/100 (3 seeds × 1000 hands each) against:\\\n   - Gen 2 (`cash_nl_gen2`)\\\n   - Gen 3 (`cash_nl`)\\\n   - Gen 4.5 (`cash_nl_g45`)\\\n   - Gen 4.7 (`cash_nl_g47`)\\\n   - Flock (`flock_bot`)\\\n   - Chump (`chump_bot`)\\\n   - Mixed field (all of the above together)\\\n\\\n### Hotfix Sanity Check (urgent live-play bug fixes)\\\n\\\nRequired before deploying a hotfix:\\\n\\\n1. **Hand tests** — All existing hand replay tests pass\\\n2. **New regression test** — At least one new hand replay test covering the observed issue\\\n3. **Self-play audit** — 1000 hands self-play, no panics, no guardrail anomalies\\\n\\\nFull performance sweep NOT required for hotfixes — the fix should be targeted and narrow.\\\n\\\n## Continuous Improvement\\\n\\\n- Hand test cases are continuously expanded — add new regression hands for any live-play issue discovered\\\n- If a hotfix passes but later causes regressions, add a full sanity check to the next regular update\\\n\\\n## Script Details\\\n\\\n`scripts/sanity_check.sh` implements the full check. For hotfixes, run steps 1-2 manually:\\\n\\\n```bash\\\n# Step 1: Hand tests\\\ncargo test --release -p hand_replay\\\n\\\n# Step 2: Add a new hand test for the issue, then re-run\\\n\\\n# Step 3: Self-play audit\\\nRUST_LOG=warn nice -n 19 ionice -c 3 ./target/release/holdem_bots --bot-dir configs/bots <selfplay_config.toml>\\\n# Check: grep for \\\"guardrail\\\\|panic\\\\|ERROR\\\" in output\\\n```\\\n\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":1873}]"
metadata_diff: {"new":{"id":"d632cea3d15f4323bbac7eda687f2467","parent_id":"2c8da247905946c3aa19eb4936e16323","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1783424680190,"markup_language":1,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-08-23T13:56:36.318Z
created_time: 2026-08-23T13:56:36.318Z
is_locked: 0
type_: 13