@series-inc/rundot-syncplay 5.23.0-beta.7 → 5.23.0

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.
Files changed (75) hide show
  1. package/README.md +116 -15
  2. package/dist/browser.d.ts +87 -55
  3. package/dist/browser.js +47 -52
  4. package/dist/certification.d.ts +32 -3
  5. package/dist/certification.js +88 -3
  6. package/dist/cjs/browser.js +259 -87
  7. package/dist/cjs/certification.js +87 -2
  8. package/dist/cjs/collision.js +58 -0
  9. package/dist/cjs/creator.js +2 -1
  10. package/dist/cjs/engine-complete.js +213 -3
  11. package/dist/cjs/engine-parity-matrix.js +19 -4
  12. package/dist/cjs/index.js +199 -132
  13. package/dist/cjs/math.js +342 -15
  14. package/dist/cjs/movement3d.js +230 -1
  15. package/dist/cjs/node.js +5 -1
  16. package/dist/cjs/noise.js +58 -0
  17. package/dist/cjs/physics-cert.js +147 -6
  18. package/dist/cjs/physics2d.js +10 -4
  19. package/dist/cjs/physics3d-joints.js +637 -0
  20. package/dist/cjs/physics3d-shared.js +288 -0
  21. package/dist/cjs/physics3d-solver.js +1351 -0
  22. package/dist/cjs/physics3d-vehicle.js +467 -0
  23. package/dist/cjs/physics3d.js +1057 -223
  24. package/dist/cjs/random.js +49 -0
  25. package/dist/cjs/replay-bundle.js +127 -20
  26. package/dist/cjs/sample-scenes.js +3 -0
  27. package/dist/cjs/sdk-offline.js +6 -32
  28. package/dist/cjs/sdk-session.js +156 -0
  29. package/dist/cjs/session-build.js +42 -0
  30. package/dist/cjs/testing.js +107 -0
  31. package/dist/cli.js +40 -12
  32. package/dist/collision.d.ts +12 -0
  33. package/dist/collision.js +52 -0
  34. package/dist/creator.d.ts +1 -1
  35. package/dist/creator.js +1 -1
  36. package/dist/engine-complete.js +214 -4
  37. package/dist/engine-parity-matrix.js +19 -4
  38. package/dist/index.d.ts +94 -89
  39. package/dist/index.js +45 -56
  40. package/dist/math.d.ts +59 -6
  41. package/dist/math.js +342 -15
  42. package/dist/movement3d.d.ts +73 -0
  43. package/dist/movement3d.js +229 -1
  44. package/dist/node.d.ts +4 -0
  45. package/dist/node.js +2 -0
  46. package/dist/noise.d.ts +7 -0
  47. package/dist/noise.js +51 -0
  48. package/dist/physics-cert.d.ts +1 -1
  49. package/dist/physics-cert.js +147 -6
  50. package/dist/physics2d.js +10 -4
  51. package/dist/physics3d-joints.d.ts +94 -0
  52. package/dist/physics3d-joints.js +634 -0
  53. package/dist/physics3d-shared.d.ts +72 -0
  54. package/dist/physics3d-shared.js +257 -0
  55. package/dist/physics3d-solver.d.ts +197 -0
  56. package/dist/physics3d-solver.js +1346 -0
  57. package/dist/physics3d-vehicle.d.ts +84 -0
  58. package/dist/physics3d-vehicle.js +463 -0
  59. package/dist/physics3d.d.ts +108 -8
  60. package/dist/physics3d.js +1006 -177
  61. package/dist/random.d.ts +7 -0
  62. package/dist/random.js +49 -0
  63. package/dist/replay-bundle.d.ts +40 -1
  64. package/dist/replay-bundle.js +126 -20
  65. package/dist/sample-scenes.js +3 -0
  66. package/dist/sdk-offline.js +6 -32
  67. package/dist/sdk-session.d.ts +47 -0
  68. package/dist/sdk-session.js +153 -0
  69. package/dist/session-build.d.ts +21 -0
  70. package/dist/session-build.js +39 -0
  71. package/dist/testing.d.ts +52 -0
  72. package/dist/testing.js +45 -0
  73. package/dist/tools/vite-plugin.d.ts +8 -0
  74. package/dist/tools/vite-plugin.js +63 -9
  75. package/package.json +11 -3
package/README.md CHANGED
@@ -45,11 +45,16 @@ creators. See `docs/syncplay-netcode-observability.md`,
45
45
  `docs/syncplay-replay-verified-leaderboards.md`, and
46
46
  `docs/syncplay-wire-format.md`.
47
47
 
48
- The deterministic deploy check (`project:deploy-check` /
49
- `project:deploy-check-verify`) is an internal-consistency **receipt** — it
50
- proves the bundle it describes is the bundle that was checked — not a
51
- cryptographic signature or provenance proof
52
- (see `.plans/deterministic-multiplayer-branch-cleanup.md`).
48
+ Deployability is gated by build-time certification, not by stamped proof
49
+ artifacts. The deployable preflight is `project:check` with the
50
+ `static-determinism` section required it proves the simulation is a real,
51
+ file-backed, replayable module before upload. The optional deploy-check
52
+ commands (`project:deploy-check` / `project:deploy-check-verify`) remain as a
53
+ local, internal-consistency **receipt** — they prove the bundle they describe is
54
+ the bundle that was checked — but they are **not** a cryptographic signature,
55
+ provenance proof, or a backend admission gate. Venus upload validation and
56
+ room-server startup accept a bare `deterministic: true` room and never read
57
+ these artifacts.
53
58
 
54
59
  CI lanes:
55
60
 
@@ -79,6 +84,14 @@ import { createDeterministicAuthorityServer } from '@series-inc/rundot-syncplay/
79
84
  import { rundotSyncplayPlugin } from '@series-inc/rundot-syncplay/tools';
