PRM Verification Pack
Four sections. Run the Golden Saturday scenario with six shooters, verify the screen map splits jobs correctly, check every invariant, then walk both apps side-by-side. If names, totals, and order match — the other app is built correctly even if the buttons say different words.
Section 1
PRM · Centerfire
2 · 4 shots each (max 8)
Rooftop (TB) · Tank Trap not TB
Overtime stop · Squad 1 · FO 1–6 · Cap 6
| # | Shooter | Tank Trap | Rooftop | Outcome | Total | TB time |
|---|---|---|---|---|---|---|
| 1 | Alex Hart | 4 | 3 | scored | 7 | 82s |
| 2 | Harper Cole | 3 | 4 | scored | 7 | 88s |
| 3 | Logan Pierce | 3 | 2 | DNF Rooftop(hits kept) | 5 | 95s or none |
| 4 | Dana Price | 2 | — | DNS Rooftop(still a card) | 2 | — |
| 5 | Reed Dalton | 1 | 2 | scored (walk-up) | 3 | 91s |
| 6 | Jules Romero | 4 | 3 | scored | 7 | 79s |
Expected Podium
Validation Checks
Section 2
| Job | Must be its own place |
|---|---|
| Public bulletin | home |
| Tribe | range/club (not mixed into league) |
| League | own place — no pad here |
| Write the book | builder |
| Saturday clipboard | match workspace (no Feed/Followers chrome) |
| RO phone | pad — firing order, next after submit |
| Morning | check-in + walk-up |
| Boxes | squadding + start stage |
| MD grid | desk |
| TV | clubhouse board |
| Year | series standings |
Section 3
Range ≠ league ≠ match ≠ series
Four distinct entities — never collapsed.
One book, one fee, one podium
A side match is another book, not a tab.
Formats: PRM and Hunter only
No third scoring style.
Pad = firing order; Registered list = A–Z
Pad follows squad/firing order; roster is alphabetical.
MOVE never scores
A MOVE target is never a hit.
Time stored only if TB on
No TB stage → no time field written.
DNF keeps hits; DNS = 0 and still Completes
DNF preserves partial score; DNS zeroes the stage but the card exists.
Shooters cannot score
Only RO/staff can open the pad.
Pay not required to register
Registration and payment are decoupled.
Waitlist is not a seat
Waitlisted shooter doesn't count against capacity.
Finalize blocked until every seat has card/DNS/DNF on every stage
No partial finalize.
Finalize writes series; one-off writes none
Standalone match → no series record.
PRM series: winner 100; Hunter series: raw
PRM normalizes to 100 for the winner; Hunter uses raw totals.
Offline = this phone last-write
Mesh is not required. Claiming mesh is a fail if it doesn't work.
No external sync required
Payments are manual (Venmo or cash). No external sync.
Section 4
Open this PRM and the other app. Same six people. Don't grade pixels.
Screenshot both boards.
If the names, totals, and order match, the other app is built correctly — even if the buttons say different words.