REPOSITORY SOURCE

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