80
85
  ```
81
86
 
87
+ > The `@series-inc/rundot-syncplay/testing` entry (and its SDK mirror
88
+ > `@series-inc/rundot-game-sdk/syncplay/testing`) exposes internal labs,
89
+ > examples, fixtures, certification harnesses, and mocks for this repo's tests,
90
+ > prototypes, and the syncplay CLI. It is **unsupported** — anything there may be
91
+ > renamed or removed without notice, and it is deliberately excluded from the
92
+ > export-surface goldens. Game code must import from the package root, `/browser`,
93
+ > or `/creator` instead.
94
+
82
95
  The SDK bridge re-exports a browser-safe subset for games that already depend on
83
96
  `@series-inc/rundot-game-sdk`:
84
97
 
@@ -249,14 +262,57 @@ Implemented:
249
262
  - `lab:physics-cert` built-in fixed physics certification for fixed-arena and
250
263
  128-slot load shapes with snapshot/restore, stable collision/query ordering,
251
264
  and timing metrics.
265
+ - `lab:physics-cert -- --engine builtin-rigid` certifies the 3D rigid-body
266
+ solver (settling stack + hinge motor + grab + speculative CCD arena) against
267
+ the same four determinism gates; the contact/joint caches round-trip through
268
+ the snapshot as canonical state.
252
269
  - `lab:physics-cert -- --engine rapier2d-compat` certification for
253
270
  `@dimforge/rapier2d-compat@0.19.3`; the current pinned cert reproduces
254
271
  snapshot/restore nondeterminism, so Rapier remains render/prototype-only for
255
272
  checksummed gameplay.
273
+ - **Production-grade 3D rigid-body dynamics.** A warm-started sequential-impulse
274
+ solver (SAT + face-clipping manifolds → accumulated normal/friction impulses →
275
+ split-impulse position correction → island-based sleeping) delivers stable
276
+ stacking, full 6-DOF tumbling props, per-body axis locks (Box2D-class 2D games
277
+ on the 3D solver), impulse-based joints (`ball`, `hinge` with limits + motor,
278
+ `weld`, `distance`/rope, `spring` (soft point-to-point via
279
+ `frequencyHz`/`dampingRatio`, Box2D soft-constraint math), and the `grab`
280
+ gravity-gun/carry primitive),
281
+ speculative-contact CCD, and compound colliders. Opt-in per body via
282
+ `orientation`/`angularVel`/`mass`/`ccd`/locks; bodies without these solve as
283
+ rotation-locked rigid bodies through the same pipeline. New step options
284
+ `joints` and `velocityIterations`; mutation helpers
285
+ `applyDeterministicImpulse3D` / `setDeterministicBodyVelocity3D`; contact
286
+ events carry `normalImpulse`. The contact/joint caches live in the world and
287
+ are therefore checksummed and rollback-safe.
288
+ - **Deterministic raycast-wheel vehicles.** `stepDeterministicVehicle3D` drives
289
+ a single dynamic chassis with N suspension raycasts (wheels are rays, not
290
+ bodies — Bullet/Godot raycast-vehicle lineage): spring-damper suspension,
291
+ friction-circle tire forces (drive/steer/brake from integer deci-unit input),
292
+ steering through the fixed-point `createDeterministicMath()` trig, and an
293
+ iterated Gauss-Seidel tire solve. The stateless controller returns quantized
294
+ impulses the game applies before the next physics step (the KCC pattern) —
295
+ use the batched `applyDeterministicImpulses3D` (one canonical-world rebuild
296
+ per frame; the per-impulse singular form costs an O(bodies) rebuild per
297
+ call); the checksum covers only load-bearing outputs
298
+ (impulses, grounded flags, compressions), never cosmetic telemetry. v1 targets
299
+ static ground with flat/axis-aligned contact normals; certified by the
300
+ required `physics-rigid-vehicle` fixture, a car in the `builtin-rigid` cert
301
+ arena, a rollback-every-frame synctest scene, and a 100%-coverage
302
+ `coverage:package:physics-vehicle` shard.
303
+ - **Accelerated deterministic queries.** Raycast, overlap, and shape-cast run
304
+ through a per-world static AABB tree (BVH) built lazily on first query and
305
+ memoized by world identity — pure derived data that never enters canonical
306
+ state, with bit-identical results to a full scan (the tree only prunes;
307
+ narrow-phase tests and id-tiebroken ordering are unchanged, proven by a
308
+ merged-single-body-world oracle test). Query cost is flat in world size:
309
+ 128 wheel-length raycasts cost ~0.2 ms whether the world holds 17 or 1,000
310
+ bodies (previously ~72 ms at 1,000).
256
311
  - Public deterministic 2D physics primitives for static/dynamic/kinematic AABB
257
312
  bodies, sensors/triggers, enter/stay/exit callbacks, layer masks,
258
- deterministic AABB and ray queries, material response, simple fixed/distance/
259
- spring/motor constraints, rollback-equivalent stepping, and budget metrics.
313
+ deterministic AABB and ray queries, material response (now including real
314
+ tangential friction), simple fixed/distance/spring/motor constraints,
315
+ rollback-equivalent stepping, and budget metrics.
260
316
  - Public deterministic movement primitives for KCC-like slopes, steps, ledges,
261
317
  moving platforms, elevators, one-way platforms, wall slides, jump buffering,
262
318
  coyote time, top-down acceleration/drag/sliding, nav steering, quantized FPS
@@ -268,6 +324,51 @@ Implemented:
268
324
  checksums, and CLI-certified mechanic invariants.
269
325
  - Counter Duel package-local example with replay verification and event output.
270
326
 
327
+ ## Deterministic Standard Library
328
+
329
+ The determinism static checker blocks the entire transcendental family
330
+ (`Math.sin/cos/tan/atan2/sqrt/hypot/pow/...`), `Math.random`, and `Date.now`
331
+ inside simulation code — those can differ in low bits across JS engines and
332
+ desync a lockstep match. Every simulation surface these primitives cover is
333
+ provided as a pure-integer, byte-identical replacement. **Never hand-roll fixed
334
+ math or reach for `Math.*`; use these.**
335
+
336
+ `ctx.math` (`createDeterministicMath`, wired into every step context):
337
+
338
+ - **Scalar:** `sqrt` (throws on negative), `abs`, `sign`, `min`, `max`, `lerp`,
339
+ `mod` (Euclidean; throws on modulus 0), `inverseLerp`, `remap`, `smoothstep`,
340
+ `exp`, `log`/`log2Fixed` (throw on non-positive). `exp`/`log` are ≤1% over
341
+ their fixed-representable range; `sqrt` is exact-to-a-unit.
342
+ - **Trig & angles (unit is TURNS, one revolution == `fixedScale`):** accurate
343
+ `sinTurns`/`cosTurns` (5th-order minimax, exact at cardinal turns, ≤5e-3 sweep
344
+ error), `tanTurns`, `atan2(y, x)` → turns in `[0, fixedScale)` CCW from +x
345
+ (`atan2(0,0) === 0`), `wrapTurns`, `angleDeltaTurns` (shortest signed),
346
+ `turnsToRadians`/`radiansToTurns`. `createDeterministicMath` requires
347
+ `fixedScale % 4 === 0`.
348
+ - **Vectors:** vec2 `sub/scale/dot/cross/lengthSq/length/distanceSq/distance/
349
+ normalize` (zero → `{0,0}`), `hypot`, `perp/negate/rotate/fromAngleTurns/
350
+ angleTurns`; vec3 core `add/sub/scale/dot/cross/lengthSq/length/distance/
351
+ normalize/lerp/negate`.
352
+ - **Domains & overflow:** domain violations (`sqrt(neg)`, `log(≤0)`, `mod(_,0)`,
353
+ non-integer fixed inputs) fail fast. Vector/`abs`/`sign`/negation ops saturate
354
+ at `±maxFixed` rather than throw. `mul`/`div` are integer-exact only while
355
+ `|a·b| ≤ 2^53` (~95k real units at the default `fixedScale` 1000).
356
+
357
+ `ctx.random` (`DeterministicRandom`) — seeded, reproducible sampling on top of
358
+ the existing `nextInt/nextFixed/fork`: `nextBool`, `nextRangeFixed`,
359
+ `nextAngleTurns`, `pickOne` (throws on empty), `weighted` (throws on length
360
+ mismatch / non-positive total), `gaussian(math)` (Box-Muller).
361
+
362
+ Segment geometry (imported from the package, like the AABB/circle primitives):
363
+ `orientation`, `pointOnSegment`, `segmentsIntersect`, `closestPointOnSegment`,
364
+ `segmentPointDistance`, `segmentSegmentDistance` (the distance/closest ops take a
365
+ `DeterministicMath` for their `sqrt`).
366
+
367
+ Hash & value noise (`noise.ts`, pure importable functions — replaces the
368
+ cross-engine `Math.sin`-hash desync class): `hashUint32`, `hash2` (integer
369
+ avalanche hashes), `valueNoise1D`/`valueNoise2D` (smooth, in `[-fixedScale,
370
+ fixedScale]`), `fbm2D`.
371
+
271
372
  ## Commands
272
373
 
273
374
  ```bash
@@ -283,16 +384,12 @@ npm run project:release-verify -- ./deterministic-game/artifacts/deterministic/p
283
384
  npm run project:release-bundle -- ./deterministic-game/artifacts/deterministic/project-release-evidence.json --json ./deterministic-game/artifacts/deterministic/project-release-bundle.json
284
385
  npm run project:release-bundle-verify -- ./deterministic-game/artifacts/deterministic/project-release-bundle.json --out ./deterministic-game/artifacts/deterministic/project-release-bundle-verification.md --json ./deterministic-game/artifacts/deterministic/project-release-bundle-verification.json --junit ./deterministic-game/artifacts/deterministic/project-release-bundle-verification.xml
285
386
  npm run project:release-bundle-schema -- --json artifacts/reports/project-release-bundle-schema.json
286
- npm run project:deploy-check -- ./deterministic-game/syncplay.project.json --bundle ./deterministic-game/artifacts/deterministic/project-release-bundle.json --out ./deterministic-game/artifacts/deterministic/project-deploy-check.md --json ./deterministic-game/artifacts/deterministic/project-deploy-check.json --junit ./deterministic-game/artifacts/deterministic/project-deploy-check.xml
287
- npm run project:deploy-check-verify -- ./deterministic-game/artifacts/deterministic/project-deploy-check.json --out ./deterministic-game/artifacts/deterministic/project-deploy-check-verification.md --json ./deterministic-game/artifacts/deterministic/project-deploy-check-verification.json --junit ./deterministic-game/artifacts/deterministic/project-deploy-check-verification.xml
288
387
  npm run project:ci-workflow -- --out .github/workflows/syncplay-ci.yml --json artifacts/reports/project-ci-workflow.json
289
388
  npm run project:scaffold -- ./deterministic-h5 --name "H5 Arena" --template h5 --sdk-version ^0.8.0 --deterministic-version ^0.3.0
290
389
  npm run project:check -- ./deterministic-h5/syncplay.project.json --require descriptor,assets,config,replay-runtime,creator-boundary,static-determinism --frames 32 --out-dir ./deterministic-h5/artifacts/deterministic --dist ./deterministic-h5/dist --out ./deterministic-h5/artifacts/deterministic/project-check-browser.md --json ./deterministic-h5/artifacts/deterministic/project-check-browser.json --junit ./deterministic-h5/artifacts/deterministic/project-check-browser.xml --release-json ./deterministic-h5/artifacts/deterministic/project-release-evidence-browser.json --browser-runtime chromium --browser-json ./deterministic-h5/artifacts/deterministic/project-browser-proof-chromium.json
291
390
  npm run project:release-verify -- ./deterministic-h5/artifacts/deterministic/project-release-evidence-browser.json --require-browser-proof --json ./deterministic-h5/artifacts/deterministic/project-release-verification-browser.json
292
391
  npm run project:release-bundle -- ./deterministic-h5/artifacts/deterministic/project-release-evidence-browser.json --require-browser-proof --json ./deterministic-h5/artifacts/deterministic/project-release-bundle-browser.json
