feat(thressgame-coverage): Wave 8 (WS protocol v2 + suspended execution + request-choice)

- T43: WS protocol v2 schema; protocolVersion field; RequestChoice/SubmitChoice/ProtocolVersionMismatch messages; v1 backward-compat
- T44: server-side request-choice broadcast on push; submit-choice validation (kind/forPlayer/value-type); ordered LIFO matching
- T45: PendingChoices stack on GAME_ENTITY; pushPendingChoice/popPendingChoice/peekPendingChoice helpers; serializePendingChoice (Map<->Array roundtrip); MAX_CHOICE_DEPTH=8 enforced
- T46: submitChoiceAndResume(engine, choiceId, value); descriptor-by-id lookup; bindings restored; remaining primitives executed via runPrimitives from primitiveIndex+1
- T47: request-choice primitive; SuspendedExecution exception mechanism; dispatcher catches and stops sibling iteration; deterministic choiceId via session counter
- T48: AutoChoiceResolver test transport (answersByKind / answersById); drainPendingChoices LIFO walk
- T49: server-side choice timeout enforcement; auto-resolve to first-option-per-kind; disconnect handler (forfeit / pause)
- T50: ChoiceTimeoutPolicy on GAME_ENTITY (timeout-with-default | no-timeout); CreateGameRequest extended; default 60s

Tests: 2533 -> 2658 (+125). bun run check exit 0.
This commit is contained in:
Joey Yakimowich-Payne 2026-04-26 11:54:24 -06:00
commit d4931a50ee
No known key found for this signature in database
37 changed files with 6841 additions and 295 deletions

View file

@ -9,7 +9,53 @@
"ses_23783ab16ffeCNSrXoK1oU7I8s",
"ses_2378026c8ffeZz47LuDzc1yyOK",
"ses_237814da3ffetUoZjKTSOO0cB6",
"ses_23780806affeiG673hb1eMrpsc"
"ses_23780806affeiG673hb1eMrpsc",
"ses_235d8c6cbffekI3rCHS6rLNdo6",
"ses_235d7c8c3ffevhSDIGLSkMrwNO",
"ses_235cfe743ffe2N5FSM90MQYuDD",
"ses_235d08175ffeRq75plcCft0ZUN",
"ses_235cf01bbffeGESSEHcB5t15WC",
"ses_235c8fea7ffevojZ0J0zr2Zn3h",
"ses_235c802e1ffe932t8Qwm6GILer",
"ses_235b3ae54ffeDjc32WJJEi91I2",
"ses_235b4a11fffeTysghRpnEw1zm1",
"ses_235a623edffe21fs3XZx4PeUwi",
"ses_235a6f921ffeaIzvrGGx9WTYho",
"ses_23597b9d4ffeCpsXUNeTVJdfV7",
"ses_2359867c3ffe466SWYlhCbvZEQ",
"ses_2358d7a82ffeKiEG0dR1dFOyFq",
"ses_2358cb310ffeJZX2DKGIBpMHU3",
"ses_2357fa71fffeHqeNXgXTtw24Iy",
"ses_235806b2cffeumryspoou0AlPO",
"ses_2357fe8c7ffexhJQD6igSnvQxY",
"ses_235714ec9ffeSWji2tbMppVVbq",
"ses_235717e9fffeFSaIjU5NW3E0gP",
"ses_23570f69effe4dsaVR8os1DSLt",
"ses_235708647ffeO6BxMMd9LuXrpm",
"ses_2356294f8ffeBOlgE6BrEi2AFJ",
"ses_23561c1bdffeZRftCYw7vm4fGL",
"ses_235612ec9ffe6IGVG3oXA8dKQb",
"ses_23561f811fferp0KvVdRXCXdTM",
"ses_23552d008ffeWpj9wJbHeHFtCi",
"ses_23552196dffe4y0RAnIt3ZVMlN",
"ses_235529f7cffe3hEu1Zg4bCXkWj",
"ses_235524bdeffevbzmdzjNrlYQU2",
"ses_23551e581ffepk0Fd0fBvTT8zl",
"ses_235432315ffe3QqApGeYfIQhDC",
"ses_23542810dffeCeEN7a6QTC7euD",
"ses_23542b136ffeHzVyuRHQ3bGdIr",
"ses_2353d0fb9ffe344OSbUt2h4DUg",
"ses_23542e700ffeaNZ38Gu2rB4AMn",
"ses_235435127ffem08ucCdVjXUvrX",
"ses_2353a7e10ffen7xf6isCaWxTSx",
"ses_23532bdf8ffe10tzyDRFnbKYmK",
"ses_235327422ffea3XMbiMtidzoLl",
"ses_235332417ffeG8us5EUAdJTLg6",
"ses_2353249ebffeJsqU1tzcLwUjIw",
"ses_23525bc2dffe2BqHbsMG5X7EHn",
"ses_23526101fffeonGIpO7HY1na2X",
"ses_235254abeffe5rnNrqeb7sDsgd",
"ses_235251f33ffeXIhn18D3PFrX04"
],
"plan_name": "thressgame-coverage",
"agent": "atlas"