Kingpin's Room v1: build plan

Status: 2026-10-14, Claude for Sarah. Built the same day and not yet committed: the engine (19 tests), the import, the views and two full-run UI tests all pass. Replaces Kingpin Showdown. The art comes from the finished pack at Image-Assets/Kingpins-Room/ (78 files), governed by kingpin-art-spec.md. Calico's concede and win frames are stand-ins until Sarah's corrections land.

Rules

Decided by Sarah, 2026-10-14

Decided earlier (memory, art spec)

Defaults Claude chose (Sarah can overrule any of them)

  1. Boss hands have no clock. Only Calico's hands drain the pot over time.
  2. Calico's clock. During each of her hands the pot holds for ReadingBudget.readOnlySeconds, so the clock never cuts into reading. It then drains in a straight line, losing up to 150 points by the end of ReadingBudget.seconds, and holds there. The floor of 200 still applies. A slow clean sweep of her three hands costs at most 450.
  3. Where a chip goes. A wrong pick puts the chip in front of the boss whose family owns the trap the player took, even if that boss has already left. The boss whose hand it was stays in the rotation either way. Untagged wrong choices, and traps from a family with no boss in play, put the chip with the hand's boss. This keeps the chips an honest record of which families cost the player, which is what Calico's weighting reads.
  4. Questions don't repeat within a run. If a family runs out, its boss draws again from questions already played this run, least recent first. Overplay has the smallest pool, at 39.
  5. A run is not saved. Leaving mid-run abandons it, as in The Tail. A run is about 16–18 hands: ten boss wins, the misses, and Calico's three.
  6. Content modes. Kingpin now deals from the Wager bank, so it gets all three modes: Fresh, Endless and My Misses. Under My Misses, each boss deals the player's open misses from their family first, then fills from the family pool. It leaves the makeable path that The Make still uses.
  7. Result rows. Each hand writes a VigilanceResult. Its points are the hand's change to the pot: −100 for a boss miss, 0 for a boss win, the clock's drain on a Calico win, and minus the whole pot on a Calico miss. The run's NightTake carries the banked pot.

Architecture

Core: PeregrineCore/Sources/PeregrineCore/Vigilance/KingpinRun.swift

A pure value type with no UI. It holds:

Art import: tools/kingpin_import.py

App: Peregrine/Views/Kingpin/

Remove and rename

Order of work

  1. Tell the My Misses session (peregrine-22) that the build is starting, as agreed. Kingpin deals Wager-bank ids, so it needs no new lookup for its misses. Confirm that with them before writing any results.
  2. Write KingpinRun and its tests.
  3. Write kingpin_import.py, then import and generate the catalog.
  4. Build KingpinStage and check the six seat states against the pack's review assemblies.
  5. Build KingpinHand and the full run loop, writing results.
  6. Calico's three hands, her clock and instant death.
  7. Remove and rename everything above, regenerate the project, build, then run the unit and UI tests.
  8. Simulator pass: a full run on an iPhone 16-class simulator, with screenshots of each phase for Sarah. Check what a phone shows on screen, and make no claim about how the game feels on a real device.

Known art issues carried in

Final review

Pros

Cons and risks

Edge cases

Confidence: 80/100 that this is the right shape. The engine, results and import pattern are proven in The Tail and the Darkroom. The remaining uncertainty is in Calico's clock (default 2), chip attribution (default 3) and the chip scale, which only playing the game will settle.