293
392
  npm run project:release-bundle-verify -- ./deterministic-h5/artifacts/deterministic/project-release-bundle-browser.json --out ./deterministic-h5/artifacts/deterministic/project-release-bundle-verification-browser.md --json ./deterministic-h5/artifacts/deterministic/project-release-bundle-verification-browser.json --junit ./deterministic-h5/artifacts/deterministic/project-release-bundle-verification-browser.xml
294
- npm run project:deploy-check -- ./deterministic-h5/syncplay.project.json --require-browser-proof --bundle ./deterministic-h5/artifacts/deterministic/project-release-bundle-browser.json --out ./deterministic-h5/artifacts/deterministic/project-deploy-check.md --json ./deterministic-h5/artifacts/deterministic/project-deploy-check.json --junit ./deterministic-h5/artifacts/deterministic/project-deploy-check.xml
295
- npm run project:deploy-check-verify -- ./deterministic-h5/artifacts/deterministic/project-deploy-check.json --out ./deterministic-h5/artifacts/deterministic/project-deploy-check-verification.md --json ./deterministic-h5/artifacts/deterministic/project-deploy-check-verification.json --junit ./deterministic-h5/artifacts/deterministic/project-deploy-check-verification.xml
296
393
  npm run project:doctor -- ./deterministic-h5/syncplay.project.json --require-browser-proof --json ./deterministic-h5/artifacts/deterministic/project-doctor-ci.json --junit ./deterministic-h5/artifacts/deterministic/project-doctor-ci.xml
297
394
  npm run --prefix ./deterministic-h5 build
298
395
  npm run project:scaffold -- ./deterministic-systems --name "Systems Test" --template systems
@@ -602,9 +699,13 @@ materials, vectors, and interpolation floats stay outside replay checksums.
602
699
  - Built-in fixed physics certification includes package-local 2D/2.5D and 3D
603
700
  deterministic worlds with sensors/triggers, queries, layer masks, callbacks,
604
701
  constraints, CCD helpers, boxes, spheres, capsules, mesh static bounds,
605
- deterministic angular state, and 128/512/2048-body stress samples. Remaining
606
- limits are production-grade stacked rigid-body solving, visual collision
607
- authoring/import, and replacing external physics engines; Rapier cert
608
- currently fails with `knownIssueRapier910=reproduced`,
702
+ deterministic angular state, and 128/512/2048-body stress samples; the
703
+ `builtin-rigid` lane additionally certifies the sequential-impulse rigid-body
704
+ solver (stacking, joints, CCD) under the four determinism gates. Remaining
705
+ limits are visual collision authoring/import, convex-hull decomposition,
706
+ dynamic mesh-vs-mesh collision, ragdolls in checksummed state, and replacing
707
+ external physics engines; the ≤2 ms/step 128-body budget awaits an
708
+ allocation-free solver pass. Rapier cert currently fails with
709
+ `knownIssueRapier910=reproduced`,
609
710
  `uninterruptedChecksum=916fe725ae2e3215`, and
610
711
  `restoredChecksum=9e42622842bffff6`.
package/dist/browser.d.ts CHANGED
@@ -1,57 +1,89 @@
1
- export { verifyReplay } from './replay.js';
2
- export { verifyReplayWithDescriptor as verifyDeterministicReplay } from './replay.js';
3
- export { createOfflineSession } from './offline-session.js';
4
- export { createSyncplayOfflineRuntime } from './sdk-offline.js';
5
- export { createSyncplayOfflineRuntime as createSyncplayGameRuntime } from './sdk-offline.js';
6
- export { runNumberLab } from './number-lab.js';
7
- export { runDeterministicEngineCoreNumericProof } from './engine-core-proof.js';
8
- export { hydrateLabInput, labDefaultInput, labStep } from './sample-lab.js';
9
- export { createFixedArenaDescriptor, createInitialFixedArenaState, fixedArenaDefaultInput, fixedArenaStep, projectFixedArenaReferenceView, projectFixedArenaRenderState, runFixedArenaExample, } from './examples/fixed-arena.js';
10
- export { createDeterministicR3fRenderAdapter as createDeterministicR3fAdapter, createDeterministicR3fRenderAdapter, interpolateDeterministicRenderNumber, interpolateDeterministicRenderVec2, } from './r3f-render-adapter.js';
11
- export * from './animation.js';
12
- export * from './asset-cooking.js';
13
- export * from './bot-documents.js';
14
- export * from './bot-primitives.js';
15
- export * from './canonical.js';
16
- export * from './collections.js';
17
- export * from './commands.js';
18
- export * from './config-bundle.js';
19
- export * from './deterministic-session.js';
20
- export * from './effects-adapter.js';
21
- export * from './engine-runtime.js';
22
- export * from './events.js';
23
- export { deterministicButtonInitialState, runDeterministicButtonFixture, runDeterministicDescriptorButtonFixture, stepDeterministicButton, } from './input-button.js';
24
- export type { DeterministicButtonFixtureResult, DeterministicButtonState, DeterministicButtonStep, DeterministicDescriptorButtonFixtureResult, } from './input-button.js';
25
- export * from './input-timeline.js';
26
- export * from './instant-replay.js';
27
- export * from './pause-resume.js';
28
- export * from './session-promotion.js';
29
- export * from './lag-compensation3d.js';
30
- export * from './local-authority.js';
31
- export * from './local-authority-wire.js';
32
- export * from './input-authority.js';
33
- export * from './session-wire.js';
34
- export * from './session-snapshot.js';
35
- export * from './authority-room.js';
36
- export * from './networked-client.js';
37
- export * from './math.js';
1
+ export { cookDeterministicAnimation, createDeterministicAnimationRuntimeState, reconstructDeterministicAnimationEvents, stepDeterministicAnimation } from './animation.js';
2
+ export { assertAssetManifestMatches, cookDeterministicAssets, materializeDeterministicMapEntities, materializePrototypeEntities, stableAssetCookJson, validatePrototypeEntitiesAgainstFrameRuntime } from './asset-cooking.js';
3
+ export { createDeterministicAuthorityRoom } from './authority-room.js';
4
+ export { compileDeterministicBotDocument, summarizeDeterministicBotDocumentTraceCounterDelta, summarizeDeterministicBotDocumentTraceCoverage, traceDeterministicBotDocument } from './bot-documents.js';
5
+ export { cookDeterministicBotAsset, createDeterministicBotBlackboard, getBlackboardValue, runDeterministicBotSimulation, selectDeterministicUtility, tickDeterministicBehaviorTree, tickDeterministicBehaviorTreeWithMemory, tickDeterministicHfsm } from './bot-primitives.js';
6
+ export { canonicalize, canonicalStringify, cloneCanonical, decodeCanonicalBytes, decodeCanonicalValue, decodeUtf8, defaultChecksum, encodeCanonicalBytes, encodeUtf8 } from './canonical.js';
7
+ export { createStableIndexedMap, deterministicShuffle, stableEntries, stableSortedKeys } from './collections.js';
8
+ export { aabbContainsPoint, aabbIntersects, circleIntersects, circleIntersectsAabb, closestPointOnSegment, fixedAabb, fixedCircle, fixedVec2, orientation, pointOnSegment, segmentPointDistance, segmentSegmentDistance, segmentsIntersect, sortAabbsByStableId, translateAabb } from './collision.js';
9
+ export { assertDeterministicPayloadFields, createDeterministicCommandTimeline, createDeterministicCommandTimelineSnapshot, deterministicPayloadMatchesFields, evaluateDeterministicCommandTimelineMigrationResult } from './commands.js';
10
+ export { cookDeterministicConfigBundle, evaluateDeterministicConfigBundleParityResult, summarizeDeterministicConfigBundleFailureReasons, verifyDeterministicConfigBundle } from './config-bundle.js';
11
+ export { createDeterministicSessionCore, createDeterministicSessionReplayBundle, verifyDeterministicSessionRuntimeReplay } from './deterministic-session.js';
12
+ export { createDeterministicEventEffectsAdapter } from './effects-adapter.js';
13
+ export { assertDeterministicFrameHeapStaleHandleError, assertDeterministicFrameSystemsStateless, compileDeterministicDslRuntimeDescriptor, createDeterministicBitset, createDeterministicFrameRuntime, createDeterministicFrameRuntimeAccessors, createDeterministicSlotMap, createDeterministicSparseSetFrameRuntime, generateDeterministicFrameRuntimeSource, isDeterministicFrameHeapStaleHandleError, runDeterministicFrameRuntimeMutationCorpus, validateDeterministicFrameSystemsStateless } from './engine-runtime.js';
14
+ export { createDeterministicEventTimeline, filterDeterministicEventsForPlayer } from './events.js';
15
+ export { createInputAuthority } from './input-authority.js';
16
+ export { accumulateDeterministicInputTimelineState, evaluateDeterministicInputTimelineResult, sortDeterministicInputTimelineFlags } from './input-timeline.js';
17
+ export { createInstantReplayRunner, runInstantReplay } from './instant-replay.js';
18
+ export { buildDeterministicLagCompensatedHitboxProxies3D, createDeterministicLagCompensation3DHistory, rewindDeterministicLagCompensatedTargets3D, validateDeterministicAuthoritativeLagCompensatedShot3D, validateDeterministicLagCompensatedShot3D } from './lag-compensation3d.js';
19
+ export { createDeterministicLocalAuthorityRuntime } from './local-authority.js';
20
+ export { applyDeterministicLocalAuthorityCommandBundleEnvelope, applyDeterministicLocalAuthorityInputBundleEnvelope, createDeterministicLocalAuthorityAckEnvelope, createDeterministicLocalAuthorityCommandBundleEnvelope, createDeterministicLocalAuthorityCorrectionEnvelope, createDeterministicLocalAuthorityInputBundleEnvelope, createDeterministicLocalAuthoritySnapshotChunkEnvelope, createDeterministicLocalAuthoritySnapshotCompleteEnvelope, createDeterministicLocalAuthoritySnapshotEnvelope, createDeterministicLocalAuthoritySnapshotOfferEnvelope, createDeterministicLocalAuthoritySnapshotRequestEnvelope, createDeterministicLocalAuthoritySnapshotTransfer, createDeterministicLocalAuthorityWireAuth, createDeterministicLocalAuthorityWireReceiver, decodeDeterministicLocalAuthorityWireEnvelope, deterministicLocalAuthorityWireProtocol, encodeDeterministicLocalAuthorityWireEnvelope } from './local-authority-wire.js';
21
+ export { createDeterministicMath } from './math.js';
22
+ export { rewindDeterministicTargets, runDeterministicMovementCrowdSimulation, runDeterministicMovementSimulation, stepDeterministicFpsAim, stepDeterministicKcc2D, stepDeterministicTopDownMover, validateDeterministicLagCompensatedHit } from './movement.js';
23
+ export { stepDeterministicCarry3D, stepDeterministicKcc3D } from './movement3d.js';
38
24
  export { createSyncplayClient } from './multiplayer-service.js';
