REPOSITORY SOURCE

platform-save-acceptance.json

docs/evidence/platform-save-acceptance.json

1{
2  "sourceBase": "4f85246c982d18a4b43cf525de7374997c61a57b",
3  "sourceFilesSha256": {
4    "apps/player/main.ts": "cbcc7385cda4f6f03a97a3ff7a55b8b3bb9ed78000825e37ac846ca013effbee",
5    "apps/player/simulation.worker.ts": "e5592c398ed5cea250046ad68390ee3e34050f2dc6e817cb33c20bde30e5d369",
6    "apps/probe/platforms.ts": "fca9a321a9efe59f2a4fc7aedc49c2f0d5346e678431ebc34c383e8094952cb0",
7    "packages/physics/index.ts": "256f7a2e121090961fafd35cab440aa71745dd9f762e5a79af4098a8cfc4e2aa",
8    "packages/schema/index.ts": "6a160db8ff4cbc9cd2480f687e0b02d72282f3061079b91123454779282d4240",
9    "packages/simulation/index.ts": "35266e31c7fcbe93765b9b95f83f8197d611d72e9a4184782cf86d37d7d7cc2e",
10    "tests/platform-saves.test.ts": "d7b47a957130663ca1208306fa5bf6662e5f34e3f0a3368d4d47a84ad0fe93c5",
11    "tests/browser/player.spec.ts": "eb1797dabbd654566eb731b54673904bc0792096809f7aa096e39e06a1d37d8d",
12    "tests/browser/probe.spec.ts": "4d854f1cf1c70ab6247bc351ca431828d645129412cb4edf7f30c6a3a308e6c8"
13  },
14  "scope": "Version-3 lightweight authored-route saves, pre-query collision reconstruction, accepted worker/UI save boundaries and preserved native checkpoint compatibility.",
15  "headless": {
16    "passed": 339,
17    "failed": 0,
18    "skipped": 0,
19    "focusedCases": 19
20  },
21  "checks": {
22    "typecheck": true,
23    "sourceBoundaries": 74,
24    "worlds": [
25      {
26        "world": "darkwind",
27        "release": "lantern-house.1",
28        "places": 3,
29        "objects": 1480,
30        "sha256": "e900a87c1854ad85a8bdc79953bd3e4d4b64f7b15a1451da8209609c2b504888"
31      },
32      {
33        "world": "engine-zoo",
34        "release": "motor.1",
35        "places": 1,
36        "objects": 6,
37        "sha256": "9facac25f35d9a16926052dbcc41fa12d5164ae891528e3a5ff62010c9f5a9cb"
38      }
39    ]
40  },
41  "browser": {
42    "command": "npm run test:browser -- tests/browser/player.spec.ts tests/browser/probe.spec.ts tests/browser/multiplayer.spec.ts --grep \"production simulation workers|owned renderer works|checkpoints save without animation frames|legacy saves are preserved|place travel, pickup|graphics recovery keeps the shared room\"",
43    "stats": {
44      "startTime": "2026-10-25T03:58:27.915Z",
45      "duration": 113841.234,
46      "expected": 7,
47      "skipped": 0,
48      "unexpected": 0,
49      "flaky": 0
50    },
51    "scenarios": [
52      {
53        "name": "graphics recovery keeps the shared room and receives door changes during restoration",
54        "status": "passed",
55        "durationMs": 16353
56      },
57      {
58        "name": "production simulation workers deliver and restore route saves at accepted state boundaries",
59        "status": "passed",
60        "durationMs": 7237
61      },
62      {
63        "name": "new checkpoints save without animation frames",
64        "status": "passed",
65        "durationMs": 6560
66      },
67      {
68        "name": "restored checkpoints save without animation frames",
69        "status": "passed",
70        "durationMs": 4253
71      },
72      {
73        "name": "place travel, pickup conditions, beacon state, and render resources remain coherent",
74        "status": "passed",
75        "durationMs": 12022
76      },
77      {
78        "name": "legacy saves are preserved while exact uint64 saves advance and reload from the new key",
79        "status": "passed",
80        "durationMs": 10698
81      },
82      {
83        "name": "owned renderer works on the main thread and survives worker resize, device loss and restart",
84        "status": "passed",
85        "durationMs": 53220
86      }
87    ]
88  },
89  "environment": {
90    "node": "22.23.4",
91    "playwright": "1.56.1",
92    "gpu": "SwiftShader Vulkan",
93    "playerViewport": [
94      960,
95      640
96    ],
97    "fixtureViewport": [
98      480,
99      300
100    ],
101    "quality": "high"
102  },
103  "nativeExperiment": {
104    "beforeFix": "Rebuilding a saved platform after the initial native update allowed the blocked route to advance from 1.2333333333333338 to 1.2666666666666673 on resume.",
105    "correction": "Install saved support geometry before the initial native query update; do not change the historical checkpoint constructor path.",
106    "verified": "The blocked route now retains its accepted phase across five resumed ticks; existing 420-boundary/seven-restore route replay remains unchanged."
107  },
108  "protocol": {
109    "format": 3,
110    "maxRoutes": 1024,
111    "contentIdentity": "compiled world SHA-256",
112    "entries": "complete sorted authored IDs and accepted route times across all places",
113    "legacy": "Formats 1/2 explicitly initialize authored routes at time zero; route-free worlds still emit format 2.",
114    "checkpointProfileUnchanged": "darkwind.simulation.7",
115    "storage": "v3 key preferred; v1/v2 preserved until explicit reset"
116  },
117  "limitations": [
118    "Lightweight saves reset transient velocity and recompute support/blocked status; they are not exact native checkpoints.",
119    "Runtime-created platform persistence, shared platform authority, live route revision migration and a shared playable platform journey remain open.",
120    "The shipped Darkwind world has no routes; this is engine functionality verified with Engine Zoo content.",
121    "Local software-GPU acceptance does not close physical-device performance or remote CI reliability.",
122    "Full-plan estimate remains approximately 35%; no entire numbered roadmap milestone is closed."
123  ]
124}
125