Slot Game Design Document — Hold & Win Reference

This GDD specifies a reference mechanic pack. Sections of the standard template that describe a themed product release (art, animation, audio, market/compliance matrix, telemetry dashboards) are explicitly out of scope and are marked as such rather than filled with invented content.

1. Document control

FieldValue
Game nameHold & Win Reference
Game ID / slughold-and-win-reference
Mechanic IDhold-and-win
GDD versiondraft-v0.2
StatusDraft
Ownermath/backend (agent-authored, user-approved)
Created2026-08-09
Updated2026-08-09
Source designdocs/superpowers/specs/2026-08-09-hold-and-win-reference-design.md at commit c44bc01

Change log

VersionDateAuthorReasonChanged leversEvidence
draft-v0.12026-08-09agentInitial GDD for the approved designnone — first revisionsuperseded
draft-v0.22026-08-09agentReconciled to the approved tuning (option A3) and the implemented backend response contractlanding chance 15% → 4.3%; regular-value weights2M confirmation

2. Approval status

GateStatusScopeDate/owner
DESIGNapprovedDesign spec c44bc01, exact contract below2026-08-09 / user
DRAFT MATHapprovedObserved behaviour and tuning direction (option A3)2026-08-09 / user
FREEZE & HANDOFFawaitingReconciled Final and protocol hashesnot submitted

No internal test, simulation or handoff approval is external certification.

3. High concept

One-sentence pitch

Land six or more coin symbols and they lock in place, then keep respinning the empty cells for as long as new coins keep landing — fill the whole grid and take the Grand.

Player experience goals

  • The feature reads as a second, self-contained game with its own tension curve.
  • Every landed coin visibly resets the respin counter, so progress feels earned.
  • A full grid is a distinct, unambiguous top event rather than an incremental payout.

Design pillars

  • The locked grid is the entire game state — nothing hidden.
  • Respins are the only resource; landing is the only way to buy more.
  • One award, once, at the end.

Non-goals

  • No collector symbol, no multiplier, no feature buy, no additional wager in v0.1.
  • No theme, art or audio identity; this pack is a mechanic reference.

4. Game summary

PropertyValue
Grid3 columns × 5 rows (15 cells)
Layoutlines
Base gameordinary line evaluation on the pack's reel set
Featurehold_and_win respin feature
Additional wagernone
Payout unitmultiplier of total bet
Max win500× total bet, applied once to the whole round
Currency handlingwallet amounts are exact integer minor units; multipliers stay float64

5. Core gameplay loop

1. Player commits total bet. Base grid is spun and evaluated normally.
2. Count visible BONUS symbols.
   < 6  → round ends with the base result. No feature. No feature RNG consumed.
   >= 6 → feature triggers.
3. Trigger: every BONUS position locks. Each locked cell is assigned a prize,
   in normative cell order. Remaining respins = 3.
4. Respin step: every EMPTY cell, in normative order, gets one land/miss draw.
   - Landed cells lock and receive a prize.
   - At least one land  → remaining respins reset to 3.
   - No lands           → remaining respins decrease by 1.
   - Locked cells are never redrawn.
5. Repeat step 4 until remaining respins = 0 or all 15 cells are locked.
6. Settle once:
   - All 15 cells locked → award exactly Grand 500× total bet.
   - Otherwise           → award the sum of locked prizes, capped at 500× total bet.

6. Terminology

TermMeaning
CellOne of the 15 grid positions
Normative cell ordercolumn 0 rows 0-4, then column 1 rows 0-4, then column 2 rows 0-4
LockedA cell holding a prize; never redrawn
EmptyA cell with no prize; eligible for a landing draw
PrizeA coin value or jackpot tier attached to a locked cell
StepOne respin pass over all empty cells
Respins remainingSteps left before the feature settles
Full gridAll 15 cells locked

7. Symbols

Symbol roleBehavior
BONUSThe coin symbol. Counts toward the trigger; locks on trigger and on landing; carries a prize
Ordinary symbolsEvaluated by the base game only. No feature role

BONUS has no line payout — it is not a scatter pay. Its only value is the prize attached to it inside the feature.

8. Base-game rules

Standard line evaluation on the pack's reel set. The base result is independent of the feature and is reported separately from the feature award.

Evaluation order

StepOperationEffect
1Spin the base gridProduces the visible 3×5 grid
2Evaluate base line winsProduces the base win multiplier
3Count BONUSDecides whether the feature triggers
4Run the feature if triggeredProduces the feature award multiplier
5Apply the round cap onceBounds base + feature at 500× total bet

Base-game pseudocode

grid       = spinReels(reelSet)
baseWin    = evaluateLines(grid)
bonusCount = countVisible(grid, "BONUS")
featureWin = bonusCount >= 6 ? runHoldAndWin(grid) : 0
roundWin   = min(baseWin + featureWin, 500)

9. Feature specification

Feature: Hold & Win