39
- export type { DeterministicAuthorityCertificationArtifact, DeterministicAuthorityCertificationVerification, DeterministicAuthorityChecksums, SyncplayClient, SyncplayClientConnection, SyncplayClientRole, SyncplayCommand, SyncplayCommandPollOptions, SyncplayCommandSubmitResult, SyncplayInput, SyncplayLifecycleResult, SyncplaySubmitResult, } from './multiplayer-service.js';
40
- export * from './movement.js';
41
- export * from './movement3d.js';
42
- export * from './navigation.js';
43
- export * from './navmesh.js';
44
- export * from './collision.js';
45
- export * from './physics2d.js';
46
- export * from './physics3d.js';
47
- export * from './replay-bundle.js';
48
- export * from './schema.js';
49
- export * from './schema-artifacts.js';
50
- export * from './schema-codegen.js';
51
- export * from './schema-dsl-binary.js';
52
- export * from './signals.js';
53
- export * from './sparse-set.js';
54
- export * from './sample-scenes.js';
55
- export * from './system-lifecycle.js';
56
- export type { DeterministicEngineCoreNumericProof, DeterministicEngineCoreNumericProofOptions } from './engine-core-proof.js';
25
+ export { applyDeterministicReciprocalAvoidance, cookDeterministicNavigationGraph, cookTilemapNavigationGraph, createDeterministicFlowField, findDeterministicPath, smoothDeterministicPath, stepDeterministicNavigationAgents } from './navigation.js';
26
+ export { cookDeterministicNavmesh, cookImportedDeterministicNavmesh, findDeterministicNavmeshPath, findDeterministicNavmeshPointPath, locateDeterministicNavmeshPolygon, runDeterministicNavmeshStress, smoothDeterministicNavmeshPath, stepDeterministicNavmeshAgents, stepDeterministicNavmeshOffMeshTraversal } from './navmesh.js';
27
+ export { createNetworkedSyncplayClient } from './networked-client.js';
28
+ export { fbm2D, hash2, hashUint32, valueNoise1D, valueNoise2D } from './noise.js';
29
+ export { createOfflineSession } from './offline-session.js';
30
+ export { createPauseController } from './pause-resume.js';
31
+ export { circleCastDeterministicPhysics2D, createDeterministicPhysicsWorld2D, nearestDeterministicPhysicsHit2D, queryDeterministicPhysicsAabb2D, queryDeterministicPhysicsShapeOverlap2D, raycastAllDeterministicPhysics2D, raycastDeterministicPhysics2D, stepDeterministicPhysicsWorld2D } from './physics2d.js';
32
+ export { applyDeterministicImpulse3D, applyDeterministicImpulses3D, contactDetailsDeterministicPhysics3D, createDeterministicPhysicsWorld3D, deriveInverseInertia, deterministicPhysicsBodyById3D, deterministicPhysicsCallback3D, overlapDeterministicPhysics3D, raycastDeterministicPhysics3D, raycastDeterministicPhysics3DDetailed, runDeterministicPhysics3DStress, setDeterministicBodyVelocity3D, shapeCastDeterministicPhysics3D, shapeCastDeterministicPhysics3DDetailed, stepDeterministicPhysicsWorld3D } from './physics3d.js';
33
+ export { createDeterministicR3fRenderAdapter as createDeterministicR3fAdapter, createDeterministicR3fRenderAdapter, interpolateDeterministicRenderNumber, interpolateDeterministicRenderVec2 } from './r3f-render-adapter.js';
34
+ export { verifyReplayWithDescriptor as verifyDeterministicReplay, verifyReplay } from './replay.js';
35
+ export { createDeterministicReplayBundle, createDeterministicReplayDebugTables, createDeterministicReplayRuntimeManifest, minimizeDeterministicReplayDesync, minimizeDeterministicReplayDesyncBundle, sliceDeterministicReplayBundle, verifyDeterministicFrameRuntimeReplayBundle, verifyDeterministicReplayBundle, verifyDeterministicSelfContainedFrameRuntimeReplayBundle, verifyReplayScoreAgainstTrustedRuntime } from './replay-bundle.js';
36
+ export { defineSyncplayGame, stableDescriptorId } from './schema.js';
37
+ export { createSchemaArtifacts } from './schema-artifacts.js';
38
+ export { createDeterministicDescriptorBinarySchema, generateSchemaBinarySource, generateSchemaTypes, proveSchemaBinaryRoundTrip } from './schema-codegen.js';
39
+ export { createDeterministicBinarySerializer, deterministicDslMaxPlayers, parseDeterministicSchemaDsl, stableDeterministicDslSchemaJson } from './schema-dsl-binary.js';
40
+ export { createSyncplayOfflineRuntime as createSyncplayGameRuntime, createSyncplayOfflineRuntime } from './sdk-offline.js';
41
+ export { createSyncplaySession } from './sdk-session.js';
42
+ export { createSessionFromPromotionSnapshot, exportPromotionSnapshot } from './session-promotion.js';
43
+ export { base64ToBytes, bytesToBase64, createSnapshotTransferCollector, createSnapshotTransferFromBytes, decodeDeterministicStateSnapshot, DEFAULT_MAX_SNAPSHOT_BYTES, DEFAULT_SNAPSHOT_CHUNK_SIZE, deterministicRoomDescriptorHash, encodeDeterministicStateSnapshot } from './session-snapshot.js';
44
+ export { decodeDeterministicSessionMessage, deterministicSessionWireVersion, encodeDeterministicSessionMessage } from './session-wire.js';
45
+ export { createDeterministicSignalBus } from './signals.js';
46
+ export { createDeterministicSparseSet } from './sparse-set.js';
47
+ export { createDeterministicLifecycleRunner, summarizeDeterministicLifecycleCounters } from './system-lifecycle.js';
48
+ export type { CookedDeterministicAnimation, DeterministicAnimationClip, DeterministicAnimationDescriptor, DeterministicAnimationLayer, DeterministicAnimationRuntimeState, DeterministicAnimationState, DeterministicAnimationStepResult, DeterministicAnimationTrack, DeterministicAnimationTransition } from './animation.js';
49
+ export type { DeterministicAssetCookManifest, DeterministicAssetCookResult, DeterministicAssetDependency, DeterministicAssetRecord, DeterministicAssetSource, DeterministicCookedAsset, DeterministicMapMaterializationResult, DeterministicPrototypeEntity, DeterministicPrototypeMaterializationOptions, DeterministicPrototypeRuntimeValidationResult } from './asset-cooking.js';
50
+ export type { AuthorityRoomCatchUpEvent, AuthorityRoomClientNetStats, AuthorityRoomDesyncInfo, AuthorityRoomJoinResult, AuthorityRoomNetcodeStats, AuthorityRoomSnapshot, AuthorityRoomSnapshotEvent, AuthorityRoomStoredSnapshotMeta, AuthorityRoomTransport, DeterministicAuthorityRoom, DeterministicAuthorityRoomConfig, DeterministicAuthorityRoomRestoreState } from './authority-room.js';
51
+ export type { CompiledDeterministicBotDocument, DeterministicBotDocument, DeterministicBotDocumentTrace, DeterministicBotDocumentTraceCounterDelta, DeterministicBotDocumentTraceCoverage } from './bot-documents.js';
52
+ export type { CookedDeterministicBotAsset, DeterministicBehaviorTreeMemory, DeterministicBehaviorTreeNode, DeterministicBehaviorTreeService, DeterministicBehaviorTreeStatefulTick, DeterministicBehaviorTreeStatus, DeterministicBehaviorTreeTick, DeterministicBlackboardEntry, DeterministicBlackboardValue, DeterministicBotAssetSource, DeterministicBotBlackboard, DeterministicBotSimulationMetrics, DeterministicHfsmAgent, DeterministicHfsmDefinition, DeterministicHfsmState, DeterministicHfsmTransition, DeterministicUtilityConsideration, DeterministicUtilityCurve, DeterministicUtilityNestedConsideration, DeterministicUtilitySelection } from './bot-primitives.js';
53
+ export type { CanonicalValue } from './canonical.js';
54
+ export type { StableIndexedEntry } from './collections.js';
55
+ export type { FixedAabb, FixedCircle, FixedVec2 } from './collision.js';
56
+ export type { DeterministicCommandChannelDescriptor, DeterministicCommandProtocolMetrics, DeterministicCommandTimeline, DeterministicCommandTimelineConfig, DeterministicCommandTimelineMigrationMetrics, DeterministicCommandTimelineMigrationResultInput, DeterministicCommandTimelineSnapshot, DeterministicPayloadFieldDescriptor, DeterministicPayloadFieldKind, DeterministicPlayerCommand, DeterministicRejectedCommand, DeterministicReliableCommandDefaultsMetrics } from './commands.js';
57
+ export type { CookedDeterministicConfigBundle, DeterministicConfigBundleFailureReasonInputs, DeterministicConfigBundleParityMetrics, DeterministicConfigBundleSource, DeterministicConfigBundleVerification, DeterministicConfigMigration } from './config-bundle.js';
58
+ export type { DeterministicSessionCore, DeterministicSessionInput, DeterministicSessionInputFlag, DeterministicSessionLifecycleEvent, DeterministicSessionOptions, DeterministicSessionPlayer, DeterministicSessionReplayBundle, DeterministicSessionReplayVerification, DeterministicSessionSnapshot } from './deterministic-session.js';
59
+ export type { DeterministicEffectDispatch, DeterministicEffectTarget, DeterministicEventEffectsAdapter, DeterministicEventEffectsAdapterConfig, DeterministicRenderSafeEffect } from './effects-adapter.js';
60
+ export type { DeterministicCommandAccessor, DeterministicComponentAccessor, DeterministicComponentData, DeterministicComponentDescriptor, DeterministicComponentFieldDescriptor, DeterministicComponentFieldKind, DeterministicComponentFixedArrayFieldKind, DeterministicComponentFrameHeapFieldKind, DeterministicComponentScalarFieldKind, DeterministicDslRuntimeCompileOptions, DeterministicEntityRef, DeterministicEventAccessor, DeterministicFrameHeapCollectionKind, DeterministicFrameHeapCollectionSnapshot, DeterministicFrameHeapHandle, DeterministicFrameHeapSnapshot, DeterministicFrameQueryFilter, DeterministicFrameRuntime, DeterministicFrameRuntimeAccessors, DeterministicFrameRuntimeDescriptor, DeterministicFrameRuntimeOptions, DeterministicFrameSnapshot, DeterministicQueryRow, DeterministicRuntimeMessage, DeterministicRuntimePayloadDescriptor, DeterministicRuntimeSignalHandler, DeterministicSignalAccessor, DeterministicSingletonAccessor, DeterministicStatelessSystemDiagnostic, DeterministicStatelessSystemDiagnosticReason, DeterministicStatelessSystemValidationResult, DeterministicSystem, DeterministicSystemContext, DeterministicSystemDescriptor } from './engine-runtime.js';
61
+ export type { DeterministicEventDeliveryScope, DeterministicEventEmitOptions, DeterministicEventPredictionState, DeterministicEventRecord, DeterministicEventTimeline } from './events.js';
62
+ export type { ConfirmedInputFrame, EncodedInput, InputAuthority, InputAuthorityConfig, InputAuthorityRestoreState, InputAuthorityStats, InputRejectionReason, InputSubmissionResult } from './input-authority.js';
63
+ export type { DeterministicInputTimelineAccumulatorState, DeterministicInputTimelineCorrection, DeterministicInputTimelineLane, DeterministicInputTimelineNegativeCases, DeterministicInputTimelineOptions, DeterministicInputTimelinePrediction, DeterministicInputTimelineReport, DeterministicInputTimelineRow, DeterministicInputTimelineVerification } from './input-timeline.js';
64
+ export type { InstantReplayInputFrame, InstantReplayResult, InstantReplayRunner, InstantReplayRunnerOptions, InstantReplayRunOptions, RunInstantReplayOptions } from './instant-replay.js';
65
+ export type { DeterministicAuthoritativeLagCompensation3DShotContext, DeterministicLagCompensatedPellet3DResult, DeterministicLagCompensatedShot3D, DeterministicLagCompensatedShot3DResult, DeterministicLagCompensatedTarget3D, DeterministicLagCompensation3DHistory, DeterministicLagCompensation3DHistoryOptions, DeterministicLagCompensation3DHistorySnapshot, DeterministicLagCompensation3DRewindSnapshot } from './lag-compensation3d.js';
66
+ export type { DeterministicLocalAuthorityClient, DeterministicLocalAuthorityInputMessage, DeterministicLocalAuthorityResult, DeterministicLocalAuthorityRuntime, DeterministicLocalAuthorityRuntimeOptions, DeterministicLocalAuthorityRuntimeSnapshot, DeterministicLocalAuthorityState } from './local-authority.js';
67
+ export type { DeterministicLocalAuthoritySnapshotIdentity, DeterministicLocalAuthoritySnapshotTransfer, DeterministicLocalAuthorityWireApplyResult, DeterministicLocalAuthorityWireAuth, DeterministicLocalAuthorityWireAuthOptions, DeterministicLocalAuthorityWireEnvelope, DeterministicLocalAuthorityWireKind, DeterministicLocalAuthorityWireReceiver, DeterministicLocalAuthorityWireReceiverOptions, DeterministicLocalAuthorityWireReceiverResult, DeterministicLocalAuthorityWireReceiverSnapshot, DeterministicLocalAuthorityWireSignOptions } from './local-authority-wire.js';
68
+ export type { DeterministicFixedQuaternion, DeterministicFixedVec2, DeterministicFixedVec3, DeterministicMath } from './math.js';
69
+ export type { DeterministicFpsAimState, DeterministicFpsInput, DeterministicKccBody, DeterministicKccInput, DeterministicKccStepResult, DeterministicLagCompensatedHitValidation, DeterministicLagCompensatedShot, DeterministicMovementCrowdMetrics, DeterministicMovementSimulationMetrics, DeterministicMovementStep, DeterministicMovementWorld, DeterministicMovingPlatform, DeterministicOneWayPlatform, DeterministicSlope, DeterministicTargetSnapshot, DeterministicTopDownBody, DeterministicTopDownBounds, DeterministicTopDownInput } from './movement.js';
70
+ export type { DeterministicKccBody3D, DeterministicKccCarrierPose3D, DeterministicKccCarryResult3D, DeterministicKccCarryState3D, DeterministicKccCollisionCandidate3D, DeterministicKccCollisionFilter3D, DeterministicKccExternalImpulse3D, DeterministicKccGeometry3D, DeterministicKccInput3D, DeterministicKccPhysicsImpulse3D, DeterministicKccProcessor3D, DeterministicKccStepResult3D, DeterministicKccWorld3D, DeterministicMovingPlatform3D, DeterministicSlope3D, DeterministicStep3D } from './movement3d.js';
71
+ export type { DeterministicAuthorityCertificationArtifact, DeterministicAuthorityCertificationVerification, DeterministicAuthorityChecksums, SyncplayClient, SyncplayClientConnection, SyncplayClientRole, SyncplayCommand, SyncplayCommandPollOptions, SyncplayCommandSubmitResult, SyncplayInput, SyncplayLifecycleResult, SyncplaySubmitResult } from './multiplayer-service.js';
72
+ export type { CookedDeterministicNavigationGraph, DeterministicFlowField, DeterministicNavEdge, DeterministicNavigationAgent, DeterministicNavigationGraphSource, DeterministicNavigationStepOptions, DeterministicNavigationStepResult, DeterministicNavNode, DeterministicNavRegion, DeterministicPathQuery, DeterministicPathResult, DeterministicTilemapSource } from './navigation.js';
73
+ export type { CookedDeterministicNavmesh, DeterministicNavmeshAgent, DeterministicNavmeshAgentStepResult, DeterministicNavmeshImportSource, DeterministicNavmeshLink, DeterministicNavmeshMovingAvoidanceObstacle, DeterministicNavmeshOffMeshTraversalState, DeterministicNavmeshOffMeshTraversalStep, DeterministicNavmeshPath, DeterministicNavmeshPoint, DeterministicNavmeshPolygon, DeterministicNavmeshSource } from './navmesh.js';
74
+ export type { NetworkedClientTransport, NetworkedSyncplayClient, NetworkedSyncplayClientInputDelayOptions, NetworkedSyncplayClientNetStats, NetworkedSyncplayClientOptions, NetworkedSyncplayClientPacingOptions } from './networked-client.js';
75
+ export type { DeterministicPauseController, DeterministicPauseState, DeterministicPauseStatus, PauseControllerOptions, PauseWrappedState } from './pause-resume.js';
76
+ export type { DeterministicBodyKind, DeterministicContactEvent2D, DeterministicContactEventType, DeterministicPhysicsAabbQuery2D, DeterministicPhysicsActivePair2D, DeterministicPhysicsBody2D, DeterministicPhysicsCircleCastQuery2D, DeterministicPhysicsConstraint2D, DeterministicPhysicsHit2D, DeterministicPhysicsQueryOptions2D, DeterministicPhysicsRaycastQuery2D, DeterministicPhysicsShape2D, DeterministicPhysicsShapeOverlapQuery2D, DeterministicPhysicsStepOptions2D, DeterministicPhysicsStepResult2D, DeterministicPhysicsWorld2D } from './physics2d.js';
77
+ export type { DeterministicContactCacheEntry3D, DeterministicJointCacheEntry3D, DeterministicPhysicsActivePair3D, DeterministicPhysicsAxisLock3D, DeterministicPhysicsBody3D, DeterministicPhysicsCallbackMask3D, DeterministicPhysicsCompoundChild3D, DeterministicPhysicsConstraint3D, DeterministicPhysicsContactDetail3D, DeterministicPhysicsContactEvent3D, DeterministicPhysicsDetailedHit3D, DeterministicPhysicsHit3D, DeterministicPhysicsImpulseApplication3D, DeterministicPhysicsOverlapQuery3D, DeterministicPhysicsPrimitiveShape3D, DeterministicPhysicsQuaternion3D, DeterministicPhysicsQueryOptions3D, DeterministicPhysicsRaycastQuery3D, DeterministicPhysicsScheduledQuery3D, DeterministicPhysicsShape3D, DeterministicPhysicsShapeCastQuery3D, DeterministicPhysicsStepResult3D, DeterministicPhysicsVec3, DeterministicPhysicsWorld3D } from './physics3d.js';
78
+ export type { DeterministicFrameRuntimeReplayBundleOptions, DeterministicFrameRuntimeReplayBundleVerification, DeterministicReplayBundle, DeterministicReplayBundleMismatch, DeterministicReplayBundleVerification, DeterministicReplayDebugTables, DeterministicReplayDesyncMinimization, DeterministicReplayRuntimeBeforeFrameId, DeterministicReplayRuntimeManifest, DeterministicReplayRuntimeManifestSource, DeterministicReplayRuntimeSystemId, DeterministicReplaySemanticModel, DeterministicReplaySemanticOperation, DeterministicReplaySliceOrigin, DeterministicReplaySnapshot, DeterministicReplayVerificationManifest, ReplayScoreVerificationReason, ReplayScoreVerificationResult } from './replay-bundle.js';
79
+ export type { AssetDescriptor, CollectionOrdering, CommandChannelDescriptor, ConfigDescriptor, DeterministicGameDescriptor, EventDescriptor, InputFieldDescriptor, InputFieldPolicy, NumericMode, PrototypeDescriptor, SchemaFieldDescriptor, SchemaFieldKind, StateFieldDescriptor, SystemDescriptor, ValidatedDeterministicGameDescriptor } from './schema.js';
80
+ export type { DeterministicSchemaArtifacts, SchemaFrameDump } from './schema-artifacts.js';
81
+ export type { SchemaBinaryProof, SchemaBinarySourceOptions, SchemaTypesOptions } from './schema-codegen.js';
82
+ export type { DeterministicBinarySerializer, DeterministicDslDeclaration, DeterministicDslDeclarationKind, DeterministicDslDictionaryEntry, DeterministicDslDictionaryFieldKind, DeterministicDslField, DeterministicDslFieldKind, DeterministicDslFixedArrayFieldKind, DeterministicDslListFieldKind, DeterministicDslScalarFieldKind, DeterministicDslScalarValue, DeterministicDslSchema, DeterministicDslSetFieldKind, DeterministicDslValue } from './schema-dsl-binary.js';
83
+ export type { OpenRoomTransport, SyncplaySession, SyncplaySessionConfig, SyncplaySessionMode } from './sdk-session.js';
84
+ export type { CollectedSnapshotTransfer, CreateSnapshotTransferOptions, DeterministicStateSnapshot, DeterministicStateSnapshotDecodeRejection, DeterministicStateSnapshotDecodeResult, SnapshotTransferCollector, SnapshotTransferCollectorOptions, SnapshotTransferCompleteResult, SnapshotTransferRejection, SnapshotTransferStepResult } from './session-snapshot.js';
85
+ export type { DeterministicSessionDecodeRejection, DeterministicSessionDecodeResult, DeterministicSessionMessage, DeterministicSessionMessageKind, DeterministicSessionRole } from './session-wire.js';
86
+ export type { DeterministicSignal, DeterministicSignalBus, DeterministicSignalBusSnapshot, DeterministicSignalSubscription } from './signals.js';
87
+ export type { DeterministicSparseSet, DeterministicSparseSetSnapshot } from './sparse-set.js';
88
+ export type { DeterministicLifecycleCounterSummary, DeterministicLifecycleRunner, DeterministicLifecycleSignal, DeterministicLifecycleSnapshot, DeterministicLifecycleSystemContext, DeterministicLifecycleSystemDescriptor, DeterministicLifecycleSystemHooks } from './system-lifecycle.js';
57
89
  export type { DeterministicStep, ReplayFile, ReplayVerificationResult } from './types.js';
