Repository navigation
UI Coverage
Sharp Ninja edited this page Oct 30, 2026
·
5 revisions
293inventoryelements; all original diagram nodes, edges and39sequence messages retained. Gap decisions are supplemental specified behavior; implementation and execution are not inferred from designs. Selected UI-DEC cases now have scoped execution evidence. Other row entries remain documentation coverage. See source revision/hash manifest and gap decisions.
| Element / kind | Source / frame | Screen/state/flow/transition | Role | Specific FR/TR → AC | TEST | Documentation state |
|---|---|---|---|---|---|---|
| SUG-FLOW / flow | word_association_category_suggestion.svg | Complete directed category suggestion story | Player | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SUG-NODE-A / state/decision/activity | word_association_category_suggestion.svg | Player records 10 game wins | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#DEC-09 | TEST-CATEGORYSUGGESTIONUNLOCK-019 | documented UI observation; not executed |
| SUG-NODE-B / state/decision/activity | word_association_category_suggestion.svg | Unlock category suggestion | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#DEC-09 | TEST-CATEGORYSUGGESTIONUNLOCK-019 | documented UI observation; not executed |
| SUG-NODE-C / state/decision/activity | word_association_category_suggestion.svg | Suggest a relationship category | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#DEC-09 | TEST-CATEGORYSUGGESTIONUNLOCK-019 | documented UI observation; not executed |
| SUG-NODE-D / state/decision/activity | word_association_category_suggestion.svg | Submit three word pairs for the category | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#DEC-09 | TEST-CATEGORYSUGGESTIONUNLOCK-019 | documented UI observation; not executed |
| SUG-NODE-E / state/decision/activity | word_association_category_suggestion.svg | Review and moderate submission | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SUG-NODE-F / state/decision/activity | word_association_category_suggestion.svg | Approved? | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SUG-NODE-G / state/decision/activity | word_association_category_suggestion.svg | Reject or request changes | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; FR-REVIEWCHANGES-027#UI-CHANGES-01; FR-REVIEWCHANGES-027#UI-CHANGES-02; FR-REVIEWCHANGES-027#UI-CHANGES-03; FR-REVIEWCHANGES-027#UI-CHANGES-04; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115; TEST-REVIEWCHANGES-140 | specified case documented; not executed / Resolved UI-DEC-01 |
| SUG-NODE-H / state/decision/activity | word_association_category_suggestion.svg | Prepare complete curated content | Content staff / proposer | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SUG-NODE-I / state/decision/activity | word_association_category_suggestion.svg | Make approved pairs eligible for future games | Content staff / proposer | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SUG-TRANS-A-B / transition | word_association_category_suggestion.svg | Player records 10 game wins → [] → Unlock category suggestion | Player | FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#DEC-09 | TEST-CATEGORYSUGGESTIONUNLOCK-019 | documented UI observation; not executed |
| SUG-TRANS-B-C / transition | word_association_category_suggestion.svg | Unlock category suggestion → [] → Suggest a relationship category | Player | FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#DEC-09 | TEST-CATEGORYSUGGESTIONUNLOCK-019 | documented UI observation; not executed |
| SUG-TRANS-C-D / transition | word_association_category_suggestion.svg | Suggest a relationship category → [] → Submit three word pairs for the category | Player | FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#DEC-09 | TEST-CATEGORYSUGGESTIONUNLOCK-019 | documented UI observation; not executed |
| SUG-TRANS-D-E / transition | word_association_category_suggestion.svg | Submit three word pairs for the category → [] → Review and moderate submission | Player | FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SUG-TRANS-E-F / transition | word_association_category_suggestion.svg | Review and moderate submission → [] → Approved? | Player | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SUG-TRANS-F-G / transition | word_association_category_suggestion.svg | Approved? → [No] → Reject or request changes | Player | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; FR-REVIEWCHANGES-027#UI-CHANGES-01; FR-REVIEWCHANGES-027#UI-CHANGES-02; FR-REVIEWCHANGES-027#UI-CHANGES-03; FR-REVIEWCHANGES-027#UI-CHANGES-04; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115; TEST-REVIEWCHANGES-140 | specified case documented; not executed / Resolved UI-DEC-01 |
| SUG-TRANS-F-H / transition | word_association_category_suggestion.svg | Approved? → [Yes] → Prepare complete curated content | Player | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SUG-TRANS-H-I / transition | word_association_category_suggestion.svg | Prepare complete curated content → [] → Make approved pairs eligible for future games | Player | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| ID-FLOW / flow | word_association_identity_profile.svg | Complete directed identity profile story | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#AC-46; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-LOBBYLIFECYCLE-003#AC-01; FR-PLAYERPROFILE-002#AC-03; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; FR-PUBLICLANDING-022#AC-43; FR-PUBLICLANDING-022#DEC-19; FR-ROOMACCESS-001#AC-01; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-IDENTITY-AUTHENTICATION-016#TR-16-C01; TR-LANDING-PRIVACY-030#DEC-19; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PROFILEICON-003; TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021; TEST-PUBLICGAMELANDINGPAGE-043; TEST-OIDCTOKENVALIDATION-046 | documented UI observation; not executed |
| ID-NODE-A / state/decision/activity | word_association_identity_profile.svg | Open game | Player | FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; FR-PUBLICLANDING-022#AC-43; FR-PUBLICLANDING-022#DEC-19; TR-LANDING-PRIVACY-030#DEC-19 | TEST-GUESTPLAY-021; TEST-PUBLICGAMELANDINGPAGE-043 | documented UI observation; not executed |
| ID-NODE-B / state/decision/activity | word_association_identity_profile.svg | Choose entry mode | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; TR-IDENTITY-AUTHENTICATION-016#DEC-10 | TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021 | documented UI observation; not executed |
| ID-NODE-C / state/decision/activity | word_association_identity_profile.svg | Authenticate with OpenAI OIDC | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-46; FR-IDENTITY-018#DEC-10; FR-PLAYERPROFILE-002#AC-20; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-IDENTITY-AUTHENTICATION-016#TR-16-C01 | TEST-OPENAIOIDCPROFILE-020; TEST-OIDCTOKENVALIDATION-046 | documented UI observation; not executed |
| ID-NODE-D / state/decision/activity | word_association_identity_profile.svg | Create or load game profile | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#DEC-10; FR-PLAYERPROFILE-002#AC-20; TR-IDENTITY-AUTHENTICATION-016#DEC-10 | TEST-OPENAIOIDCPROFILE-020 | documented UI observation; not executed |
| ID-NODE-E / state/decision/activity | word_association_identity_profile.svg | Create same-browser persistent guest identity | Player | FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11 | TEST-GUESTPLAY-021 | documented UI observation; not executed |
| ID-NODE-F / state/decision/activity | word_association_identity_profile.svg | Choose profile icon | Player | FR-PLAYERPROFILE-002#AC-03 | TEST-PROFILEICON-003 | documented UI observation; not executed |
| ID-NODE-G / state/decision/activity | word_association_identity_profile.svg | Create or join room by code | Player | FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001 | documented UI observation; not executed |
| ID-TRANS-A-B / transition | word_association_identity_profile.svg | Open game → [] → Choose entry mode | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; FR-PUBLICLANDING-022#AC-43; FR-PUBLICLANDING-022#DEC-19; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-LANDING-PRIVACY-030#DEC-19 | TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021; TEST-PUBLICGAMELANDINGPAGE-043 | documented UI observation; not executed |
| ID-TRANS-B-C / transition | word_association_identity_profile.svg | Choose entry mode → [Account] → Authenticate with OpenAI OIDC | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#AC-46; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-IDENTITY-AUTHENTICATION-016#TR-16-C01 | TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021; TEST-OIDCTOKENVALIDATION-046 | documented UI observation; not executed |
| ID-TRANS-C-D / transition | word_association_identity_profile.svg | Authenticate with OpenAI OIDC → [] → Create or load game profile | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-46; FR-IDENTITY-018#DEC-10; FR-PLAYERPROFILE-002#AC-20; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-IDENTITY-AUTHENTICATION-016#TR-16-C01 | TEST-OPENAIOIDCPROFILE-020; TEST-OIDCTOKENVALIDATION-046 | documented UI observation; not executed |
| ID-TRANS-B-E / transition | word_association_identity_profile.svg | Choose entry mode → [Guest] → Create same-browser persistent guest identity | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; TR-IDENTITY-AUTHENTICATION-016#DEC-10 | TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021 | documented UI observation; not executed |
| ID-TRANS-D-F / transition | word_association_identity_profile.svg | Create or load game profile → [] → Choose profile icon | Player | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#DEC-10; FR-PLAYERPROFILE-002#AC-03; FR-PLAYERPROFILE-002#AC-20; TR-IDENTITY-AUTHENTICATION-016#DEC-10 | TEST-PROFILEICON-003; TEST-OPENAIOIDCPROFILE-020 | documented UI observation; not executed |
| ID-TRANS-E-F / transition | word_association_identity_profile.svg | Create same-browser persistent guest identity → [] → Choose profile icon | Player | FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-03; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11 | TEST-PROFILEICON-003; TEST-GUESTPLAY-021 | documented UI observation; not executed |
| ID-TRANS-F-G / transition | word_association_identity_profile.svg | Choose profile icon → [] → Create or join room by code | Player | FR-LOBBYLIFECYCLE-003#AC-01; FR-PLAYERPROFILE-002#AC-03; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PROFILEICON-003 | documented UI observation; not executed |
| DISC-FLOW / flow | word_association_lobby_discovery.svg | Complete directed lobby discovery story | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-NODE-A / state/decision/activity | word_association_lobby_discovery.svg | Player opens lobby discovery | Player | FR-LOBBYDISCOVERY-019#AC-22; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022 | documented UI observation; not executed |
| DISC-NODE-B / state/decision/activity | word_association_lobby_discovery.svg | Browse open lobbies or quick match | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-NODE-C / state/decision/activity | word_association_lobby_discovery.svg | Joinable lobby found? | Player | FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-NODE-D / state/decision/activity | word_association_lobby_discovery.svg | Request a seat | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-NODE-E / state/decision/activity | word_association_lobby_discovery.svg | Seat still available? | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-PLAYERLIMIT-002; TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-NODE-F / state/decision/activity | word_association_lobby_discovery.svg | Join lobby | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; TR-LOBBY-MATCHING-017#TR-17-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-BROWSEOPENLOBBIES-022 | documented UI observation; not executed |
| DISC-NODE-G / state/decision/activity | word_association_lobby_discovery.svg | Show no matching lobby | Player | FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-TRANS-A-B / transition | word_association_lobby_discovery.svg | Player opens lobby discovery → [] → Browse open lobbies or quick match | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-TRANS-B-C / transition | word_association_lobby_discovery.svg | Browse open lobbies or quick match → [] → Joinable lobby found? | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-TRANS-C-D / transition | word_association_lobby_discovery.svg | Joinable lobby found? → [Yes] → Request a seat | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-TRANS-D-E / transition | word_association_lobby_discovery.svg | Request a seat → [] → Seat still available? | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-PLAYERLIMIT-002; TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-TRANS-E-F / transition | word_association_lobby_discovery.svg | Seat still available? → [Yes] → Join lobby | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-TRANS-E-B / transition | word_association_lobby_discovery.svg | Seat still available? → [No] → Browse open lobbies or quick match | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-PLAYERLIMIT-002; TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023 | documented UI observation; not executed |
| DISC-TRANS-C-G / transition | word_association_lobby_discovery.svg | Joinable lobby found? → [No] → Show no matching lobby | Player | FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-QUICKMATCH-023 | documented UI observation; not executed |
| NOM-FLOW / flow | word_association_nomination_flow.svg | Complete directed nomination flow story | Player | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-CONTENTVALIDATION-016; TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-NODE-A / state/decision/activity | word_association_nomination_flow.svg | Player solves before any hint | Content staff / proposer | FR-NOMINATIONS-016#AC-17 | TEST-NOMINATIONELIGIBILITY-017 | documented UI observation; not executed |
| NOM-NODE-B / state/decision/activity | word_association_nomination_flow.svg | Player submits a candidate answer word | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-NODE-C / state/decision/activity | word_association_nomination_flow.svg | Count nominations for the candidate | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-NODE-D / state/decision/activity | word_association_nomination_flow.svg | At least 10 nominations? | Content staff / proposer | FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; TR-NOMINATION-MODERATION-014#DEC-07 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018 | documented UI observation; not executed |
| NOM-NODE-E / state/decision/activity | word_association_nomination_flow.svg | Keep collecting nominations | Content staff / proposer | FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; TR-NOMINATION-MODERATION-014#DEC-07 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018 | documented UI observation; not executed |
| NOM-NODE-F / state/decision/activity | word_association_nomination_flow.svg | Moderation review | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-NODE-G / state/decision/activity | word_association_nomination_flow.svg | Approved? | Content staff / proposer | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-NODE-H / state/decision/activity | word_association_nomination_flow.svg | Reject or hold candidate | Content staff / proposer | FR-CANDIDATEHOLD-028#UI-HOLD-01; FR-CANDIDATEHOLD-028#UI-HOLD-02; FR-CANDIDATEHOLD-028#UI-HOLD-03; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114; TEST-CANDIDATEHOLD-141 | specified case documented; not executed / Resolved UI-DEC-02 |
| NOM-NODE-I / state/decision/activity | word_association_nomination_flow.svg | Add to future-eligible answer pool | Content staff / proposer | FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; TR-NOMINATION-MODERATION-014#DEC-07 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018 | documented UI observation; not executed |
| NOM-NODE-J / state/decision/activity | word_association_nomination_flow.svg | Curate complete word pair before play | Content staff / proposer | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-07 | TEST-CONTENTVALIDATION-016; TEST-NOMINATIONTHRESHOLDANDMODERATION-018 | documented UI observation; not executed |
| NOM-TRANS-A-B / transition | word_association_nomination_flow.svg | Player solves before any hint → [] → Player submits a candidate answer word | Player | FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-TRANS-B-C / transition | word_association_nomination_flow.svg | Player submits a candidate answer word → [] → Count nominations for the candidate | Player | FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-TRANS-C-D / transition | word_association_nomination_flow.svg | Count nominations for the candidate → [] → At least 10 nominations? | Player | FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-TRANS-D-E / transition | word_association_nomination_flow.svg | At least 10 nominations? → [No] → Keep collecting nominations | Player | FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; TR-NOMINATION-MODERATION-014#DEC-07 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018 | documented UI observation; not executed |
| NOM-TRANS-E-C / transition | word_association_nomination_flow.svg | Keep collecting nominations → [] → Count nominations for the candidate | Player | FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-TRANS-D-F / transition | word_association_nomination_flow.svg | At least 10 nominations? → [Yes] → Moderation review | Player | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-TRANS-F-G / transition | word_association_nomination_flow.svg | Moderation review → [] → Approved? | Player | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-TRANS-G-H / transition | word_association_nomination_flow.svg | Approved? → [No] → Reject or hold candidate | Player | FR-CANDIDATEHOLD-028#UI-HOLD-01; FR-CANDIDATEHOLD-028#UI-HOLD-02; FR-CANDIDATEHOLD-028#UI-HOLD-03; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114; TEST-CANDIDATEHOLD-141 | specified case documented; not executed / Resolved UI-DEC-02 |
| NOM-TRANS-G-I / transition | word_association_nomination_flow.svg | Approved? → [Yes] → Add to future-eligible answer pool | Player | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| NOM-TRANS-I-J / transition | word_association_nomination_flow.svg | Add to future-eligible answer pool → [] → Curate complete word pair before play | Player | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#DEC-07; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-07 | TEST-CONTENTVALIDATION-016; TEST-NOMINATIONTHRESHOLDANDMODERATION-018 | documented UI observation; not executed |
| ROOM-FLOW / flow | word_association_room_creation.svg | Complete directed room creation story | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-24; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#AC-28; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-24; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-LOBBY-MATCHING-017#TR-17-C01; TR-OBSERVER-PERMISSIONS-018#TR-18-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-BROWSEOPENLOBBIES-022; TEST-CONFIGUREDCAPACITY-024; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027; TEST-OBSERVERPERSPECTIVEANDPERMISSIONS-028 | documented UI observation; not executed |
| ROOM-NODE-A / state/decision/activity | word_association_room_creation.svg | Create room | Player | FR-LOBBYLIFECYCLE-003#AC-24; FR-ROOMACCESS-001#AC-24 | TEST-CONFIGUREDCAPACITY-024 | documented UI observation; not executed |
| ROOM-NODE-B / state/decision/activity | word_association_room_creation.svg | Set capacity from 2 to 25 | Player | FR-LOBBYLIFECYCLE-003#AC-24; FR-ROOMACCESS-001#AC-24 | TEST-CONFIGUREDCAPACITY-024 | documented UI observation; not executed |
| ROOM-NODE-C / state/decision/activity | word_association_room_creation.svg | Browse, room code, or deep link | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-LOBBY-MATCHING-017#TR-17-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-BROWSEOPENLOBBIES-022; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026 | documented UI observation; not executed |
| ROOM-NODE-D / state/decision/activity | word_association_room_creation.svg | Open player slot? | Player | FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002 | documented UI observation; not executed |
| ROOM-NODE-E / state/decision/activity | word_association_room_creation.svg | Join as player | Player | FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001 | documented UI observation; not executed |
| ROOM-NODE-H / state/decision/activity | word_association_room_creation.svg | Invited to room? | Player | FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-PLAYERLIMIT-002; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| ROOM-NODE-I / state/decision/activity | word_association_room_creation.svg | Choose observe? | Player | FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| ROOM-NODE-J / state/decision/activity | word_association_room_creation.svg | Observe from inviter perspective | Player | FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#AC-28; FR-OBSERVERS-020#DEC-13; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-FULLROOMOBSERVER-027; TEST-OBSERVERPERSPECTIVEANDPERMISSIONS-028 | documented UI observation; not executed |
| ROOM-NODE-F / state/decision/activity | word_association_room_creation.svg | Reject player join | Player | FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-02 | TEST-PLAYERLIMIT-002 | documented UI observation; not executed |
| ROOM-NODE-G / state/decision/activity | word_association_room_creation.svg | Issue room code and share link | Player | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYLIFECYCLE-003#AC-25; FR-ROOMACCESS-001#AC-25 | TEST-ROOMINVITATIONS-025 | documented UI observation; not executed |
| ROOM-TRANS-A-B / transition | word_association_room_creation.svg | Create room → [] → Set capacity from 2 to 25 | Player | FR-LOBBYLIFECYCLE-003#AC-24; FR-ROOMACCESS-001#AC-24 | TEST-CONFIGUREDCAPACITY-024 | documented UI observation; not executed |
| ROOM-TRANS-C-D / transition | word_association_room_creation.svg | Browse, room code, or deep link → [] → Open player slot? | Player | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-LOBBY-MATCHING-017#TR-17-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-BROWSEOPENLOBBIES-022; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026 | documented UI observation; not executed |
| ROOM-TRANS-D-E / transition | word_association_room_creation.svg | Open player slot? → [Yes] → Join as player | Player | FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002 | documented UI observation; not executed |
| ROOM-TRANS-D-H / transition | word_association_room_creation.svg | Open player slot? → [No] → Invited to room? | Player | FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| ROOM-TRANS-H-I / transition | word_association_room_creation.svg | Invited to room? → [Yes] → Choose observe? | Player | FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-PLAYERLIMIT-002; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| ROOM-TRANS-I-J / transition | word_association_room_creation.svg | Choose observe? → [Yes] → Observe from inviter perspective | Player | FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#AC-28; FR-OBSERVERS-020#DEC-13; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-FULLROOMOBSERVER-027; TEST-OBSERVERPERSPECTIVEANDPERMISSIONS-028 | documented UI observation; not executed |
| ROOM-TRANS-I-F / transition | word_association_room_creation.svg | Choose observe? → [No] → Reject player join | Player | FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-02; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-PLAYERLIMIT-002; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| ROOM-TRANS-H-F / transition | word_association_room_creation.svg | Invited to room? → [No] → Reject player join | Player | FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-PLAYERLIMIT-002; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| ROOM-TRANS-B-G / transition | word_association_room_creation.svg | Set capacity from 2 to 25 → [] → Issue room code and share link | Player | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYLIFECYCLE-003#AC-24; FR-LOBBYLIFECYCLE-003#AC-25; FR-ROOMACCESS-001#AC-24; FR-ROOMACCESS-001#AC-25 | TEST-CONFIGUREDCAPACITY-024; TEST-ROOMINVITATIONS-025 | documented UI observation; not executed |
| ROOM-TRANS-G-D / transition | word_association_room_creation.svg | Issue room code and share link → [] → Open player slot? | Player | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-25; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-25; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-ROOMINVITATIONS-025 | documented UI observation; not executed |
| ROUND-FLOW / flow | word_association_round_flow.svg | Complete directed round flow story | Player | FR-ANCHORSELECTION-007#AC-04; FR-ANCHORSELECTION-007#AC-11; FR-ANSWERREVEAL-012#AC-08; FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-08; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-ANSWERSTAGES-008#DEC-01; FR-CATEGORIES-005#AC-04; FR-CATEGORIES-005#AC-05; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYART-006#AC-05; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#AC-14; FR-FINALSTANDINGS-014#DEC-01; FR-FINALSTANDINGS-014#DEC-04; FR-LIVESCORECARD-011#AC-10; FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; FR-ROUNDSUMMARY-013#AC-12; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-14; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; FR-SCORING-009#AC-08; FR-SCORING-009#AC-14; TR-ANCHOR-RANDOMNESS-013#TR-13-C01; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-FIRSTCATEGORY-004; TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-UNSOLVEDRESULT-008; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-CATEGORYCHOICE-011; TEST-ROUNDSUMMARY-012; TEST-FINALSTANDINGS-013; TEST-TIMETIEBREAK-014; TEST-CONTENTVALIDATION-016; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| ROUND-NODE-A / state/decision/activity | word_association_round_flow.svg | Create or join room | Player | FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001 | documented UI observation; not executed |
| ROUND-NODE-B / state/decision/activity | word_association_round_flow.svg | Game selects anchor player | Player | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| ROUND-NODE-C / state/decision/activity | word_association_round_flow.svg | Anchor chooses first category | Player | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| ROUND-NODE-D / state/decision/activity | word_association_round_flow.svg | Load predefined pair and category background | Player | FR-CATEGORIES-005#AC-05; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYART-006#AC-05; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; TR-ART-RENDER-007#TR-07-C01; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CATEGORYART-005; TEST-CONTENTVALIDATION-016 | documented UI observation; not executed |
| ROUND-NODE-E / state/decision/activity | word_association_round_flow.svg | Show prompt with no hint | Player | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-45; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03 | TEST-NOHINTSOLVE-006; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| ROUND-NODE-F / state/decision/activity | word_association_round_flow.svg | Unsolved players submit a word | Player | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-45; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03 | TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| ROUND-NODE-G / state/decision/activity | word_association_round_flow.svg | Confirm correct players and lock their scores | Player | FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-CLOCK-CONSISTENCY-008#TR-08-C01 | TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-LIVESCORECARD-010 | documented UI observation; not executed |
| ROUND-NODE-H / state/decision/activity | word_association_round_flow.svg | Any unsolved players and hints remain? | Player | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ANSWERSTAGES-008#AC-09; FR-SCORING-009#AC-08; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01 | TEST-UNSOLVEDRESULT-008; TEST-HINTPROGRESSION-009 | documented UI observation; not executed |
| ROUND-NODE-I / state/decision/activity | word_association_round_flow.svg | Show next hint to unsolved players | Player | FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-SCORELOCK-010#AC-07; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01 | TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009 | documented UI observation; not executed |
| ROUND-NODE-J / state/decision/activity | word_association_round_flow.svg | Reveal answer and show round summary | Player | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| ROUND-NODE-K / state/decision/activity | word_association_round_flow.svg | Game complete? | Player | FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#DEC-01 | TEST-FINALSTANDINGS-013 | documented UI observation; not executed |
| ROUND-NODE-L / state/decision/activity | word_association_round_flow.svg | First correct solver selects next category | Player | FR-ANCHORSELECTION-007#AC-11 | TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| ROUND-NODE-M / state/decision/activity | word_association_round_flow.svg | Rank final scores and apply time tiebreak | Player | FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#AC-14; FR-FINALSTANDINGS-014#DEC-01; FR-FINALSTANDINGS-014#DEC-04; FR-SCORELOCK-010#AC-14; FR-SCORING-009#AC-14 | TEST-FINALSTANDINGS-013; TEST-TIMETIEBREAK-014 | documented UI observation; not executed |
| ROUND-TRANS-A-B / transition | word_association_round_flow.svg | Create or join room → [] → Game selects anchor player | Player | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; TR-ANCHOR-RANDOMNESS-013#TR-13-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| ROUND-TRANS-B-C / transition | word_association_round_flow.svg | Game selects anchor player → [] → Anchor chooses first category | Player | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| ROUND-TRANS-C-D / transition | word_association_round_flow.svg | Anchor chooses first category → [] → Load predefined pair and category background | Player | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; FR-CATEGORIES-005#AC-05; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYART-006#AC-05; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; TR-ANCHOR-RANDOMNESS-013#TR-13-C01; TR-ART-RENDER-007#TR-07-C01; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-FIRSTCATEGORY-004; TEST-CATEGORYART-005; TEST-CONTENTVALIDATION-016 | documented UI observation; not executed |
| ROUND-TRANS-D-E / transition | word_association_round_flow.svg | Load predefined pair and category background → [] → Show prompt with no hint | Player | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYART-006#AC-05; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-CONTENTVALIDATION-016; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| ROUND-TRANS-E-F / transition | word_association_round_flow.svg | Show prompt with no hint → [] → Unsolved players submit a word | Player | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-45; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03 | TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| ROUND-TRANS-F-G / transition | word_association_round_flow.svg | Unsolved players submit a word → [] → Confirm correct players and lock their scores | Player | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-45; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-CLOCK-CONSISTENCY-008#TR-08-C01 | TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-LIVESCORECARD-010; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| ROUND-TRANS-G-H / transition | word_association_round_flow.svg | Confirm correct players and lock their scores → [] → Any unsolved players and hints remain? | Player | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-08; FR-ANSWERSTAGES-008#AC-09; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; FR-SCORING-009#AC-08; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01 | TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-UNSOLVEDRESULT-008; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010 | documented UI observation; not executed |
| ROUND-TRANS-H-I / transition | word_association_round_flow.svg | Any unsolved players and hints remain? → [Yes] → Show next hint to unsolved players | Player | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-08; FR-ANSWERSTAGES-008#AC-09; FR-SCORELOCK-010#AC-07; FR-SCORING-009#AC-07; FR-SCORING-009#AC-08; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01 | TEST-HINTSCORING-007; TEST-UNSOLVEDRESULT-008; TEST-HINTPROGRESSION-009 | documented UI observation; not executed |
| ROUND-TRANS-I-F / transition | word_association_round_flow.svg | Show next hint to unsolved players → [] → Unsolved players submit a word | Player | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03 | TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| ROUND-TRANS-H-J / transition | word_association_round_flow.svg | Any unsolved players and hints remain? → [No] → Reveal answer and show round summary | Player | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ANSWERSTAGES-008#AC-09; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01 | TEST-UNSOLVEDRESULT-008; TEST-HINTPROGRESSION-009; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| ROUND-TRANS-J-K / transition | word_association_round_flow.svg | Reveal answer and show round summary → [] → Game complete? | Player | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#DEC-01; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-ROUNDSUMMARY-012; TEST-FINALSTANDINGS-013 | documented UI observation; not executed |
| ROUND-TRANS-K-L / transition | word_association_round_flow.svg | Game complete? → [No] → First correct solver selects next category | Player | FR-ANCHORSELECTION-007#AC-11; FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#DEC-01 | TEST-CATEGORYCHOICE-011; TEST-FINALSTANDINGS-013 | documented UI observation; not executed |
| ROUND-TRANS-L-D / transition | word_association_round_flow.svg | First correct solver selects next category → [] → Load predefined pair and category background | Player | FR-ANCHORSELECTION-007#AC-11; FR-CATEGORIES-005#AC-05; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYART-006#AC-05; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; TR-ART-RENDER-007#TR-07-C01; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CATEGORYART-005; TEST-CATEGORYCHOICE-011; TEST-CONTENTVALIDATION-016 | documented UI observation; not executed |
| ROUND-TRANS-K-M / transition | word_association_round_flow.svg | Game complete? → [Yes] → Rank final scores and apply time tiebreak | Player | FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#AC-14; FR-FINALSTANDINGS-014#DEC-01; FR-FINALSTANDINGS-014#DEC-04; FR-SCORELOCK-010#AC-14; FR-SCORING-009#AC-14 | TEST-FINALSTANDINGS-013; TEST-TIMETIEBREAK-014 | documented UI observation; not executed |
| MSG-M01 / message/transition | word_association_client_message_flow.svg | Message 1: Create room | Sender/receiver shown in sequence diagram | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYLIFECYCLE-003#AC-24; FR-LOBBYLIFECYCLE-003#AC-25; FR-ROOMACCESS-001#AC-24; FR-ROOMACCESS-001#AC-25 | TEST-CONFIGUREDCAPACITY-024; TEST-ROOMINVITATIONS-025 | documented UI observation; not executed |
| MSG-M02 / message/transition | word_association_client_message_flow.svg | Message 2: Room code and lobby state | Sender/receiver shown in sequence diagram | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYLIFECYCLE-003#AC-24; FR-LOBBYLIFECYCLE-003#AC-25; FR-ROOMACCESS-001#AC-24; FR-ROOMACCESS-001#AC-25 | TEST-CONFIGUREDCAPACITY-024; TEST-ROOMINVITATIONS-025 | documented UI observation; not executed |
| MSG-M03 / message/transition | word_association_client_message_flow.svg | Message 3: Join with room code | Sender/receiver shown in sequence diagram | FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-ROOMJOINING-001; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| MSG-M04 / message/transition | word_association_client_message_flow.svg | Message 4: Lobby update | Sender/receiver shown in sequence diagram | FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-ROOMJOINING-001; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| MSG-M05 / message/transition | word_association_client_message_flow.svg | Message 5: Lobby state | Sender/receiver shown in sequence diagram | FR-LOBBYLIFECYCLE-003#AC-01; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-ROOMJOINING-001; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| MSG-M06 / message/transition | word_association_client_message_flow.svg | Message 6: All players ready; start 10-second countdown and lock roster | Sender/receiver shown in sequence diagram | FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15 | TEST-READYCOUNTDOWNANDROSTERLOCK-031 | documented UI observation; not executed |
| MSG-M07 / message/transition | word_association_client_message_flow.svg | Message 7: Draw random roster index 1..N | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| MSG-M08 / message/transition | word_association_client_message_flow.svg | Message 8: Anchor assignment by matching index | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| MSG-M09 / message/transition | word_association_client_message_flow.svg | Message 9: Anchor assignment by matching index | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| MSG-M10 / message/transition | word_association_client_message_flow.svg | Message 10: Anchor assignment by matching index | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| MSG-M11 / message/transition | word_association_client_message_flow.svg | Message 11: Choose first category | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| MSG-M12 / message/transition | word_association_client_message_flow.svg | Message 12: Choose first category | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| MSG-M13 / message/transition | word_association_client_message_flow.svg | Message 13: Choose first category | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-04; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004 | documented UI observation; not executed |
| MSG-M14 / message/transition | word_association_client_message_flow.svg | Message 14: Load pair for selected category | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-SCORELOCK-010#AC-45; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CONTENTVALIDATION-016; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| MSG-M15 / message/transition | word_association_client_message_flow.svg | Message 15: Prompt, target, hints, and category background | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-SCORELOCK-010#AC-45; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CONTENTVALIDATION-016; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| MSG-M16 / message/transition | word_association_client_message_flow.svg | Message 16: Prompt and background | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-SCORELOCK-010#AC-45; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01 | TEST-CATEGORYART-005; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| MSG-M17 / message/transition | word_association_client_message_flow.svg | Message 17: Prompt and background | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-SCORELOCK-010#AC-45; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01 | TEST-CATEGORYART-005; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| MSG-M18 / message/transition | word_association_client_message_flow.svg | Message 18: Prompt and background | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-SCORELOCK-010#AC-45; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01 | TEST-CATEGORYART-005; TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| MSG-M19 / message/transition | word_association_client_message_flow.svg | Message 19: Send menu-selected emoji reaction | Sender/receiver shown in sequence diagram | FR-REACTIONS-021#AC-29; FR-REACTIONS-021#DEC-18; TR-REACTION-DELIVERY-019#DEC-18 | TEST-INROUNDEMOJIREACTION-029 | documented UI observation; not executed |
| MSG-M20 / message/transition | word_association_client_message_flow.svg | Message 20: Broadcast reaction | Sender/receiver shown in sequence diagram | FR-REACTIONS-021#AC-29; FR-REACTIONS-021#DEC-18; TR-REACTION-DELIVERY-019#DEC-18 | TEST-INROUNDEMOJIREACTION-029 | documented UI observation; not executed |
| MSG-M21 / message/transition | word_association_client_message_flow.svg | Message 21: Broadcast reaction | Sender/receiver shown in sequence diagram | FR-REACTIONS-021#AC-29; FR-REACTIONS-021#DEC-18; TR-REACTION-DELIVERY-019#DEC-18 | TEST-INROUNDEMOJIREACTION-029 | documented UI observation; not executed |
| MSG-M22 / message/transition | word_association_client_message_flow.svg | Message 22: Broadcast reaction | Sender/receiver shown in sequence diagram | FR-REACTIONS-021#AC-29; FR-REACTIONS-021#DEC-18; TR-REACTION-DELIVERY-019#DEC-18 | TEST-INROUNDEMOJIREACTION-029 | documented UI observation; not executed |
| MSG-M23 / message/transition | word_association_client_message_flow.svg | Message 23: Submit guess privately | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-45; FR-SCORELOCK-010#AC-45; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03 | TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| MSG-M24 / message/transition | word_association_client_message_flow.svg | Message 24: Submit guess privately | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-45; FR-SCORELOCK-010#AC-45; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03 | TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| MSG-M25 / message/transition | word_association_client_message_flow.svg | Message 25: Submit guess privately | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-45; FR-SCORELOCK-010#AC-45; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03 | TEST-AUTHORITATIVEANSWERHANDLING-045 | documented UI observation; not executed |
| MSG-M26 / message/transition | word_association_client_message_flow.svg | Message 26: Validate, timestamp, and lock correct scores | Sender/receiver shown in sequence diagram | FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-CLOCK-CONSISTENCY-008#TR-08-C01 | TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-LIVESCORECARD-010 | documented UI observation; not executed |
| MSG-M27 / message/transition | word_association_client_message_flow.svg | Message 27: Live scorecard update | Sender/receiver shown in sequence diagram | FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-10; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-LIVESCORECARD-010; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| MSG-M28 / message/transition | word_association_client_message_flow.svg | Message 28: Live scorecard update | Sender/receiver shown in sequence diagram | FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-10; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-LIVESCORECARD-010; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| MSG-M29 / message/transition | word_association_client_message_flow.svg | Message 29: Live scorecard update | Sender/receiver shown in sequence diagram | FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-10; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-LIVESCORECARD-010; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| MSG-M30 / message/transition | word_association_client_message_flow.svg | Message 30: Next hint | Sender/receiver shown in sequence diagram | FR-ANSWERSTAGES-008#AC-09; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01 | TEST-HINTPROGRESSION-009 | documented UI observation; not executed |
| MSG-M31 / message/transition | word_association_client_message_flow.svg | Message 31: Next hint | Sender/receiver shown in sequence diagram | FR-ANSWERSTAGES-008#AC-09; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01 | TEST-HINTPROGRESSION-009 | documented UI observation; not executed |
| MSG-M32 / message/transition | word_association_client_message_flow.svg | Message 32: Next hint to unsolved clients only | Sender/receiver shown in sequence diagram | FR-ANSWERSTAGES-008#AC-09; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01 | TEST-HINTPROGRESSION-009 | documented UI observation; not executed |
| MSG-M33 / message/transition | word_association_client_message_flow.svg | Message 33: Reveal answer and round summary | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| MSG-M34 / message/transition | word_association_client_message_flow.svg | Message 34: Reveal answer and round summary | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| MSG-M35 / message/transition | word_association_client_message_flow.svg | Message 35: Reveal answer and round summary | Sender/receiver shown in sequence diagram | FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| MSG-M36 / message/transition | word_association_client_message_flow.svg | Message 36: First correct solver selects next category | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-11 | TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| MSG-M37 / message/transition | word_association_client_message_flow.svg | Message 37: Next category and background | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-11 | TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| MSG-M38 / message/transition | word_association_client_message_flow.svg | Message 38: Next category and background | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-11 | TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| MSG-M39 / message/transition | word_association_client_message_flow.svg | Message 39: Next category and background | Sender/receiver shown in sequence diagram | FR-ANCHORSELECTION-007#AC-11 | TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| MSG-FLOW / flow | word_association_client_message_flow.svg | Full room → round → summary client sequence with alternate anchor and conditional hint recipients | Player | FR-ANCHORSELECTION-007#AC-04; FR-ANCHORSELECTION-007#AC-11; FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-04; FR-LIVESCORECARD-011#AC-10; FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15; FR-REACTIONS-021#AC-29; FR-REACTIONS-021#DEC-18; FR-ROOMACCESS-001#AC-01; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; TR-ANCHOR-RANDOMNESS-013#TR-13-C01; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-REACTION-DELIVERY-019#DEC-18; TR-REALTIME-SYNC-002#TR-02-C01; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-ROOMJOINING-001; TEST-FIRSTCATEGORY-004; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-CATEGORYCHOICE-011; TEST-INROUNDEMOJIREACTION-029; TEST-READYCOUNTDOWNANDROSTERLOCK-031; TEST-AUTHORITATIVEANSWERHANDLING-045; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| SCREEN-LANDING / screen | word_association_game_requirements.md | Public landing | Visitor/player/observer as applicable | FR-PUBLICLANDING-022#AC-43; FR-PUBLICLANDING-022#AC-50; FR-PUBLICLANDING-022#DEC-19; TR-LANDING-PRIVACY-030#DEC-19 | TEST-PUBLICGAMELANDINGPAGE-043; TEST-LANDINGPAGEPUBLICDATA-050 | documented UI observation; not executed |
| STATE-LANDING-01 / state | word_association_game_requirements.md | anonymous; populated | Visitor/player/observer as applicable | FR-PUBLICLANDING-022#AC-43; FR-PUBLICLANDING-022#AC-50; FR-PUBLICLANDING-022#DEC-19; TR-LANDING-PRIVACY-030#DEC-19 | TEST-PUBLICGAMELANDINGPAGE-043; TEST-LANDINGPAGEPUBLICDATA-050 | documented UI observation; not executed |
| STATE-LANDING-02 / state | word_association_game_requirements.md | empty | Visitor/player/observer as applicable | FR-PUBLICLANDING-022#AC-43; FR-PUBLICLANDING-022#AC-50; FR-PUBLICLANDING-022#DEC-19; TR-LANDING-PRIVACY-030#DEC-19 | TEST-PUBLICGAMELANDINGPAGE-043; TEST-LANDINGPAGEPUBLICDATA-050 | documented UI observation; not executed |
| STATE-LANDING-03 / state | word_association_game_requirements.md | unavailable | Visitor/player/observer as applicable | FR-PUBLICLANDING-022#AC-43; FR-PUBLICLANDING-022#AC-50; FR-PUBLICLANDING-022#DEC-19; TR-LANDING-PRIVACY-030#DEC-19 | TEST-PUBLICGAMELANDINGPAGE-043; TEST-LANDINGPAGEPUBLICDATA-050 | documented UI observation; not executed |
| SCREEN-ENTRY / screen | word_association_identity_profile.svg | Identity entry | Visitor/player/observer as applicable | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#AC-46; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-IDENTITY-AUTHENTICATION-016#TR-16-C01 | TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021; TEST-OIDCTOKENVALIDATION-046 | documented UI observation; not executed |
| STATE-ENTRY-01 / state | word_association_identity_profile.svg | guest | Visitor/player/observer as applicable | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#AC-46; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-IDENTITY-AUTHENTICATION-016#TR-16-C01 | TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021; TEST-OIDCTOKENVALIDATION-046 | documented UI observation; not executed |
| STATE-ENTRY-02 / state | word_association_identity_profile.svg | account; returning | Visitor/player/observer as applicable | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#AC-46; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-IDENTITY-AUTHENTICATION-016#TR-16-C01 | TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021; TEST-OIDCTOKENVALIDATION-046 | documented UI observation; not executed |
| STATE-ENTRY-03 / state | word_association_identity_profile.svg | invalid callback | Visitor/player/observer as applicable | FR-IDENTITY-018#AC-20; FR-IDENTITY-018#AC-21; FR-IDENTITY-018#AC-46; FR-IDENTITY-018#DEC-10; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-20; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11; TR-IDENTITY-AUTHENTICATION-016#DEC-10; TR-IDENTITY-AUTHENTICATION-016#TR-16-C01 | TEST-OPENAIOIDCPROFILE-020; TEST-GUESTPLAY-021; TEST-OIDCTOKENVALIDATION-046 | documented UI observation; not executed |
| SCREEN-PROFILE / screen | word_association_identity_profile.svg | Profile icon | Visitor/player/observer as applicable | FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-03; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11 | TEST-PROFILEICON-003; TEST-GUESTPLAY-021 | documented UI observation; not executed |
| STATE-PROFILE-01 / state | word_association_identity_profile.svg | selected | Visitor/player/observer as applicable | FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-03; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11 | TEST-PROFILEICON-003; TEST-GUESTPLAY-021 | documented UI observation; not executed |
| STATE-PROFILE-02 / state | word_association_identity_profile.svg | unselected; browser persistence | Visitor/player/observer as applicable | FR-IDENTITY-018#AC-21; FR-IDENTITY-018#DEC-11; FR-PLAYERPROFILE-002#AC-03; FR-PLAYERPROFILE-002#AC-21; FR-PLAYERPROFILE-002#DEC-11 | TEST-PROFILEICON-003; TEST-GUESTPLAY-021 | documented UI observation; not executed |
| SCREEN-DISCOVERY / screen | word_association_lobby_discovery.svg | Lobby browser/quick match | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023; TEST-PLAYERLIMIT-002 | documented UI observation; not executed |
| STATE-DISCOVERY-01 / state | word_association_lobby_discovery.svg | eligible | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023; TEST-PLAYERLIMIT-002 | documented UI observation; not executed |
| STATE-DISCOVERY-02 / state | word_association_lobby_discovery.svg | no-match | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023; TEST-PLAYERLIMIT-002 | documented UI observation; not executed |
| STATE-DISCOVERY-03 / state | word_association_lobby_discovery.svg | seat-lost race | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-22; FR-LOBBYDISCOVERY-019#AC-23; FR-LOBBYDISCOVERY-019#DEC-12; FR-LOBBYLIFECYCLE-003#AC-02; FR-ROOMACCESS-001#AC-02; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-BROWSEOPENLOBBIES-022; TEST-QUICKMATCH-023; TEST-PLAYERLIMIT-002 | documented UI observation; not executed |
| SCREEN-CREATE / screen | word_association_room_creation.svg | Create room | Visitor/player/observer as applicable | FR-LOBBYLIFECYCLE-003#AC-24; FR-ROOMACCESS-001#AC-24 | TEST-CONFIGUREDCAPACITY-024 | documented UI observation; not executed |
| STATE-CREATE-01 / state | word_association_room_creation.svg | valid and out-of-range capacity | Visitor/player/observer as applicable | FR-LOBBYLIFECYCLE-003#AC-24; FR-ROOMACCESS-001#AC-24 | TEST-CONFIGUREDCAPACITY-024 | documented UI observation; not executed |
| SCREEN-JOIN / screen | word_association_room_creation.svg | Code/link join | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| STATE-JOIN-01 / state | word_association_room_creation.svg | open | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| STATE-JOIN-02 / state | word_association_room_creation.svg | full | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| STATE-JOIN-03 / state | word_association_room_creation.svg | invited | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| STATE-JOIN-04 / state | word_association_room_creation.svg | uninvited | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| STATE-JOIN-05 / state | word_association_room_creation.svg | observer declined | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-25; FR-LOBBYDISCOVERY-019#AC-26; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-02; FR-LOBBYLIFECYCLE-003#AC-25; FR-LOBBYLIFECYCLE-003#AC-26; FR-LOBBYLIFECYCLE-003#AC-27; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#DEC-13; FR-ROOMACCESS-001#AC-01; FR-ROOMACCESS-001#AC-02; FR-ROOMACCESS-001#AC-25; FR-ROOMACCESS-001#AC-26; TR-OBSERVER-PERMISSIONS-018#TR-18-C01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PLAYERLIMIT-002; TEST-ROOMINVITATIONS-025; TEST-DEEPLINKJOINANDFULLROOM-026; TEST-FULLROOMOBSERVER-027 | documented UI observation; not executed |
| SCREEN-LOBBY / screen | word_association_game_requirements.md | Room lobby | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYDISCOVERY-019#AC-32; FR-LOBBYDISCOVERY-019#AC-33; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-30; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#AC-32; FR-LOBBYLIFECYCLE-003#AC-33; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15; FR-LOBBYLIFECYCLE-003#DEC-16; FR-OBSERVERS-020#AC-30; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030; TEST-READYCOUNTDOWNANDROSTERLOCK-031; TEST-HOLDOUTWARNINGANDREMOVAL-032; TEST-IDLELOBBYREADINESSPROMPT-033 | documented UI observation; not executed |
| STATE-LOBBY-01 / state | word_association_game_requirements.md | waiting | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYDISCOVERY-019#AC-32; FR-LOBBYDISCOVERY-019#AC-33; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-30; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#AC-32; FR-LOBBYLIFECYCLE-003#AC-33; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15; FR-LOBBYLIFECYCLE-003#DEC-16; FR-OBSERVERS-020#AC-30; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030; TEST-READYCOUNTDOWNANDROSTERLOCK-031; TEST-HOLDOUTWARNINGANDREMOVAL-032; TEST-IDLELOBBYREADINESSPROMPT-033 | documented UI observation; not executed |
| STATE-LOBBY-02 / state | word_association_game_requirements.md | full | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYDISCOVERY-019#AC-32; FR-LOBBYDISCOVERY-019#AC-33; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-30; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#AC-32; FR-LOBBYLIFECYCLE-003#AC-33; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15; FR-LOBBYLIFECYCLE-003#DEC-16; FR-OBSERVERS-020#AC-30; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030; TEST-READYCOUNTDOWNANDROSTERLOCK-031; TEST-HOLDOUTWARNINGANDREMOVAL-032; TEST-IDLELOBBYREADINESSPROMPT-033 | documented UI observation; not executed |
| STATE-LOBBY-03 / state | word_association_game_requirements.md | idle | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYDISCOVERY-019#AC-32; FR-LOBBYDISCOVERY-019#AC-33; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-30; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#AC-32; FR-LOBBYLIFECYCLE-003#AC-33; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15; FR-LOBBYLIFECYCLE-003#DEC-16; FR-OBSERVERS-020#AC-30; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030; TEST-READYCOUNTDOWNANDROSTERLOCK-031; TEST-HOLDOUTWARNINGANDREMOVAL-032; TEST-IDLELOBBYREADINESSPROMPT-033 | documented UI observation; not executed |
| STATE-LOBBY-04 / state | word_association_game_requirements.md | holdout | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYDISCOVERY-019#AC-32; FR-LOBBYDISCOVERY-019#AC-33; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-30; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#AC-32; FR-LOBBYLIFECYCLE-003#AC-33; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15; FR-LOBBYLIFECYCLE-003#DEC-16; FR-OBSERVERS-020#AC-30; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030; TEST-READYCOUNTDOWNANDROSTERLOCK-031; TEST-HOLDOUTWARNINGANDREMOVAL-032; TEST-IDLELOBBYREADINESSPROMPT-033 | documented UI observation; not executed |
| STATE-LOBBY-05 / state | word_association_game_requirements.md | countdown | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYDISCOVERY-019#AC-32; FR-LOBBYDISCOVERY-019#AC-33; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-30; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#AC-32; FR-LOBBYLIFECYCLE-003#AC-33; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15; FR-LOBBYLIFECYCLE-003#DEC-16; FR-OBSERVERS-020#AC-30; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030; TEST-READYCOUNTDOWNANDROSTERLOCK-031; TEST-HOLDOUTWARNINGANDREMOVAL-032; TEST-IDLELOBBYREADINESSPROMPT-033 | documented UI observation; not executed |
| STATE-LOBBY-06 / state | word_association_game_requirements.md | closed | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYDISCOVERY-019#AC-31; FR-LOBBYDISCOVERY-019#AC-32; FR-LOBBYDISCOVERY-019#AC-33; FR-LOBBYLIFECYCLE-003#AC-01; FR-LOBBYLIFECYCLE-003#AC-30; FR-LOBBYLIFECYCLE-003#AC-31; FR-LOBBYLIFECYCLE-003#AC-32; FR-LOBBYLIFECYCLE-003#AC-33; FR-LOBBYLIFECYCLE-003#DEC-14; FR-LOBBYLIFECYCLE-003#DEC-15; FR-LOBBYLIFECYCLE-003#DEC-16; FR-OBSERVERS-020#AC-30; FR-ROOMACCESS-001#AC-01; TR-REALTIME-SYNC-002#TR-02-C01 | TEST-ROOMJOINING-001; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030; TEST-READYCOUNTDOWNANDROSTERLOCK-031; TEST-HOLDOUTWARNINGANDREMOVAL-032; TEST-IDLELOBBYREADINESSPROMPT-033 | documented UI observation; not executed |
| SCREEN-CHOOSER / screen | word_association_round_flow.svg | Category chooser | Visitor/player/observer as applicable | FR-ANCHORSELECTION-007#AC-04; FR-ANCHORSELECTION-007#AC-11; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004; TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| STATE-CHOOSER-01 / state | word_association_round_flow.svg | anchor | Visitor/player/observer as applicable | FR-ANCHORSELECTION-007#AC-04; FR-ANCHORSELECTION-007#AC-11; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004; TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| STATE-CHOOSER-02 / state | word_association_round_flow.svg | next solver | Visitor/player/observer as applicable | FR-ANCHORSELECTION-007#AC-04; FR-ANCHORSELECTION-007#AC-11; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004; TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| STATE-CHOOSER-03 / state | word_association_round_flow.svg | non-chooser | Visitor/player/observer as applicable | FR-ANCHORSELECTION-007#AC-04; FR-ANCHORSELECTION-007#AC-11; FR-CATEGORIES-005#AC-04; TR-ANCHOR-RANDOMNESS-013#TR-13-C01 | TEST-FIRSTCATEGORY-004; TEST-CATEGORYCHOICE-011 | documented UI observation; not executed |
| SCREEN-ROUND / screen | word_association_round_flow.svg | Active round | Visitor/player/observer as applicable | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-ROOM-CODES-010#DEC-17; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-AUTHORITATIVEANSWERHANDLING-045; TEST-CONNECTIONRECOVERY-109; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| STATE-ROUND-01 / state | word_association_round_flow.svg | no hint | Visitor/player/observer as applicable | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-ROOM-CODES-010#DEC-17; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-AUTHORITATIVEANSWERHANDLING-045; TEST-CONNECTIONRECOVERY-109; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| STATE-ROUND-02 / state | word_association_round_flow.svg | hints1..3 | Visitor/player/observer as applicable | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-ROOM-CODES-010#DEC-17; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-AUTHORITATIVEANSWERHANDLING-045; TEST-CONNECTIONRECOVERY-109; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| STATE-ROUND-03 / state | word_association_round_flow.svg | submitted | Visitor/player/observer as applicable | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-ROOM-CODES-010#DEC-17; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-AUTHORITATIVEANSWERHANDLING-045; TEST-CONNECTIONRECOVERY-109; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| STATE-ROUND-04 / state | word_association_round_flow.svg | solved | Visitor/player/observer as applicable | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-ROOM-CODES-010#DEC-17; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-AUTHORITATIVEANSWERHANDLING-045; TEST-CONNECTIONRECOVERY-109; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| STATE-ROUND-05 / state | word_association_round_flow.svg | unsolved | Visitor/player/observer as applicable | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-ROOM-CODES-010#DEC-17; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-AUTHORITATIVEANSWERHANDLING-045; TEST-CONNECTIONRECOVERY-109; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| STATE-ROUND-06 / state | word_association_round_flow.svg | recovering | Visitor/player/observer as applicable | FR-ANSWERREVEAL-012#AC-45; FR-ANSWERSTAGES-008#AC-06; FR-ANSWERSTAGES-008#AC-07; FR-ANSWERSTAGES-008#AC-09; FR-ANSWERSTAGES-008#AC-45; FR-CATEGORIES-005#AC-05; FR-CATEGORYART-006#AC-05; FR-LIVESCORECARD-011#AC-10; FR-SCORELOCK-010#AC-06; FR-SCORELOCK-010#AC-07; FR-SCORELOCK-010#AC-10; FR-SCORELOCK-010#AC-45; FR-SCORING-009#AC-06; FR-SCORING-009#AC-07; TR-ANSWER-CONFIDENTIALITY-005#TR-05-C01; TR-ANSWER-VALIDATION-004#DEC-03; TR-ART-RENDER-007#TR-07-C01; TR-CLOCK-CONSISTENCY-008#TR-08-C01; TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-ROOM-CODES-010#DEC-17; TR-ROOM-SYNCRECOVERY-038#LIVE-02; TR-ROOM-SYNCRECOVERY-038#LIVE-03; TR-ROOM-SYNCRECOVERY-038#LIVE-07 | TEST-CATEGORYART-005; TEST-NOHINTSOLVE-006; TEST-HINTSCORING-007; TEST-HINTPROGRESSION-009; TEST-LIVESCORECARD-010; TEST-AUTHORITATIVEANSWERHANDLING-045; TEST-CONNECTIONRECOVERY-109; TEST-ROOMSYNC-139 | documented UI observation; not executed |
| SCREEN-OBSERVER / screen | word_association_room_creation.svg | Inviter perspective | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYLIFECYCLE-003#AC-27; FR-LOBBYLIFECYCLE-003#AC-30; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#AC-28; FR-OBSERVERS-020#AC-30; FR-OBSERVERS-020#DEC-13; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-FULLROOMOBSERVER-027; TEST-OBSERVERPERSPECTIVEANDPERMISSIONS-028; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030 | documented UI observation; not executed |
| STATE-OBSERVER-01 / state | word_association_room_creation.svg | following | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYLIFECYCLE-003#AC-27; FR-LOBBYLIFECYCLE-003#AC-30; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#AC-28; FR-OBSERVERS-020#AC-30; FR-OBSERVERS-020#DEC-13; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-FULLROOMOBSERVER-027; TEST-OBSERVERPERSPECTIVEANDPERMISSIONS-028; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030 | documented UI observation; not executed |
| STATE-OBSERVER-02 / state | word_association_room_creation.svg | promoted | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYLIFECYCLE-003#AC-27; FR-LOBBYLIFECYCLE-003#AC-30; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#AC-28; FR-OBSERVERS-020#AC-30; FR-OBSERVERS-020#DEC-13; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-FULLROOMOBSERVER-027; TEST-OBSERVERPERSPECTIVEANDPERMISSIONS-028; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030 | documented UI observation; not executed |
| STATE-OBSERVER-03 / state | word_association_room_creation.svg | read-only | Visitor/player/observer as applicable | FR-LOBBYDISCOVERY-019#AC-30; FR-LOBBYLIFECYCLE-003#AC-27; FR-LOBBYLIFECYCLE-003#AC-30; FR-OBSERVERS-020#AC-27; FR-OBSERVERS-020#AC-28; FR-OBSERVERS-020#AC-30; FR-OBSERVERS-020#DEC-13; TR-OBSERVER-PERMISSIONS-018#TR-18-C01 | TEST-FULLROOMOBSERVER-027; TEST-OBSERVERPERSPECTIVEANDPERMISSIONS-028; TEST-PRECOUNTDOWNOBSERVERPROMOTION-030 | documented UI observation; not executed |
| SCREEN-SUMMARY / screen | word_association_round_flow.svg | Round reveal/summary | Visitor/player/observer as applicable | FR-ANCHORSELECTION-007#AC-11; FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-CATEGORYCHOICE-011; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| STATE-SUMMARY-01 / state | word_association_round_flow.svg | solved | Visitor/player/observer as applicable | FR-ANCHORSELECTION-007#AC-11; FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-CATEGORYCHOICE-011; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| STATE-SUMMARY-02 / state | word_association_round_flow.svg | unsolved | Visitor/player/observer as applicable | FR-ANCHORSELECTION-007#AC-11; FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-CATEGORYCHOICE-011; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| STATE-SUMMARY-03 / state | word_association_round_flow.svg | next round | Visitor/player/observer as applicable | FR-ANCHORSELECTION-007#AC-11; FR-ANSWERREVEAL-012#AC-08; FR-ANSWERSTAGES-008#AC-08; FR-ROUNDSUMMARY-013#AC-12; FR-SCORING-009#AC-08 | TEST-UNSOLVEDRESULT-008; TEST-CATEGORYCHOICE-011; TEST-ROUNDSUMMARY-012 | documented UI observation; not executed |
| SCREEN-FINAL / screen | word_association_round_flow.svg | Final standings | Visitor/player/observer as applicable | FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#AC-14; FR-FINALSTANDINGS-014#DEC-01; FR-FINALSTANDINGS-014#DEC-04; FR-SCORELOCK-010#AC-14; FR-SCORING-009#AC-14 | TEST-FINALSTANDINGS-013; TEST-TIMETIEBREAK-014 | documented UI observation; not executed |
| STATE-FINAL-01 / state | word_association_round_flow.svg | distinct scores | Visitor/player/observer as applicable | FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#AC-14; FR-FINALSTANDINGS-014#DEC-01; FR-FINALSTANDINGS-014#DEC-04; FR-SCORELOCK-010#AC-14; FR-SCORING-009#AC-14 | TEST-FINALSTANDINGS-013; TEST-TIMETIEBREAK-014 | documented UI observation; not executed |
| STATE-FINAL-02 / state | word_association_round_flow.svg | time tie | Visitor/player/observer as applicable | FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#AC-14; FR-FINALSTANDINGS-014#DEC-01; FR-FINALSTANDINGS-014#DEC-04; FR-SCORELOCK-010#AC-14; FR-SCORING-009#AC-14 | TEST-FINALSTANDINGS-013; TEST-TIMETIEBREAK-014 | documented UI observation; not executed |
| STATE-FINAL-03 / state | word_association_round_flow.svg | exact tie | Visitor/player/observer as applicable | FR-ANSWERSTAGES-008#DEC-01; FR-FINALSTANDINGS-014#AC-13; FR-FINALSTANDINGS-014#AC-14; FR-FINALSTANDINGS-014#DEC-01; FR-FINALSTANDINGS-014#DEC-04; FR-SCORELOCK-010#AC-14; FR-SCORING-009#AC-14 | TEST-FINALSTANDINGS-013; TEST-TIMETIEBREAK-014 | documented UI observation; not executed |
| SCREEN-NOMINATION / screen | word_association_nomination_flow.svg | Candidate nomination/review | Visitor/player/observer as applicable | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| STATE-NOMINATION-01 / state | word_association_nomination_flow.svg | eligible | Visitor/player/observer as applicable | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| STATE-NOMINATION-02 / state | word_association_nomination_flow.svg | ineligible | Visitor/player/observer as applicable | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| STATE-NOMINATION-03 / state | word_association_nomination_flow.svg | below threshold | Visitor/player/observer as applicable | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| STATE-NOMINATION-04 / state | word_association_nomination_flow.svg | pending | Visitor/player/observer as applicable | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| STATE-NOMINATION-05 / state | word_association_nomination_flow.svg | approved | Visitor/player/observer as applicable | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| STATE-NOMINATION-06 / state | word_association_nomination_flow.svg | rejected | Visitor/player/observer as applicable | FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-NOMINATIONS-016#AC-17; FR-NOMINATIONS-016#AC-18; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-07; FR-NOMINATIONS-016#DEC-08; TR-NOMINATION-MODERATION-014#DEC-07; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08 | TEST-NOMINATIONELIGIBILITY-017; TEST-NOMINATIONTHRESHOLDANDMODERATION-018; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-NOMINATIONMODERATION-114 | documented UI observation; not executed |
| SCREEN-SUGGESTION / screen | word_association_category_suggestion.svg | Category and three-pair suggestion | Visitor/player/observer as applicable | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| STATE-SUGGESTION-01 / state | word_association_category_suggestion.svg | locked | Visitor/player/observer as applicable | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| STATE-SUGGESTION-02 / state | word_association_category_suggestion.svg | unlocked | Visitor/player/observer as applicable | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| STATE-SUGGESTION-03 / state | word_association_category_suggestion.svg | open | Visitor/player/observer as applicable | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| STATE-SUGGESTION-04 / state | word_association_category_suggestion.svg | review | Visitor/player/observer as applicable | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| STATE-SUGGESTION-05 / state | word_association_category_suggestion.svg | approved | Visitor/player/observer as applicable | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| STATE-SUGGESTION-06 / state | word_association_category_suggestion.svg | rejected | Visitor/player/observer as applicable | FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CATEGORYSUGGESTIONS-017#AC-19; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-CATEGORYSUGGESTIONS-017#DEC-08; FR-CATEGORYSUGGESTIONS-017#DEC-09; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-NOMINATIONS-016#AC-47; FR-NOMINATIONS-016#DEC-08; TR-CATALOG-INTEGRITY-006#TR-06-C01; TR-NOMINATION-MODERATION-014#DEC-08; TR-SUGGESTION-REVIEW-015#DEC-08; TR-SUGGESTION-REVIEW-015#TR-15-C01 | TEST-CONTENTVALIDATION-016; TEST-CATEGORYSUGGESTIONUNLOCK-019; TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-SUGGESTIONREVIEW-115 | documented UI observation; not executed |
| SCREEN-ADMIN / screen | admin_acl_design.md | Moderation administration | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-NOMINATIONS-016#AC-47 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-ADMIN-01 / state | admin_acl_design.md | player-denied | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-NOMINATIONS-016#AC-47 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-ADMIN-02 / state | admin_acl_design.md | pending | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-NOMINATIONS-016#AC-47 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-ADMIN-03 / state | admin_acl_design.md | appealed | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-NOMINATIONS-016#AC-47 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-ADMIN-04 / state | admin_acl_design.md | approved | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-NOMINATIONS-016#AC-47 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-ADMIN-05 / state | admin_acl_design.md | completed | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORYSUGGESTIONS-017#AC-47; FR-NOMINATIONS-016#AC-47 | TEST-MODERATIONANDCATALOGBOUNDARY-047; TEST-ADMINUI-136 | documented UI observation; not executed |
| SCREEN-WORDS / screen | admin_acl_design.md | Word/hint editor | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-WORDHINTEDITOR-025#FR-25-C01; FR-WORDHINTEDITOR-025#FR-25-C02; FR-WORDHINTEDITOR-025#FR-25-C03; FR-WORDHINTEDITOR-025#FR-25-C04; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CONTENTVALIDATION-016; TEST-CATALOGVERSIONING-133; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-WORDS-01 / state | admin_acl_design.md | new | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-WORDHINTEDITOR-025#FR-25-C01; FR-WORDHINTEDITOR-025#FR-25-C02; FR-WORDHINTEDITOR-025#FR-25-C03; FR-WORDHINTEDITOR-025#FR-25-C04; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CONTENTVALIDATION-016; TEST-CATALOGVERSIONING-133; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-WORDS-02 / state | admin_acl_design.md | edit | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-WORDHINTEDITOR-025#FR-25-C01; FR-WORDHINTEDITOR-025#FR-25-C02; FR-WORDHINTEDITOR-025#FR-25-C03; FR-WORDHINTEDITOR-025#FR-25-C04; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CONTENTVALIDATION-016; TEST-CATALOGVERSIONING-133; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-WORDS-03 / state | admin_acl_design.md | invalid | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-WORDHINTEDITOR-025#FR-25-C01; FR-WORDHINTEDITOR-025#FR-25-C02; FR-WORDHINTEDITOR-025#FR-25-C03; FR-WORDHINTEDITOR-025#FR-25-C04; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CONTENTVALIDATION-016; TEST-CATALOGVERSIONING-133; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-WORDS-04 / state | admin_acl_design.md | excluded | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-WORDHINTEDITOR-025#FR-25-C01; FR-WORDHINTEDITOR-025#FR-25-C02; FR-WORDHINTEDITOR-025#FR-25-C03; FR-WORDHINTEDITOR-025#FR-25-C04; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CONTENTVALIDATION-016; TEST-CATALOGVERSIONING-133; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-WORDS-05 / state | admin_acl_design.md | ceiling | Staff by permissions | FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04; FR-CATEGORIES-005#AC-16; FR-CATEGORIES-005#DEC-06; FR-CURATEDPAIRS-004#AC-16; FR-CURATEDPAIRS-004#DEC-05; FR-WORDHINTEDITOR-025#FR-25-C01; FR-WORDHINTEDITOR-025#FR-25-C02; FR-WORDHINTEDITOR-025#FR-25-C03; FR-WORDHINTEDITOR-025#FR-25-C04; TR-CATALOG-INTEGRITY-006#TR-06-C01 | TEST-CONTENTVALIDATION-016; TEST-CATALOGVERSIONING-133; TEST-ADMINUI-136 | documented UI observation; not executed |
| SCREEN-USERS / screen | admin_acl_design.md | Role administration | Staff by permissions | FR-ACCESSCONTROL-024#FR-24-C01; FR-ACCESSCONTROL-024#FR-24-C02; FR-ACCESSCONTROL-024#FR-24-C03; FR-ACCESSCONTROL-024#FR-24-C04; FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04 | TEST-ACLAUTHORIZATION-132; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-USERS-01 / state | admin_acl_design.md | search | Staff by permissions | FR-ACCESSCONTROL-024#FR-24-C01; FR-ACCESSCONTROL-024#FR-24-C02; FR-ACCESSCONTROL-024#FR-24-C03; FR-ACCESSCONTROL-024#FR-24-C04; FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04 | TEST-ACLAUTHORIZATION-132; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-USERS-02 / state | admin_acl_design.md | grant | Staff by permissions | FR-ACCESSCONTROL-024#FR-24-C01; FR-ACCESSCONTROL-024#FR-24-C02; FR-ACCESSCONTROL-024#FR-24-C03; FR-ACCESSCONTROL-024#FR-24-C04; FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04 | TEST-ACLAUTHORIZATION-132; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-USERS-03 / state | admin_acl_design.md | revoke | Staff by permissions | FR-ACCESSCONTROL-024#FR-24-C01; FR-ACCESSCONTROL-024#FR-24-C02; FR-ACCESSCONTROL-024#FR-24-C03; FR-ACCESSCONTROL-024#FR-24-C04; FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04 | TEST-ACLAUTHORIZATION-132; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-USERS-04 / state | admin_acl_design.md | configured | Staff by permissions | FR-ACCESSCONTROL-024#FR-24-C01; FR-ACCESSCONTROL-024#FR-24-C02; FR-ACCESSCONTROL-024#FR-24-C03; FR-ACCESSCONTROL-024#FR-24-C04; FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04 | TEST-ACLAUTHORIZATION-132; TEST-ADMINUI-136 | documented UI observation; not executed |
| STATE-USERS-05 / state | admin_acl_design.md | final-admin protected | Staff by permissions | FR-ACCESSCONTROL-024#FR-24-C01; FR-ACCESSCONTROL-024#FR-24-C02; FR-ACCESSCONTROL-024#FR-24-C03; FR-ACCESSCONTROL-024#FR-24-C04; FR-ADMINPAGES-023#FR-23-C01; FR-ADMINPAGES-023#FR-23-C02; FR-ADMINPAGES-023#FR-23-C03; FR-ADMINPAGES-023#FR-23-C04 | TEST-ACLAUTHORIZATION-132; TEST-ADMINUI-136 | documented UI observation; not executed |
| SCREEN-INSTALL / screen | pwa_design.md | Install guidance | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-01; FR-PHONEINSTALL-026#PWA-02; FR-PHONEINSTALL-026#PWA-03; FR-PHONEINSTALL-026#PWA-04; FR-PHONEINSTALL-026#PWA-05; TR-PWA-INSTALLATION-036#PWA-01; TR-PWA-INSTALLATION-036#PWA-02; TR-PWA-INSTALLATION-036#PWA-03; TR-PWA-INSTALLATION-036#PWA-04; TR-PWA-INSTALLATION-036#PWA-05 | TEST-PWAINSTALL-137 | documented UI observation; not executed |
| STATE-INSTALL-01 / state | pwa_design.md | native | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-01; FR-PHONEINSTALL-026#PWA-02; FR-PHONEINSTALL-026#PWA-03; FR-PHONEINSTALL-026#PWA-04; FR-PHONEINSTALL-026#PWA-05; TR-PWA-INSTALLATION-036#PWA-01; TR-PWA-INSTALLATION-036#PWA-02; TR-PWA-INSTALLATION-036#PWA-03; TR-PWA-INSTALLATION-036#PWA-04; TR-PWA-INSTALLATION-036#PWA-05 | TEST-PWAINSTALL-137 | documented UI observation; not executed |
| STATE-INSTALL-02 / state | pwa_design.md | manual | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-01; FR-PHONEINSTALL-026#PWA-02; FR-PHONEINSTALL-026#PWA-03; FR-PHONEINSTALL-026#PWA-04; FR-PHONEINSTALL-026#PWA-05; TR-PWA-INSTALLATION-036#PWA-01; TR-PWA-INSTALLATION-036#PWA-02; TR-PWA-INSTALLATION-036#PWA-03; TR-PWA-INSTALLATION-036#PWA-04; TR-PWA-INSTALLATION-036#PWA-05 | TEST-PWAINSTALL-137 | documented UI observation; not executed |
| STATE-INSTALL-03 / state | pwa_design.md | dismissed | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-01; FR-PHONEINSTALL-026#PWA-02; FR-PHONEINSTALL-026#PWA-03; FR-PHONEINSTALL-026#PWA-04; FR-PHONEINSTALL-026#PWA-05; TR-PWA-INSTALLATION-036#PWA-01; TR-PWA-INSTALLATION-036#PWA-02; TR-PWA-INSTALLATION-036#PWA-03; TR-PWA-INSTALLATION-036#PWA-04; TR-PWA-INSTALLATION-036#PWA-05 | TEST-PWAINSTALL-137 | documented UI observation; not executed |
| STATE-INSTALL-04 / state | pwa_design.md | rejected | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-01; FR-PHONEINSTALL-026#PWA-02; FR-PHONEINSTALL-026#PWA-03; FR-PHONEINSTALL-026#PWA-04; FR-PHONEINSTALL-026#PWA-05; TR-PWA-INSTALLATION-036#PWA-01; TR-PWA-INSTALLATION-036#PWA-02; TR-PWA-INSTALLATION-036#PWA-03; TR-PWA-INSTALLATION-036#PWA-04; TR-PWA-INSTALLATION-036#PWA-05 | TEST-PWAINSTALL-137 | documented UI observation; not executed |
| STATE-INSTALL-05 / state | pwa_design.md | installed | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-01; FR-PHONEINSTALL-026#PWA-02; FR-PHONEINSTALL-026#PWA-03; FR-PHONEINSTALL-026#PWA-04; FR-PHONEINSTALL-026#PWA-05; TR-PWA-INSTALLATION-036#PWA-01; TR-PWA-INSTALLATION-036#PWA-02; TR-PWA-INSTALLATION-036#PWA-03; TR-PWA-INSTALLATION-036#PWA-04; TR-PWA-INSTALLATION-036#PWA-05 | TEST-PWAINSTALL-137 | documented UI observation; not executed |
| STATE-INSTALL-06 / state | pwa_design.md | insecure | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-01; FR-PHONEINSTALL-026#PWA-02; FR-PHONEINSTALL-026#PWA-03; FR-PHONEINSTALL-026#PWA-04; FR-PHONEINSTALL-026#PWA-05; TR-PWA-INSTALLATION-036#PWA-01; TR-PWA-INSTALLATION-036#PWA-02; TR-PWA-INSTALLATION-036#PWA-03; TR-PWA-INSTALLATION-036#PWA-04; TR-PWA-INSTALLATION-036#PWA-05 | TEST-PWAINSTALL-137 | documented UI observation; not executed |
| SCREEN-OFFLINE / screen | pwa_design.md | Static offline/reconnect | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-06; FR-PHONEINSTALL-026#PWA-07; FR-PHONEINSTALL-026#PWA-08; TR-PWA-CACHEPRIVACY-037#PWA-06; TR-PWA-CACHEPRIVACY-037#PWA-07; TR-PWA-CACHEPRIVACY-037#PWA-08 | TEST-PWAPRIVACY-138 | documented UI observation; not executed |
| STATE-OFFLINE-01 / state | pwa_design.md | offline | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-06; FR-PHONEINSTALL-026#PWA-07; FR-PHONEINSTALL-026#PWA-08; TR-PWA-CACHEPRIVACY-037#PWA-06; TR-PWA-CACHEPRIVACY-037#PWA-07; TR-PWA-CACHEPRIVACY-037#PWA-08 | TEST-PWAPRIVACY-138 | documented UI observation; not executed |
| STATE-OFFLINE-02 / state | pwa_design.md | online | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-06; FR-PHONEINSTALL-026#PWA-07; FR-PHONEINSTALL-026#PWA-08; TR-PWA-CACHEPRIVACY-037#PWA-06; TR-PWA-CACHEPRIVACY-037#PWA-07; TR-PWA-CACHEPRIVACY-037#PWA-08 | TEST-PWAPRIVACY-138 | documented UI observation; not executed |
| STATE-OFFLINE-03 / state | pwa_design.md | waiting update | Visitor/player/observer as applicable | FR-PHONEINSTALL-026#PWA-06; FR-PHONEINSTALL-026#PWA-07; FR-PHONEINSTALL-026#PWA-08; TR-PWA-CACHEPRIVACY-037#PWA-06; TR-PWA-CACHEPRIVACY-037#PWA-07; TR-PWA-CACHEPRIVACY-037#PWA-08 | TEST-PWAPRIVACY-138 | documented UI observation; not executed |
| SCREEN-SERVICE / screen | word_association_game_requirements.md | Service-limit recovery | Visitor/player/observer as applicable | TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-FREETIER-OPERATION-021#TR-21-C01; TR-ROOM-CODES-010#DEC-17 | TEST-FREETIERQUOTAHANDLING-037; TEST-CONNECTIONRECOVERY-109 | documented UI observation; not executed |
| STATE-SERVICE-01 / state | word_association_game_requirements.md | recoverable quota | Visitor/player/observer as applicable | TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-FREETIER-OPERATION-021#TR-21-C01; TR-ROOM-CODES-010#DEC-17 | TEST-FREETIERQUOTAHANDLING-037; TEST-CONNECTIONRECOVERY-109 | documented UI observation; not executed |
| STATE-SERVICE-02 / state | word_association_game_requirements.md | unavailable | Visitor/player/observer as applicable | TR-CONNECTION-RECOVERY-009#DEC-17; TR-CONNECTION-RECOVERY-009#TR-09-C01; TR-FREETIER-OPERATION-021#TR-21-C01; TR-ROOM-CODES-010#DEC-17 | TEST-FREETIERQUOTAHANDLING-037; TEST-CONNECTIONRECOVERY-109 | documented UI observation; not executed |
| GAP-FLOW-REVIEWCHANGES / flow | decisions.md | Reasoned change request and resubmission | Authorized actor as specified in case | FR-REVIEWCHANGES-027#UI-CHANGES-01; FR-REVIEWCHANGES-027#UI-CHANGES-02; FR-REVIEWCHANGES-027#UI-CHANGES-03; FR-REVIEWCHANGES-027#UI-CHANGES-04 | TEST-REVIEWCHANGES-140 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-REVIEWCHANGES-01 / transition/state | decisions.md | As Bob request changes with an empty reason, then with Add clearer hints. → Empty reason is rejected; valid request shows changes_requested, the reason and an audit entry. | Authorized actor as specified | FR-REVIEWCHANGES-027#UI-CHANGES-01; FR-REVIEWCHANGES-027#UI-CHANGES-02; FR-REVIEWCHANGES-027#UI-CHANGES-03; FR-REVIEWCHANGES-027#UI-CHANGES-04 | TEST-REVIEWCHANGES-140 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-REVIEWCHANGES-02 / transition/state | decisions.md | As Alice try a second open category, then revise Space with two pairs and with three pairs. → The second suggestion and two-pair resubmission are rejected; exactly three edited pairs can resubmit. | Authorized actor as specified | FR-REVIEWCHANGES-027#UI-CHANGES-01; FR-REVIEWCHANGES-027#UI-CHANGES-02; FR-REVIEWCHANGES-027#UI-CHANGES-03; FR-REVIEWCHANGES-027#UI-CHANGES-04 | TEST-REVIEWCHANGES-140 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-REVIEWCHANGES-03 / transition/state | decisions.md | Resubmit and inspect review/playability/history. → Status becomes pending_review; content remains unplayable pending independent approval/complete curation, revision history is retained and rejection-appeal allowance is unused. | Authorized actor as specified | FR-REVIEWCHANGES-027#UI-CHANGES-01; FR-REVIEWCHANGES-027#UI-CHANGES-02; FR-REVIEWCHANGES-027#UI-CHANGES-03; FR-REVIEWCHANGES-027#UI-CHANGES-04 | TEST-REVIEWCHANGES-140 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-FLOW-CANDIDATEHOLD / flow | decisions.md | Hold and resume a nominated candidate | Authorized actor as specified in case | FR-CANDIDATEHOLD-028#UI-HOLD-01; FR-CANDIDATEHOLD-028#UI-HOLD-02; FR-CANDIDATEHOLD-028#UI-HOLD-03 | TEST-CANDIDATEHOLD-141 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-CANDIDATEHOLD-01 / transition/state | decisions.md | Attempt hold as Alice, then as Bob without a reason and with Check wording. → Proposer and empty-reason attempts fail; valid hold enters on_hold with actor/reason in history. | Authorized actor as specified | FR-CANDIDATEHOLD-028#UI-HOLD-01; FR-CANDIDATEHOLD-028#UI-HOLD-02; FR-CANDIDATEHOLD-028#UI-HOLD-03 | TEST-CANDIDATEHOLD-141 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-CANDIDATEHOLD-02 / transition/state | decisions.md | Inspect counts, score and approval/publish controls while held. → Ten nominations and Alice5 persist; held content cannot be approved, published or played. | Authorized actor as specified | FR-CANDIDATEHOLD-028#UI-HOLD-01; FR-CANDIDATEHOLD-028#UI-HOLD-02; FR-CANDIDATEHOLD-028#UI-HOLD-03 | TEST-CANDIDATEHOLD-141 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-CANDIDATEHOLD-03 / transition/state | decisions.md | Resume as independent Bob with Review can continue. → Threshold is rechecked, status returns to pending_review and both audited decisions remain; resume is not approval. | Authorized actor as specified | FR-CANDIDATEHOLD-028#UI-HOLD-01; FR-CANDIDATEHOLD-028#UI-HOLD-02; FR-CANDIDATEHOLD-028#UI-HOLD-03 | TEST-CANDIDATEHOLD-141 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-FLOW-NAVIGATIONDRAFTS / flow | decisions.md | Back, Cancel and profile-isolated drafts | Authorized actor as specified in case | FR-NAVIGATIONDRAFTS-029#UI-NAV-01; FR-NAVIGATIONDRAFTS-029#UI-NAV-02; FR-NAVIGATIONDRAFTS-029#UI-NAV-03; FR-NAVIGATIONDRAFTS-029#UI-NAV-04; FR-NAVIGATIONDRAFTS-029#UI-NAV-05 | TEST-NAVIGATIONDRAFTS-142 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-NAVIGATIONDRAFTS-01 / transition/state | decisions.md | Enter unsaved edits, navigate to another authorized screen and use Back; dismiss a dialog. → The same-profile in-tab content draft returns and focus returns to the dialog opener; no submission, readiness or Leave event occurs. | Authorized actor as specified | FR-NAVIGATIONDRAFTS-029#UI-NAV-01; FR-NAVIGATIONDRAFTS-029#UI-NAV-02; FR-NAVIGATIONDRAFTS-029#UI-NAV-03; FR-NAVIGATIONDRAFTS-029#UI-NAV-04; FR-NAVIGATIONDRAFTS-029#UI-NAV-05 | TEST-NAVIGATIONDRAFTS-142 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-NAVIGATIONDRAFTS-02 / transition/state | decisions.md | Choose Cancel/Discard on content and profile forms. → Unsaved edits are cleared; saved content and Oak/owl remain unchanged; originating screen is shown. | Authorized actor as specified | FR-NAVIGATIONDRAFTS-029#UI-NAV-01; FR-NAVIGATIONDRAFTS-029#UI-NAV-02; FR-NAVIGATIONDRAFTS-029#UI-NAV-03; FR-NAVIGATIONDRAFTS-029#UI-NAV-04; FR-NAVIGATIONDRAFTS-029#UI-NAV-05 | TEST-NAVIGATIONDRAFTS-142 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-NAVIGATIONDRAFTS-03 / transition/state | decisions.md | Repeat with reload, tab close, profile switch and permission revocation in independent fixtures. → Private drafts do not persist or cross identities; denied privileged data cannot return through Back. | Authorized actor as specified | FR-NAVIGATIONDRAFTS-029#UI-NAV-01; FR-NAVIGATIONDRAFTS-029#UI-NAV-02; FR-NAVIGATIONDRAFTS-029#UI-NAV-03; FR-NAVIGATIONDRAFTS-029#UI-NAV-04; FR-NAVIGATIONDRAFTS-029#UI-NAV-05 | TEST-NAVIGATIONDRAFTS-142 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-NAVIGATIONDRAFTS-04 / transition/state | decisions.md | Choose the explicit Leave room action. → Only this action leaves membership and the existing roster/promotion rules apply. | Authorized actor as specified | FR-NAVIGATIONDRAFTS-029#UI-NAV-01; FR-NAVIGATIONDRAFTS-029#UI-NAV-02; FR-NAVIGATIONDRAFTS-029#UI-NAV-03; FR-NAVIGATIONDRAFTS-029#UI-NAV-04; FR-NAVIGATIONDRAFTS-029#UI-NAV-05 | TEST-NAVIGATIONDRAFTS-142 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-FLOW-REQUESTFEEDBACK / flow | decisions.md | Loading, empty, failure and canonical retry feedback | Authorized actor as specified in case | FR-REQUESTFEEDBACK-030#UI-FEEDBACK-01; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-02; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-03; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-04; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-05 | TEST-REQUESTFEEDBACK-143 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-REQUESTFEEDBACK-01 / transition/state | decisions.md | Hold a read pending, then resolve empty and unavailable in separate examples. → Accessible loading feedback changes to distinct empty/allowed-action or unavailable/Retry states without a false success. | Authorized actor as specified | FR-REQUESTFEEDBACK-030#UI-FEEDBACK-01; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-02; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-03; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-04; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-05 | TEST-REQUESTFEEDBACK-143 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-REQUESTFEEDBACK-02 / transition/state | decisions.md | Hold a form submission pending and attempt another submit; then fail it. → Busy feedback prevents duplicate submission; the safe draft remains and a user-safe error/valid Retry appears. | Authorized actor as specified | FR-REQUESTFEEDBACK-030#UI-FEEDBACK-01; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-02; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-03; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-04; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-05 | TEST-REQUESTFEEDBACK-143 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-REQUESTFEEDBACK-03 / transition/state | decisions.md | Retry a committed-response-lost C-1, then exercise conflict in another fixture. → The uncertain retry sends identical C-1/payload and displays one committed result; conflict refreshes state without silently replaying a changed command. | Authorized actor as specified | FR-REQUESTFEEDBACK-030#UI-FEEDBACK-01; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-02; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-03; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-04; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-05 | TEST-REQUESTFEEDBACK-143 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-REQUESTFEEDBACK-04 / transition/state | decisions.md | Deny authorization while an older read is pending, then complete that older read. → Privileged records/drafts clear and the older response cannot restore them; no raw errors or credentials are shown. | Authorized actor as specified | FR-REQUESTFEEDBACK-030#UI-FEEDBACK-01; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-02; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-03; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-04; FR-REQUESTFEEDBACK-030#UI-FEEDBACK-05 | TEST-REQUESTFEEDBACK-143 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-FLOW-ACCESSIBILITYDETAILS / flow | decisions.md | Contrast, focus, announcements and touch geometry | Authorized actor as specified in case | TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-01; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-02; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-03; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-04 | TEST-ACCESSIBILITYDETAILS-144 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-ACCESSIBILITYDETAILS-01 / transition/state | decisions.md | Measure text/indicator contrast against the actual adjacent rendered colors. → Normal text meets4.5:1, large text3:1 and essential indicators3:1 under the specified definitions/exceptions. | Authorized actor as specified | TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-01; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-02; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-03; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-04 | TEST-ACCESSIBILITYDETAILS-144 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-ACCESSIBILITYDETAILS-02 / transition/state | decisions.md | Traverse primary actions using keyboard and inspect accessible names/non-color state. → Focus is visible and ordered; names and labels/shapes identify every primary action and relevant state. | Authorized actor as specified | TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-01; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-02; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-03; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-04 | TEST-ACCESSIBILITYDETAILS-144 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-ACCESSIBILITYDETAILS-03 / transition/state | decisions.md | Trigger accepted score/stage changes and an error while reading the page. → Assistive announcements convey the changes without unexpectedly stealing focus. | Authorized actor as specified | TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-01; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-02; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-03; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-04 | TEST-ACCESSIBILITYDETAILS-144 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-ACCESSIBILITYDETAILS-04 / transition/state | decisions.md | Measure the primary touch target geometry. → Each is at least44x44CSSpx under the project rule; no formal compliance result is inferred. | Authorized actor as specified | TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-01; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-02; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-03; TR-UI-ACCESSIBILITYDETAILS-039#UI-A11Y-04 | TEST-ACCESSIBILITYDETAILS-144 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-FLOW-RESPONSIVEMATRIX / flow | decisions.md | Minimum width, orientation and zoom preservation | Authorized actor as specified in case | TR-UI-RESPONSIVEMATRIX-040#UI-RESP-01; TR-UI-RESPONSIVEMATRIX-040#UI-RESP-02; TR-UI-RESPONSIVEMATRIX-040#UI-RESP-03 | TEST-RESPONSIVEMATRIX-145 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-RESPONSIVEMATRIX-01 / transition/state | decisions.md | Visit each screen at each specified viewport and enlargement configuration. → Required text, hint, score fields and controls remain reachable without horizontal page scrolling or clipping; zoom is enabled. | Authorized actor as specified | TR-UI-RESPONSIVEMATRIX-040#UI-RESP-01; TR-UI-RESPONSIVEMATRIX-040#UI-RESP-02; TR-UI-RESPONSIVEMATRIX-040#UI-RESP-03 | TEST-RESPONSIVEMATRIX-145 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-RESPONSIVEMATRIX-02 / transition/state | decisions.md | Rotate portrait/landscape while editing Space and while observing the active round. → Draft and authorized room state remain; stacked score layout retains fields; keyboard/touch actions still work. | Authorized actor as specified | TR-UI-RESPONSIVEMATRIX-040#UI-RESP-01; TR-UI-RESPONSIVEMATRIX-040#UI-RESP-02; TR-UI-RESPONSIVEMATRIX-040#UI-RESP-03 | TEST-RESPONSIVEMATRIX-145 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-FLOW-NOSOLVERFALLBACK / flow | decisions.md | No solver advances without a human chooser | Authorized actor as specified in case | FR-ANCHORSELECTION-007#DEC-02; FR-ANSWERREVEAL-012#DEC-02; FR-ANSWERSTAGES-008#DEC-02 | TEST-NOSOLVERFALLBACK-146 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-NOSOLVERFALLBACK-01 / transition/state | decisions.md | Let the authoritative Hint3 deadline end the no-solver round and inspect both clients. → Both see Cold reveal and zero-point summary; neither is falsely shown as first solver. | Authorized actor as specified | FR-ANCHORSELECTION-007#DEC-02; FR-ANSWERREVEAL-012#DEC-02; FR-ANSWERSTAGES-008#DEC-02 | TEST-NOSOLVERFALLBACK-146 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-NOSOLVERFALLBACK-02 / transition/state | decisions.md | Await the server-selected next category and round projection without choosing as either player. → A category from the configured six appears and round2 starts for both clients without a human-choice dependency. | Authorized actor as specified | FR-ANCHORSELECTION-007#DEC-02; FR-ANSWERREVEAL-012#DEC-02; FR-ANSWERSTAGES-008#DEC-02 | TEST-NOSOLVERFALLBACK-146 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-FLOW-LOBBYMATCHING / flow | decisions.md | Discovery seat loss returns to refreshed browsing | Authorized actor as specified in case | FR-LOBBYDISCOVERY-019#AC-23; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-LOBBYMATCHING-117 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-LOBBYMATCHING-01 / transition/state | decisions.md | Open discovery as Alice, fill the last seat as Bob, then request that seat as Alice. → Alice is not admitted or shown a false success; capacity remains2 and refreshed browsing replaces the stale listing. | Authorized actor as specified | FR-LOBBYDISCOVERY-019#AC-23; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-LOBBYMATCHING-117 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-LOBBYMATCHING-02 / transition/state | decisions.md | Repeat by opening a valid direct invitation to the now-full room. → The invitee receives the observer choice rather than a player seat. | Authorized actor as specified | FR-LOBBYDISCOVERY-019#AC-23; TR-LOBBY-MATCHING-017#TR-17-C01 | TEST-LOBBYMATCHING-117 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-FLOW-ROOMCODES / flow | decisions.md | Invalid and expired room-code recovery | Authorized actor as specified in case | TR-ROOM-CODES-010#TR-10-C01 | TEST-ROOMCODES-110 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-ROOMCODES-01 / transition/state | decisions.md | Submit invalid/closed codes, then correct to the valid active code. → A safe error permits correction without leaking another active code; the valid code reaches the intended room. | Authorized actor as specified | TR-ROOM-CODES-010#TR-10-C01 | TEST-ROOMCODES-110 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-ROOMCODES-02 / transition/state | decisions.md | Exceed the documented invalid-attempt window and attempt another code. → Further invalid attempts are rate-limited until the window allows retry; no unauthorized membership or false success occurs. | Authorized actor as specified | TR-ROOM-CODES-010#TR-10-C01 | TEST-ROOMCODES-110 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| GAP-TRANS-REVIEWCHANGES-NONPROPOSER / transition/permission-denied state | decisions.md | While Space is changes_requested, attempt to edit its pairs and resubmit as another proposer Mallory and as reviewer Bob. → Both non-proposer attempts are denied; Space content, pair count, recorded revision and changes_requested status are unchanged, and no accepted edit/resubmission appears in decision history. | Non-proposer Mallory / reviewer Bob | FR-REVIEWCHANGES-027#UI-CHANGES-01; FR-REVIEWCHANGES-027#UI-CHANGES-02; FR-REVIEWCHANGES-027#UI-CHANGES-03; FR-REVIEWCHANGES-027#UI-CHANGES-04 | TEST-REVIEWCHANGES-140 | Specified supplemental gap; matching case executed within implementation-receipt.json scope. |
| ROOM-NODE-G / invitation copy success, clipboard denial, and creation failure | word_association_room_creation.svg; operator request 28 October 2026 | Select Copy Invitation Link → copy and display the inviter-bound link, retain it for manual copying on clipboard failure, or report creation failure without a success claim. | Room player | FR-LOBBYDISCOVERY-019#INVITE-COPY-01; FR-LOBBYDISCOVERY-019#INVITE-COPY-02; FR-LOBBYDISCOVERY-019#INVITE-COPY-03 | TEST-ROOMINVITATIONS-025#INVITE-COPY-01; TEST-ROOMINVITATIONS-025#INVITE-COPY-02; TEST-ROOMINVITATIONS-025#INVITE-COPY-03 | Criteria pending final suite and independent review; browser cases and mock gate are linked in the case specification. |
Generated from MCP requirements wiki export.
- Home
- Guest Game and GitHub Admin PWA
- Functional Requirements
- Technical Requirements
- Testing Requirements
- TR per FR Mapping
- Requirements Matrix
- Wordpairs
- Local Development
- Testing and Evidence
- Administration and Access Control
- Requirements Baseline v2.8
- Architecture Decision Record
- Architecture Design
- Architecture Patterns
- Content Moderation
- Deployment and Release Plan
- Acceptance Criteria Gap Analysis
- Acceptance Criteria Test Inventory
- Implementation Plan
- Phase 0 Execution
- Phase 0 Interface and Data Contracts
- Phase 1A Execution
- Phase 1 Execution
- Phase 2 Execution
- Phase 3 Execution
- Phase 4 Execution
- Phase 5 Execution
- Phase 6 Execution
- Optional Phase 6 Human Feedback
- Historical Chromium Crash Diagnosis
- Completed Coding Goal and Review Agreement
- Third Party Attributions
- Software Bill of Materials Contract
- Phone Installation and PWA
- Live Multiplayer Runtime and UI Integration
- UI Test Case Index
- UI Design Coverage
- UI Criterion Gaps
- UI Design Questions
- UI Test Persistence
- TEST-ACCESSIBLEGAMECONTROLS-044 UI Case
- TEST-ACLAUTHORIZATION-132 UI Case
- TEST-ADMINUI-136 UI Case
- TEST-AUTHORITATIVEANSWERHANDLING-045 UI Case
- TEST-BROWSEOPENLOBBIES-022 UI Case
- TEST-CATALOGVERSIONING-133 UI Case
- TEST-CATEGORYART-005 UI Case
- TEST-CATEGORYCHOICE-011 UI Case
- TEST-CATEGORYSUGGESTIONUNLOCK-019 UI Case
- TEST-CONFIGUREDCAPACITY-024 UI Case
- TEST-CONNECTIONRECOVERY-109 UI Case
- TEST-CONTENTVALIDATION-016 UI Case
- TEST-DEEPLINKJOINANDFULLROOM-026 UI Case
- TEST-FINALSTANDINGS-013 UI Case
- TEST-FIRSTCATEGORY-004 UI Case
- TEST-FREETIERQUOTAHANDLING-037 UI Case
- TEST-FULLROOMOBSERVER-027 UI Case
- TEST-GUESTPLAY-021 UI Case
- TEST-HINTPROGRESSION-009 UI Case
- TEST-HINTSCORING-007 UI Case
- TEST-HOLDOUTWARNINGANDREMOVAL-032 UI Case
- TEST-IDLELOBBYREADINESSPROMPT-033 UI Case
- TEST-INROUNDEMOJIREACTION-029 UI Case
- TEST-LANDINGPAGEPUBLICDATA-050 UI Case
- TEST-LIVESCORECARD-010 UI Case
- TEST-MODERATIONANDCATALOGBOUNDARY-047 UI Case
- TEST-NOHINTSOLVE-006 UI Case
- TEST-NOMINATIONELIGIBILITY-017 UI Case
- TEST-NOMINATIONMODERATION-114 UI Case
- TEST-NOMINATIONTHRESHOLDANDMODERATION-018 UI Case
- TEST-OBSERVERPERSPECTIVEANDPERMISSIONS-028 UI Case
- TEST-OIDCTOKENVALIDATION-046 UI Case
- TEST-OPENAIOIDCPROFILE-020 UI Case
- TEST-ORIENTATION-015 UI Case
- TEST-PLAYERLIMIT-002 UI Case
- TEST-PRECOUNTDOWNOBSERVERPROMOTION-030 UI Case
- TEST-PROFILEICON-003 UI Case
- TEST-PUBLICGAMELANDINGPAGE-043 UI Case
- TEST-PWAINSTALL-137 UI Case
- TEST-PWAPRIVACY-138 UI Case
- TEST-QUICKMATCH-023 UI Case
- TEST-READYCOUNTDOWNANDROSTERLOCK-031 UI Case
- TEST-ROOMINVITATIONS-025 UI Case
- TEST-ROOMJOINING-001 UI Case
- TEST-ROOMSYNC-139 UI Case
- TEST-ROUNDSUMMARY-012 UI Case
- TEST-SUGGESTIONREVIEW-115 UI Case
- TEST-TIMETIEBREAK-014 UI Case
- TEST-UNSOLVEDRESULT-008 UI Case
- UI Gap Decisions and Synchronization
- TEST-ACCESSIBILITYDETAILS-144 UI Case
- TEST-CANDIDATEHOLD-141 UI Case
- TEST-LOBBYMATCHING-117 UI Case
- TEST-NAVIGATIONDRAFTS-142 UI Case
- TEST-NOSOLVERFALLBACK-146 UI Case
- TEST-REQUESTFEEDBACK-143 UI Case
- TEST-RESPONSIVEMATRIX-145 UI Case
- TEST-REVIEWCHANGES-140 UI Case
- TEST-ROOMCODES-110 UI Case
- UI Gap Implementation Plan
- UI Gap Implementation and Evidence
- Contest Readiness
- Hostile Validation Evidence
- Category Artwork
- 10-Player Release Completion Plan
- Deadline Report and Token Accounting
- Deadline Report Supporting Evidence
- Deadline Timeline and Review Finding Analysis
- Stopped Wordpairs Release Handoff