@energy8platform/platform-core 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -358,13 +358,38 @@ npx platform-core-simulate --action buy_bonus
358
358
  # Ante bet — also a regular action in v5
359
359
  npx platform-core-simulate --action ante_spin
360
360
 
361
- # Custom: 5M iterations, fixed seed, custom config path
362
- npx platform-core-simulate --iterations 5000000 --bet 1 --seed 42 --config ./dev.config.ts
361
+ # Custom: 5M iterations, custom config path
362
+ npx platform-core-simulate --iterations 5000000 --bet 1 --config ./dev.config.ts
363
363
 
364
364
  # Force the JS runner (skip native binary)
365
365
  npx platform-core-simulate --js
366
366
  ```
367
367
 
368
+ ### Reproducibility: seeds, RNG backend, and replay
369
+
370
+ The native binary supports the same provably-fair seeding contract as the casino platform's `cmd/simulation` tool. Pass `--seed=<hex>` to reproduce a previous run bit-for-bit; if you omit it, the binary generates one and reports it in the output (`Master seed: …`) so you can rerun the exact distribution later.
371
+
372
+ ```bash
373
+ # Reproducible run — supply the master seed yourself
374
+ npx platform-core-simulate \
375
+ --iterations 1000000 \
376
+ --seed 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
377
+
378
+ # Fast PCG RNG — ~50× faster but diverges from production. Local iteration only;
379
+ # do NOT publish RTP numbers from --rng=fast.
380
+ npx platform-core-simulate --rng fast
381
+
382
+ # Replay a single round captured in `provably_fair_rounds`. Forces single-worker
383
+ # deterministic execution. All three flags are required and require provably-fair RNG.
384
+ npx platform-core-simulate \
385
+ --iterations 1 \
386
+ --replay-server-seed <hex> \
387
+ --replay-client-seed <client_seed> \
388
+ --replay-nonce-start 42
389
+ ```
390
+
391
+ The result echoes `masterSeed`, `rngKind`, `workerSeeds[]` (per-worker server_seed sequence), and `replay` when in replay mode — all also surface on `NativeSimulationResult` for programmatic use. Hex seeds only apply to the native binary; the JS fallback uses an integer RNG seed (decimal `--seed=42`) and ignores hex strings with a warning.
392
+
368
393
  Output matches the platform's server-side simulation format. A native Go binary is downloaded for your OS via postinstall (`packages/platform-core/bin/simulate-*`) for high-throughput runs; if it isn't available, the JS / worker-thread runner is used as a fallback.
369
394
 
370
395
  Programmatic use:
@@ -379,6 +404,17 @@ const runner = new ParallelSimulationRunner({
379
404
  });
380
405
  const result = await runner.run();
381
406
  console.log(formatSimulationResult(result));
407
+
408
+ // Native runner with the full provably-fair contract:
409
+ const native = new NativeSimulationRunner({
410
+ binaryPath, script, gameDefinition,
411
+ iterations: 1_000_000, bet: 1,
412
+ rng: 'provably-fair', // default; use 'fast' for local iteration only
413
+ seed: '00112233...eeff', // hex master seed; omit to auto-generate
414
+ // replay: { serverSeed, clientSeed, nonceStart }, // single-round reproduction
415
+ });
416
+ const r = await native.run();
417
+ console.log(`Reproduce with seed=${r.masterSeed}, RTP=${r.totalRtp.toFixed(4)}%`);
382
418
  ```
383
419
 
384
420
  ---
package/bin/simulate.ts CHANGED
@@ -25,18 +25,61 @@ function parseArgs(argv: string[]): Record<string, string> {
25
25
  return args;
26
26
  }
27
27
 