package/dist/browser.js CHANGED
@@ -1,53 +1,48 @@
1
- export { verifyReplay } from './replay.js';
2
- export { verifyReplayWithDescriptor as verifyDeterministicReplay } from './replay.js';
3
- export { createOfflineSession } from './offline-session.js';
4
- export { createSyncplayOfflineRuntime } from './sdk-offline.js';
5
- export { createSyncplayOfflineRuntime as createSyncplayGameRuntime } from './sdk-offline.js';
6
- export { runNumberLab } from './number-lab.js';
7
- export { runDeterministicEngineCoreNumericProof } from './engine-core-proof.js';
8
- export { hydrateLabInput, labDefaultInput, labStep } from './sample-lab.js';
9
- export { createFixedArenaDescriptor, createInitialFixedArenaState, fixedArenaDefaultInput, fixedArenaStep, projectFixedArenaReferenceView, projectFixedArenaRenderState, runFixedArenaExample, } from './examples/fixed-arena.js';
10
- export { createDeterministicR3fRenderAdapter as createDeterministicR3fAdapter, createDeterministicR3fRenderAdapter, interpolateDeterministicRenderNumber, interpolateDeterministicRenderVec2, } from './r3f-render-adapter.js';
11
- export * from './animation.js';
12
- export * from './asset-cooking.js';
13
- export * from './bot-documents.js';
14
- export * from './bot-primitives.js';
15
- export * from './canonical.js';
16
- export * from './collections.js';
17
- export * from './commands.js';
18
- export * from './config-bundle.js';
19
- export * from './deterministic-session.js';
20
- export * from './effects-adapter.js';
21
- export * from './engine-runtime.js';
22
- export * from './events.js';
23
- export { deterministicButtonInitialState, runDeterministicButtonFixture, runDeterministicDescriptorButtonFixture, stepDeterministicButton, } from './input-button.js';
24
- export * from './input-timeline.js';
25
- export * from './instant-replay.js';
26
- export * from './pause-resume.js';
27
- export * from './session-promotion.js';
28
- export * from './lag-compensation3d.js';
29
- export * from './local-authority.js';
30
- export * from './local-authority-wire.js';
31
- export * from './input-authority.js';
32
- export * from './session-wire.js';
33
- export * from './session-snapshot.js';
34
- export * from './authority-room.js';
35
- export * from './networked-client.js';
36
- export * from './math.js';
1
+ // Curated public surface — every export here is supported API. Additions require regenerating tests/golden/export-surface.json.
2
+ export { cookDeterministicAnimation, createDeterministicAnimationRuntimeState, reconstructDeterministicAnimationEvents, stepDeterministicAnimation } from './animation.js';
3
+ export { assertAssetManifestMatches, cookDeterministicAssets, materializeDeterministicMapEntities, materializePrototypeEntities, stableAssetCookJson, validatePrototypeEntitiesAgainstFrameRuntime } from './asset-cooking.js';
4
+ export { createDeterministicAuthorityRoom } from './authority-room.js';
5
+ export { compileDeterministicBotDocument, summarizeDeterministicBotDocumentTraceCounterDelta, summarizeDeterministicBotDocumentTraceCoverage, traceDeterministicBotDocument } from './bot-documents.js';
6
+ export { cookDeterministicBotAsset, createDeterministicBotBlackboard, getBlackboardValue, runDeterministicBotSimulation, selectDeterministicUtility, tickDeterministicBehaviorTree, tickDeterministicBehaviorTreeWithMemory, tickDeterministicHfsm } from './bot-primitives.js';
7
+ export { canonicalize, canonicalStringify, cloneCanonical, decodeCanonicalBytes, decodeCanonicalValue, decodeUtf8, defaultChecksum, encodeCanonicalBytes, encodeUtf8 } from './canonical.js';
8
+ export { createStableIndexedMap, deterministicShuffle, stableEntries, stableSortedKeys } from './collections.js';
9
+ export { aabbContainsPoint, aabbIntersects, circleIntersects, circleIntersectsAabb, closestPointOnSegment, fixedAabb, fixedCircle, fixedVec2, orientation, pointOnSegment, segmentPointDistance, segmentSegmentDistance, segmentsIntersect, sortAabbsByStableId, translateAabb } from './collision.js';
10
+ export { assertDeterministicPayloadFields, createDeterministicCommandTimeline, createDeterministicCommandTimelineSnapshot, deterministicPayloadMatchesFields, evaluateDeterministicCommandTimelineMigrationResult } from './commands.js';
11
+ export { cookDeterministicConfigBundle, evaluateDeterministicConfigBundleParityResult, summarizeDeterministicConfigBundleFailureReasons, verifyDeterministicConfigBundle } from './config-bundle.js';
12
+ export { createDeterministicSessionCore, createDeterministicSessionReplayBundle, verifyDeterministicSessionRuntimeReplay } from './deterministic-session.js';
13
+ export { createDeterministicEventEffectsAdapter } from './effects-adapter.js';
14
+ export { assertDeterministicFrameHeapStaleHandleError, assertDeterministicFrameSystemsStateless, compileDeterministicDslRuntimeDescriptor, createDeterministicBitset, createDeterministicFrameRuntime, createDeterministicFrameRuntimeAccessors, createDeterministicSlotMap, createDeterministicSparseSetFrameRuntime, generateDeterministicFrameRuntimeSource, isDeterministicFrameHeapStaleHandleError, runDeterministicFrameRuntimeMutationCorpus, validateDeterministicFrameSystemsStateless } from './engine-runtime.js';
15
+ export { createDeterministicEventTimeline, filterDeterministicEventsForPlayer } from './events.js';
16
+ export { createInputAuthority } from './input-authority.js';
17
+ export { accumulateDeterministicInputTimelineState, evaluateDeterministicInputTimelineResult, sortDeterministicInputTimelineFlags } from './input-timeline.js';
18
+ export { createInstantReplayRunner, runInstantReplay } from './instant-replay.js';
19
+ export { buildDeterministicLagCompensatedHitboxProxies3D, createDeterministicLagCompensation3DHistory, rewindDeterministicLagCompensatedTargets3D, validateDeterministicAuthoritativeLagCompensatedShot3D, validateDeterministicLagCompensatedShot3D } from './lag-compensation3d.js';
20
+ export { createDeterministicLocalAuthorityRuntime } from './local-authority.js';
21
+ export { applyDeterministicLocalAuthorityCommandBundleEnvelope, applyDeterministicLocalAuthorityInputBundleEnvelope, createDeterministicLocalAuthorityAckEnvelope, createDeterministicLocalAuthorityCommandBundleEnvelope, createDeterministicLocalAuthorityCorrectionEnvelope, createDeterministicLocalAuthorityInputBundleEnvelope, createDeterministicLocalAuthoritySnapshotChunkEnvelope, createDeterministicLocalAuthoritySnapshotCompleteEnvelope, createDeterministicLocalAuthoritySnapshotEnvelope, createDeterministicLocalAuthoritySnapshotOfferEnvelope, createDeterministicLocalAuthoritySnapshotRequestEnvelope, createDeterministicLocalAuthoritySnapshotTransfer, createDeterministicLocalAuthorityWireAuth, createDeterministicLocalAuthorityWireReceiver, decodeDeterministicLocalAuthorityWireEnvelope, deterministicLocalAuthorityWireProtocol, encodeDeterministicLocalAuthorityWireEnvelope } from './local-authority-wire.js';
22
+ export { createDeterministicMath } from './math.js';
23
+ export { rewindDeterministicTargets, runDeterministicMovementCrowdSimulation, runDeterministicMovementSimulation, stepDeterministicFpsAim, stepDeterministicKcc2D, stepDeterministicTopDownMover, validateDeterministicLagCompensatedHit } from './movement.js';
24
+ export { stepDeterministicCarry3D, stepDeterministicKcc3D } from './movement3d.js';
37
25
  export { createSyncplayClient } from './multiplayer-service.js';
