From a4666866a8fbb26e2e8e3098b0525ba8f6a966b4 Mon Sep 17 00:00:00 2001 From: prosolis <5590409+prosolis@users.noreply.github.com> Date: Tue, 14 Jul 2026 11:49:13 -0700 Subject: [PATCH] games: the casino is open, and the note that said it wasn't MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All six games are deployed. The plan has been saying "only blackjack is live" for two sessions and it was not true — hangman, solitaire, trivia and UNO had already gone out, and hold'em was the only thing actually missing. One loop over the routes said so in seconds: /games/holdem was a 404 on the live box while the other five were a 302 to sign-in. Ask the server what it serves. The note was written by whoever last deployed; the 404 was written by the thing that is running. Also written down: the six-handed position bug (03524ae), the half of it that was never at risk (the bots read InPosition, not Position — the money never moved), and the rig trap that cost most of the session, which is that a live hand outlives the script that dealt it and will happily lie to you about the blinds. Claude-Session: https://claude.ai/code/session_013M5nD7PgUboJXoDcYHzpuJ --- pete_games_plan.md | 54 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/pete_games_plan.md b/pete_games_plan.md index 71eaa13..1bc61e5 100644 --- a/pete_games_plan.md +++ b/pete_games_plan.md @@ -14,9 +14,42 @@ A multi-session build. This section is the handover; read it before anything els ### Start here (next session) -**Everything builds, everything is played, and nothing since blackjack is -deployed.** Six games (seven, counting the No Mercy dial) sit on main and the live -casino is still blackjack alone. Deploying is the next job — see "Next, in order". +**The whole casino is live.** *(2026-07-14.)* All six games (seven, counting the +No Mercy dial) are deployed and playing on https://games.parodia.dev. Nothing is +queued — what is left is the open list at the bottom of "Next, in order". + +**And the deploy note this plan had been carrying was wrong.** §0 said "only +blackjack is live" for two sessions running. It wasn't: hangman, solitaire, trivia +and UNO had already gone out at some point, and only hold'em was actually missing +(`/games/holdem` was the one route on the live box returning a 404 while the other +five returned a 302 to sign-in). The lesson is cheap and worth keeping: **ask the +running server what it serves — one loop over the routes — rather than trusting a +note about what was deployed.** The note was written by whoever last deployed; the +404 was written by the thing that is actually running. + +**A bug the browser found in hold'em, and where it wasn't.** Six-handed, the felt +printed **CO on three seats at once**, and folding the small blind relabelled it +the cutoff. `Position()` walked the table with `nextIn` — which steps *over* folded +seats — while sizing that walk with a seat count that still *included* them, so +every muck slid the anchors round. There is now a second walker, `nextDealt`, which +skips only the seats that are not in the hand at all, because **where you sit is +decided when the button moves and does not change because somebody mucked**. The +pair is easy to confuse and now says so at both definitions. *(`03524ae`)* + +Two things about that bug are the useful part. The bots never read `Position()` — +they read `InPosition()`, which genuinely does want the last seat still live — so +**the policy and the money were never touched; the only thing it ever broke was the +badge**, which is exactly why nothing caught it. And it was found only by dealing a +six-handed hand in a browser and reading the seats. + +**A trap in the dev rig, which cost most of a session.** The felt appeared to show +the button posting a *big* blind heads-up. It was not: the engine is right (the +button posts the small blind and acts first before the flop, and there is a test). +What was on screen was a **half-played hand left behind by a failed drive script** — +the rig's table survives across runs of the driver. **A stale live hand will lie to +you.** Read the state from a hand you dealt yourself, and when the felt and your +model of the engine disagree, ask the engine directly (a throwaway `_test.go` in the +package beats an hour of staring at pixels). **The money finding, and the thing to actually remember:** the *normal* UNO tiers had been mispriced for a while, and it wasn't No Mercy's fault. They were set @@ -570,14 +603,13 @@ you count the No Mercy dial) are on main and have never been deployed. ### Next, in order -1. **Deploy.** Hangman, solitaire, trivia, UNO (both rule sets) and hold'em are all - played and all of them are sitting on main un-deployed — the live casino is - blackjack and nothing else. The server runs `StartTriviaBank`, so trivia's bank - fills itself once the binary is out there, but the first player to try a ladder in - the first minute after a deploy gets the 503. -2. **Nothing else is queued.** Every game in the header line is built. What's left is - the open list at the bottom of this section: hold'em has no multiway policy, and - blackjack still has no split. +1. **Nothing is queued.** Every game in the header line is built, played, and + deployed. What is left is the open list below — none of it blocking, none of it + promised. +2. The obvious candidates, in the order I'd take them: **blackjack has no split**; + **hold'em has no multiway policy**; and the trivia bank refills on a 12h tick + (`games: trivia bank refill started target=400`), so a player trying a ladder in + the first minute after a fresh deploy can still meet a 503. Still open on hold'em, none of it blocking: the policy is **heads-up**, so a six-handed table is an approximation of it (the hit rate falls from 95% to about 17%