Repository navigation
UI Gap Implementation
Current amendment persistence: 19-record QBrain readback confirms the current cap10 requirement amendment, stable IDs/native mappings and 28 changed criteria still unsatisfied. Original design provenance, case synchronization receipts, v2.7 before copies and execution history remain retained; current case/export reconciliation and exact-source execution are separate obligations. CAP15-LEGACY retains its historical ID with current10-player text. Documentation does not satisfy criteria or establish a passing game.
Historical implementation snapshot. Its original 2 through 25/service/provider/install scope and results below are preserved. Current rules v2.8 (31 October 2026) instead require 2 through 10 players, 25 observers unchanged, guest-only public play and the owner GitHub admin-only PWA. See the current release contract and completion plan; this old approval does not certify changed source or the current 9-game/54-participation/432-solve matrix.
This implementation realizes UI-DEC-01..08 and the linked QBrain records. The implementation snapshot is identified by the SHA256 manifest in implementation-manifest.json; the Git base remains3273c121de6517aec34503d8c769b0159e9e52df with preserved pre-existing local work. The final execution receipt distinguishes source, browser/port fixtures, real SQL and remaining operational dependencies.
Moderators can request changes to a suggestion, hold a nominated candidate and resume its review with a reason. Proposers alone can revise a changes-requested category and its three pairs. Both legacy pending and new pending_review records support ordinary independent review. Deferrals never publish, consume an appeal or change scores. Atomic content audits retain actor, reason, case version, prior/new status and prior/new proposal. Migration011 extends the status constraint and one-open unique index without rewriting historical evidence.
stateDiagram-v2
pending --> changes_requested: independent request + reason (suggestion)
changes_requested --> pending_review: proposer resubmits three valid pairs
pending --> on_hold: independent hold + reason (nomination)
on_hold --> pending_review: independent resume + reason + threshold check
pending_review --> approved: independent review
pending_review --> rejected: independent review
rejected --> appealed: existing one-appeal policy
approved --> approved: complete curation makes future content playable
Drafts and uncertain commands live only in tab memory. Internal Next links preserve them across ordinary navigation. A purpose-separated opaque session-generation value accompanies verified session reads/guest entry; a replacement session for the same profile also clears old drafts, commands and component state. This value is neither the raw cookie nor its credential-store hash and cannot authenticate a request. Cancel/Escape in the native profile dialog makes no write and restores its opener; controls inside the dialog are draft-only until Save. Sign-out, reload, identity change and authorization loss clear private state.
A shared lock prevents duplicate submissions. Uncertain retries retain the exact endpoint, method, serialized payload and command ID across route changes. Successful results stay scoped and locked until a current mounted consumer acknowledges them, so a completed private-room creation cannot lose its destination while its original page is unmounted. Content/admin/game/room/social denial invalidates older read generations; late bodies cannot restore private projections or another session's success. No raw server/network exception is rendered. Room GET reads drain the body and handle status/ownership before parsing successful JSON; room commands use controlled failure text. Malformed GET/POST sentinel regressions verify the room alert cannot display parser body content.
No-solver summaries now schedule automatic continuation three seconds after the authoritative end. Three seconds is an automatic-advance delay, not a guaranteed minimum summary display; an optional manual Continue may advance sooner. A delayed worker starts a full20-second initial answer stage at its current time. Duplicate/manual races create one next round, and the eighth round schedules no ninth. A catalog revision race returns retryable unavailability for system deadlines so a valid job is not acknowledged as obsolete. The automatic transition is audited as system:deadline.
Discovery links carry UX-only provenance. A current authoritative last-seat loss returns a non-member to a fresh first-page board (fresh=1), with visible unavailable/retry feedback if that read fails. Existing members and uncertain winning joins are preserved; the pending command is resolved canonically. Direct room/code/invitation links retain read-only observation. Navigation alone sends no readiness or Leave command.
Styles enforce wrapping, minimum inline sizing, visible focus, contrasting control borders and44x44primary actions. Browser measurements cover320x568,390x844,844x390, the320CSS-pixel/4x-device-scale equivalent of1280at400%zoom, and200%root-text enlargement. Score/stage live-region text and error alerts are exercised with focus unchanged. These are DOM/layout and headless Chromium assertions, not physical screen-reader, Safari/iPhone or OS-installation certification.
-
npm test -- --maxWorkers=2 --testTimeout=60000 --hookTimeout=60000: unit/domain/application/contract tests, including command timing, independent roles, exact retries and session/result lifecycle. -
pwsh -NoProfile -File tests/integration/run-phase1.ps1: owned disposable PostgreSQL, all migrations, real locking/projections/atomic audit/idempotency, role denial, catalog race and the2..25service matrix. Nomination-count setup and the race-test queue selector are disclosed fixtures; their SQL command transactions are real. -
WORDPAIRS_BROWSER_PATH=/usr/bin/chromium npm exec playwright -- test --config playwright.phase6.config.ts: actual React pages and browser interaction. HTTP and persistence/time ports are isolated fixtures using real application/domain services. This suite proves UI behavior, not real Realtime delivery. -
npm run typecheck,npm run lint,npm run build: required compile/lint/production checks. The build runs after the browser server releases.next.
See implementation-receipt.json, evidence, the updated case execution sections, criterion audit and QBrain readback. The separate full private-push2..25UI run, real provider credentials and physical phone installation remain open execution dependencies; these tests do not close TEST-ROOMSYNC-139 or LIVE-07. No shared/live requirements are invented from fixtures, and no deployment, commit or push is implied.
Independent hostile validation approved the final234-file source inventory at99%accuracy/99%completeness. All seven findings and earlier rejected candidates remain in the append-only review archive. Final evidence is542unit/61browser/68SQL tests, plus successful lint, typecheck and production build. The reviewer independently reran9focused domain/timing/private-state tests. Approval is scoped to this UI extension and does not certify contest entry or outstanding real transport/device/provider obligations.
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