docs: seed the holde-em repo folder (spec move + CLAUDE.md + implementation plan, 6-max reference)#77
Merged
Conversation
…ation plan) Move docs/holdem-spec.md into docs/hole-em/, the seed of the game's own repository (the whole folder relocates to a new repo after this lands; development continues there). The seed is self-contained: - CLAUDE.md: the operational guide for the future repo — what OXT/ LiveCodeScript/LCB are, the four required extensions with their key API surfaces (bt*/sx*/ox*/b2k*), the carried OXT gotchas (Box2Dxt numbering preserved because the spec cites them), the single-threaded playbook condensed for a card game, and the security house rules. - IMPLEMENTATION-PLAN.md: Phases 0-5 mapped to the spec's milestones M0-M4, each with machine-verifiable vs OXT-pass exit criteria, plus the parallel upstream workstream (SodiumXT ristretto255) and a risk table. - README.md: the future repo's front door. - tools/check-livecodescript.py: the family's static gate, carried from Box2Dxt and adapted (targets src/ + examples/, embedded-kit check dropped as not-yet-applicable; exits 0 gracefully while no scripts exist). - holdem-spec.md: unchanged in substance; three references reworded so the spec reads correctly standalone (companion docs named, gotcha numbering pointed at CLAUDE.md, the 'new repo' row now 'this repo'). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ARv3pRjgM2H9ga7ZYQmvhe
Answering 'can we make this usable with 6 players?': the spec already targets 2-9 seats, but a 6-max table exposed two seams that scaled badly if left implicit, now fixed: - Level 2 deal latency: unmask chains MUST batch per rp1 tick (one message per player covering every pending position), making the deal pipeline O(N) ticks (~6 s per street at 6-max, a live dealer's pace) instead of O(cards x N) (over a minute). Card-by-card dealing is now explicitly a spec violation. - Sprite pool sizing: card sprites are sized for max seats at showdown (6-max: 18, 9-max: 24), not the heads-up count. Also promotes 6-max to the stated reference configuration in the goals, and raises the plan's exit criteria to match: Phase 1 hotseat, Phase 2 online, and Phase 4 mental-poker sessions all now verify at 6 seats. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ARv3pRjgM2H9ga7ZYQmvhe
Directory and every in-file reference renamed to holde-em. The one remaining sub-6 assumption (plan Phase 1 'four seats on one machine') now reads six seats, matching the 6-max reference configuration and the 6-seat exit criteria set in the previous commit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ARv3pRjgM2H9ga7ZYQmvhe
SethMorrowSoftware
marked this pull request as ready for review
July 11, 2026 04:33
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
Prepares the online hold'em project to move into its own repository:
docs/holdem-spec.md(merged in #76) moves intodocs/holde-em/, and the folder is built out as a self-contained repo seed. After this lands, the folder relocates to a new repo and development continues there.6-max is the named reference configuration throughout: every latency budget, pool size, and phase exit criterion is stated for (at least) six seats.
Contents of
docs/holde-em/CLAUDE.md— the operational guide for the future repo, written so a fresh session needs nothing else: what OXT / LiveCodeScript / LCB are (the three platform layers), the four required extensions with install notes and their key API surfaces (bt*rp1/DHT/BEP44,sx*crypto,ox*Tor,b2k*Kit sheets/sprites/bodies), the carried OXT gotchas — Box2Dxt numbering preserved becauseholdem-spec.mdcites gotchas 14/17/19/23/24/27 by number — plus five new house rules (H1–H5), the single-threaded performance playbook condensed for a card game, the security house rules, and the planned repo layout.IMPLEMENTATION-PLAN.md— Phases 0–5 mapped to the spec's milestones M0–M4 with per-phase exit criteria that separate machine-verifiable (static gates, CI KATs) from OXT-pass-only — hotseat (Phase 1), online (Phase 2), and mental-poker (Phase 4) sessions all verify at 6 seats; the parallel upstream workstream (SodiumXT ristretto255 exposure) that gates Phase 4; and a risks table carried from the family's experience.README.md— the future repo's front door (pitch, extension family table, doc pointers, dev workflow).tools/check-livecodescript.py— the family's static gate carried from this repo'stools/, adapted: targets every.livecodescriptundersrc/+examples/, the embedded-kit drift check dropped as not-yet-applicable (noted for restoration if the repo ever embeds a library), and a graceful exit-0 while no scripts exist yet (verified).holdem-spec.md— moved, substance unchanged except the 6-max hardening; references reworded so it reads correctly standalone. The two seams that scale with seat count are now pinned: unmask chains batch per rp1 tick (deal pipeline is O(N) ticks — ~6 s per street at 6-max, a live dealer's pace; card-by-card dealing is declared a spec violation) and the sprite pool is sized for max seats at showdown (18 at 6-max, 24 at 9-max).Docs + one Python tool; no Kit edit (no sync/harness bump), no ABI impact, nothing outside
docs/. Spec verified clean of smart quotes; adapted gate script runs and exits 0.🤖 Generated with Claude Code
https://claude.ai/code/session_01ARv3pRjgM2H9ga7ZYQmvhe