gpu-upload-acceptance.json
docs/evidence/gpu-upload-acceptance.json
1{
2 "date": "2026-10-25",
3 "baseCommit": "49080e74152383f336d81f2a46285e4351565e8e",
4 "scope": "Cooperative native model buffer/mip upload, closed error scopes between tasks, cancellable recovery creation, private candidate leases until full validation, and accepted-catalog upload diagnostics. No content/checkpoint profile or pixel changes.",
5 "environment": {
6 "node": "22.23.4",
7 "browser": "Playwright 1.56.1 / Chromium 141 / SwiftShader Vulkan WebGPU",
8 "isolation": "Fresh isolated relay for every browser spec; interactive editor and beta preserved"
9 },
10 "checks": {
11 "headless": {
12 "tests": 893,
13 "passed": 833,
14 "skipped": 60,
15 "failed": 0,
16 "concurrency": 4,
17 "report": "gpu-upload-headless.tap"
18 },
19 "focused": {
20 "passed": 31,
21 "report": "gpu-upload-focused.tap"
22 },
23 "build": {
24 "passed": true,
25 "packageFiles": 161,
26 "engine": {
27 "engine": "634d83149c3d2d95448b8d47c4bb67bc72a9197355c724ec13fe5d82c57c1f3a",
28 "files": 28,
29 "bytes": 50411410,
30 "output": "/home/jason/coding/dw-web/engine-dist"
31 },
32 "report": "gpu-upload-build.log"
33 },
34 "browser": {
35 "passed": 10,
36 "reports": {
37 "native": {
38 "report": "gpu-upload-native.json",
39 "startTime": "2026-10-26T00:33:25.056Z",
40 "duration": 6062.712,
41 "expected": 2,
42 "skipped": 0,
43 "unexpected": 0,
44 "flaky": 0
45 },
46 "residency": {
47 "report": "gpu-upload-residency.json",
48 "startTime": "2026-10-26T00:33:31.549Z",
49 "duration": 31633.373,
50 "expected": 1,
51 "skipped": 0,
52 "unexpected": 0,
53 "flaky": 0
54 },
55 "textures": {
56 "report": "gpu-upload-textures.json",
57 "startTime": "2026-10-26T00:34:03.698Z",
58 "duration": 47616.911,
59 "expected": 1,
60 "skipped": 0,
61 "unexpected": 0,
62 "flaky": 0
63 },
64 "revisions": {
65 "report": "gpu-upload-revisions.json",
66 "startTime": "2026-10-26T00:34:51.872Z",
67 "duration": 24632.373,
68 "expected": 1,
69 "skipped": 0,
70 "unexpected": 0,
71 "flaky": 0
72 },
73 "published": {
74 "report": "gpu-upload-published.json",
75 "startTime": "2026-10-26T00:36:17.378Z",
76 "duration": 79339.16,
77 "expected": 2,
78 "skipped": 0,
79 "unexpected": 0,
80 "flaky": 0
81 },
82 "lod": {
83 "report": "gpu-upload-lod.json",
84 "startTime": "2026-10-26T00:37:37.228Z",
85 "duration": 8680.669,
86 "expected": 2,
87 "skipped": 0,
88 "unexpected": 0,
89 "flaky": 0
90 },
91 "renderer": {
92 "report": "gpu-upload-renderer.json",
93 "startTime": "2026-10-26T00:37:46.421Z",
94 "duration": 72238.337,
95 "expected": 1,
96 "skipped": 0,
97 "unexpected": 0,
98 "flaky": 0
99 }
100 },
101 "rendererArtifacts": [
102 "gpu-upload-renderer-capabilities.json"
103 ]
104 }
105 },
106 "nativeObservations": {
107 "main": {
108 "baseline": 48,
109 "cancelled": {
110 "error": "Model upload cancelled",
111 "bytes": 48,
112 "pending": 0
113 },
114 "uploads": {
115 "bytes": 2970968,
116 "batches": 13,
117 "yields": 12
118 },
119 "elapsed": 87.10000002384186,
120 "beats": 11,
121 "maxGap": 16.5,
122 "verticesExact": true,
123 "indicesExact": true,
124 "mips": [
125 true,
126 true,
127 true,
128 true,
129 true,
130 true,
131 true,
132 true,
133 true,
134 true
135 ],
136 "reuse": {
137 "bytes": 0,
138 "batches": 1,
139 "yields": 0
140 },
141 "afterRetry": 48,
142 "lossError": "Model upload cancelled",
143 "final": {
144 "budgetBytes": 67108864,
145 "bytes": 0,
146 "peakBytes": 2971016,
147 "buffers": 0,
148 "textures": 0,
149 "leases": 0,
150 "pending": 0,
151 "reuses": 4,
152 "closed": true
153 },
154 "errors": []
155 },
156 "worker": {
157 "baseline": 48,
158 "cancelled": {
159 "error": "Model upload cancelled",
160 "bytes": 48,
161 "pending": 0
162 },
163 "uploads": {
164 "bytes": 2970968,
165 "batches": 13,
166 "yields": 12
167 },
168 "elapsed": 86.5,
169 "beats": 11,
170 "maxGap": 16.299999952316284,
171 "verticesExact": true,
172 "indicesExact": true,
173 "mips": [
174 true,
175 true,
176 true,
177 true,
178 true,
179 true,
180 true,
181 true,
182 true,
183 true
184 ],
185 "reuse": {
186 "bytes": 0,
187 "batches": 1,
188 "yields": 0
189 },
190 "afterRetry": 48,
191 "lossError": "Model upload cancelled",
192 "final": {
193 "budgetBytes": 67108864,
194 "bytes": 0,
195 "peakBytes": 2971016,
196 "buffers": 0,
197 "textures": 0,
198 "leases": 0,
199 "pending": 0,
200 "reuses": 4,
201 "closed": true
202 },
203 "errors": []
204 }
205 },
206 "visualReview": [
207 "gpu-upload-texture-streaming-worker.png"
208 ],
209 "interruption": {
210 "runnerExit": 143,
211 "testFailureReported": false,
212 "retainedLog": "gpu-upload-published-interrupted.log",
213 "handling": "The verification runner and browser worker were confirmed absent. Its orphaned test server was terminated. Only unfinished published-player, LOD and renderer specs were resumed, against unchanged source. The cause of SIGTERM was not established."
214 },
215 "limits": [
216 "Four milliseconds and 256 KiB are cooperative per-job batch targets; each transfer is at most 256 KiB and a batch may cross its target by its final step. Native calls cannot be preempted.",
217 "Native observations are single runs, not a before/after benchmark, FPS guarantee or named physical-device qualification.",
218 "Existing coordinated revision/retirement barriers still apply; this does not make scene publication incremental.",
219 "PostgreSQL, Docker/Coolify and regional process-recovery suites were not rerun for this renderer-only change.",
220 "Aggregate scheduling, progressive mip/detail streaming, compressed GPU formats, long-session/device qualification and final character/environment/arrival art remain open."
221 ],
222 "progress": {
223 "approximateFullPlanPercent": 79,
224 "numberedMilestonesClosed": [],
225 "goalComplete": false
226 },
227 "sourceSha256": {
228 "apps/player/main.ts": "0798ef2e653a0cdd8ad2ae566b1e898e202d90cd7f22376236f4c6428bc0849a",
229 "packages/render-webgpu/index.ts": "a93b1f94aac1049a5a03361ed9e0c610a558507f369663aa9bbb923b7cf7af11",
230 "packages/render-webgpu/model-resources.ts": "8c72d11cb7adad6b629a7a700229dd0991e8b48436d8f7570d623f15373f0c91",
231 "packages/render-webgpu/model-upload.ts": "cf4b659e47c4a915cbce011a672bc35d9320ebe701b9601ab7676b2f65e3971b",
232 "packages/render/recovery.ts": "6edb38a75be93365859d8539ad9255a1105b03b0fe2cfba56e190ca74369c8a7",
233 "tests/browser/model-upload.spec.ts": "7c5d6163917e9adab2f9e889a3e68e5055018ca68f7a42d5a73ff0b3dea6af32",
234 "tests/fixtures/model-upload-browser-entry.ts": "bde94846f41296785a28e7efc544adddddb726a7d0ae7259ba9918d67d9b74e5",
235 "tests/fixtures/model-upload-browser.worker.ts": "4cccd3ccedb1b328973d107c3f365797daf6547f0ac7ebcb6eafb562006d8344",
236 "tests/fixtures/model-upload-native.ts": "f3d0bdc001947346e45fc19a8b36c08def2d85e16b0d5644c507ee57c7fc0285",
237 "tests/model-upload.test.ts": "e064be894dcb7412b1163a7a4834065fb2e8bcd695f961491d25475b1cc94396",
238 "tests/render-recovery.test.ts": "31819936527d38d42f89ff7233e3f2e09581b53ec596e5737c1e38e2654c06ad"
239 }
240}
241