Repository navigation
v1.6.0: GUI Gate 2 (range editor, RvR, node-locking, asymmetric, slider tiers)
⚠️ CRITICAL — v1.6.0.dmgis BROKEN. Do NOT launch from Finder.The
.appbundle has a multiprocessing fork-bomb: launching from
Finder causes uncontrolled process spawning that can freeze your Mac.
Root cause is a missingmultiprocessing.freeze_support()call in
scripts/pyinstaller_entry.py. The patch is in flight on
PR #42; a
repackaged.dmgwill ship in v1.7.2.Until v1.7.2, install from source instead:
git clone https://github.com/amaster97/poker_solver.git cd poker_solver pip install -e .Full RCA:
docs/dmg_spawn_loop_rca_2026-05-26.mdon the
pr-78-dmg-freeze-support-fixbranch.
v1.6.0 — GUI Gate 2
User-facing surfaces for v1.3.0+ engine features that were previously library-only.
New in this release
- Range editor: per-hand weight editing (drag/paste/preset ranges); state round-trips through solver
- Range-vs-range UI: in the GUI, not just the library
- Node-locking controls: freeze a node's strategy and re-solve against it (exploitative analysis primitive)
- Asymmetric contributions input: per-player pot contribution (for non-standard stack/contribution scenarios)
- Exploitability slider: Draft (1% pot) - Standard (0.5%) - Tight (0.25%) - Library (0.1%) - tier numeric defaults measured against the real solver
Install
git clone https://github.com/amaster97/poker_solver.git
cd poker_solver
pip install -e .See README.md for full quick-start and library usage.
macOS installer
Poker-Solver-1.6.0-arm64.dmg attached below. Apple silicon (arm64) only. Adhoc-signed (no Apple Developer enrollment) — on first launch, right-click → Open, or System Settings → Privacy & Security → Open Anyway.
For users who prefer source install, pip install -e . is supported and recommended for non-arm64 Macs.
Known issues
- .dmg installer: CRITICAL — DO NOT LAUNCH (see warning at top of these notes). Source install via
pip install -e .is the only safe path until v1.7.2 ships a repackaged .dmg. The earlier "experimental" framing here understated the danger. - v1.5.0 Brown apples-to-apples acceptance test: currently fails at deep-cap facing-raise spots. Per docs/aggregator_vs_true_nash_explainer.md, three independent code reviews verified the vector-form CFR is structurally faithful to Brown's reference; an empirical divergence at deep-cap A83 spots is under investigation (root cause identified: a non-zero-sum vs zero-sum payoff convention divergence; documentation + tolerance widening in v1.6.1 candidate).
- Range fractional-frequency: set-membership only in current Range class. Refactor scoped for a future release.
What's next
- v1.6.1: engine bundle (Python delegate + paired cap-guard + tolerance docs)
- v1.7.0: aggregator->vector wiring (
solve_range_vs_range_nashAPI) + CLI subcommands