authoring-acceptance.json
docs/evidence/authoring-acceptance.json
1{
2 "format": 1,
3 "source": {
4 "revision": "382ea48e93e3a4b9e78742d1c86a190baaf50af1",
5 "dirty": false,
6 "builtAt": "2026-10-24T21:26:50.082Z"
7 },
8 "engine": "0.1.0",
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": 136,
18 "pass": 136,
19 "fail": 0,
20 "skipped": 0,
21 "log": "authoring-headless.tap"
22 },
23 "browser": {
24 "command": "CI=1 PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell npm run test:browser",
25 "stats": {
26 "startTime": "2026-10-24T21:26:49.650Z",
27 "duration": 157924.891,
28 "expected": 23,
29 "skipped": 0,
30 "unexpected": 0,
31 "flaky": 0
32 },
33 "tests": [
34 {
35 "name": "two real browsers share doors and chat, then the guest takes over when the host leaves",
36 "ok": true,
37 "results": [
38 {
39 "status": "passed",
40 "durationMs": 9236
41 }
42 ]
43 },
44 {
45 "name": "simultaneous real-browser pickups grant one lantern, including across host handoff",
46 "ok": true,
47 "results": [
48 {
49 "status": "passed",
50 "durationMs": 37645
51 }
52 ]
53 },
54 {
55 "name": "travelers see each other move in the rendered world",
56 "ok": true,
57 "results": [
58 {
59 "status": "passed",
60 "durationMs": 8919
61 }
62 ]
63 },
64 {
65 "name": "world pixel checks use completed presentation and reject an invisible canvas despite visible UI",
66 "ok": true,
67 "results": [
68 {
69 "status": "passed",
70 "durationMs": 2592
71 }
72 ]
73 },
74 {
75 "name": "canonical ECS frames stay bounded while acknowledgements stall and then catch up",
76 "ok": true,
77 "results": [
78 {
79 "status": "passed",
80 "durationMs": 3239
81 }
82 ]
83 },
84 {
85 "name": "new checkpoints save without animation frames",
86 "ok": true,
87 "results": [
88 {
89 "status": "passed",
90 "durationMs": 4549
91 }
92 ]
93 },
94 {
95 "name": "restored checkpoints save without animation frames",
96 "ok": true,
97 "results": [
98 {
99 "status": "passed",
100 "durationMs": 3572
101 }
102 ]
103 },
104 {
105 "name": "front lawn supports leaving the porch and walking back up",
106 "ok": true,
107 "results": [
108 {
109 "status": "passed",
110 "durationMs": 7555
111 }
112 ]
113 },
114 {
115 "name": "renders, walks, pauses, releases input, and restores the local checkpoint",
116 "ok": true,
117 "results": [
118 {
119 "status": "passed",
120 "durationMs": 11223
121 }
122 ]
123 },
124 {
125 "name": "keeper dialogue pauses movement and updates the journal",
126 "ok": true,
127 "results": [
128 {
129 "status": "passed",
130 "durationMs": 4815
131 }
132 ]
133 },
134 {
135 "name": "place travel, pickup conditions, beacon state, and render resources remain coherent",
136 "ok": true,
137 "results": [
138 {
139 "status": "passed",
140 "durationMs": 10209
141 }
142 ]
143 },
144 {
145 "name": "unsupported GPU and malformed saves fail safely",
146 "ok": true,
147 "results": [
148 {
149 "status": "passed",
150 "durationMs": 2145
151 }
152 ]
153 },
154 {
155 "name": "legacy saves are preserved while exact uint64 saves advance and reload from the new key",
156 "ok": true,
157 "results": [
158 {
159 "status": "passed",
160 "durationMs": 8603
161 }
162 ]
163 },
164 {
165 "name": "owned renderer works on the main thread and survives worker resize, device loss and restart",
166 "ok": true,
167 "results": [
168 {
169 "status": "passed",
170 "durationMs": 10316
171 }
172 ]
173 },
174 {
175 "name": "probe reports unsupported graphics without joining a room",
176 "ok": true,
177 "results": [
178 {
179 "status": "passed",
180 "durationMs": 193
181 }
182 ]
183 },
184 {
185 "name": "cancelling a worker probe releases ownership and permits another run",
186 "ok": true,
187 "results": [
188 {
189 "status": "passed",
190 "durationMs": 4573
191 }
192 ]
193 },
194 {
195 "name": "gesture probe confirms pointer release and closes the silent audio context",
196 "ok": true,
197 "results": [
198 {
199 "status": "passed",
200 "durationMs": 208
201 }
202 ]
203 },
204 {
205 "name": "worker exceptions produce a bounded failure and the next run can recover",
206 "ok": true,
207 "results": [
208 {
209 "status": "passed",
210 "durationMs": 6994
211 }
212 ]
213 },
214 {
215 "name": "a silent worker hits its deadline and releases ownership",
216 "ok": true,
217 "results": [
218 {
219 "status": "passed",
220 "durationMs": 634
221 }
222 ]
223 },
224 {
225 "name": "contract worker failures release ownership and can be retried",
226 "ok": true,
227 "results": [
228 {
229 "status": "passed",
230 "durationMs": 8052
231 }
232 ]
233 },
234 {
235 "name": "unavailable workers are reported as unsupported after main-thread rendering",
236 "ok": true,
237 "results": [
238 {
239 "status": "passed",
240 "durationMs": 570
241 }
242 ]
243 },
244 {
245 "name": "replay worker failure and cancellation release ownership and allow recovery",
246 "ok": true,
247 "results": [
248 {
249 "status": "passed",
250 "durationMs": 8080
251 }
252 ]
253 },
254 {
255 "name": "a silent simulation replay worker reaches its deadline and releases ownership",
256 "ok": true,
257 "results": [
258 {
259 "status": "passed",
260 "durationMs": 2133
261 }
262 ]
263 }
264 ]
265 },
266 "ci": {
267 "url": "https://github.com/jasona/darkwind-web/actions/runs/40134228664",
268 "status": "completed",
269 "conclusion": "success",
270 "jobs": [
271 {
272 "name": "core",
273 "conclusion": "success"
274 },
275 {
276 "name": "browser",
277 "conclusion": "success"
278 },
279 {
280 "name": "container",
281 "conclusion": "success"
282 }
283 ]
284 },
285 "scope": "Persistent file authoring, compiler identity preservation, profile-4 migration and real runtime restoration. Includes software-WebGPU gameplay and multiplayer regressions; no live content activation or physical-GPU capacity claim."
286}
287