Active · responded Yes
std-active-yes→standard · active
Calendar row shows because the response is Yes (Session 56 gate).


FUN-399 · conformance proof sheet · 2026-07-23
_v2 canonicalsEach row puts the rebuilt page beside the canonical mockup for the same state. Both are 420 px headless-Chrome captures at the same scale, so they register line-for-line. The mockups' dev toolbars were stripped before capture, so they render the way production would.
6 page types22 stateslight + dark mockups pulled from Drive at build startAPI 80/80 tests green
22 / 22 states match
Active · responded Yes
std-active-yes→standard · active
Calendar row shows because the response is Yes (Session 56 gate).


Active · no response yet
std-active-none→standard · active
The mockup only ships the Yes-selected default. Here nothing is selected and the Calendar row is correctly absent.


Past
std-past→standard · past
Neutral grey banner. Response and compose sections drop out; RSVP stays for history.


Cancelled
std-cancelled→standard · cancelled
Error-red banner.


Active · two slots voted
su-active→syncup · active
Stacked multi-select, solid-orange when selected, “None of these” last.


Cancelled
su-cancelled→syncup · cancelled


Closed
su-closed→syncup · closed
Info-blue banner — the state the server now returns once a winner is picked.


Active
pc-active→pulsecheck · active
FUN-402: Maybe is back — three buttons and a Maybe bucket, mirroring Standard.


Cancelled
pc-cancelled→pulsecheck · cancelled


Closed
pc-closed→pulsecheck · closed
Fires when the organizer converts the pulse check.


Active · cap has room
ls-active-room→limitspots · active-room
Two buttons (no Maybe), two buckets, Spots row between Location and Notes.


Active · room · responded Yes
ls-active-room-yes→limitspots · active-room
Calendar appears on Yes only — a capped event has no Maybe to qualify.


Active · cap full
ls-active-full→limitspots · active-full
Yes disabled, locked helper copy. This fixture keeps Yes·4 consistent with “4 of 4 filled”; the mockup’s own demo data says 2.


Past
ls-past→limitspots · past


Cancelled
ls-cancelled→limitspots · cancelled


Active · session 1 of 9
rec-active→recurring · active
Date and Time split into their own rows; the page title carries “· Session N of M”.


Past
rec-past→recurring · past
Banner echoes the page-title format rather than the bare event name (Session 88 divergence).


Cancelled
rec-cancelled→recurring · cancelled


Active · cap has room
rls-active-room→recurring-limitspots · active-room


Active · cap full
rls-active-full→recurring-limitspots · active-full
Noun-phrase helper — “Session 5 of Pickleball is full…”, not the page-title form.


Past
rls-past→recurring-limitspots · past


Cancelled
rls-cancelled→recurring-limitspots · cancelled


prefers-color-scheme: darkStandard · active
std-active-yes→standard · active


Sync-Up · active
su-active→syncup · active


Pulse Check · active
pc-active→pulsecheck · active


Limit Spots · cap full
ls-active-full→limitspots · active-full


Recurring · active
rec-active→recurring · active


Recurring + LS · cap full
rls-active-full→recurring-limitspots · active-full

