From 9ae8e9e09ddcb74b8e0000afc755c0b4f8aeb645 Mon Sep 17 00:00:00 2001 From: "Jesse.Markowitz" Date: Sat, 29 Aug 2026 06:04:55 -0400 Subject: [PATCH] TODO: extended play verified against the running server on phoenix.local MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v0.7.3:0 is installed. #35 keeps its heading — nobody has played this at a table with humans — but the engine and server half is no longer merely compiled. Dealt a two-seat competitive game over the HTTP API with days: 1, played it to the end of its timetable, and watched it reach `awaitingExtension` with the official result frozen at config.days. Voted yes; the bot followed; the game returned to active with extraDays: 1 and the official outcome unchanged. Both test games were deleted afterwards. The carry-over claim was checked the same way rather than asserted. phoenix held five saves before the update, one resumable; after it the resume log is identical — same game, same 7 intents, same three refusals at the same move with the same code. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01EAgJSmeV8zrMh55Mj85ESb --- TODO.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/TODO.md b/TODO.md index e0a9578..360f972 100644 --- a/TODO.md +++ b/TODO.md @@ -225,7 +225,25 @@ Queued 2026-08-29, from building Gitea#11 and #16 (both shipped in v0.7.3, main the replay recorder has a `GameState`, so it is a small refactor rather than a one-line swap. Not done in v0.7.3 because nothing about it is player-facing and the change earns its own look. -35. **Extended play has never been played at a real table.** v0.7.3 is tested — engine, server, +35. **Extended play has never been played at a real table** — but it now works on a real server. + **Verified live on phoenix.local, 2026-08-29**, against the installed v0.7.3:0 rather than in + tests: a two-seat competitive game (one human client, one bot) was dealt over the HTTP API with + `days: 1`, played to the end of its timetable, and reached `awaitingExtension` on Day 2 with + `official = { win, winner 0, daysElapsed }` frozen at Day 1 (`config.days`) and votes + `[null, null]`. Voting yes as seat 0 was accepted, the bot followed as designed, and the game + returned to `active` with `extraDays: 1` and the official outcome **unchanged**. The tally rode + the Frame to the client. Both test games were deleted afterwards; the box is back to Jesse's own + `WHISTLE-4086` and the `FREIGHT-3230` lobby. + + **The save carry-over claim was also checked rather than asserted**: phoenix held five saves + before the update, of which `WHISTLE-4086` resumed and three were already refused by the 0.7.2 + deck change. After updating to 0.7.3 the log is identical — same game resumed with the same 7 + intents, same three refusals at the same move with the same code. + + **What is still untested is the part the item is named for: humans, at a table.** Nobody has sat + down and played a game off the end of its timetable, and the multiplayer vote has never been + driven through two browsers — what a second player sees while waiting on a first, and whether + "waiting on Carol" is legible once Carol has closed her laptop, are still unanswered. v0.7.3 is tested — engine, server, replay, an all-bot regression — and compiled and exercised headlessly, but nobody has sat down, run a game off the end of its timetable and voted. The multiplayer vote in particular has only been driven through `session.intent`, never through two browsers: what a second player sees while