Classic Fruits 3×3 — Math Specification

LEGACY FROZEN v1 — SUPERSEDED DESIGN. This specification and all figures below describe the immutable 95.3967% / 65× backend pack created for GDD 0.1.0. They do not implement the SEVENS-anywhere jackpot design in GDD 0.2.0. Preserve this document as historical evidence. The GDD 0.2.0 math is specified in classic-fruits-3x3-v2-math-spec.md (v2-draft-0.1); nothing below describes it.

1. Identity and provenance

FieldValue
Game IDclassic-fruits-3x3
GDDclassic-fruits-3x3-gdd.md
Math packclassic-fruits-3x3.yaml
Pack version/statusv1 / frozen
Config SHA-256735ef19c8acee914c04aca048e36f54296538c94653efe14cd916aac6fe69efa
Backend source commit9aa50db2a11d1edea9e6bbf54790c298787874e7
Reference modellibs/mathengine
Game typeslot
Created/frozen2026-05-10
Spec generated2026-08-08

The SHA-256 above hashes the canonical YAML file as it existed at the recorded backend commit. Changing the YAML produces a different math version and requires regeneration of all evidence.

2. Current verdict

GateResultEvidence
Config parsesPassEmbedded YAML package tests
Exact enumerationPass512 states, probability mass 1.0
Pack RTP targetPass95.3967% is within 95.5% ±0.3 percentage points
Exact max winPassDeclared and reachable values are both 65×
Golden vectorsPassFive canonical seed vectors
Monte Carlo cross-checkPass500,000-round test: 0.959817 ±0.009573 contains exact RTP
Current tier certificationRejectedFails settled RTP-tier floor, big-win frequency and max-win band; sigma draft band also fails

The pack is mathematically enumerable and internally consistent, but it is not certified under the current low tier policy. “Frozen” describes config immutability, not certification approval.

3. Bet and payout model

PropertyDefinition
Active lines5, fixed
Paytable unitPer-line multiplier
Display/result unitMultiplier of total bet
NormalizationSum of line pays divided by 5 active lines
Maximum-win cap65× total bet
FeaturesNone

For line awards (L_1,\dots,L_5), the round multiplier is:

[ X = \min\left(65, \frac{\sum_{i=1}^{5}L_i}{5}\right) ]

The canonical pack uses float64 multipliers. Wallet money conversion and currency rounding belong to the platform boundary and are not defined by this pack.

4. Target and exact metrics

MetricDeclared targetExact resultStatus
RTP95.5% ±0.3 pp95.3967%Pass
Hit frequency32–36%33.4839%Pass
Volatility tierLow / tier 1σ = 2.574029Below current draft tier band 5–10
Max win65×65× reachablePack-consistent; below certification tier band
Feature frequency00Pass; no features configured

Exact distribution figures:

FigureValue
RTP0.953967
Base RTP0.953967
Hit frequency0.334839
Variance6.625625
Standard deviation2.574029
Reachable max65.0000×
Round upper bound65.0000×
Cap probability0

Because there are no features, the exact distribution covers the complete round.

5. Symbols and paytable

SymbolType2 symbols3 symbols
WWild125
H2Regular80
H3Regular40
H4Regular20
L4Regular15
L3Regular11
L2Regular8
L1Regular15

Values are per-line multipliers before division by five active lines. Wild substitution behavior is defined by the shared mathengine line evaluator. No scatter payouts exist.

6. Paylines

LineReel 1Reel 2Reel 3
1111
2000
3222
4010
5212

Row 0 is top, 1 middle and 2 bottom.

7. Reel model

Each reel is an ordered list of eight weighted entries. One weighted draw selects the top entry; the visible column is that entry and the next two entries with wraparound.

Rows on a reel are correlated. They are not three independent weighted draws.

Reel 1

EntrySymbolWeightStop probabilityVisible column
0W20.062500W L1 L2
1L190.281250L1 L2 L3
2L270.218750L2 L3 L4
3L360.187500L3 L4 H4
4L440.125000L4 H4 H3
5H410.031250H4 H3 H2
6H320.062500H3 H2 W
7H210.031250H2 W L1

Reel 2

EntrySymbolWeightStop probabilityVisible column
0W40.125000W L1 L2
1L180.250000L1 L2 L3
2L260.187500L2 L3 L4
3L360.187500L3 L4 H4
4L440.125000L4 H4 H3
5H410.031250H4 H3 H2
6H320.062500H3 H2 W
7H210.031250H2 W L1

Reel 3

Reel 3 is identical to Reel 1.

Each reel's weights total 32, but this does not create 32 ordered strip positions. There are eight selectable entry indices per reel and therefore:

[ N = 8^3 = 512 ]

reachable reel-stop combinations.

8. Expected symbol visibility

Exact expected cells per 3×3 grid:

SymbolExpected cellsGrid share
H20.3750004.1667%
H30.6562507.2917%
H41.03125011.4583%
L11.15625012.8472%
L21.68750018.7500%
L32.00000022.2222%
L41.56250017.3611%
W0.5312505.9028%

9. Evaluation order

select one weighted entry per reel
→ construct three contiguous wrapping columns
→ evaluate five fixed paylines with shared line evaluator
→ apply Wild substitution
→ sum per-line paytable awards
→ divide by five active lines
→ apply MaxWinMultiplier = 65
→ return total-bet multiplier

There are no feature executors, scatter contributions, recursive states or additional RNG draws after grid generation.

10. Exact calculation

PropertyResult
MethodFull enumeration through mathengine.EvaluateWithGrid
State count512
Probability mass1.000000000000000
Sampling errorNone
Exact RTP0.953967
Distribution scopeFull round
Distinct model featuresNone

