REPOSITORY SOURCE

platforms-ci-multiplayer.json

docs/evidence/platforms-ci-multiplayer.json

1{
2  "source": "21110c2bb689e3cff00025aaaa7687e8f5f2ecc7",
3  "run": "https://github.com/jasona/darkwind-web/actions/runs/40154917946",
4  "stats": {
5    "startTime": "2026-10-25T02:34:32.017Z",
6    "duration": 334138.767,
7    "expected": 6,
8    "skipped": 0,
9    "unexpected": 0,
10    "flaky": 0
11  },
12  "cases": [
13    {
14      "name": "two real browsers share doors and chat, then the guest takes over when the host leaves",
15      "status": "passed",
16      "durationMs": 54567,
17      "reports": {}
18    },
19    {
20      "name": "simultaneous real-browser pickups grant one lantern, including across host handoff",
21      "status": "passed",
22      "durationMs": 57209,
23      "reports": {}
24    },
25    {
26      "name": "travelers see each other move in the rendered world",
27      "status": "passed",
28      "durationMs": 39485,
29      "reports": {}
30    },
31    {
32      "name": "rigged travelers walk, settle when pose delivery stalls, and resume without leaking actors",
33      "status": "passed",
34      "durationMs": 69056,
35      "reports": {
36        "motion-before-stall.json": {
37          "render": {
38            "instances": 685,
39            "triangles": 75232,
40            "visibleInstances": 573,
41            "shadowInstances": 389,
42            "visibleTriangles": 68776,
43            "shadowTriangles": 58948,
44            "drawCalls": 31,
45            "buffers": 53,
46            "textures": 4,
47            "targetBytes": 24150016,
48            "targetGeneration": 1,
49            "width": 960,
50            "height": 640,
51            "frameMs": 7.399999999994179,
52            "submittedFrames": 5,
53            "completedFrames": 4,
54            "failedFrames": 0,
55            "cancelledFrames": 0,
56            "pendingFrames": 1,
57            "skippedFrames": 7,
58            "completionWaitMs": 6030.200000000012,
59            "maxCompletionWaitMs": 6030.200000000012,
60            "lastSubmittedAtMs": 19170.5,
61            "lastCompletedAtMs": 17251.400000000023
62          },
63          "actors": {
64            "rigged": 1,
65            "walking": 1,
66            "stalled": 0,
67            "samples": 8,
68            "matrices": 154
69          },
70          "graphicsRecovery": {
71            "status": "idle",
72            "attempts": 0,
73            "limit": 2,
74            "timeoutMs": 20000,
75            "inFlight": false
76          }
77        },
78        "motion-observed-events.json": {
79          "maxFrameGap": 2807,
80          "maxWorkerGap": 1884.7999999999884,
81          "maxTimerGap": 1940.7000000000116
82        },
83        "motion-stalled.json": {
84          "render": {
85            "instances": 685,
86            "triangles": 75232,
87            "visibleInstances": 573,
88            "shadowInstances": 389,
89            "visibleTriangles": 68776,
90            "shadowTriangles": 58948,
91            "drawCalls": 31,
92            "buffers": 53,
93            "textures": 4,
94            "targetBytes": 24150016,
95            "targetGeneration": 1,
96            "width": 960,
97            "height": 640,
98            "frameMs": 25.300000000017462,
99            "submittedFrames": 6,
100            "completedFrames": 5,
101            "failedFrames": 0,
102            "cancelledFrames": 0,
103            "pendingFrames": 1,
104            "skippedFrames": 8,
105            "completionWaitMs": 5318.700000000012,
106            "maxCompletionWaitMs": 6030.200000000012,
107            "lastSubmittedAtMs": 25188.300000000017,
108            "lastCompletedAtMs": 24489.20000000001
109          },
110          "actors": {
111            "rigged": 1,
112            "walking": 0,
113            "stalled": 1,
114            "samples": 8,
115            "matrices": 154
116          },
117          "graphicsRecovery": {
118            "status": "idle",
119            "attempts": 0,
120            "limit": 2,
121            "timeoutMs": 20000,
122            "inFlight": false
123          }
124        },
125        "motion-resumed.json": {
126          "render": {
127            "instances": 685,
128            "triangles": 75232,
129            "visibleInstances": 573,
130            "shadowInstances": 389,
131            "visibleTriangles": 68776,
132            "shadowTriangles": 58948,
133            "drawCalls": 31,
134            "buffers": 53,
135            "textures": 4,
136            "targetBytes": 24150016,
137            "targetGeneration": 1,
138            "width": 960,
139            "height": 640,
140            "frameMs": 12,
141            "submittedFrames": 8,
142            "completedFrames": 7,
143            "failedFrames": 0,
144            "cancelledFrames": 0,
145            "pendingFrames": 1,
146            "skippedFrames": 12,
147            "completionWaitMs": 4959.200000000012,
148            "maxCompletionWaitMs": 6030.200000000012,
149            "lastSubmittedAtMs": 36363.5,
150            "lastCompletedAtMs": 36196.20000000001
151          },
152          "actors": {
153            "rigged": 1,
154            "walking": 1,
155            "stalled": 0,
156            "samples": 8,
157            "matrices": 154
158          },
159          "graphicsRecovery": {
160            "status": "idle",
161            "attempts": 0,
162            "limit": 2,
163            "timeoutMs": 20000,
164            "inFlight": false
165          }
166        }
167      }
168    },
169    {
170      "name": "travelers keep walking with slow GPU completion and settle when real movement stops",
171      "status": "passed",
172      "durationMs": 49348,
173      "reports": {
174        "slow-render-walking.json": {
175          "render": {
176            "instances": 685,
177            "triangles": 75232,
178            "visibleInstances": 573,
179            "shadowInstances": 389,
180            "visibleTriangles": 68776,
181            "shadowTriangles": 58948,
182            "drawCalls": 31,
183            "buffers": 53,
184            "textures": 4,
185            "targetBytes": 24150016,
186            "targetGeneration": 1,
187            "width": 960,
188            "height": 640,
189            "frameMs": 4.099999999976717,
190            "submittedFrames": 5,
191            "completedFrames": 4,
192            "failedFrames": 0,
193            "cancelledFrames": 0,
194            "pendingFrames": 1,
195            "skippedFrames": 8,
196            "completionWaitMs": 5572,
197            "maxCompletionWaitMs": 5572,
198            "lastSubmittedAtMs": 18691.199999999953,
199            "lastCompletedAtMs": 16770.399999999965
200          },
201          "actors": {
202            "rigged": 1,
203            "walking": 1,
204            "stalled": 0,
205            "samples": 8,
206            "matrices": 154
207          },
208          "graphicsRecovery": {
209            "status": "idle",
210            "attempts": 0,
211            "limit": 2,
212            "timeoutMs": 20000,
213            "inFlight": false
214          }
215        },
216        "slow-render-observed-events.json": {
217          "maxFrameGap": 3065.2000000000116,
218          "maxWorkerGap": 2317,
219          "maxTimerGap": 3549.2999999999884
220        },
221        "slow-render-idle.json": {
222          "render": {
223            "instances": 685,
224            "triangles": 75232,
225            "visibleInstances": 573,
226            "shadowInstances": 389,
227            "visibleTriangles": 68776,
228            "shadowTriangles": 58948,
229            "drawCalls": 31,
230            "buffers": 53,
231            "textures": 4,
232            "targetBytes": 24150016,
233            "targetGeneration": 1,
234            "width": 960,
235            "height": 640,
236            "frameMs": 15.700000000011642,
237            "submittedFrames": 7,
238            "completedFrames": 6,
239            "failedFrames": 0,
240            "cancelledFrames": 0,
241            "pendingFrames": 1,
242            "skippedFrames": 18,
243            "completionWaitMs": 3385.2999999999884,
244            "maxCompletionWaitMs": 7453,
245            "lastSubmittedAtMs": 32524.399999999965,
246            "lastCompletedAtMs": 30399.699999999953
247          },
248          "actors": {
249            "rigged": 1,
250            "walking": 0,
251            "stalled": 1,
252            "samples": 8,
253            "matrices": 154
254          },
255          "graphicsRecovery": {
256            "status": "idle",
257            "attempts": 0,
258            "limit": 2,
259            "timeoutMs": 20000,
260            "inFlight": false
261          }
262        }
263      }
264    },
265    {
266      "name": "graphics recovery keeps the shared room and receives door changes during restoration",
267      "status": "passed",
268      "durationMs": 60797,
269      "reports": {
270        "shared-recovery-before-capture.json": {
271          "render": {
272            "instances": 685,
273            "triangles": 75232,
274            "visibleInstances": 104,
275            "shadowInstances": 388,
276            "visibleTriangles": 10776,
277            "shadowTriangles": 58936,
278            "drawCalls": 20,
279            "buffers": 53,
280            "textures": 4,
281            "targetBytes": 24150016,
282            "targetGeneration": 1,
283            "width": 960,
284            "height": 640,
285            "frameMs": 10.399999999965075,
286            "submittedFrames": 3,
287            "completedFrames": 2,
288            "failedFrames": 0,
289            "cancelledFrames": 0,
290            "pendingFrames": 1,
291            "skippedFrames": 6,
292            "completionWaitMs": 4351.299999999988,
293            "maxCompletionWaitMs": 4945.600000000035,
294            "lastSubmittedAtMs": 29758.79999999999,
295            "lastCompletedAtMs": 29716.79999999999
296          },
297          "actors": {
298            "rigged": 1,
299            "walking": 0,
300            "stalled": 0,
301            "samples": 8,
302            "matrices": 154
303          },
304          "graphicsRecovery": {
305            "status": "ready",
306            "attempts": 1,
307            "limit": 2,
308            "timeoutMs": 20000,
309            "inFlight": false
310          }
311        },
312        "shared-recovery-after-capture.json": {
313          "render": {
314            "instances": 685,
315            "triangles": 75232,
316            "visibleInstances": 141,
317            "shadowInstances": 389,
318            "visibleTriangles": 4980,
319            "shadowTriangles": 58948,
320            "drawCalls": 20,
321            "buffers": 53,
322            "textures": 4,
323            "targetBytes": 24150016,
324            "targetGeneration": 1,
325            "width": 960,
326            "height": 640,
327            "frameMs": 14.399999999965075,
328            "submittedFrames": 6,
329            "completedFrames": 5,
330            "failedFrames": 0,
331            "cancelledFrames": 0,
332            "pendingFrames": 1,
333            "skippedFrames": 10,
334            "completionWaitMs": 6243.200000000012,
335            "maxCompletionWaitMs": 7247,
336            "lastSubmittedAtMs": 48379,
337            "lastCompletedAtMs": 48301.100000000035
338          },
339          "actors": {
340            "rigged": 1,
341            "walking": 0,
342            "stalled": 1,
343            "samples": 8,
344            "matrices": 154
345          },
346          "graphicsRecovery": {
347            "status": "ready",
348            "attempts": 1,
349            "limit": 2,
350            "timeoutMs": 20000,
351            "inFlight": false
352          }
353        }
354      }
355    }
356  ]
357}
358