# ICM Trainer Quick Play: authored result fixture

Checked September 30, 2026. This is an original editorial counting exercise,
not a poker solve, app export, customer record or test of learning.

## Reproduce

Download fixture.json, expected.json and verify.py into one folder. Run:

    python verify.py

Python 3.9+ and its standard library are sufficient. No package install, account,
network access or app is needed. SHA256SUMS records the four files in this bundle.

The ten authored hands alternate preflop and postflop. Nine have one supplied
decision each; the last postflop hand has three. There are ten Best Move grades
with score 100, one Correct with score 80 and one Mistake with score -20.
Grade `wrong` maps to the visible label Mistake. Grades/scores are inputs.
They are not derived from cards, action frequencies or EVs.

Accuracy counts Best Move and Correct decisions: 11/12, displayed as 92%.
Average score is 1060/12, displayed as 88. One hand's worst grade is Mistake;
the nine other hands' worst grade is Best Move. The hand labels are not the
denominator of the accuracy calculation.

The verifier uses exact fractions and checks hand/decision order invariance.
The inputs are deterministic: no sampling, seed or population estimate applies.
This is a deliberately small aggregation example, not a general scoring engine.
The displayed rounding check is scoped to these positive fixture values.

## What was checked in the app source

ICM Trainer source declared version 1.2.0+5. Existing Quick Play unit/widget
tests, targeted preflop/seat-picker tests and a locally authored result-component
test were run using Flutter 3.47.2 / Dart 3.13.2. The authored component test
consumed this same fixture and verified 10 hands, 12 decisions, 92%, 88,
decision-grade counts and a worst-grade hand summary. All ten result rows have
no tap callback. The tested results controls invoked their respective callbacks.
No private app source, solve rows or raw customer data is included here.

This was not an installed-store, purchase, end-to-end live-library, persistence,
network-failure or solver-correctness test. Source tests can differ from shipped
binaries. Test fonts used local fallbacks; no app screenshot is published.

## Manual check after an app update

1. Record app version/platform and whether postflop is accessible.
2. On Home, distinguish the Quick Play entry card from the bottom Train tab.
3. During a run, inspect surprising feedback before advancing. Record only the
   context you can see: stage, stack profile, seats, cards, action line, chosen
   action and displayed alternative. Mark missing details unknown.
4. On completion, read both hands and decisions. Check whether hand rows still
   summarize worst grades and whether the current app permits opening them.
5. Use Done, then Train and the appropriate preflop/postflop path to choose a
   context for follow-up. A matching profile does not guarantee the same hand.

The public article links current official Apple/Google product pages. Interface
and access claims need rechecking after updates. Study away from live play.
