REPOSITORY SOURCE

prefabs-acceptance.json

docs/evidence/prefabs-acceptance.json

1{
2  "format": 1,
3  "recordedAt": "2026-10-24T21:42:33.904573+00:00",
4  "source": {
5    "revision": "ec34043ecb6faeeef895fbe593f8a67201dd12f2",
6    "dirty": false,
7    "builtAt": "2026-10-24T21:38:50.657Z"
8  },
9  "environment": {
10    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
11    "secureContext": true,
12    "hardwareConcurrency": 16,
13    "devicePixelRatio": 1
14  },
15  "headless": {
16    "command": "npm test",
17    "tests": 144,
18    "pass": 144,
19    "fail": 0,
20    "skipped": 0,
21    "log": "prefabs-initial-headless.tap"
22  },
23  "browser": {
24    "stats": {
25      "startTime": "2026-10-24T21:38:50.116Z",
26      "duration": 166632.71899999998,
27      "expected": 23,
28      "skipped": 0,
29      "unexpected": 0,
30      "flaky": 0
31    },
32    "tests": [
33      {
34        "name": "two real browsers share doors and chat, then the guest takes over when the host leaves",
35        "ok": true,
36        "results": [
37          {
38            "status": "passed",
39            "durationMs": 10430
40          }
41        ]
42      },
43      {
44        "name": "simultaneous real-browser pickups grant one lantern, including across host handoff",
45        "ok": true,
46        "results": [
47          {
48            "status": "passed",
49            "durationMs": 37965
50          }
51        ]
52      },
53      {
54        "name": "travelers see each other move in the rendered world",
55        "ok": true,
56        "results": [
57          {
58            "status": "passed",
59            "durationMs": 7264
60          }
61        ]
62      },
63      {
64        "name": "world pixel checks use completed presentation and reject an invisible canvas despite visible UI",
65        "ok": true,
66        "results": [
67          {
68            "status": "passed",
69            "durationMs": 2416
70          }
71        ]
72      },
73      {
74        "name": "canonical ECS frames stay bounded while acknowledgements stall and then catch up",
75        "ok": true,
76        "results": [
77          {
78            "status": "passed",
79            "durationMs": 3901
80          }
81        ]
82      },
83      {
84        "name": "new checkpoints save without animation frames",
85        "ok": true,
86        "results": [
87          {
88            "status": "passed",
89            "durationMs": 4523
90          }
91        ]
92      },
93      {
94        "name": "restored checkpoints save without animation frames",
95        "ok": true,
96        "results": [
97          {
98            "status": "passed",
99            "durationMs": 3705
100          }
101        ]
102      },
103      {
104        "name": "front lawn supports leaving the porch and walking back up",
105        "ok": true,
106        "results": [
107          {
108            "status": "passed",
109            "durationMs": 8102
110          }
111        ]
112      },
113      {
114        "name": "renders, walks, pauses, releases input, and restores the local checkpoint",
115        "ok": true,
116        "results": [
117          {
118            "status": "passed",
119            "durationMs": 11476
120          }
121        ]
122      },
123      {
124        "name": "keeper dialogue pauses movement and updates the journal",
125        "ok": true,
126        "results": [
127          {
128            "status": "passed",
129            "durationMs": 3476
130          }
131        ]
132      },
133      {
134        "name": "place travel, pickup conditions, beacon state, and render resources remain coherent",
135        "ok": true,
136        "results": [
137          {
138            "status": "passed",
139            "durationMs": 10762
140          }
141        ]
142      },
143      {
144        "name": "unsupported GPU and malformed saves fail safely",
145        "ok": true,
146        "results": [
147          {
148            "status": "passed",
149            "durationMs": 3083
150          }
151        ]
152      },
153      {
154        "name": "legacy saves are preserved while exact uint64 saves advance and reload from the new key",
155        "ok": true,
156        "results": [
157          {
158            "status": "passed",
159            "durationMs": 9651
160          }
161        ]
162      },
163      {
164        "name": "owned renderer works on the main thread and survives worker resize, device loss and restart",
165        "ok": true,
166        "results": [
167          {
168            "status": "passed",
169            "durationMs": 12858
170          }
171        ]
172      },
173      {
174        "name": "probe reports unsupported graphics without joining a room",
175        "ok": true,
176        "results": [
177          {
178            "status": "passed",
179            "durationMs": 204
180          }
181        ]
182      },
183      {
184        "name": "cancelling a worker probe releases ownership and permits another run",
185        "ok": true,
186        "results": [
187          {
188            "status": "passed",
189            "durationMs": 5543
190          }
191        ]
192      },
193      {
194        "name": "gesture probe confirms pointer release and closes the silent audio context",
195        "ok": true,
196        "results": [
197          {
198            "status": "passed",
199            "durationMs": 199
200          }
201        ]
202      },
203      {
204        "name": "worker exceptions produce a bounded failure and the next run can recover",
205        "ok": true,
206        "results": [
207          {
208            "status": "passed",
209            "durationMs": 6021
210          }
211        ]
212      },
213      {
214        "name": "a silent worker hits its deadline and releases ownership",
215        "ok": true,
216        "results": [
217          {
218            "status": "passed",
219            "durationMs": 668
220          }
221        ]
222      },
223      {
224        "name": "contract worker failures release ownership and can be retried",
225        "ok": true,
226        "results": [
227          {
228            "status": "passed",
229            "durationMs": 8034
230          }
231        ]
232      },
233      {
234        "name": "unavailable workers are reported as unsupported after main-thread rendering",
235        "ok": true,
236        "results": [
237          {
238            "status": "passed",
239            "durationMs": 585
240          }
241        ]
242      },
243      {
244        "name": "replay worker failure and cancellation release ownership and allow recovery",
245        "ok": true,
246        "results": [
247          {
248            "status": "passed",
249            "durationMs": 10019
250          }
251        ]
252      },
253      {
254        "name": "a silent simulation replay worker reaches its deadline and releases ownership",
255        "ok": true,
256        "results": [
257          {
258            "status": "passed",
259            "durationMs": 3140
260          }
261        ]
262      }
263    ],
264    "command": "CI=1 PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell npm run test:browser"
265  },
266  "capabilities": "prefabs-capabilities.json",
267  "ci": {
268    "url": "https://github.com/jasona/darkwind-web/actions/runs/40135129470",
269    "status": "completed",
270    "conclusion": "success",
271    "jobs": [
272      {
273        "name": "core",
274        "status": "completed",
275        "conclusion": "success"
276      },
277      {
278        "name": "browser",
279        "status": "completed",
280        "conclusion": "success"
281      },
282      {
283        "name": "container",
284        "status": "completed",
285        "conclusion": "success"
286      }
287    ]
288  },
289  "byteLimitFollowup": {
290    "source": {
291      "revision": "42244725f1d50677c0c257dc87d558b129a59d54",
292      "dirty": false,
293      "builtAt": "2026-10-24T21:42:07.944Z"
294    },
295    "headless": {
296      "command": "npm test",
297      "tests": 145,
298      "pass": 145,
299      "fail": 0,
300      "skipped": 0,
301      "log": "prefabs-headless.tap"
302    },
303    "browser": {
304      "stats": {
305        "startTime": "2026-10-24T21:42:07.502Z",
306        "duration": 11741.86,
307        "expected": 1,
308        "skipped": 0,
309        "unexpected": 0,
310        "flaky": 0
311      },
312      "tests": [
313        {
314          "name": "owned renderer works on the main thread and survives worker resize, device loss and restart",
315          "ok": true,
316          "results": [
317            {
318              "status": "passed",
319              "durationMs": 10073
320            }
321          ]
322        }
323      ],
324      "command": "CI=1 PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell npm run test:browser -- tests/browser/probe.spec.ts -g 'owned renderer works'"
325    },
326    "capabilities": "prefabs-bounds-capabilities.json",
327    "ci": {
328      "url": "https://github.com/jasona/darkwind-web/actions/runs/40135275298",
329      "status": "in_progress",
330      "conclusion": null,
331      "jobs": [
332        {
333          "name": "core",
334          "status": "completed",
335          "conclusion": "success"
336        },
337        {
338          "name": "browser",
339          "status": "in_progress",
340          "conclusion": null
341        },
342        {
343          "name": "container",
344          "status": "completed",
345          "conclusion": "success"
346        }
347      ]
348    }
349  },
350  "scope": "Primitive prefab inheritance, explicit overrides, stable bindings, standalone builds, dependency hashes and bounded expansion. Real full-Darkwind extraction preserves all compiled objects/assets/identities and restores 1,481 entities. Browser worker matches complete Node fixture and renders/rebuilds/restores the kit while preserving the prior frame on rejection. Software WebGPU; no live-room content migration, asset import, physical-GPU or capacity claim."
351}
352