Book of Odin v2 — Evidence Manifest, draft-v0.1

DEV ONLY. NOT FOR PRODUCTION. NOT FOR CERTIFICATION. Internal measurement of an unfrozen pack. Nothing here is an external certification claim.

1. What this manifest binds

FieldValue
Game IDbook-of-odin
Config versionbook-of-odin-v2
Math versiondraft-v0.1
Pack artefact SHA-256d42a0d819b9fd9e8fa52b7646925778fd82192e4512be9dfd88839b2f85e8f01
Canonical config hashb3ac1b12f3225dafb6f098a01ba2ae3237383a523e217a84abe22d8544cc4f40
Mechanic versionhold_and_win/v2
RNG algorithmsha256-trunc64-be/go1-alfg#1
Backend revisionecd6a70ade8a63e8ce35dde6b3a387f4d8df8504 (local, not pushed)

Every figure below is a statement about these bytes under this RNG. If either moves, the evidence describes math that is no longer in the repository.

2. Where the evidence lives

EvidenceLocationHow to run
Product-rule contractlibs/mathengine/games/book_of_odin/pack_test.gogo test ./libs/mathengine/games/book_of_odin
Exact trigger frequencies.../exact_test.gosame
Deterministic golden vectors.../golden_test.gosame
Identity + canonical hash.../identity_test.gosame
Driver-fidelity proof.../reference_driver_test.gosame
Exact RTP + simulation + max win + buy EV.../evidence_test.gogo test -tags bodraft -timeout 60m ./libs/mathengine/games/book_of_odin
Seed generation.../seedgen_test.gogo test -tags seedgen -run TestGenSeedJSON ./libs/mathengine/games/book_of_odin -v
Reference↔runtime paritylibs/mathengine/parity + game-engine halfmake test-parity
Nested-feature runtimeapps/game-engine/.../spin_orchestrator_nested_feature_integration_test.gogo test -tags integration -race with TEST_DATABASE_URL

3. Exact results

No sampling. Full enumeration of the reel-stop state space (20⁵ per reelset) and integer convolutions of the reel windows.

QuantityValue
Base line RTP39.5138%
Free Spins line + expansion RTP30.6726%
P(BOOK ≥ 3) per base spin0.01090004 (1 in 91.7)
P(COIN ≥ 6) per base spin0.00684777 (1 in 146.0)
P(COIN ≥ 6) per free spin0.00684777
P(3+ BOOK and 6+ COIN)0.0000050656 (1 in 197 410)
E[initial locked | trigger]6.393517 cells
E[H&W launches per series]0.068478
P(≥2 H&W in one series)0.0020344
Max single base round259.4×
Max single free spin500×

4. Simulation parameters

ParameterValue
Drivermathengine.RunHoldAndWinToCompletionStats — the shared Start/Step state machine
Seed schemebook-of-odin-probe-hw:base and book-of-odin-probe-hw:fs:<variant-id>; per-feature seed is <scheme>:<draw-index>
Sample size5 000 000 features (base), 555 555 per variant × 9 (FS)
Sampling methodrejection sampling of trigger grids from the pack's own reels, so the entry distribution is the game's rather than an assumed one
Runner identitygo test -tags bodraft ./libs/mathengine/games/book_of_odin
Reported interval95%, normal approximation from the sample standard deviation
ResultPoint95% CI
Conditional mean award, base entry36.6231×[36.5914, 36.6549]
Conditional mean award, FS entry36.6120×±0.0318
Full-grid rate, base entry0.0007522
Base-origin H&W RTP25.0787%±0.0217 pp
FS-origin H&W RTP2.7328%±0.0024 pp
GRAND contribution0.2869%inside the two above
Whole-game MC uncertainty±0.0241 pp

5. Reconciliation

whole game = 39.5138%  base lines            EXACT
           + 30.6726%  FS lines + expansion  EXACT
           + 25.0787%  base-origin H&W       SAMPLED
           +  2.7328%  FS-origin H&W         SAMPLED
           ─────────
           = 97.9979%   target 98.0000%   deviation -0.0021 pp   tolerance ±0.10 pp

GRAND (0.2869%) is inside the two Hold & Win terms, not a fifth addend.

6. Max-win status

CeilingValueStatus
Round cap5000×never binds
Base round259.4×exact, enumerated, golden witness
Free spin500×exact, enumerated, witnessed at bo-fs:FS_BOOK_A:293
Hold & Win award2000×analytic bound, no witness

The Hold & Win ceiling has no witness and the reason is recorded rather than left implicit: all fifteen cells would have to draw the 100× coin, (1/102)¹⁵ ≈ 7.4 × 10⁻³¹, before accounting for filling the grid. The feature is a stochastic state machine, so enumeration is impossible and no seed search can exhibit it. The change request permits a documented reason in place of a proof.

7. Skipped, blocked or absent

ItemStatusWhy
Whole-game RunBatch simulationBLOCKEDFreeSpinsExecutor ignores FreeSpinsConfig.Variants — it spins the base reel set and expands the configured symbol. Proven by TestAtomicFreeSpinsDriverIgnoresVariants. The decomposition replaces it and is more precise, but an independent whole-game cross-check is unavailable until the driver learns variants.
Volatility metricsNOT RECORDEDWin-distribution ceilings and the feature duration distribution are recorded; a volatility index is not.
Freeze evidenceNOT ASSEMBLEDThe pack is Draft and unfrozen. →frozen needs validation, exact-or-simulation evidence, max win, config hash and parity assembled server-side by math-studio.
CertificationNOT SOUGHTDraft.
Direct Buy Hold & WinOUT OF SCOPEExcluded by the approved design.
FS-triggering parity vectorsNOT RECORDABLESame driver limitation as row 1, plus game-engine stripping hold_and_win. Both features are graded in the game-engine integration suite instead.

8. Defects found and closed during this work

Recorded because each one would have shipped silently and each is now pinned by a test.

#DefectConsequence if shippedPinned by
1Base game expanded BOOKBase RTP 148.66% instead of 39.51% — the game pays more than it takes on base spins aloneTestBaseGameDoesNotExpand
2Simultaneous BOOK+COIN dropped the Hold & WinPlayer loses an earned feature whenever both triggerTestPlanDurableFeatures_SimultaneousBookAndCoinOpensBoth, TestNested_SimultaneousBookAndCoinKeepsBothFeatures
3H&W inside free spins settled atomicallyNo durable row, no respins, no coin values shown — while appearing to payTestFreeSpinRoundConfig_StripsHoldAndWin, TestNested_FreeSpinWithCoinsOpensOneDurableHoldAndWin
4Retry of the FS spin that opened a nested feature was refusedClient stranded: it cannot know a step index for a feature it has not seenTestNested_ReplayedKeyOpensNoSecondSequence
5hold_and_win/v1 could not express the approved award rulesNo MINI/MINOR/MAJOR and additive GRAND were unrepresentablehold_and_win_v2_test.go

9. Immutability confirmations

ArtefactConfirmation
book-of-odin-v1Migration 008 unchanged; SHA-256 e87b3e29396ac8ff05196ae6d56fe46e7282a53b77388c1e0fc9af5d33346990
hold_and_win/v1magic_vault_5x3 and hold_and_win_reference untouched; their golden vectors pass unmodified
Existing golden vectorsNone regenerated
Frozen reference packsUntouched