38
- export * from './movement.js';
39
- export * from './movement3d.js';
40
- export * from './navigation.js';
41
- export * from './navmesh.js';
42
- export * from './collision.js';
43
- export * from './physics2d.js';
44
- export * from './physics3d.js';
45
- export * from './replay-bundle.js';
46
- export * from './schema.js';
47
- export * from './schema-artifacts.js';
48
- export * from './schema-codegen.js';
49
- export * from './schema-dsl-binary.js';
50
- export * from './signals.js';
51
- export * from './sparse-set.js';
52
- export * from './sample-scenes.js';
53
- export * from './system-lifecycle.js';
26
+ export { applyDeterministicReciprocalAvoidance, cookDeterministicNavigationGraph, cookTilemapNavigationGraph, createDeterministicFlowField, findDeterministicPath, smoothDeterministicPath, stepDeterministicNavigationAgents } from './navigation.js';
27
+ export { cookDeterministicNavmesh, cookImportedDeterministicNavmesh, findDeterministicNavmeshPath, findDeterministicNavmeshPointPath, locateDeterministicNavmeshPolygon, runDeterministicNavmeshStress, smoothDeterministicNavmeshPath, stepDeterministicNavmeshAgents, stepDeterministicNavmeshOffMeshTraversal } from './navmesh.js';
28
+ export { createNetworkedSyncplayClient } from './networked-client.js';
29
+ export { fbm2D, hash2, hashUint32, valueNoise1D, valueNoise2D } from './noise.js';
30
+ export { createOfflineSession } from './offline-session.js';
31
+ export { createPauseController } from './pause-resume.js';
32
+ export { circleCastDeterministicPhysics2D, createDeterministicPhysicsWorld2D, nearestDeterministicPhysicsHit2D, queryDeterministicPhysicsAabb2D, queryDeterministicPhysicsShapeOverlap2D, raycastAllDeterministicPhysics2D, raycastDeterministicPhysics2D, stepDeterministicPhysicsWorld2D } from './physics2d.js';
33
+ export { applyDeterministicImpulse3D, applyDeterministicImpulses3D, contactDetailsDeterministicPhysics3D, createDeterministicPhysicsWorld3D, deriveInverseInertia, deterministicPhysicsBodyById3D, deterministicPhysicsCallback3D, overlapDeterministicPhysics3D, raycastDeterministicPhysics3D, raycastDeterministicPhysics3DDetailed, runDeterministicPhysics3DStress, setDeterministicBodyVelocity3D, shapeCastDeterministicPhysics3D, shapeCastDeterministicPhysics3DDetailed, stepDeterministicPhysicsWorld3D } from './physics3d.js';
34
+ export { createDeterministicR3fRenderAdapter as createDeterministicR3fAdapter, createDeterministicR3fRenderAdapter, interpolateDeterministicRenderNumber, interpolateDeterministicRenderVec2 } from './r3f-render-adapter.js';
35
+ export { verifyReplayWithDescriptor as verifyDeterministicReplay, verifyReplay } from './replay.js';
36
+ export { createDeterministicReplayBundle, createDeterministicReplayDebugTables, createDeterministicReplayRuntimeManifest, minimizeDeterministicReplayDesync, minimizeDeterministicReplayDesyncBundle, sliceDeterministicReplayBundle, verifyDeterministicFrameRuntimeReplayBundle, verifyDeterministicReplayBundle, verifyDeterministicSelfContainedFrameRuntimeReplayBundle, verifyReplayScoreAgainstTrustedRuntime } from './replay-bundle.js';
37
+ export { defineSyncplayGame, stableDescriptorId } from './schema.js';
38
+ export { createSchemaArtifacts } from './schema-artifacts.js';
39
+ export { createDeterministicDescriptorBinarySchema, generateSchemaBinarySource, generateSchemaTypes, proveSchemaBinaryRoundTrip } from './schema-codegen.js';
40
+ export { createDeterministicBinarySerializer, deterministicDslMaxPlayers, parseDeterministicSchemaDsl, stableDeterministicDslSchemaJson } from './schema-dsl-binary.js';
41
+ export { createSyncplayOfflineRuntime as createSyncplayGameRuntime, createSyncplayOfflineRuntime } from './sdk-offline.js';
42
+ export { createSyncplaySession } from './sdk-session.js';
43
+ export { createSessionFromPromotionSnapshot, exportPromotionSnapshot } from './session-promotion.js';
44
+ export { base64ToBytes, bytesToBase64, createSnapshotTransferCollector, createSnapshotTransferFromBytes, decodeDeterministicStateSnapshot, DEFAULT_MAX_SNAPSHOT_BYTES, DEFAULT_SNAPSHOT_CHUNK_SIZE, deterministicRoomDescriptorHash, encodeDeterministicStateSnapshot } from './session-snapshot.js';
45
+ export { decodeDeterministicSessionMessage, deterministicSessionWireVersion, encodeDeterministicSessionMessage } from './session-wire.js';
46
+ export { createDeterministicSignalBus } from './signals.js';
47
+ export { createDeterministicSparseSet } from './sparse-set.js';
48
+ export { createDeterministicLifecycleRunner, summarizeDeterministicLifecycleCounters } from './system-lifecycle.js';
@@ -1,6 +1,6 @@
1
1
  import { runPredictionCullingLab } from './prediction-culling.js';
