REPOSITORY SOURCE

garden-ferry-acceptance.json

docs/evidence/garden-ferry-acceptance.json

1{
2  "sourceBase": "0d77ac8",
3  "sourceSha256": {
4    "games/darkwind/garden-ferry.ts": "f0b36b35c1fc47a39c101d02ab5fae0ee5acd447a817907a33394e212fa282d6",
5    "packages/net/client.ts": "017096dfcae10ed0aa888d23a00a3598a8076539c90dfb6c5b5160df75b141f2",
6    "packages/net/packets.ts": "259737a0221f89250ae8e75fec585ba72653cc4671417f72a971565393b4f872",
7    "packages/net/protocol.ts": "ca5a2ce4e18641b430645ecc7c511b668a5cc902cc88fcbc3bd2ec95661a372a",
8    "packages/physics/index.ts": "de29145f903246554de9becd44f9b79f34dd9d59e3cab81b9278b493375ece86",
9    "packages/physics/platforms.ts": "7c08b0116ad977e3938bce7e853ad0a0cc73985e35ba1087b5b4688d6616ec23",
10    "packages/simulation/index.ts": "5d29e3f377944b677e3b7ef9562cd1f025fc013a88945b8bacbc0bb9127fddde",
11    "packages/simulation/platforms.ts": "46a1b8171035522733a516721424b791749fc92e04360ad61ed6d3f487089f1e",
12    "apps/player/simulation.worker.ts": "921e9b61edf8ed5a4555dc512502d315093c51003cd33a1613bd4b651df90a18",
13    "services/relay/server.ts": "08be6e76dd19240fa0bced3101678ab3cb3da70d0bb91b8c69ac1a412a315f88"
14  },
15  "headless": {
16    "passed": 349,
17    "failed": 0
18  },
19  "check": {
20    "typescript": "passed",
21    "importBoundaries": 75
22  },
23  "browser": {
24    "startTime": "2026-10-25T04:33:00.874Z",
25    "duration": 48759.713,
26    "expected": 1,
27    "skipped": 0,
28    "unexpected": 0,
29    "flaky": 0
30  },
31  "observed": {
32    "ferry-after-handoff.json": {
33      "engine": "0.1.0",
34      "world": "darkwind-garden-ferry",
35      "release": "garden-ferry.1",
36      "time": "2026-10-25T04:33:41.750Z",
37      "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
38      "webgpu": true,
39      "quality": "high",
40      "startupStages": {
41        "started": 61.10000002384186,
42        "admission": 143.40000000596046,
43        "graphics": 1872.2000000178814,
44        "simulation": 719.2000000178814,
45        "presentation": 1873.6000000238419,
46        "room": 741,
47        "ready": 1874.7000000178814,
48        "failed": null
49      },
50      "graphicsLifecycle": [
51        {
52          "stage": "probe",
53          "generation": 0,
54          "at": 61.900000005960464
55        },
56        {
57          "stage": "device",
58          "generation": 1,
59          "at": 417.70009765028954
60        },
61        {
62          "stage": "adapter-request",
63          "generation": 1,
64          "at": 417.80009764432907
65        },
66        {
67          "stage": "device-request",
68          "generation": 1,
69          "at": 576.7000976502895
70        },
71        {
72          "stage": "resources",
73          "generation": 1,
74          "at": 578.10009765625
75        },
76        {
77          "stage": "shader-modules",
78          "generation": 1,
79          "at": 584.4000976383686
80        },
81        {
82          "stage": "shader-validation",
83          "generation": 1,
84          "at": 584.5000976622105
85        },
86        {
87          "stage": "shader-pipelines",
88          "generation": 1,
89          "at": 597.4000976383686
90        },
91        {
92          "stage": "shader-identity",
93          "generation": 1,
94          "at": 978.8000976443291
95        },
96        {
97          "stage": "initial-upload",
98          "generation": 1,
99          "at": 979.3000976443291
100        },
101        {
102          "stage": "catalog",
103          "generation": 1,
104          "at": 980.9000976383686
105        },
106        {
107          "stage": "model-prepare",
108          "generation": 1,
109          "at": 981.9000976383686
110        },
111        {
112          "stage": "model-allocate",
113          "generation": 1,
114          "at": 1424.9000976383686
115        },
116        {
117          "stage": "model-upload",
118          "generation": 1,
119          "at": 1536.7000976502895
120        },
121        {
122          "stage": "model-install",
123          "generation": 1,
124          "at": 1537.7000976502895
125        },
126        {
127          "stage": "actors",
128          "generation": 1,
129          "at": 1538.0000976622105
130        },
131        {
132          "stage": "ready",
133          "generation": 1,
134          "at": 1871.7000976502895
135        }
136      ],
137      "renderPlacement": "worker",
138      "viewport": [
139        960,
140        640,
141        1
142      ],
143      "place": "garden",
144      "tick": "1201",
145      "position": [
146        4.100034236907959,
147        1.1159999370574951,
148        -1.7685577869415283
149      ],
150      "frameInterval": {
151        "p50": 166.59999999999854,
152        "p95": 350
153      },
154      "tickMs": 1.699999988079071,
155      "renderObservedAtMs": 37573,
156      "render": {
157        "instances": 423,
158        "triangles": 51456,
159        "visibleInstances": 89,
160        "shadowInstances": 423,
161        "visibleTriangles": 3516,
162        "shadowTriangles": 51456,
163        "drawCalls": 8,
164        "buffers": 53,
165        "textures": 4,
166        "targetBytes": 24150016,
167        "targetGeneration": 1,
168        "width": 960,
169        "height": 640,
170        "frameMs": 1.5,
171        "submittedFrames": 95,
172        "completedFrames": 94,
173        "failedFrames": 0,
174        "cancelledFrames": 0,
175        "pendingFrames": 1,
176        "skippedFrames": 2128,
177        "completionWaitMs": 393,
178        "maxCompletionWaitMs": 637.0999999940395,
179        "lastSubmittedAtMs": 37453.40009763837,
180        "lastCompletedAtMs": 37439.30009764433
181      },
182      "actors": {
183        "rigged": 0,
184        "walking": 0,
185        "stalled": 0,
186        "samples": 0,
187        "matrices": 0
188      },
189      "presentationTransport": {
190        "route": "direct",
191        "received": 1089,
192        "returned": 1088,
193        "capacity": 4194304
194      },
195      "renderGraph": {
196        "plan": {
197          "textures": [
198            {
199              "name": "depth",
200              "format": "depth24plus",
201              "extent": {
202                "kind": "viewport"
203              },
204              "external": false,
205              "sampled": false,
206              "attachment": true,
207              "firstUse": 1,
208              "lastUse": 1,
209              "writer": "scene"
210            },
211            {
212              "name": "hdr",
213              "format": "rgba16float",
214              "extent": {
215                "kind": "viewport"
216              },
217              "external": false,
218              "sampled": true,
219              "attachment": true,
220              "firstUse": 1,
221              "lastUse": 2,
222              "writer": "scene"
223            },
224            {
225              "name": "output",
226              "format": "bgra8unorm",
227              "extent": {
228                "kind": "viewport"
229              },
230              "external": true,
231              "sampled": false,
232              "attachment": true,
233              "firstUse": 2,
234              "lastUse": 2,
235              "writer": "post"
236            },
237            {
238              "name": "shadow",
239              "format": "depth32float",
240              "extent": {
241                "kind": "fixed",
242                "width": 2048,
243                "height": 2048
244              },
245              "external": false,
246              "sampled": true,
247              "attachment": true,
248              "firstUse": 0,
249              "lastUse": 1,
250              "writer": "shadow"
251            }
252          ],
253          "passes": [
254            {
255              "name": "shadow",
256              "after": [],
257              "reads": [],
258              "colors": [],
259              "depth": {
260                "resource": "shadow",
261                "load": "clear",
262                "store": "store"
263              }
264            },
265            {
266              "name": "scene",
267              "after": [],
268              "reads": [
269                "shadow"
270              ],
271              "colors": [
272                {
273                  "resource": "hdr",
274                  "load": "clear",
275                  "store": "store"
276                }
277              ],
278              "depth": {
279                "resource": "depth",
280                "load": "clear",
281                "store": "discard"
282              }
283            },
284            {
285              "name": "post",
286              "after": [],
287              "reads": [
288                "hdr"
289              ],
290              "colors": [
291                {
292                  "resource": "output",
293                  "load": "clear",
294                  "store": "store"
295                }
296              ]
297            }
298          ]
299        },
300        "census": {
301          "generation": 1,
302          "textures": 3,
303          "estimatedBytes": 24150016,
304          "width": 960,
305          "height": 640
306        }
307      },
308      "shaders": {
309        "requestedRevision": "1",
310        "activeRevision": "1",
311        "hash": "039684b97282110739cbee452249807ac2ff2e2cbcefe32a87cf2da1454a8297",
312        "compilingRevision": null,
313        "pendingRevision": null,
314        "retainedSourceBytes": 0,
315        "disposed": false,
316        "last": {
317          "revision": "1",
318          "status": "applied",
319          "diagnostics": []
320        }
321      },
322      "graphicsRecovery": {
323        "status": "idle",
324        "attempts": 0,
325        "limit": 2,
326        "timeoutMs": 20000,
327        "inFlight": false
328      },
329      "graphicsIncidents": [],
330      "canonicalEntities": 1326,
331      "save": "local",
332      "room": {
333        "status": "connected",
334        "players": 1,
335        "epoch": "2",
336        "revision": "0"
337      },
338      "knownLimits": [
339        "Trusted cooperative beta",
340        "Single relay process",
341        "Original traveler rig; environment uses procedural geometry",
342        "Desktop WebGPU only"
343      ]
344    },
345    "ferry-riders.json": {
346      "platform": "authored:fedf0000-0000-4000-8000-ffffffffffff",
347      "boarded": {
348        "position": [
349          4.100034236907959,
350          1.1159999370574951,
351          3.6949968338012695
352        ],
353        "paused": false,
354        "time": 3.461171586982122,
355        "velocity": [
356          0,
357          0,
358          0
359        ],
360        "room": {
361          "self": "a01c1fd0-3ada-4c29-9772-d092ead42394",
362          "host": "49a87983-2068-49d6-9d3b-c116fbc12bf5",
363          "epoch": "1"
364        }
365      },
366      "paused": {
367        "position": [
368          4.100034236907959,
369          1.1159999370574951,
370          1.549223780632019
371        ],
372        "paused": true,
373        "time": 6.861027549005954,
374        "velocity": [
375          0,
376          0,
377          0
378        ],
379        "room": {
380          "self": "a01c1fd0-3ada-4c29-9772-d092ead42394",
381          "host": "49a87983-2068-49d6-9d3b-c116fbc12bf5",
382          "epoch": "1"
383        }
384      },
385      "handoff": {
386        "position": [
387          4.100034236907959,
388          1.1159999370574951,
389          -1.7685577869415283
390        ],
391        "paused": true,
392        "time": 11.284735544017877,
393        "velocity": [
394          0,
395          0,
396          0
397        ],
398        "room": {
399          "self": "a01c1fd0-3ada-4c29-9772-d092ead42394",
400          "host": "a01c1fd0-3ada-4c29-9772-d092ead42394",
401          "epoch": "2"
402        }
403      },
404      "after": {
405        "position": [
406          6.994901180267334,
407          0.7848723530769348,
408          -3.7857508659362793
409        ],
410        "paused": false,
411        "time": 16.31421784998212,
412        "velocity": [
413          0,
414          0,
415          0
416        ],
417        "room": {
418          "self": "a01c1fd0-3ada-4c29-9772-d092ead42394",
419          "host": "a01c1fd0-3ada-4c29-9772-d092ead42394",
420          "epoch": "4"
421        }
422      }
423    }
424  },
425  "priorAttempt": {
426    "result": "failed",
427    "reason": "Test compared both riders with one boarding offset; pointer-lock clicks also changed observer direction. Test now enters by keyboard and checks each settled rider offset independently at a tighter 5 cm tolerance.",
428    "productionPhysicsChangeAfterFailure": false
429  },
430  "container": "Ferry Compose configuration validates; no ferry container deployment or image smoke test performed.",
431  "limits": [
432    "Cooperative authored-route clock, not general server-owned physics",
433    "Small phase differences under network latency",
434    "Restart progression assumes an accurate server wall clock",
435    "Physical device and shaped-network acceptance remain open"
436  ],
437  "originalBetaRegression": {
438    "startTime": "2026-10-25T04:34:36.641Z",
439    "duration": 14351.527,
440    "expected": 1,
441    "skipped": 0,
442    "unexpected": 0,
443    "flaky": 0
444  },
445  "developmentPreview": {
446    "url": "http://localhost:5180",
447    "relayPort": 8788,
448    "storage": ".data/garden-ferry",
449    "result": "Vite and relay started successfully; existing port 5175 retained."
450  }
451}
452