ParameterValueState
Trigger conditionat least 6 visible BONUSlocked
Initial respins3locked
Respin reset on new prizereset to 3locked
Miss-only stepdecrement by 1locked
Grid3 × 5, 15 cellslocked
Cell orderreel-major, column 0 rows 0-4 firstlocked
Locked cells redrawnneverlocked
Additional wagernonelocked
Full-grid awardexactly Grand 500× total bet, replacing the prize sumlocked
Cap applicationonce, at settlementlocked
Landing chance per empty cell4.3% (43000 PPM, draft-v0.2; was 15%)open
Regular coin values1×, 2×, 3×, 5×, 10×, 20×locked
Regular coin weights30, 25, 18, 15, 10, 2 (draft-v0.2; was 40, 28, 16, 10, 5, 1)open
Prize-type weightsRegular 1000, Mini 10× 20, Minor 25× 5, Major 100× 1open
Base trigger weightsreel strips of the packopen

Grand is not a landed prize type. It exists only as the full-grid award.

State machine

Idle ──(>=6 BONUS)──> Triggered ──(lock imports, respins=3)──> Respinning
Respinning ──(step lands >=1)──> Respinning   (respins reset to 3)
Respinning ──(step lands 0)────> Respinning   (respins -= 1)
Respinning ──(respins == 0)────> Settled
Respinning ──(15 cells locked)─> Settled
FromEventToState mutation
Idle>= 6 BONUS visibleTriggeredCopy BONUS positions to locked; assign prizes in normative order
Triggeredinitialization completeRespinningrespinsRemaining = 3, stepIndex = 0
Respinningstep with at least one landRespinningLock landed cells; respinsRemaining = 3; stepIndex += 1
Respinningstep with no landsRespinningrespinsRemaining -= 1; stepIndex += 1
RespinningrespinsRemaining == 0SettledAward prize sum, capped once at 500×
Respinningall 15 cells lockedSettledAward exactly 500×

Feature rules

  1. A step visits only empty cells, in normative order.
  2. Each visited empty cell consumes exactly one land/miss draw.
  3. A landed cell consumes one prize-type draw, and one regular-value draw only when the type is Regular.
  4. Locked cells consume no draws.
  5. Settlement consumes no draws.
  6. The cap and the full-grid Grand each apply exactly once, at settlement.

Feature edge cases

CaseBehavior
Exactly 5 BONUSNo trigger. No feature RNG consumed. Base result stands
Exactly 6 BONUSTriggers. 6 cells lock, 9 remain empty
All 15 cells BONUS on the trigger gridFull grid at trigger; settles immediately at 500× with zero steps
A step fills the last empty cellFull grid termination takes precedence over the respin reset
Prize sum below 500× on a full gridStill exactly 500× — Grand replaces the sum, it does not add to it
Prize sum above 500× without a full gridCapped once to 500×
Retry, reconnect or duplicate step requestResumes the same step; consumes no new RNG and charges no wager
Persisted state with an unknown mechanic versionFails closed; never falls back to hold_and_spin behavior

10. Player controls and UX states

Out of scope for a reference pack beyond the contract the API must expose: while the feature is active the round reports a typed next-state of kind hold_and_win carrying respins remaining, locked cells with their prizes, step index and accumulated award.

11-15. Win presentation, anticipation, art, animation, audio

Out of scope for a reference mechanic pack. No theme, asset inventory, animation or audio direction is specified here; a consuming game supplies its own.

16. Help, paytable and disclosures

A consuming game must disclose: the 6-symbol trigger, 3 respins, the reset-on-land rule, the prize tiers (Regular values, Mini 10×, Minor 25×, Major 100×), that Grand 500× is awarded only for a full grid and replaces the prize sum, and that the round is capped at 500× total bet.

17. Market and compliance matrix

Out of scope for a reference pack. DRAFT / NOT FOR CERTIFICATION.

18. Error and recovery behavior

ConditionRequired behavior
Request retry mid-featureSame step replays from persisted state; no new RNG, no wager
Reconnect mid-featureFeature resumes at the persisted step
Persisted state version unknownFail closed or follow an explicit version-routing rule; never guess
Config unavailable for the persisted math versionBlock paid play before any debit; do not settle on a substitute config
Invalid config (dimensions, trigger count, respins, probabilities, weights, tiers, cap)Rejected at validation; never silently degraded to hold_and_spin

19. Telemetry

Minimum mechanic metrics a consuming game should record: trigger count, steps per feature, reset count, full-grid count, per-tier prize counts, feature award distribution.

20. Acceptance criteria

  • Trigger boundary verified at five and six BONUS.
  • Initial lock import and prize assignment follow normative order.
  • Only empty cells are redrawn; locked cells consume no RNG.
  • A land resets respins to 3; a miss-only step decrements by exactly 1.
  • Zero-respin and full-grid termination both verified.
  • Mini, Minor, Major and full-grid Grand semantics verified.
  • Ordinary sum and a single 500× cap verified.
  • Same seed, state and step identity reproduce the same result.
  • Duplicate step replay consumes no RNG and charges no wager.
  • Step-by-step execution equals RunToCompletion.
  • Invalid configs are rejected.
  • Existing games and the partial hold_and_spin feature are unchanged.
  • Serialized responses carry a complete 15-cell snapshot plus the exact newly_landed delta and match the OpenAPI schema and the documented deterministic fixtures.

21. Open decisions

DecisionState
Landing chance and regular-value weightsclosed at draft-v0.2 under the approved tuning direction
Prize-type weights, base trigger weightsstill open; neither was needed
Whole-game RTP target (base ≈76%, total ≈96%)set 2026-08-09 by user for this reference pack
500× applies as a single whole-round boundset 2026-08-09 by user

22. References