2
2
  import { type ProtocolRollbackGame } from './protocol-lab.js';
3
- export type CertificationFixtureKind = 'event-callbacks' | 'bot-replacement' | 'ecs-lite' | 'external-physics-gate' | 'fixed-foundation' | 'genre-128' | 'kcc-lite' | 'navigation-grid' | 'netcode' | 'physics-builtin' | 'prediction-culling' | 'projectile-hitscan' | 'protocol-matrix' | 'reference-samples' | 'replay-node' | 'replay-browser' | 'schema-tooling' | 'static-analysis';
3
+ export type CertificationFixtureKind = 'event-callbacks' | 'bot-replacement' | 'ecs-lite' | 'external-physics-gate' | 'fixed-foundation' | 'genre-128' | 'kcc-lite' | 'navigation-grid' | 'netcode' | 'physics-builtin' | 'physics-rigid-vehicle' | 'prediction-culling' | 'projectile-hitscan' | 'protocol-matrix' | 'reference-samples' | 'replay-node' | 'replay-browser' | 'schema-tooling' | 'static-analysis';
4
4
  export type CertificationRuntimeTarget = 'node' | 'chromium' | 'webkit';
5
5
  export type CertificationResult = 'pass' | 'fail' | 'skip';
6
6
  export type CertificationNetcodeShape = 'input-minimal' | 'moderate-state' | 'command-bursts';
