feat(persona): W5.1-W5.5 Premium-A persona tests (audit #69 follow-up)#196
Merged
Conversation
Audits #69 (v1.9.0) and #71 (v1.10.0) both flagged that the persona- table claimed Wendy (Premium-A consumer) coverage existed but the W5.x workflows had never been authored. This PR ships the five W5.x persona tests via tests/test_w5_premium_a_personas.py, restores the persona acceptance spec at docs/pr13_prep/persona_acceptance_spec.md (lost when the docs/pr13_prep/ directory was historically purged), and bumps the snapshot count 17 → 22 in docs/persona_status_2026-05-28-w5x.md. The five workflows: W5.1 — Blueprint Casual Lookup (100 BB / no-ante / AKs, <100 ms warm-cache, 10 cells populated) — PR #174 (BlueprintLoader) W5.2 — Interpolated Depth Lookup (67 BB = 0.65 * v60 + 0.35 * v80 convex blend) — PR #173 (interp) + PR #181 (router) W5.3 — Blueprint → Postflop Chained on Qs7h2d, synthetic 2-class smoke fixture (production-scale OOM-blocked per the v1.10 perf roadmap; documented as a deferred follow-up) — PR #177 + PR #182 + PR #181 W5.4 — Custom Range Fallback (B10 override forces custom_live_solve, not blueprint_lookup) — PR #181 + B10 PRs #149/#154/#158 W5.5 — Ante Selection (40 BB / 72o shifts L1>0.05 across no/half/ full ante) — 27-shard bundle (chore `1783bef`) + PR #174 13/13 tests PASS in 1.13 s on M-series arm64. No engine code touched; docs + tests only. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
docs/pr13_prep/persona_acceptance_spec.md(was referenced by every persona snapshot but never landed on main) and added the Wendy persona block + W5.1-W5.5 workflow entries.docs/persona_status_2026-05-28-w5x.mdbumps the persona table 17/0/0/0 → 22/0/0/0.The five workflows
0.65 * v60 + 0.35 * v80convex blend)custom_live_solve, notblueprint_lookup)assets/blueprints/bundle (chore1783bef) + PR #174 (normalize_ante)Key finding (W5.3 caveat)
W5.3's production-scale fixture (shipped 169-class blueprint × full b300c line × Qs7h2d flop) currently OOMs at every credible class-filter setting per
docs/flop_subgame_perf_measurement_2026-05-28.md— even the floor configuration (top_k=2 / iter=2 / 3-class-hero × 2-class-villain) hits the 20-min hard timeout. The W5.3 persona test ships a synthetic 2-class smoke fixture that exercises the same three pipeline stages (lookup → 1326-expand → postflop solve) without the production-scale OOM. Thedocs/v1_10_postflop_optimization_plan.mdroadmap is the path to a production-scale W5.3 PASS; the spec line + status snapshot both document this as a deferred follow-up.This is not a new bug — the audits already knew the perf gap existed. The W5.3 spec line is authored to match what the engine can do today, and the synthetic-fixture caveat is explicit in three places (persona spec W5.3 entry, status snapshot §"W5.3 caveat", test-file docstring).
Test plan
pytest tests/test_w5_premium_a_personas.py -v— 13/13 PASS in 1.13 spytest tests/test_w5_premium_a_personas.py tests/test_blueprint_loader.py tests/test_blueprint_interp.py tests/test_solver_router.py tests/test_blueprint_subgame_wiring.py -v -m "not slow"— 127/127 PASS in 3.14 s (no regression on Blueprint/Loader/Interp/Router/Subgame tests)pytest tests/test_w5_premium_a_personas.py -v -m slow— 1/1 PASS in 0.93 s (W5.3 synthetic-fixture postflop solve)🤖 Generated with Claude Code