Repository navigation
Phase 4 Execution
Status: formal Phase 4 APPROVED at remote commit 4bc242c05d63dd84798940e4afd7da62a4ecd219, with 99% accuracy and 99% completeness from independent GPT-6 Astra/high review. Phase 5 entry is authorized; Phases 5–6 remain required and deployment remains Phase 7.
4A covers AC-04/05/16: six initial categories, ten complete curated pairs each, predefined backgrounds, complete/approved catalog validation, roster snapshot, uniform inclusive 1–N anchor selection, anchor-only category choice and no pair reuse before category exhaustion. Fixed content/random fixtures precede implementation.
4B covers AC-06–14/45 and gameplay-specific AC-28 privacy: four authoritative 20-second stages, one answer per unsolved player per stage, 5/3/2/1 scoring, accepted solve durations/order, score locking, private hint projection, reveal, eight-round standings and exact ties. Tests use fake clocks, transaction ports and deterministic random draws; they include simultaneous submissions, stale deadlines and canonical retries. No raw incorrect guesses are persisted. Actual local Postgres/Realtime checks remain separate TR evidence. Browser journeys are local and use disclosed seams. Phase 5 moderation/reactions and Phase 6 complete acceptance remain later work; no deployment or live provisioning.
The server freezes the ordered roster at countdown expiry, draws an anchor uniformly over inclusive indices 1–N, and creates a single match under the room lock. Only the anchor or earliest accepted solver chooses the next category. If no player solves, the domain draws uniformly over the six initial categories and persists that choice. Pair IDs cannot repeat in a category until its pool is exhausted. Six original repository SVG backgrounds accompany 60 complete pairs and 180 literal, predefined hints.
Answer comparison uses NFKC, trim, whitespace collapse and full default Unicode case folding. Punctuation remains significant; only explicit accepted alternatives match. The official Unicode 18.0.0 source, its complete license notice, the generated 1606-entry mapping and a source-hash checked regeneration script are included. Tests verify every C/F record in the upstream file. Attribution was extended and only the corresponding attribution-content hash fixture changed.
The pure domain owns four 20-second stages, 5/3/2/1 scores, once-per-stage attempts, solve locking, accepted server order, reveal, eight-round standings, 80-second unsolved penalties and exact shared ties. It computes final awards. SQL applies those awards once and commits match completion, profile statistics, room closure, events and idempotency together. A fault after the award triggers proves the whole transaction rolls back. Incorrect guess text is absent from persistent state, results and events.
Every game command locks room then match. Exact canonical retries precede membership authorization so a committed command remains recoverable after departure; changed payloads conflict. New commands cannot score using overdue membership even while another worker leases the reconnect job. Private views reject expired players and observers whose followed player left. Match events use the current locked player/observer audience; Realtime carries only aggregate identity/version notifications. Private hints and unrevealed targets come from an allowlisted authenticated projection.
The game screen provides category choice, the prompt/background, countdown display calibrated to server time, private hints, answer entry, solved/waiting labels, round scorecards and final standings. Observers have read-only controls and their inviter's perspective. Uncertain requests retain the identical command for explicit retry. Room refreshes that overlap an in-flight read queue one subsequent refresh, preventing a heartbeat's newer version from being missed. Game polling is bounded and reconnects also refresh through match notifications.
Verified locally on 26 October 2026: 449 unit/application/API/oracle tests in 26 files; typecheck; lint; local production build; 25 actual Postgres tests in six files plus SQL/RLS/rollback/retention checks; and three actual Supabase Realtime tests. All ten Chromium journeys passed, including multi-client hint privacy/uncertain answer retry and eight no-solver rounds/shared final ranking at a 390×844 phone viewport. These are separate evidence tiers: browser HTTP seams run the actual application/domain using a transaction fake, while database and transport tests use disposable local containers. No deployed or live-provider acceptance is claimed.
The independent reviewer verified the exact GitHub commit and tree da0f52c8320ca0627edd455846cca75d395264ba, matching all 179 leaf paths, modes, object types and blob hashes to the local candidate. The reviewer independently passed all 449 tests, typecheck, lint, local production build, 25 actual PostgreSQL tests plus SQL checks, three actual Realtime tests and ten Chromium journeys. The SQL catalog was also checked against its source JSON, all six assets and 60 static count hints were checked, and Unicode source hash/conformance checks passed. No unresolved material findings remain. The complete request, rubric, raw report, resolved findings, scores, evidence limits and remote verification are preserved in phase4_review_receipt.jsonl.
The frozen chooser policy intentionally has no unapproved reassignment or timeout: a departed anchor/first solver leaves the choice waiting. The screen explains the absent chooser and offers the existing leave/create-new-room path. Final cross-phase acceptance and human usability/accessibility evidence remain Phase 6. Moderation, suggestions and reactions remain Phase 5. Deployment, branch movement and release machinery remain Phase 7. The MCP hook still reports missing marker/no-session/health-failed with an empty failsafe path; recovery success is not claimed.
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