@@ -22,7 +22,7 @@ export interface CertificationManifest {
22
22
  readonly fixtures?: readonly CertificationFixture[];
23
23
  }
24
24
  export type CertificationFixtureTier = 'required' | 'optional' | 'experimental' | 'optional-browser' | 'optional-integration' | 'stress';
25
- export type CertificationFixture = CertificationBotReplacementFixture | CertificationEcsLiteFixture | CertificationExternalPhysicsGateFixture | CertificationEventCallbacksFixture | CertificationFixedFoundationFixture | CertificationGenre128Fixture | CertificationKccLiteFixture | CertificationNavigationGridFixture | CertificationNetcodeFixture | CertificationPhysicsBuiltinFixture | CertificationPredictionCullingFixture | CertificationProjectileHitscanFixture | CertificationProtocolMatrixFixture | CertificationReferenceSamplesFixture | CertificationReplayNodeFixture | CertificationSchemaToolingFixture | CertificationStaticAnalysisFixture | CertificationBrowserReplayFixture;
25
+ export type CertificationFixture = CertificationBotReplacementFixture | CertificationEcsLiteFixture | CertificationExternalPhysicsGateFixture | CertificationEventCallbacksFixture | CertificationFixedFoundationFixture | CertificationGenre128Fixture | CertificationKccLiteFixture | CertificationNavigationGridFixture | CertificationNetcodeFixture | CertificationPhysicsBuiltinFixture | CertificationPhysicsRigidVehicleFixture | CertificationPredictionCullingFixture | CertificationProjectileHitscanFixture | CertificationProtocolMatrixFixture | CertificationReferenceSamplesFixture | CertificationReplayNodeFixture | CertificationSchemaToolingFixture | CertificationStaticAnalysisFixture | CertificationBrowserReplayFixture;
26
26
  export interface CertificationFixtureBase {
27
27
  readonly fixtureId: string;
28
28
  readonly kind: CertificationFixtureKind;
@@ -66,6 +66,12 @@ export interface CertificationEventCallbacksFixture extends CertificationFixture
66
66
  export interface CertificationPhysicsBuiltinFixture extends CertificationFixtureBase {
67
67
  readonly kind: 'physics-builtin';
68
68
  readonly runtimeTarget?: 'node';
69
+ /** Physics engine lane to certify (defaults to the fixed-point circle lane). */
70
+ readonly engine?: 'builtin-fixed' | 'builtin-rigid';
71
+ }
72
+ export interface CertificationPhysicsRigidVehicleFixture extends CertificationFixtureBase {
73
+ readonly kind: 'physics-rigid-vehicle';
74
+ readonly runtimeTarget?: 'node';
69
75
  }
70
76
  export interface CertificationPredictionCullingFixture extends CertificationFixtureBase {
71
77
  readonly kind: 'prediction-culling';
@@ -142,7 +148,7 @@ export interface CertificationFixtureReport {
142
148
  readonly failures: readonly string[];
143
149
  readonly result: CertificationResult;
144
150
  }
145
- export type CertificationMetrics = CertificationBotReplacementMetrics | CertificationEcsLiteMetrics | CertificationExternalPhysicsGateMetrics | CertificationEventCallbacksMetrics | CertificationFixedFoundationMetrics | CertificationGenre128Metrics | CertificationKccLiteMetrics | CertificationNavigationGridMetrics | CertificationNetcodeMetrics | CertificationPhysicsBuiltinMetrics | CertificationPredictionCullingMetrics | CertificationProjectileHitscanMetrics | CertificationProtocolMatrixMetrics | CertificationReferenceSamplesMetrics | CertificationReplayNodeMetrics | CertificationSchemaToolingMetrics | CertificationStaticAnalysisMetrics | CertificationBrowserReplayMetrics;
151
+ export type CertificationMetrics = CertificationBotReplacementMetrics | CertificationEcsLiteMetrics | CertificationExternalPhysicsGateMetrics | CertificationEventCallbacksMetrics | CertificationFixedFoundationMetrics | CertificationGenre128Metrics | CertificationKccLiteMetrics | CertificationNavigationGridMetrics | CertificationNetcodeMetrics | CertificationPhysicsBuiltinMetrics | CertificationPhysicsRigidVehicleMetrics | CertificationPredictionCullingMetrics | CertificationProjectileHitscanMetrics | CertificationProtocolMatrixMetrics | CertificationReferenceSamplesMetrics | CertificationReplayNodeMetrics | CertificationSchemaToolingMetrics | CertificationStaticAnalysisMetrics | CertificationBrowserReplayMetrics;
146
152
  export interface CertificationNetcodeMetrics {
147
153
  readonly shape: CertificationNetcodeShape;
148
154
  readonly game: ProtocolRollbackGame;
@@ -171,6 +177,18 @@ export interface CertificationFixedFoundationMetrics {
171
177
  readonly mul: number;
172
178
  readonly div: number;
173
179
  readonly clamp: number;
180
+ readonly sqrt: number;
181
+ readonly exp: number;
182
+ readonly atan2Axis: number;
183
+ readonly normalizeLen: number;
184
+ readonly vec3Cross: {
185
+ readonly x: number;
186
+ readonly y: number;
187
+ readonly z: number;
188
+ };
189
+ readonly segmentDistance: number;
190
+ readonly sample: number;
191
+ readonly noiseSample: number;
174
192
  };
175
193
  readonly vectors: {
176
194
  readonly a: {
@@ -308,6 +326,17 @@ export interface CertificationKccLiteMetrics {
308
326
  readonly finalChecksum: string;
309
327
  readonly checksumConverged: boolean;
310
328
  }
329
+ export interface CertificationPhysicsRigidVehicleMetrics {
330
+ readonly checksum: string;
331
+ readonly restoredChecksum: string;
332
+ readonly permutedChecksum: string;
333
+ readonly rollbackEquivalent: boolean;
334
+ readonly stableUnderAuthoringOrderPermutation: boolean;
335
+ readonly impulseSamples: number;
336
+ readonly groundedWheelSamples: number;
337
+ readonly impulsesQuantizedClean: boolean;
338
+ readonly checksumConverged: boolean;
339
+ }
311
340
  export interface CertificationNavigationGridMetrics {
312
341
  readonly pathChecksum: string;
313
342
  readonly pathsFound: number;