games: the casino is open, and the note that said it wasn't
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
This commit is contained in:
@@ -14,9 +14,42 @@ A multi-session build. This section is the handover; read it before anything els
|
|||||||
|
|
||||||
### Start here (next session)
|
### Start here (next session)
|
||||||
|
|
||||||
**Everything builds, everything is played, and nothing since blackjack is
|
**The whole casino is live.** *(2026-07-14.)* All six games (seven, counting the
|
||||||
deployed.** Six games (seven, counting the No Mercy dial) sit on main and the live
|
No Mercy dial) are deployed and playing on https://games.parodia.dev. Nothing is
|
||||||
casino is still blackjack alone. Deploying is the next job — see "Next, in order".
|
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
|
**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
|
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
|
### Next, in order
|
||||||
|
|
||||||
1. **Deploy.** Hangman, solitaire, trivia, UNO (both rule sets) and hold'em are all
|
1. **Nothing is queued.** Every game in the header line is built, played, and
|
||||||
played and all of them are sitting on main un-deployed — the live casino is
|
deployed. What is left is the open list below — none of it blocking, none of it
|
||||||
blackjack and nothing else. The server runs `StartTriviaBank`, so trivia's bank
|
promised.
|
||||||
fills itself once the binary is out there, but the first player to try a ladder in
|
2. The obvious candidates, in the order I'd take them: **blackjack has no split**;
|
||||||
the first minute after a deploy gets the 503.
|
**hold'em has no multiway policy**; and the trivia bank refills on a 12h tick
|
||||||
2. **Nothing else is queued.** Every game in the header line is built. What's left is
|
(`games: trivia bank refill started target=400`), so a player trying a ladder in
|
||||||
the open list at the bottom of this section: hold'em has no multiway policy, and
|
the first minute after a fresh deploy can still meet a 503.
|
||||||
blackjack still has no split.
|
|
||||||
|
|
||||||
Still open on hold'em, none of it blocking: the policy is **heads-up**, so a
|
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%
|
six-handed table is an approximation of it (the hit rate falls from 95% to about 17%
|
||||||
|
|||||||
Reference in New Issue
Block a user