feat(lobby): drop left honest-AI games from the finished list
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 9s
CI / integration (pull_request) Successful in 13s
CI / ui (pull_request) Has been skipped
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m4s
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 9s
CI / integration (pull_request) Successful in 13s
CI / ui (pull_request) Has been skipped
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m4s
A finished honest-AI (vs_ai) game the player left — by resigning or by abandoning it to the 7-day inactivity timeout (end_reason 'resign'/'timeout') — no longer appears in that player's own lobby finished list. The new game.Service.ListForLobby filters ListForAccount for the lobby endpoint only; the admin console and the account-merge count keep the full set. The filter keys on the game's end reason, not on which seat left, so it extends to any player should the robot ever resign.
This commit is contained in:
@@ -382,7 +382,12 @@ at once, only the human is ever on the clock, so the per-turn timeout doubles as
|
||||
game emits **no `your_turn`** (the instant reply makes it redundant; `opponent_moved`
|
||||
still advances the UI), its **GCG export labels the robot seat "AI"**, and the
|
||||
games-started / -abandoned metrics carry a **`vs_ai`** attribute so AI and human games
|
||||
chart separately (the admin `/games` list and game card also show the AI flag).
|
||||
chart separately (the admin `/games` list and game card also show the AI flag). A finished
|
||||
honest-AI game the player **left** — `end_reason` `resign` or `timeout` — is also dropped from
|
||||
that player's own *finished* lobby list by `game.Service.ListForLobby` (a lobby-only filter over
|
||||
`ListForAccount`); the admin console and the account-merge count keep the full set, and a
|
||||
normally finished AI game stays. The filter keys on the game's end reason, not on which seat
|
||||
left, so it extends to any player should the robot ever resign.
|
||||
|
||||
The robot keeps **no per-game state**: every choice is derived deterministically
|
||||
from the game's bag `seed` (a restart-stable FNV-1a mix), so a background driver
|
||||
|
||||
Reference in New Issue
Block a user