fix(thressgame-coverage): F1+F4 remediation (T58 RequestChoiceModal + coin-flip kind)

Final Verification Wave found two real blockers:
1. T58 RequestChoiceModal.tsx was marked complete but did NOT exist on disk.
2. request-choice locked 6-kind enum was shipped as 5 (missing 'coin-flip').

Remediation:
- Build RequestChoiceModal.tsx with role=dialog, aria-modal=true, ESC/backdrop close, kind-specific input UI for all 6 kinds (rps / coin-flip / piece / square / column / row); 4 tests
- Add 'coin-flip' to:
  - request-choice primitive paramsSchema enum
  - PendingChoice.kind union (schema.ts + util/pending-choices.ts)
  - WS protocol ChoiceKindSchema (server/protocol.ts)
  - choice-timeout.firstDefaultForKind (defaults to 'heads')
  - broadcast.isValidChoiceValue (accepts 'heads' | 'tails')
- AutoChoiceResolver: deterministic alternating heads/tails for coin-flip

T68 e2e tests remain .skip()'d pending UI integration (modal-into-GameView wiring + activate-descriptor UI) — a follow-up task. The sentinel test asserts the gap exists so when integration lands, skips lift in the documented order.

Tests: 2740 -> 2744 (+4). bun run check exit 0.
This commit is contained in:
Joey Yakimowich-Payne 2026-04-26 14:09:28 -06:00
commit 88581ff6a9
No known key found for this signature in database
17 changed files with 2248 additions and 10 deletions

View file

@ -55,7 +55,31 @@
"ses_23525bc2dffe2BqHbsMG5X7EHn",
"ses_23526101fffeonGIpO7HY1na2X",
"ses_235254abeffe5rnNrqeb7sDsgd",
"ses_235251f33ffeXIhn18D3PFrX04"
"ses_235251f33ffeXIhn18D3PFrX04",
"ses_235117916ffeVIqFPhwOaX9AFG",
"ses_235115205ffeSz44RxSp2ceFek",
"ses_235111588ffe2CDfEN7cBiY2Tf",
"ses_2351133beffeWP9yUObY2S64ag",
"ses_234efcbd3ffe8BuHY2u90Wz1rK",
"ses_234efdeafffe08yS4JRWZ7S4uD",
"ses_234f006feffefL5q6WEqDYJtCf",
"ses_234eff09effed1uGpw4ugug3Yv",
"ses_234ead2eeffe5Zkywtv8XYTIL5",
"ses_234eab9afffeZM2ThzxvFbS7we",
"ses_234cf3732ffeG6qApsZze3p4CL",
"ses_234ea9ed5ffe3LO8eIohGogxE1",
"ses_234eaeabaffeUxClwG9AhyELI5",
"ses_234cf1fbbffepuEU0T4t2zL7vl",
"ses_234d69497ffeDpUTy4YmOP9Vzq",
"ses_234cf71d4ffeqORkJSGYcrCRNf",
"ses_234cf894dffef5jKrFXEXL5WaH",
"ses_234b28fafffe6oqUjKGisITV54",
"ses_234b26e14ffeuEORqZKKNh2byv",
"ses_234a6fb95ffeM3IHl6Ejoty4rI",
"ses_234a71fb6ffexvyikAILJb5T5V",
"ses_234a6dabaffeuQB1zQgChArKtq",
"ses_234a740d3ffe9EIQvGhSVIprrg",
"ses_2349f31ffffesMHCS2O8YUYzaB"
],
"plan_name": "thressgame-coverage",
"agent": "atlas"