Vault Breakers: Super Score — Evidence Manifest, draft-v0.1

DEV ONLY · NOT FOR PRODUCTION · NOT FOR CERTIFICATION. This manifest binds a set of Draft results to one config and one backend commit. It is not a freeze manifest and confers no lifecycle status.

Status: APPROVED as an UNBALANCED REFERENCE BASELINE on 2026-08-19.

That approval accepts the mechanics, the runtime and the recorded whole-game estimate. It does not advance the lifecycle state, does not approve DEV publication, and does not make anything frozen, final or certified.

Bonus Buy at 100× / 500× remains deliberately unbalanced. Those prices return 15.52% and 10.94% against this baseline's free spins. That is a known, accepted property of the baseline, not a defect left unnoticed — see the simulation report.

No figure in this manifest or in any document it binds may be rewritten. Superseded by draft-v0.2; retained as the reference baseline it records.

Bound identities

FieldValue
Game IDvault-breakers-super-score
Go packagevault_breakers_super_score
Math versiondraft-v0.1
Lifecycle statedraft — mutable
Canonical configlibs/mathengine/games/vault_breakers_super_score/vault-breakers-super-score.yaml
Config SHA-2569631c0afdf4ba5553ab52d86e20242b8221cd90b1e807452b8d80036f45e8933
Backend Git SHA6adc7c07c37a74dc7126c6cc060077f4c49cac18
Backend branchfeat/vault-breakers-draft-math (not merged, not pushed, not deployed)
RNG algorithm/versionsha256-trunc64-be/go1-alfg#1
Enginelibs/mathengine
Mechaniccount_anywhere_tumble/v1, introduced by this work

Recompute both hashes before trusting this manifest:

git -C /Users/admin/kiro/backend rev-parse HEAD
shasum -a 256 /Users/admin/kiro/backend/libs/mathengine/games/vault_breakers_super_score/vault-breakers-super-score.yaml

The config SHA-256 is computed from the exact bytes the binary embeds (vault_breakers_super_score.RawYAML()), so a hash recorded here describes the config that actually ran. It is pinned by identity_test.go.

Documents

Backend artifacts

PathRole
libs/mathengine/games/vault_breakers_super_score/vault-breakers-super-score.yamlcanonical executable config
.../pack.goembedded pack, ID, MathVersion, MechanicVersion, Config(), RawYAML()
.../pack_test.golocked design contract
.../exact_test.goclosed-form snapshot results
.../identity_test.gopinned config hash, identifiers, RNG algorithm
.../evidence_test.go//go:build vbdraft — the recorded runs
.../tuning_test.go, .../shape_probe_test.go, .../inventory_probe_test.go, .../buy_probe_test.go//go:build vbtune — tuning instruments, NOT evidence
libs/mathengine/evaluator_anywhere.gocount-anywhere evaluator
libs/mathengine/draw_model.goper-cell independent draw model
libs/mathengine/multiplier_charge.goweighted charges and the per-spin accumulator
libs/mathengine/super_scatter.goscatter-class resolution and the instant prize
libs/mathengine/parity/{configs,vectors,parity}.goparity configs, recorded vectors, comparison
apps/game-engine/internal/app/service/count_anywhere_money_test.gomoney and recovery on a cascading round

Reproduction commands

cd /Users/admin/kiro/backend

# Contract, exact results, pinned identity
go test -race -count=1 ./libs/mathengine/games/vault_breakers_super_score

# Engine and runtime
go test -race -count=1 ./libs/mathengine/... ./apps/...

# Reference-to-runtime parity, both halves
make test-parity

# PostgreSQL integration
TEST_DATABASE_URL='postgres://game:game@127.0.0.1:5432/game_engine?sslmode=disable' \
  go test -tags integration -race -count=1 ./apps/game-engine/... ./apps/math-studio/...

# The recorded evidence runs
go test -tags vbdraft -count=1 -v -timeout 180m \
  ./libs/mathengine/games/vault_breakers_super_score -run Draft

Results bound by this manifest

Exact and estimated are separate columns throughout. Nothing sampled is labelled exact.

