feat(thressgame-coverage): Wave 13 (real-pipeline integration tests + Playwright e2e)

Closes systemic gap S1 from oracle audit: parity tests now drive the REAL move pipeline, not direct primitive .apply() calls.

T78 — 8 *-real.test.ts files alongside existing parity tests:
- minefield-real, mr_freeze-real, parry-real, all_on_red-real, religious_conversion-real, ice_physics-real, kamikaze-real, mind_control-real
- Each registers descriptor via applyCustomDescriptor (production path), drives engine.applyMove, asserts engine.session state
- Existing *.test.ts files unchanged (kept as logical-semantics locks)

T79 — Playwright e2e for 3 request-choice flows:
- T68/1 single-player (mr_freeze) PASSES (1.7s) — real WS round-trip
- T68/2 both-player (mind_control) PASSES (2.8s) — 2 browser contexts
- T68/3 nested (parry) is .fixme() with documented gaps:
  * Gap G: trigger dispatcher uses synthetic descriptorId='__trigger__' that submitChoiceAndResume can't resolve
  * Gap H: cancel-capture has engine-level rollback but no compensating wire-level game.delta reversal

Production additions (minimal, test-supporting):
- GameClient declares protocolVersion=2 to receive request-choice broadcasts
- data-testid='request-choice-modal' + data-choice-kind + data-marker-kind selectors on UI
- Dev-only globalThis.__paratypeChessClient debug hook (gated on import.meta.env.DEV)
- Test-only __test__.activate-descriptor WS frame handler (gated on NODE_ENV !== production)

Tests: 2824 -> 2853 (+29 unit). Playwright e2e: 3 active pass + 1 .fixme(). bun run check exit 0. No regressions in 120-test e2e suite.
This commit is contained in:
Joey Yakimowich-Payne 2026-04-26 16:03:59 -06:00
commit 4ec48af0f9
No known key found for this signature in database
16 changed files with 2261 additions and 442 deletions

View file

@ -87,7 +87,8 @@
"ses_23470e618ffeKuOqxTyN3WMJmm",
"ses_23470aeb5ffen8G71F1kKLXWE4",
"ses_234704ca2ffexGa7YYzkVJ7XQy",
"ses_234714154ffePk1XQUSvX1tcat"
"ses_234714154ffePk1XQUSvX1tcat",
"ses_2346243beffeatri9EFKougtx4"
],
"plan_name": "thressgame-coverage",
"agent": "atlas"