The exact calculator uses the same evaluator as runtime. This provides internal consistency, but independent cross-checking remains useful to detect shared evaluator errors.

11. Win distribution

Win bandExact probabilityApprox. 1 in N
00.665161131.5
(0, 1)0.0849609411.8
[1, 5)0.214630134.7
[5, 10)0.0283203135.3
[10, 50)0.00653076153.1
[50, 100)0.000396732520.6
≥1000

The current certification helper reports big-win frequency 0.001923 for its own configured threshold. That threshold is not identical to every coarse histogram band and must not be reverse-engineered from this table.

12. Max-win analysis

PropertyValue
Declared ceiling65×
Reachable base maximum65×
Whole-round bound65×
Cap probability0

The maximum is reachable without the clamp truncating a larger natural result. Any reel or paytable change must rerun ValidateMaxWin; increasing the declared cap alone does not create a reachable higher win.

13. Monte Carlo cross-check

Exact calculation is authoritative for this enumerable game. Simulation is used only as a regression/cross-check.

Latest fresh test evidence observed while preparing this document:

PropertyValue
Rounds500,000
Simulated RTP0.959817
Test interval±0.009573
Exact RTP0.953967
ResultPass: exact RTP lies inside test interval

The pack header also records a historical one-million-round run cf-cal-pB8-1m with 95.42% RTP and approximately 33.45% hit frequency. Exact figures supersede sampled header figures wherever both exist.

14. RNG contract

Current backend behavior:

  • seed string is SHA-256 hashed;
  • the first eight digest bytes form the deterministic math/rand seed;
  • each RNG instance has no global mutable state;
  • the same seed and config reproduce the same result;
  • five pack golden seeds currently pass.

This is deterministic replay evidence, not external RNG certification. Production seed generation, unpredictability, mapping analysis and jurisdiction-specific RNG testing remain separate release requirements.

15. Golden and parity evidence

EvidenceCurrent result
TestGoldenVectorsPass: five seed vectors
TestReelModelIsWeightedStopNotIndependentRowsPass
TestExactStateSpaceIs512Pass
TestExactRTPWithinPackTargetPass
TestExactMaxWinMatchesDeclaredPass
TestExactAgreesWithMonteCarloPass
TestPackMatchesSimRunnerCopyPass in the inspected local checkout

A formal game-engine/reference parity manifest should additionally bind vectors to Game ID, config hash, RNG version and runtime build identity.

16. Certification findings

The current certification test grades the pack as tier low and returns rejected.

CheckActualRequired bandOutcomeBand status
RTP within pack tolerance0.9539670.955 ±0.003PassSettled
RTP within low tier0.953967[0.955, 0.965]FailSettled
Hit frequency0.334839[0.30, 0.45]PassSettled
Sigma2.574029[5, 10]FailDraft band
Big-win frequency0.001923[0.002, 0.005]FailSettled
Free-spin trigger0[0, 0.005]PassSettled
Max win65×[200×, 1500×]FailSettled

This creates a product decision:

  1. Retain the current simple low-variance classic model and revise its certification classification/policy where legitimately appropriate; or
  2. Create a new math version with different reels/paytable/targets to satisfy the current tier bands.

Do not mutate frozen v1 to force a pass.

17. Lifecycle and handoff

flowchart LR
    A["Frozen math pack v1"] --> B["Exact report"]
    A --> C["Golden vectors"]
    A --> D["PAR sheet"]
    B --> E["Runtime parity gate"]
    C --> E
    D --> E
    E --> F{"Certification policy passed?"}
    F -- "Current result: no" --> G["Decision / new version"]
    F -- "Yes" --> H["Certification package"]

Handoff artifacts:

ArtifactCanonical location/status
Config/Users/admin/kiro/backend/libs/mathengine/games/classic_fruits_3x3/classic-fruits-3x3.yaml
Embedded packlibs/mathengine/games/classic_fruits_3x3/pack.go
PAR fixturelibs/mathengine/parsheet/testdata/classic-fruits-3x3.golden.md
Golden vectorslibs/mathengine/games/classic_fruits_3x3/golden_test.go
Certification evidencelibs/mathengine/games/classic_fruits_3x3/certify_test.go
GDDclassic-fruits-3x3-gdd.md

18. Locked parameters

All of the following are locked in frozen v1:

  • ordered reel entries and weights;
  • paytable values;
  • five paylines;
  • Wild behavior through the evaluator;
  • five-line normalization;
  • 65× maximum-win cap;
  • absence of features;
  • RNG/replay behavior associated with existing golden vectors.

Any mathematical change requires a new config hash, new math version, regenerated exact/PAR evidence and full regression/parity testing.

19. Risks and limitations

RiskImpactRequired action
Certification policy rejects current tier assignmentCannot claim certified statusProduct/Math decision before release certification
Reference and exact calculation share evaluatorShared implementation bug could affect bothIndependent reel/paytable cross-check
RNG has deterministic evidence but no external certification evidence in this specRegulatory riskComplete RNG audit/testing for target market
Wallet monetary precision is outside math packIncorrect boundary conversion could alter money awardExact minor-unit contract and parity tests
GDD art mapping is new and not part of frozen mathAsset/content mismatch riskPreserve stable symbol IDs and approve final mapping

20. Sign-off state

RoleStateComment
Math integrityPass for frozen pack consistencyExact RTP, max win and golden tests pass
Game designDraftVisual and presentation decisions remain open
Runtime parityPending formal artifactBackend pack tests pass; full build-bound manifest not recorded here
CompliancePendingTarget markets not selected
CertificationRejected under current low-tier policyRequires explicit resolution; do not label certified