28
+ type Rng = 'provably-fair' | 'fast';
29
+
30
+ function parseRng(value: string | undefined): Rng | undefined {
31
+ if (!value) return undefined;
32
+ if (value === 'provably-fair' || value === 'fast') return value;
33
+ console.error(`Invalid --rng value: "${value}". Expected "provably-fair" or "fast".`);
34
+ process.exit(1);
35
+ }
36
+
37
+ /**
38
+ * The native binary takes a hex string seed; the JS RNG (fengari) takes a
39
+ * 32-bit integer. Accept the same `--seed` flag for both: pass plain decimal
40
+ * integers to the JS path, otherwise warn that the JS path doesn't honor hex
41
+ * seeds and fall back to a non-deterministic run.
42
+ */
43
+ function parseJsSeed(value: string | undefined): number | undefined {
44
+ if (!value) return undefined;
45
+ if (/^\d+$/.test(value)) return parseInt(value, 10);
46
+ console.warn(`--seed=${value} is a hex/string seed; only the native binary honors hex seeds. JS run will be non-deterministic.`);
47
+ return undefined;
48
+ }
49
+
28
50
  async function main() {
29
51
  const args = parseArgs(process.argv);
30
52
 
31
53
  const configPath = resolve(process.cwd(), args.config ?? './dev.config.ts');
32
54
  const iterations = parseInt(args.iterations ?? '1000000', 10);
33
55
  const bet = parseFloat(args.bet ?? '1');
34
- const seed = args.seed ? parseInt(args.seed, 10) : undefined;
56
+ const seed = args.seed; // hex string for native; the JS path also accepts numeric
35
57
  const action = args.action ?? 'spin';
36
58
  const params = args.params ? JSON.parse(args.params) : undefined;
37
59
  const workers = args.workers ? parseInt(args.workers, 10) : cpus().length;
38
60
  const useNative = args.native === 'true';
39
61
  const useJs = args.js === 'true';
62
+ const rng = parseRng(args.rng);
63
+
64
+ const replayServerSeed = args['replay-server-seed'];
65
+ const replayClientSeed = args['replay-client-seed'];
66
+ const replayNonceStart = args['replay-nonce-start'];
67
+ const replayFieldCount = [replayServerSeed, replayClientSeed, replayNonceStart].filter(Boolean).length;
68
+ if (replayFieldCount !== 0 && replayFieldCount !== 3) {
69
+ console.error('Replay mode requires all three flags: --replay-server-seed, --replay-client-seed, --replay-nonce-start');
70
+ process.exit(1);
71
+ }
72
+ const replay = replayFieldCount === 3
73
+ ? {
74
+ serverSeed: replayServerSeed!,
75
+ clientSeed: replayClientSeed!,
76
+ nonceStart: parseInt(replayNonceStart!, 10),
77
+ }
78
+ : undefined;
79
+ if (replay && rng && rng !== 'provably-fair') {
80
+ console.error('Replay mode requires --rng=provably-fair');
81
+ process.exit(1);
82
+ }
40
83
 
41
84
  // Load dev config
42
85
  let config: any;
@@ -91,6 +134,9 @@ async function main() {
91
134
  bet,
92
135
  action,
93
136
  params,
137
+ seed,
138
+ rng,
139
+ replay,
94
140
  });
95
141
  const result = await runner.run();
96
142
  console.log(formatNativeResult(result));
@@ -98,6 +144,10 @@ async function main() {
98
144
  }
99
145
 
100
146
  // ─── JS simulation path ─────────────────────────────────
147
+ if (rng || replay) {
148
+ console.warn('--rng / --replay flags are only honored by the native binary; ignored in JS mode.');
149
+ }
150
+ const jsSeed = parseJsSeed(seed);
101
151
  const useParallel = workers > 1;
102
152
  console.log(`Starting simulation for ${gameId} (${iterations.toLocaleString()} iterations, action: ${action}, workers: ${useParallel ? workers : 1})...`);
103
153
 
