Win-Rate Observatory · methodology v2
How PlaySolitaire measures win rates
This page owns the definitions, filters and uncertainty treatment behind PlaySolitaire’s corrected player win rates. It describes dataset win-rates-v2-2026-10-21; it does not combine measured completion with theoretical solvability.
Definitions
- Start
- One valid production
game_startcarrying methodology version 2 and a complete, stable game context. - Win
- At most one valid
game_wonjoined to that start. Winning, undoing and winning again still contributes one win. - Open mature start
- A start old enough to enter the cohort with no observed terminal event by the observation bound. It remains in the denominator as not won.
- Measured completion
- Eligible wins divided by eligible mature starts. It describes observed play, not whether every deal had a possible solution.
- Solvability
- The share of deals for which a winning line exists under the stated rules and evidence method.
How measured completion is calculated
BigQuery deduplicates delivery by (user_pseudo_id, event_id) and joins a lifecycle by
(user_pseudo_id, attempt_id). Each eligible attempt has one start, zero or one terminal,
no terminal before its start and one stable deal, game, mode and pool context. No raw user, attempt,
event or deal identifier appears in the public files.
Practice boards and demos do not emit eligible lifecycle events. Daily games and Klondike winnable or golden pools are excluded. Draw 2 remains an internal cohort. Current Random two-suit Spider is kept separate from legacy Random and every verified difficulty tier.
Sample period, maturity and consent
The inclusive instrumentation cutover is . Published starts run through the exclusive bound , and outcomes are observed through . The primary maturity buffer is 48 hours; 24- and 72-hour reads are retained as sensitivity checks.
Only analytics-granted sessions are observable. The sample therefore does not represent every visitor, and players self-select games, suit counts and draw modes. Unlimited undo is included. These selection effects are limitations, not adjustments made after seeing the results.
A row requires at least 500 eligible starts. Below that floor its public status is
INCONCLUSIVE_LOW_VOLUME, and its counts and rate are suppressed rather than rounded into a claim.
Confidence intervals and interpretation
Every published rate includes a two-sided 95% Wilson binomial interval calculated from its exact wins and starts. Rates and bounds are displayed to one decimal percentage point. The interval describes sampling uncertainty within this observed cohort; it does not remove consent bias, player self-selection, device differences or rule and pool differences.
Solvability evidence
Exact means exhaustive search settled every sampled deal. Lower bound means the solver proved wins within a search budget and the true share may be higher. Catalog refers to an established numbered-deal catalog. Literature estimate identifies an external published estimate where PlaySolitaire does not own an exact solver result. None of these figures is a player win rate.
Pyramid: a bounded pool-curation sample
The original 4 July 2026 curation record tested sequential seeds 1–1,520 and stopped after finding 1,000 fully clearable deals. Four searches reached the 12,000,000-state limit without a decision. The confirmed-win share, 1,000 / 1,520 (about 65.8%), is a lower bound for that sample. It is not an exhaustive classification, a population estimate from a fixed random sample, or a player win rate.
The rules require removing all 28 pyramid cards, with draw-one stock and two redeals; unused stock may remain.
The source is the original src/engine/pyramid/winnableSeeds.ts curation record at commit
98b9cb97, together with scripts/curate-pyramid-seeds.ts and the Pyramid solver.
The curation command stops at 1,000 proved wins and skips budget-exhausted searches. This record is preserved
in source history; a per-deal transcript for all 1,520 searches has not been recovered.
The current playable pool is a later revision: seeds 530 and 1,338 were replaced by 1,521 and 1,522 after checking the live hint budget. That replacement is separate from the original 1,520-deal sample. It does not change the historical denominator or prove that every random deal is winnable.
Golf: strict rules and an exhaustive sample
The July 2026 reproduction used scripts/bench-golf.ts 2000 for seeds 1–2,000, with the
solver’s 8,000,000-state cap per deal. It reported 26.8% fully clearable, rounded to about 27%, with
no budget-exhausted deals. A fresh run on 9 October 2026 reproduced 536 / 2,000 wins (26.8%)
with zero budget-exhausted searches. A win clears all 35 column cards. Only exposed column ends can move;
ranks differ by one, aces do not wrap to kings, kings accept no further card, and the stock has one pass.
The method is recorded in scripts/bench-golf.ts, src/engine/golf/solver.ts
and the 4 July 2026 Observatory release record. The percentage concerns those tested deals under those rules.
The separate 1,000-deal playable pool contains verified starts; neither figure measures player completion.
Scorpion: solutions found within a search budget
The recorded test of seeds 1–1,000 found 128 wins (12.8%), with 224 searches reaching the 150,000-position
budget and 648 ending without a winning line. scripts/bench-scorpion.ts scorpion 1000
uses the engine’s same-suit placement, movable unordered groups, kings-only empty columns and single
three-card reserve deal. Winning means four complete king-to-ace runs.
The solver also caps search depth at 400 moves. Consequently, an unsuccessful bounded search is not a
general proof of impossibility. At least 12.8% of this sample was solved; unresolved deals remain unresolved.
The source is scripts/bench-scorpion.ts and src/engine/scorpion/solver.ts,
recorded with the July 2026 solver benchmark. This is known-deal computer search, not human play against hidden cards.
Wasp uses the same engine and budget. A run of scripts/bench-scorpion.ts wasp 1000 on
21 October 2026 found 857 wins (85.7%), with 26 searches reaching the budget and 117 ending without a
winning line. The earlier 77.9% came from a solver that could not lift a finished king-to-ace run off
face-up cards. That fix left every Scorpion result unchanged; a fresh Scorpion run reproduced 128 wins.
Yukon: solutions found within a search budget
A run of scripts/bench-yukon.ts yukon 1000 on 21 October 2026 tested seeds 1–1,000 with the
hint solver’s 150,000-position budget and 400-move depth cap. It found 729 wins (72.9%); 241 searches
reached the budget and 30 ended without a winning line. Winning means moving all 52 cards to the foundations.
Earlier releases showed an unscripted estimate of about 75%; this recorded run replaces it. At least 72.9%
of this sample was solved, and unresolved deals remain unresolved. The source is
scripts/bench-yukon.ts and src/engine/yukon/solver.ts.
Reproduce the release
- Run
scripts/win-rates-v2.sqlin EU datasetanalytics_361367397with the recorded cutover, cohort and observation bounds. - Require the complete aggregate quality ledger and zero hard-gate failures.
- Generate the reviewed manifest with
scripts/gen-win-rates-v2.mjs. - Generate JSON, CSV and charts from that manifest, then require exact cross-format parity.
Series and correction history
| Date | Change | Reason and effect |
|---|---|---|
| 2026-06-30 | Methodology v1 frozen at its historical JSON URL. | Aggregate event counts could miss initial attempts or repeat a win after undo. The series remains available but is not blended with v2. |
| 2026-08-05 | Published win-rates-v2-2026-08-05 as the first corrected attempt-lifecycle release. | Replaced the report’s measured series; theoretical solvability conclusions did not change. |
| 2026-10-09 | Corrected Pyramid’s solver classification in win-rates-v2-2026-10-09. | The original sample had four unresolved searches. Its 65.8% is a lower bound, not an exact rate. Player counts, cohort dates and intervals are unchanged. |
| 2026-10-21 | Corrected Yukon, Wasp and Klondike solver evidence in win-rates-v2-2026-10-21. | Yukon’s unscripted “about 75%” became a recorded lower bound of at least 72.9%. A solver fix raised Wasp’s lower bound from 77.9% to 85.7%. Klondike Draw 1 now quotes the primary study’s thoughtful-play estimate of 90.48% (±0.12). Player counts, cohort dates and intervals are unchanged. |
The August JSON and CSV, and the 9 October JSON and CSV, remain unchanged historical snapshots. The August Pyramid “exact” label and the earlier Yukon, Wasp and Klondike figures are superseded by these corrections. The frozen v1 download has the same historical labels; use the current release for the corrected solver evidence. The October release dates do not imply newer player observations.