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%