@@ -109,7 +159,7 @@ async function main() {
109
159
  gameDefinition: config.gameDefinition,
110
160
  iterations,
111
161
  bet,
112
- seed,
162
+ seed: jsSeed,
113
163
  action,
114
164
  params,
115
165
  workerCount: workers,
@@ -122,7 +172,7 @@ async function main() {
122
172
  gameDefinition: config.gameDefinition,
123
173
  iterations,
124
174
  bet,
125
- seed,
175
+ seed: jsSeed,
126
176
  action,
127
177
  params,
128
178
  onProgress,
package/dist/index.d.ts CHANGED
@@ -428,6 +428,17 @@ interface LogoSVGOptions {
428
428
  */
429
429
  declare function buildLogoSVG(opts: LogoSVGOptions): string;
430
430
 
431
+ type NativeRNGKind = 'provably-fair' | 'fast';
432
+ /**
433
+ * Replay mode parameters. Forces single-worker deterministic execution over a
434
+ * specific (server_seed, client_seed, nonce-start) triple — used to reproduce a
435
+ * production round captured in `provably_fair_rounds`.
436
+ */
437
+ interface NativeReplayParams {
438
+ serverSeed: string;
439
+ clientSeed: string;
440
+ nonceStart: number;
441
+ }
431
442
  interface NativeSimulationConfig {
432
443
  /** Path to native simulation binary */
433
444
  binaryPath: string;
@@ -443,6 +454,20 @@ interface NativeSimulationConfig {
443
454
  action?: string;
444
455
  /** Action params (buy_bonus, ante_bet, etc.) */
445
456
  params?: Record<string, unknown>;
457
+ /**
458
+ * Hex-encoded master seed for reproducible runs. The binary derives per-worker
459
+ * server_seeds via sha256(seed || ":" || worker_idx). When omitted, the binary
460
+ * generates one and returns it on the result so the run can be reproduced via
461
+ * `seed: result.masterSeed`. Ignored when `rng === 'fast'`.
462
+ */
463
+ seed?: string;
464
+ /**
465
+ * RNG backend: `'provably-fair'` (default, matches production) or `'fast'`
466
+ * (math/rand PCG — local iteration only, do NOT publish those RTP numbers).
467
+ */
468
+ rng?: NativeRNGKind;
469
+ /** Replay mode: requires `rng: 'provably-fair'` (or default). */
470
+ replay?: NativeReplayParams;
446
471
  /** Progress callback */
447
472
  onProgress?: (completed: number, total: number) => void;
448
473
  }
@@ -470,6 +495,18 @@ interface NativeSimulationResult extends SimulationResult {
470
495
  perStage?: Record<string, StageStats>;
471
496
  /** Win distribution histogram */
472
497
  winDistribution?: DistributionBucket[];
498
+ /** RNG backend that produced these numbers. */
499
+ rngKind?: NativeRNGKind;
500
+ /**
501
+ * Hex master seed that drove worker-seed derivation. Always set for
502
+ * `provably-fair` runs (supplied or auto-generated). Pass back via `seed`
503
+ * to reproduce the run bit-for-bit.
504
+ */
505
+ masterSeed?: string;
506
+ /** Per-worker server_seed sequence (lets support reproduce any individual spin). */
507
+ workerSeeds?: string[];
508
+ /** Echo of replay params when the run was in replay mode. */
509
+ replay?: NativeReplayParams;
473
510
  }
474
511
 
475
512
  export { DevBridge, EventEmitter, LOADER_BAR_MAX_WIDTH, PlatformSession, buildLogoSVG, createCSSPreloader, createPlatformSession, removeCSSPreloader };
@@ -17,7 +17,10 @@ class NativeSimulationRunner {
17
17
  this.config = config;
18
18
  }
19
19
  async run() {
20
- const { binaryPath, script, gameDefinition, iterations, bet, action, params } = this.config;
20
+ const { binaryPath, script, gameDefinition, iterations, bet, action, params, seed, rng, replay } = this.config;
21
+ if (replay && rng && rng !== 'provably-fair') {
22
+ throw new Error(`Replay mode requires rng="provably-fair" (got rng="${rng}")`);
23
+ }
21
24
  const id = crypto.randomBytes(8).toString('hex');
22
25
  const tmpDir = os.tmpdir();
23
26
  const luaPath = path.join(tmpDir, `sim-${id}.lua`);
@@ -41,6 +44,15 @@ class NativeSimulationRunner {
41
44
  if (params && Object.keys(params).length > 0) {
42
45
  args.push('-params', JSON.stringify(params));
43
46
  }
47
+ if (rng) {
48
+ args.push('-rng', rng);
49
+ }
50
+ if (seed) {
51
+ args.push('-seed', seed);
52
+ }
53
+ if (replay) {
54
+ args.push('-replay-server-seed', replay.serverSeed, '-replay-client-seed', replay.clientSeed, '-replay-nonce-start', String(replay.nonceStart));
55
+ }
44
56
  // Execute binary
45
57
  const output = await this.exec(binaryPath, args);
46
58
  // Parse JSON output
@@ -114,6 +126,16 @@ function mapGoResult(json) {
114
126
  workersUsed: json.workers_used,
115
127
  perStage,
116
128
  winDistribution: json.win_distribution,
129
+ rngKind: json.rng_kind,
130
+ masterSeed: json.master_seed,
131
+ workerSeeds: json.worker_seeds,
132
+ replay: json.replay
133
+ ? {
134
+ serverSeed: json.replay.server_seed,
135
+ clientSeed: json.replay.client_seed,
136
+ nonceStart: json.replay.nonce_start,
137
+ }
138
+ : undefined,
117
139
  _raw: {
118
140
  totalWagered: json.total_bet,
119
141
  totalWon: json.total_win,
@@ -209,6 +231,15 @@ function formatNativeResult(result) {
209
231
  if (result.workersUsed) {
210
232
  lines.push(`Workers: ${result.workersUsed}`);
211
233
  }
234
+ if (result.rngKind) {
235
+ lines.push(`RNG: ${result.rngKind}`);
236
+ }
237
+ if (result.masterSeed) {
238
+ lines.push(`Master seed: ${result.masterSeed} (pass --seed=${result.masterSeed} to reproduce)`);
239
+ }
240
+ if (result.replay) {
241
+ lines.push(`Replay: server_seed=${result.replay.serverSeed} client_seed=${result.replay.clientSeed} nonce_start=${result.replay.nonceStart}`);
242
+ }
212
243
  lines.push('', '--- Total ---', `Total RTP: ${result.totalRtp.toFixed(2)}%`, `Base Game RTP: ${result.baseGameRtp.toFixed(2)}%`, `Bonus RTP: ${result.bonusRtp.toFixed(2)}%`, `Hit Frequency: ${result.hitFrequency.toFixed(2)}%`, `Max Win: ${result.maxWin.toFixed(2)}x`, `Max Win Cap Hits: ${result.maxWinHits}`);
213
244
  if (result.bonusTriggered > 0) {
214
245
  const frequency = Math.round(result.iterations / result.bonusTriggered);
@@ -1 +1 @@
1
- {"version":3,"file":"simulation.cjs.js","sources":["../src/simulation/NativeSimulationRunner.ts","../src/simulation/ParallelSimulationRunner.ts"],"sourcesContent":[null,null],"names":["randomBytes","tmpdir","join","writeFile","unlink","spawn","dirname","fileURLToPath","execSync","accessSync","fsConstants","cpus","Worker"],"mappings":"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"}
1
+ {"version":3,"file":"simulation.cjs.js","sources":["../src/simulation/NativeSimulationRunner.ts","../src/simulation/ParallelSimulationRunner.ts"],"sourcesContent":[null,null],"names":["randomBytes","tmpdir","join","writeFile","unlink","spawn","dirname","fileURLToPath","execSync","accessSync","fsConstants","cpus","Worker"],"mappings":"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"}
@@ -108,6 +108,17 @@ interface SimulationRawAccumulators {
108
108
  hits: number;
109
109
  }
110
110
 
111
+ type NativeRNGKind = 'provably-fair' | 'fast';
112
+ /**
113
+ * Replay mode parameters. Forces single-worker deterministic execution over a
114
+ * specific (server_seed, client_seed, nonce-start) triple — used to reproduce a
115
+ * production round captured in `provably_fair_rounds`.
116
+ */
117
+ interface NativeReplayParams {
118
+ serverSeed: string;
119
+ clientSeed: string;
120
+ nonceStart: number;
121
+ }
111
122
  interface NativeSimulationConfig {
112
123
  /** Path to native simulation binary */
113
124
  binaryPath: string;
@@ -123,6 +134,20 @@ interface NativeSimulationConfig {
123
134
  action?: string;
124
135
  /** Action params (buy_bonus, ante_bet, etc.) */
125
136
  params?: Record<string, unknown>;
137
+ /**
138
+ * Hex-encoded master seed for reproducible runs. The binary derives per-worker
139
+ * server_seeds via sha256(seed || ":" || worker_idx). When omitted, the binary
140
+ * generates one and returns it on the result so the run can be reproduced via
141
+ * `seed: result.masterSeed`. Ignored when `rng === 'fast'`.
142
+ */
143
+ seed?: string;
144
+ /**
145
+ * RNG backend: `'provably-fair'` (default, matches production) or `'fast'`
146
+ * (math/rand PCG — local iteration only, do NOT publish those RTP numbers).
147
+ */
148
+ rng?: NativeRNGKind;
149
+ /** Replay mode: requires `rng: 'provably-fair'` (or default). */
150
+ replay?: NativeReplayParams;
126
151
  /** Progress callback */
127
152
  onProgress?: (completed: number, total: number) => void;
128
153
  }
@@ -150,6 +175,18 @@ interface NativeSimulationResult extends SimulationResult {
150
175
  perStage?: Record<string, StageStats>;
151
176
  /** Win distribution histogram */
152
177
  winDistribution?: DistributionBucket[];
178
+ /** RNG backend that produced these numbers. */
179
+ rngKind?: NativeRNGKind;
180
+ /**
181
+ * Hex master seed that drove worker-seed derivation. Always set for
182
+ * `provably-fair` runs (supplied or auto-generated). Pass back via `seed`
183
+ * to reproduce the run bit-for-bit.
184
+ */
185
+ masterSeed?: string;
186
+ /** Per-worker server_seed sequence (lets support reproduce any individual spin). */
187
+ workerSeeds?: string[];
188
+ /** Echo of replay params when the run was in replay mode. */
189
+ replay?: NativeReplayParams;
153
190
  }
154
191
  declare class NativeSimulationRunner {
155
192
  private config;
@@ -193,4 +230,4 @@ declare class ParallelSimulationRunner {
193
230
  }
194
231
 
195
232
  export { NativeSimulationRunner, ParallelSimulationRunner, findNativeBinary, formatNativeResult };
196
- export type { DistributionBucket, NativeSimulationConfig, NativeSimulationResult, StageStats };
233
+ export type { DistributionBucket, NativeRNGKind, NativeReplayParams, NativeSimulationConfig, NativeSimulationResult, StageStats };
@@ -14,7 +14,10 @@ class NativeSimulationRunner {
14
14
  this.config = config;
15
15
  }
16
16
  async run() {
17
- const { binaryPath, script, gameDefinition, iterations, bet, action, params } = this.config;
17
+ const { binaryPath, script, gameDefinition, iterations, bet, action, params, seed, rng, replay } = this.config;
18
+ if (replay && rng && rng !== 'provably-fair') {
19
+ throw new Error(`Replay mode requires rng="provably-fair" (got rng="${rng}")`);
20
+ }
18
21
  const id = randomBytes(8).toString('hex');
19
22
  const tmpDir = tmpdir();
20
23
  const luaPath = join(tmpDir, `sim-${id}.lua`);
@@ -38,6 +41,15 @@ class NativeSimulationRunner {
38
41
  if (params && Object.keys(params).length > 0) {
39
42
  args.push('-params', JSON.stringify(params));
40
43
  }
44
+ if (rng) {
45
+ args.push('-rng', rng);
46
+ }
47
+ if (seed) {
48
+ args.push('-seed', seed);
49
+ }
50
+ if (replay) {
51
+ args.push('-replay-server-seed', replay.serverSeed, '-replay-client-seed', replay.clientSeed, '-replay-nonce-start', String(replay.nonceStart));
52
+ }
41
53
  // Execute binary
42
54
  const output = await this.exec(binaryPath, args);
43
55
  // Parse JSON output
@@ -111,6 +123,16 @@ function mapGoResult(json) {
111
123
  workersUsed: json.workers_used,
112
124
  perStage,
113
125
  winDistribution: json.win_distribution,
126
+ rngKind: json.rng_kind,
127
+ masterSeed: json.master_seed,
128
+ workerSeeds: json.worker_seeds,
129
+ replay: json.replay
130
+ ? {
131
+ serverSeed: json.replay.server_seed,
132
+ clientSeed: json.replay.client_seed,
133
+ nonceStart: json.replay.nonce_start,
134
+ }
135
+ : undefined,
114
136
  _raw: {
115
137
  totalWagered: json.total_bet,
116
138
  totalWon: json.total_win,
@@ -206,6 +228,15 @@ function formatNativeResult(result) {
206
228
  if (result.workersUsed) {
207
229
  lines.push(`Workers: ${result.workersUsed}`);
208
230
  }
231
+ if (result.rngKind) {
232
+ lines.push(`RNG: ${result.rngKind}`);
233
+ }
234
+ if (result.masterSeed) {
235
+ lines.push(`Master seed: ${result.masterSeed} (pass --seed=${result.masterSeed} to reproduce)`);
236
+ }
237
+ if (result.replay) {
238
+ lines.push(`Replay: server_seed=${result.replay.serverSeed} client_seed=${result.replay.clientSeed} nonce_start=${result.replay.nonceStart}`);
239
+ }
209
240
  lines.push('', '--- Total ---', `Total RTP: ${result.totalRtp.toFixed(2)}%`, `Base Game RTP: ${result.baseGameRtp.toFixed(2)}%`, `Bonus RTP: ${result.bonusRtp.toFixed(2)}%`, `Hit Frequency: ${result.hitFrequency.toFixed(2)}%`, `Max Win: ${result.maxWin.toFixed(2)}x`, `Max Win Cap Hits: ${result.maxWinHits}`);
210
241
  if (result.bonusTriggered > 0) {
211
242
  const frequency = Math.round(result.iterations / result.bonusTriggered);
@@ -1 +1 @@
1
- {"version":3,"file":"simulation.esm.js","sources":["../src/simulation/NativeSimulationRunner.ts","../src/simulation/ParallelSimulationRunner.ts"],"sourcesContent":[null,null],"names":["fsConstants"],"mappings":"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"}
1
+ {"version":3,"file":"simulation.esm.js","sources":["../src/simulation/NativeSimulationRunner.ts","../src/simulation/ParallelSimulationRunner.ts"],"sourcesContent":[null,null],"names":["fsConstants"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@energy8platform/platform-core",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "Energy8 platform core: Lua engine, DevBridge, RTP simulation, and SDK session orchestration. Renderer-agnostic — pair with any game framework (Pixi, Phaser, Three.js, custom).",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs.js",
@@ -10,6 +10,19 @@ import type { GameDefinition, SimulationResult } from '../lua/types';
10
10
 
11
11
  // ─── Types ──────────────────────────────────────────────
12
12
 
13
+ export type NativeRNGKind = 'provably-fair' | 'fast';
14
+
15
+ /**
16
+ * Replay mode parameters. Forces single-worker deterministic execution over a
17
+ * specific (server_seed, client_seed, nonce-start) triple — used to reproduce a
18
+ * production round captured in `provably_fair_rounds`.
19
+ */
20
+ export interface NativeReplayParams {
21
+ serverSeed: string;
22
+ clientSeed: string;
23
+ nonceStart: number;
24
+ }
25
+
13
26
  export interface NativeSimulationConfig {
14
27
  /** Path to native simulation binary */
15
28
  binaryPath: string;
@@ -25,6 +38,20 @@ export interface NativeSimulationConfig {
25
38
  action?: string;
26
39
  /** Action params (buy_bonus, ante_bet, etc.) */
27
40
  params?: Record<string, unknown>;
41
+ /**
42
+ * Hex-encoded master seed for reproducible runs. The binary derives per-worker
43
+ * server_seeds via sha256(seed || ":" || worker_idx). When omitted, the binary
44
+ * generates one and returns it on the result so the run can be reproduced via
45
+ * `seed: result.masterSeed`. Ignored when `rng === 'fast'`.
46
+ */
47
+ seed?: string;
48
+ /**
49
+ * RNG backend: `'provably-fair'` (default, matches production) or `'fast'`
50
+ * (math/rand PCG — local iteration only, do NOT publish those RTP numbers).
51
+ */
52
+ rng?: NativeRNGKind;
53
+ /** Replay mode: requires `rng: 'provably-fair'` (or default). */
54
+ replay?: NativeReplayParams;
28
55
  /** Progress callback */
29
56
  onProgress?: (completed: number, total: number) => void;
30
57
  }
@@ -55,6 +82,18 @@ export interface NativeSimulationResult extends SimulationResult {
55
82
  perStage?: Record<string, StageStats>;
56
83
  /** Win distribution histogram */
57
84
  winDistribution?: DistributionBucket[];
85
+ /** RNG backend that produced these numbers. */
86
+ rngKind?: NativeRNGKind;
87
+ /**
88
+ * Hex master seed that drove worker-seed derivation. Always set for
89
+ * `provably-fair` runs (supplied or auto-generated). Pass back via `seed`
90
+ * to reproduce the run bit-for-bit.
91
+ */
92
+ masterSeed?: string;
93
+ /** Per-worker server_seed sequence (lets support reproduce any individual spin). */
94
+ workerSeeds?: string[];
95
+ /** Echo of replay params when the run was in replay mode. */
96
+ replay?: NativeReplayParams;
58
97
  }
59
98
 
60
99
  // ─── Go JSON output shape (snake_case) ──────────────────
@@ -88,6 +127,14 @@ interface GoSimulationOutput {
88
127
  count: number;
89
128
  pct: number;
90
129
  }>;
130
+ rng_kind?: NativeRNGKind;
131
+ master_seed?: string;
132
+ worker_seeds?: string[];
133
+ replay?: {
134
+ server_seed: string;
135
+ client_seed: string;
136
+ nonce_start: number;
137
+ };
91
138
  }
92
139
 
93
140
  // ─── Runner ─────────────────────────────────────────────
@@ -100,7 +147,12 @@ export class NativeSimulationRunner {
100
147
  }
101
148
 
102
149
  async run(): Promise<NativeSimulationResult> {
103
- const { binaryPath, script, gameDefinition, iterations, bet, action, params } = this.config;
150
+ const { binaryPath, script, gameDefinition, iterations, bet, action, params, seed, rng, replay } = this.config;
151
+
152
+ if (replay && rng && rng !== 'provably-fair') {
153
+ throw new Error(`Replay mode requires rng="provably-fair" (got rng="${rng}")`);
154
+ }
155
+
104
156
  const id = randomBytes(8).toString('hex');
105
157
  const tmpDir = tmpdir();
106
158
  const luaPath = join(tmpDir, `sim-${id}.lua`);
@@ -126,6 +178,19 @@ export class NativeSimulationRunner {
126
178
  if (params && Object.keys(params).length > 0) {
127
179
  args.push('-params', JSON.stringify(params));
128
180
  }
181
+ if (rng) {
182
+ args.push('-rng', rng);
183
+ }
184
+ if (seed) {
185
+ args.push('-seed', seed);
186
+ }
187
+ if (replay) {
188
+ args.push(
189
+ '-replay-server-seed', replay.serverSeed,
190
+ '-replay-client-seed', replay.clientSeed,
191
+ '-replay-nonce-start', String(replay.nonceStart),
192
+ );
193
+ }
129
194
 
130
195
  // Execute binary
131
196
  const output = await this.exec(binaryPath, args);
@@ -211,6 +276,16 @@ function mapGoResult(json: GoSimulationOutput): NativeSimulationResult {
211
276
  workersUsed: json.workers_used,
212
277
  perStage,
213
278
  winDistribution: json.win_distribution,
279
+ rngKind: json.rng_kind,
280
+ masterSeed: json.master_seed,
281
+ workerSeeds: json.worker_seeds,
282
+ replay: json.replay
283
+ ? {
284
+ serverSeed: json.replay.server_seed,
285
+ clientSeed: json.replay.client_seed,
286
+ nonceStart: json.replay.nonce_start,
287
+ }
288
+ : undefined,
214
289
  _raw: {
215
290
  totalWagered: json.total_bet,
216
291
  totalWon: json.total_win,
@@ -311,6 +386,17 @@ export function formatNativeResult(result: NativeSimulationResult): string {
311
386
  if (result.workersUsed) {
312
387
  lines.push(`Workers: ${result.workersUsed}`);
313
388
  }
389
+ if (result.rngKind) {
390
+ lines.push(`RNG: ${result.rngKind}`);
391
+ }
392
+ if (result.masterSeed) {
393
+ lines.push(`Master seed: ${result.masterSeed} (pass --seed=${result.masterSeed} to reproduce)`);
394
+ }
395
+ if (result.replay) {
396
+ lines.push(
397
+ `Replay: server_seed=${result.replay.serverSeed} client_seed=${result.replay.clientSeed} nonce_start=${result.replay.nonceStart}`,
398
+ );
399
+ }
314
400
 
315
401
  lines.push(
316
402
  '',
@@ -14,6 +14,8 @@ export {
14
14
  export type {
15
15
  NativeSimulationConfig,
16
16
  NativeSimulationResult,
17
+ NativeRNGKind,
18
+ NativeReplayParams,
17
19
  StageStats,
18
20
  DistributionBucket,
19
21
  } from './NativeSimulationRunner';