lod-acceptance.json
docs/evidence/lod-acceptance.json
1{
2 "date": "2026-10-25",
3 "baseCommit": "a9af08deafcf854397f9750f8c272b6a78e8f3c9",
4 "scope": "Distance-based static imported-model LOD, bounded derived index buffers, quality-aware selection, shared GPU ownership and native/shared-player validation. Original source, collision and checkpoint identities are unchanged.",
5 "environment": {
6 "node": "22.23.4",
7 "browser": "Playwright 1.56.1 / Chromium 141 / SwiftShader Vulkan WebGPU",
8 "temporaryDirectories": "Isolated short .data/ld-* paths; interactive editor and beta preserved"
9 },
10 "checks": {
11 "focused": {
12 "passed": 28,
13 "report": "lod-focused.tap"
14 },
15 "headless": {
16 "tests": 856,
17 "passed": 796,
18 "skipped": 60,
19 "failed": 0,
20 "report": "lod-headless.tap"
21 },
22 "build": {
23 "passed": true,
24 "packageFiles": 157,
25 "engine": "2e996d5820ce66da5e55c7470b80603cd38eacb47797387efc12db0fad696d5f",
26 "report": "lod-build.log"
27 },
28 "finalTypecheck": {
29 "passed": true,
30 "report": "lod-check.log"
31 },
32 "browser": {
33 "passed": 6,
34 "reports": {
35 "native": {
36 "report": "lod-native.json",
37 "startTime": "2026-10-25T23:23:08.421Z",
38 "duration": 6821.13,
39 "expected": 2,
40 "skipped": 0,
41 "unexpected": 0,
42 "flaky": 0
43 },
44 "player": {
45 "report": "lod-player.json",
46 "startTime": "2026-10-25T23:25:47.691Z",
47 "duration": 43080.949,
48 "expected": 1,
49 "skipped": 0,
50 "unexpected": 0,
51 "flaky": 0
52 },
53 "quality": {
54 "report": "lod-quality.json",
55 "startTime": "2026-10-25T23:27:51.159Z",
56 "duration": 81429.728,
57 "expected": 2,
58 "skipped": 0,
59 "unexpected": 0,
60 "flaky": 0
61 },
62 "portal": {
63 "report": "lod-portal.json",
64 "startTime": "2026-10-25T23:29:13.322Z",
65 "duration": 129545.282,
66 "expected": 1,
67 "skipped": 0,
68 "unexpected": 0,
69 "flaky": 0
70 }
71 }
72 }
73 },
74 "measurements": {
75 "main": {
76 "near": {
77 "changedPixels": 0,
78 "largeErrorPixels": 0,
79 "rmse": 0,
80 "errors": [],
81 "referenceTriangles": 2220,
82 "reducedTriangles": 2220,
83 "shadowTriangles": 2220,
84 "lodIndexBytes": 23328
85 },
86 "far": {
87 "changedPixels": 125,
88 "largeErrorPixels": 3,
89 "rmse": 0.24145824345698644,
90 "errors": [],
91 "referenceTriangles": 2220,
92 "reducedTriangles": 1404,
93 "shadowTriangles": 2220,
94 "lodIndexBytes": 23328
95 },
96 "performance": {
97 "changedPixels": 167,
98 "largeErrorPixels": 2,
99 "rmse": 0.2603194262895178,
100 "errors": [],
101 "referenceTriangles": 2220,
102 "reducedTriangles": 564,
103 "shadowTriangles": 2220,
104 "lodIndexBytes": 23328
105 },
106 "closedPoolBytes": 0
107 },
108 "worker": {
109 "near": {
110 "changedPixels": 0,
111 "largeErrorPixels": 0,
112 "rmse": 0,
113 "errors": [],
114 "referenceTriangles": 2220,
115 "reducedTriangles": 2220,
116 "shadowTriangles": 2220,
117 "lodIndexBytes": 23328
118 },
119 "far": {
120 "changedPixels": 125,
121 "largeErrorPixels": 3,
122 "rmse": 0.24145824345698644,
123 "errors": [],
124 "referenceTriangles": 2220,
125 "reducedTriangles": 1404,
126 "shadowTriangles": 2220,
127 "lodIndexBytes": 23328
128 },
129 "performance": {
130 "changedPixels": 167,
131 "largeErrorPixels": 2,
132 "rmse": 0.2603194262895178,
133 "errors": [],
134 "referenceTriangles": 2220,
135 "reducedTriangles": 564,
136 "shadowTriangles": 2220,
137 "lodIndexBytes": 23328
138 },
139 "closedPoolBytes": 0
140 }
141 },
142 "verified": [
143 "Pinned meshoptimizer derivatives preserve original vertex/material streams and mesh identities; deterministic results, locked borders and UV seams have focused checks.",
144 "Selection handles affine transforms, camera depth, projected size, quality thresholds and hysteresis; near, skinned and traveler geometry remains original.",
145 "Optional indices share device resources and count toward bounded model/catalog budgets. Replacement pressure trims optional variants; last release and partial allocation failure clean resources.",
146 "Main/worker native textured images retain identical near pixels, reduce distant triangles, preserve shadow triangles and reconstruct after device replacement. Final disposal has zero model-pool bytes.",
147 "Two real shared players use worker/main rendering, recover graphics at distance, approach full detail, remain grounded and preserve room identity.",
148 "Existing adaptive quality and shared authored portal preview/save/undo/publication journeys pass.",
149 "MIT dependency notice is included in static server and container smoke expectations; native static notice tests pass. Docker smoke was not run."
150 ],
151 "correctionsAndObservations": [
152 {
153 "issue": "Initial native fixture used presentation format 2 with imported-model/emissive fields.",
154 "resolution": "Fixture uses format 3; runtime validation unchanged.",
155 "report": "lod-initial-format-fixture-failure.json"
156 },
157 {
158 "issue": "Native recreation inherited a reduced physical canvas size after Performance rendering.",
159 "resolution": "Fixture explicitly sets logical 640x400 viewport on initial creation and recreation.",
160 "report": "lod-initial-recovery-fixture-failure.json"
161 },
162 {
163 "issue": "Selection boundary search did not extend far enough for the conservative second level.",
164 "resolution": "Test search extended to 200 units without relaxing runtime thresholds."
165 },
166 {
167 "issue": "Code review found private LOD history would mutate frozen presentation objects.",
168 "resolution": "Renderer copies all presentation objects before keeping per-instance state."
169 },
170 {
171 "issue": "First passing shared-player capture let the first traveler occlude the second view.",
172 "resolution": "Move the first traveler aside before the second approach; recaptured journey passed with unchanged gameplay assertions."
173 },
174 {
175 "issue": "Headless/build orchestration wrapper later reported exit 143.",
176 "resolution": "Both child commands had already explicitly reported exit 0 and complete passing logs/engine identity. No unfinished check was treated as passed; cause of wrapper termination remains unknown."
177 }
178 ],
179 "limitations": [
180 "Fixture image differences are not arbitrary-asset quality or frame-rate guarantees.",
181 "Generation is runtime model preparation; published/streamed LOD variants and background build-worker generation remain open.",
182 "Index storage is bounded; simplifier internal WASM heap and large-asset preparation latency are not qualified.",
183 "Progressive mip delivery, compressed variants, GPU-memory quality degradation, skinned/primitive/shadow LOD remain open.",
184 "Physical hardware, extended sessions and Docker/Coolify qualification were not performed.",
185 "Final character/environment/arrival art pass remains open."
186 ],
187 "progress": {
188 "approximateFullPlanPercent": 79,
189 "numberedMilestonesClosed": [],
190 "goalComplete": false
191 },
192 "sourceSha256": {
193 "apps/player/main.ts": "12e32c7cd05a3c96ae590b26c3ac7769f969d9215de287a6bf8ba693ca70bc79",
194 "package-lock.json": "c85e568886a7dc3c69fbeabc2792f766ab8de1e87d49c6d5ece0a49b0faf3da0",
195 "package.json": "6523da456aea6ea65bc51128c1ea775114a6972ddf9eb4d81ff3334f0c476c0d",
196 "packages/assets/lod.ts": "0331f2d6f0c34a1ff607061f64af7edf821a78f574978e744f6ffdce11b004b2",
197 "packages/render-webgpu/index.ts": "d966f782497df25aeb509ccf5399f7a30a833e66b53ec33a5d2eb4e1faf46f65",
198 "packages/render-webgpu/model-resources.ts": "17c8dc34f700b196b578bdec8c6f10f22127e0702e0a5da7e3bdd26df26640f9",
199 "packages/render/index.ts": "1b8442b1398f8f644200f5e5f8ad0c5e17aea7a52eb368085703ba2f6b5d5c85",
200 "packages/render/lod.ts": "0cf9ce6a9d00cf4752421b896a19d9a978452a6f334b8560cd910f08e50c42b5",
201 "packages/render/model.ts": "946b12cae718a1757d22efbefb5108396db7575828433e7cd091b8d3046af859",
202 "public/meshoptimizer-notices.txt": "499b39bf1ca5449675594b721f80a85bd83670d2ba9a2b1dbb42ffdc015e9959",
203 "services/relay/server.ts": "9d751bb89736e9a9191f8e539cc2338875f33258e1653a209dda8562552d8149",
204 "tests/browser/lod-player.spec.ts": "e15c1c6f3fd615660197e917dd61539640cdcd8d26e2ff85f3ca84eae8ba1a77",
205 "tests/browser/lod.spec.ts": "15658ed8792ab00e8bf8873eb711f9a798856fc3818fda9aaae3ad8054bc2f91",
206 "tests/fixtures/lod-browser-entry.ts": "89eaaa68ef498a4718fe5418b1189f55c8d22821349cf4599f27ed6017ed3140",
207 "tests/fixtures/lod-model.ts": "410355ea126fed1e8ebccdfe007dd2a54badd49c2c1f4ac57eab7d2dba6f97d0",
208 "tests/fixtures/lod-native.ts": "35a5efae8fc06f041688457781096c9bd35542704ca312a964bf522d01b4bbe1",
209 "tests/fixtures/lod-native.worker.ts": "5b6bf406b0cf81e5dc3c95dffc5770b8f13bc528fa39c93adf3cfd514410abcc",
210 "tests/lod.test.ts": "88b4f9b33d13e699712da2e488eda96b89d869fa062e27b915703de8483ba917",
211 "tests/static-notices.test.ts": "3540657c072b1f1790b71cf743292ab7ec094e7062648a1026bfbca832eaeb5b",
212 "tools/cli/check-boundaries.ts": "63632725c488b6c81e428924a53db8f779c63ddd7acf690d89d21026ce8eaebe",
213 "tools/cli/docker-smoke.ts": "08995de2705ed1d9cb43c3a83298a337dcd15c981edd3950d4ac102670ebda58"
214 }
215}
216