MetricMethodValueUncertaintyTargetVerdict
First-snapshot regular RTPEXACT35.1765%none
First-snapshot hit rateEXACT18.2904%none
P(4+ scatter-class), one snapshotEXACT1 in 216.9none
P(3+ scatter-class), one snapshotEXACT1 in 32.9none
E[instant prize | qualifying snapshot]EXACT6.236251×none
Whole-game RTPestimated95.8775%SE 0.1611 pp, CI [95.5617%, 96.1933%]96.0000%PASS at −0.76 SE
base regular-symbol RTPestimated46.9290%inherits
base multiplier contributionestimated36.3648%inherits
free spins — regular partderived4.9403%inherits
free spins — charge partderived3.9869%inherits
Super Scatter instant prizeestimated3.6565%inherits
σ per roundestimated16.112286high volatilityconsistent
Hit frequencyestimated18.6993%
Zero-return frequencyestimated81.3007%
Longest dry streakobserved81 rounds
Maximum observed awardobserved14,635.0000×sample maximum, not a bound
Declared maximumWITNESSED50,000×none50,000×, reachablePASS
Free-spins triggerestimated1 in 169.1
Super Scatter prizeestimated1 in 2,804.3
Retrigger frequencyestimated0.036069 per free spin
Standard buy fair priceestimated16.1701×inheritsdesign said 100×RECOMPUTED
Super buy fair priceestimated56.9895×inheritsdesign said 500×RECOMPUTED

Percentiles — estimated, 5,000,000 rounds

P50P75P90P95P99P99.9
0.0000×0.0000×1.7500×4.9400×14.6500×78.8400×

Exceedance — estimated, 100,000,000 rounds

≥1×≥10×≥100×≥500×≥1,000×
0.123271900.017916000.000747310.000056070.00002291

Seeds and sample sizes

RunSeedSizeShards
A — whole-game confirmationvault-breakers-draft-v0.1-confirmation100,000,000 rounds16 × 6,250,000
B — distribution and chargesvault-breakers-draft-v0.1-distribution5,000,000 rounds
C — feature and buysvault-breakers-draft-v0.1-feature200,000 sequences × 2 modes16 workers
Max-win witnessconstructed grid, no seed1 deterministic evaluation

Shard seeds and boundaries are listed in the simulation report.

Method boundaries

  • The whole game is not enumerable. mathengine.CheckEnumerable refuses this config, and the refusal is asserted rather than worked around. There is no exact whole-game RTP and no exact whole-game max-win distribution.
  • What IS exact — one snapshot's regular RTP, its hit rate, the scatter-class trigger probability and the Super Scatter instant-prize expectation — follows from the per-cell independent draw model alone, and is never re-derived by sampling.
  • Exact results are produced by the same engine that executes the game. They are internally exact; they are not independent verification.
  • The max-win claim is a constructed reachability witness plus a containment argument, not an enumeration.
  • The RTP tolerance is the interval the confirmation run supports. The ±0.10 pp proposed before the variance was measured is not attainable below roughly 883 million rounds; see the Math Spec.

Unresolved and out of scope

  1. Free spins use the base reels. FreeSpinsExecutor ignores a free-spins-specific reel set, so charge-dense free-spin reels would make simulation and runtime disagree. The consequence is a weak feature and derived buy prices far below the design's reference values. Highest-value next step; it re-baselines book_of_odin.
  2. No math-studio authoring preset. Scoped out deliberately after measuring the cost: DrawModel needs a new column in studio_reel_sets and a migration (LayoutType is a column, and InitialStops is already dropped by that store), plus multiplier_charge and super_scatter as domain types with validation, build_config translation, feature-store and handler decoding, and count_anywhere in the accepted win types. Until then the pack cannot be seeded through versions/from-pack, the route scripts/seed-magic-vault.sh uses to publish to DEV. The canonical YAML is complete and executable.
  3. No game-engine DEV admission gate. Deliberate — publishing is out of scope until this Draft is approved.
  4. Free-spin charge distribution is not separately reported by the atomic executor; only base-game charges are itemised.

Status

draft-v0.1. Not frozen. Not certified. Not published. Not enabled for any operator.

APPROVED 2026-08-19 as the unbalanced reference baseline. Mechanics and runtime approved; whole-game estimate recorded; Bonus Buy 100× / 500× deliberately left unbalanced; not approved for DEV publication. Superseded by draft-v0.2, and retained unchanged.