Skip to content

Add game-type format profiles (final roadmap item) - #11

Merged
testtest126 merged 3 commits into
mainfrom
feature/game-formats
Jul 22, 2026
Merged

Add game-type format profiles (final roadmap item)#11
testtest126 merged 3 commits into
mainfrom
feature/game-formats

Conversation

@testtest126

Copy link
Copy Markdown
Owner

Summary

  • GameFormat (6 cases: .mttRegular, .mttTurbo, .mttHyper, .pko, .satellite, .cash) + GameFormatProfile — a pure defaults/config layer carrying per-format starting-point values: default effective stack, whether antes are the sensible assumption, whether the PKO bounty overlay defaults on (and its seed size), whether/how much the ICM-aware UI should lean in, and blind-level speed.
  • This is design judgment, not ground-truth math or a transcribed source — unlike ICM (validated against a published worked example) or the range models (transcribed from cited charts), there's no external "correct answer" for what a hyper-turbo's typical starting stack should default to. Every value is disclosed in the doc comments and ai-docs/FORMATS.md as this project's own chosen default, with a one-line rationale — not defended as more "correct" than a reasonable alternative choice.
  • Defaults only, never a mutation: no model this feeds (PushFoldRange/OpeningRange/CallingRange/ThreeBetRange/FourBetRange/BountyEquity/ICM/ICMRiskPremium) reads a GameFormat at all — a caller reads a profile once, at format-selection time, to pre-fill an existing parameter. Nothing clamps or overrides a value the user has already set.
  • Judgment calls worth flagging explicitly:
    • Turbo/Hyper share Regular MTT's ICM weight (0.5) — blind speed changes stack depth, not payout shape, so this project chose not to invent an unjustified distinction there.
    • PKO's ICM weight (0.4) is set below Regular MTT's — reflecting the commonly-discussed PKO tension that a collectible bounty incentivizes looser play, partially offsetting ICM's tightening pressure (already described in BOUNTY.md's "two competing forces" section).
    • PKO's default bounty size (33% of starting stack) reuses the exact figure already used as a worked example in BountyEquity's own doc comment, rather than inventing a second independent guess.
    • Satellite's ICM weight (0.9) is the highest of any format — every seat pays the same, so min-cash ≈ the entire goal.
  • New Game Format picker view: selecting a format resets seeded fields (stack/bounty/ICM) to that format's defaults, freely editable after. Deliberately self-contained rather than retrofitting every existing screen's own independent state — scoping rationale is in the view's doc comment and FORMATS.md's Consumers section.

Test plan

  • swift test (PokerKit): 235/235 green (220 baseline + 15 new GameFormat tests — internal-consistency checks: exhaustive/stable case list, Codable/rawValue round-trip, pko-is-only-bounty-format, cash-has-neither-icm-nor-bounty, satellite-leans-hardest-on-icm, pko-leans-less-than-regular, stack-depth-shrinks-with-speed, and structural invariants like bounty-fraction-set-iff-bounty-enabled).
  • App build succeeds on simulator (iPhone 17, iOS 27.0, Xcode 27 beta).
  • App UI test suite: 21/21 green (excludes BankrollTrackerUITests.testLogSessionUpdatesListAndSummary, previously confirmed pre-existing/flaky on a clean main checkout across the last two PRs — unrelated to this one).
  • New GameFormatUITests covering the default (Regular MTT) seed, PKO seeding bounty-on at 33%, and Cash seeding ICM/bounty off with the speed row hidden entirely.

Roadmap status

This is the last item on the original roadmap (push/fold → RFI → calling → bounty → equity → 3-bet/4-bet → ICM → formats). Per standing instruction, stopping here for direction before starting the variants/PLO track.

🤖 Generated with Claude Code

Six formats (mttRegular/mttTurbo/mttHyper/pko/satellite/cash), each carrying
a GameFormatProfile of sensible starting-point defaults for the existing
range/bounty/ICM tools to seed from. A pure defaults/config layer — no
model this feeds reads a GameFormat; nothing here mutates or overrides a
user's own choices, it only ever pre-fills a starting value.

This is design judgment, not ground-truth math (unlike ICM) or a
transcribed source (unlike the range models) — every value is disclosed as
this project's own chosen default in the doc comments, with tests checking
internal consistency (satellite leans hardest on ICM, hyper starts
shallower than regular, pko is the only format with bounty on) rather than
external truth.
Explains why FORMATS.md has no source to cite (unlike ICM.md/RANGES.md) —
this is disclosed judgment about typical/sensible starting points, not
ground truth or a transcription.
Selecting a format seeds (previews, doesn't mutate) its default stack,
bounty toggle+size, and ICM-awareness — self-contained rather than a
retrofit of every existing screen's independent state; see the view's doc
comment and ai-docs/FORMATS.md's Consumers section for the scoping
rationale.
@testtest126
testtest126 merged commit 4af16c5 into main Jul 22, 2026
2 checks passed
@testtest126
testtest126 deleted the feature/game-formats branch July 22, 2026 05:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant