REPOSITORY SOURCE

room-capacity-acceptance.json

docs/evidence/room-capacity-acceptance.json

1{
2  "recordedAt": "2026-10-25T16:57:52.123756+00:00",
3  "baseCommit": "916326ff9340c8e73a72de6733c2ea1080a37d09",
4  "scope": "Prepared immutable content per trusted room, independent mutable traveler simulations, and a repeatable native regional capacity/cost trial. Full milestones 0\u201318 remain open.",
5  "fullPlanEstimatePercent": 70,
6  "sourceSha256": {
7    "package.json": "8fb7e6b94432f768e7af76551fb23852623b74bcbb6e49fdf8faf1725d96bebe",
8    "packages/simulation/index.ts": "d3a67abde21028eb9600baed6365ce6d107e2b8aa2c0157bae781b5ef131c306",
9    "services/persistent/health.ts": "647e12de873173635af872e2697af2f12dd960811b69d5bf1ddeeb4e8fd77d8a",
10    "services/persistent/server.ts": "b698fd4c0d85f8546ca0ea381cb67096e307e21e075348be93161a2b3a878afe",
11    "services/sim-host/motion.ts": "4415f83f75f18f1c26357123821585899697d60ec0f72f05e79c76fcd2ae2479",
12    "tools/cli/benchmark-rooms.mjs": "e1960aef527c29283db8135a9e713df27211e607ddd6107b04f8d77d47611a73",
13    "tools/bench/room-capacity.ts": "8198ba94d5c83bbcadf3a4b0e906ffaedea1ae3adeee70a7ce718b69bf5c7288",
14    "tools/bench/room-bot.ts": "d3d19286dda4669f857c89f1db07fb870969d2da6b7eb0ab557abe17b1f166c2",
15    "tools/bench/process-cpu.ts": "80173bfbc3be333fd03a433c80a27aaf9372e2611eeb5e6080389cf6747cb0ec",
16    "tests/prepared-simulation.test.ts": "70633bd5151c002236323613a1ce5eccc591465e809c4965328f7cb558fbcbcd",
17    "tests/simulation-behavior.test.ts": "65768169d3b80c95fdcf9cdafae40d0aa745a3cf1cffe301acf5d7bc7c806d42",
18    "tests/room-capacity-bot.test.ts": "c333c854b232b434432f22f9cf90a55497cf2116a66712f179a901e861c96ea8",
19    "tests/process-cpu.test.ts": "7467a46fd65e339749bb6ab17e13032e6f4e10fc98e46b8b8063cbb0630fb8d5",
20    "tests/browser/room-routing.spec.ts": "9830af95278c41d008fc779a588c7777429f351f9cf23f92048b3f8f652c39c4",
21    "tests/browser/persistent.spec.ts": "0523ffc4d90da127df5fdde2995d0e2ac69c1829301511183448c61ac71fd57f",
22    "tests/browser/persistent-lifecycle.spec.ts": "547dcf75401b1ffb0ba4912fa0d91bae7a97a890afe9e38f49240ac144acb5ef"
23  },
24  "databaseSchema": 5,
25  "newDatabaseMigration": false,
26  "roomRssBudgetMiB": 512,
27  "typeAndImports": {
28    "command": "npm run check",
29    "result": "passed; 127 package source files"
30  },
31  "headless": {
32    "command": "npm test",
33    "tests": 700,
34    "pass": 644,
35    "fail": 0,
36    "skipped": 56,
37    "log": "room-capacity-headless.tap"
38  },
39  "control": {
40    "command": "npm run test:control",
41    "tests": 62,
42    "pass": 62,
43    "fail": 0,
44    "skipped": 0,
45    "log": "room-capacity-control.tap"
46  },
47  "baseline": {
48    "result": "inconclusive-or-overloaded",
49    "engine": "0c215a3379f1796e00eb90ade0c997e402a07708c8af14d51692a1b7ce67ce6d",
50    "phases": [
51      {
52        "target": 1,
53        "admitted": 1,
54        "occupancy": [
55          {
56            "room": "route:capacity:hearth:1",
57            "players": 1
58          }
59        ],
60        "elapsedSeconds": 20.000902027999995,
61        "peakRoomRssMiB": 477.3046875,
62        "worstRecentTickP95Ms": 4,
63        "minimumAckHz": 29.998647019021345,
64        "worstAckP95Ms": 219.82,
65        "gatewayAndRoomsCpuSeconds": {
66          "seconds": 2.95,
67          "complete": true
68        },
69        "databaseCpuSeconds": {
70          "seconds": 0.07,
71          "complete": true
72        },
73        "databaseDelta": {
74          "transactions": 41,
75          "rollbacks": 0,
76          "inserted": 10,
77          "updated": 31,
78          "walBytes": 15413,
79          "durableReceipts": 5
80        },
81        "sentPayloadBytes": 91737,
82        "receivedPayloadBytes": 212115
83      },
84      {
85        "target": 2,
86        "admitted": 2,
87        "occupancy": [
88          {
89            "room": "route:capacity:hearth:1",
90            "players": 2
91          }
92        ],
93        "elapsedSeconds": 20.002822224999996,
94        "peakRoomRssMiB": 502.421875,
95        "worstRecentTickP95Ms": 7.46,
96        "minimumAckHz": 29.995767259787268,
97        "worstAckP95Ms": 295.06,
98        "gatewayAndRoomsCpuSeconds": {
99          "seconds": 4.14,
100          "complete": true
101        },
102        "databaseCpuSeconds": {
103          "seconds": 0.15,
104          "complete": true
105        },
106        "databaseDelta": {
107          "transactions": 67,
108          "rollbacks": 0,
109          "inserted": 46,
110          "updated": 109,
111          "walBytes": 264602,
112          "durableReceipts": 10
113        },
114        "sentPayloadBytes": 184360,
115        "receivedPayloadBytes": 500721
116      },
117      {
118        "target": 4,
119        "admitted": 4,
120        "occupancy": [
121          {
122            "room": "route:capacity:hearth:1",
123            "players": 3
124          },
125          {
126            "room": "route:capacity:hearth:2",
127            "players": 1
128          }
129        ],
130        "elapsedSeconds": 20.00912116699999,
131        "peakRoomRssMiB": 518.4765625,
132        "worstRecentTickP95Ms": 8.86,
133        "minimumAckHz": 30.036301693809435,
134        "worstAckP95Ms": 293.32,
135        "gatewayAndRoomsCpuSeconds": {
136          "seconds": 7.63,
137          "complete": true
138        },
139        "databaseCpuSeconds": {
140          "seconds": 0.25,
141          "complete": true
142        },
143        "databaseDelta": {
144          "transactions": 105,
145          "rollbacks": 0,
146          "inserted": 40,
147          "updated": 80,
148          "walBytes": 55517,
149          "durableReceipts": 20
150        },
151        "sentPayloadBytes": 368789,
152        "receivedPayloadBytes": 1075518
153      },
154      {
155        "target": 8,
156        "admitted": 8,
157        "occupancy": [
158          {
159            "room": "route:capacity:hearth:1",
160            "players": 3
161          },
162          {
163            "room": "route:capacity:hearth:2",
164            "players": 5
165          }
166        ],
167        "elapsedSeconds": 20.004278335999988,
168        "peakRoomRssMiB": 515.8046875,
169        "worstRecentTickP95Ms": 13.49,
170        "minimumAckHz": 29.993583868518332,
171        "worstAckP95Ms": 296.1,
172        "gatewayAndRoomsCpuSeconds": {
173          "seconds": 10.72,
174          "complete": true
175        },
176        "databaseCpuSeconds": {
177          "seconds": 0.45,
178          "complete": true
179        },
180        "databaseDelta": {
181          "transactions": 165,
182          "rollbacks": 0,
183          "inserted": 80,
184          "updated": 120,
185          "walBytes": 124449,
186          "durableReceipts": 40
187        },
188        "sentPayloadBytes": 736747,
189        "receivedPayloadBytes": 2684910
190      },
191      {
192        "target": 16,
193        "admitted": 11,
194        "occupancy": [
195          {
196            "room": "route:capacity:hearth:1",
197            "players": 3
198          },
199          {
200            "room": "route:capacity:hearth:2",
201            "players": 8
202          }
203        ],
204        "elapsedSeconds": 20.002293326000014,
205        "peakRoomRssMiB": 519.3046875,
206        "worstRecentTickP95Ms": 14.51,
207        "minimumAckHz": 29.996560405405564,
208        "worstAckP95Ms": 295.68,
209        "gatewayAndRoomsCpuSeconds": {
210          "seconds": 12.62,
211          "complete": true
212        },
213        "databaseCpuSeconds": {
214          "seconds": 0.57,
215          "complete": true
216        },
217        "databaseDelta": {
218          "transactions": 223,
219          "rollbacks": 0,
220          "inserted": 128,
221          "updated": 173,
222          "walBytes": 199606,
223          "durableReceipts": 55
224        },
225        "sentPayloadBytes": 1014081,
226        "receivedPayloadBytes": 4669237
227      },
228      {
229        "target": 11,
230        "admitted": 11,
231        "occupancy": [
232          {
233            "room": "route:capacity:hearth:1",
234            "players": 3
235          },
236          {
237            "room": "route:capacity:hearth:2",
238            "players": 8
239          }
240        ],
241        "elapsedSeconds": 20.003157261000016,
242        "peakRoomRssMiB": 526.77734375,
243        "worstRecentTickP95Ms": 14.7,
244        "minimumAckHz": 29.995264856004248,
245        "worstAckP95Ms": 225.62,
246        "gatewayAndRoomsCpuSeconds": {
247          "seconds": 11.17,
248          "complete": true
249        },
250        "databaseCpuSeconds": {
251          "seconds": 0.51,
252          "complete": true
253        },
254        "databaseDelta": {
255          "transactions": 210,
256          "rollbacks": 0,
257          "inserted": 110,
258          "updated": 150,
259          "walBytes": 143474,
260          "durableReceipts": 55
261        },
262        "sentPayloadBytes": 1008700,
263        "receivedPayloadBytes": 4652583
264      }
265    ],
266    "reconnectStorm": {
267      "players": 11,
268      "milliseconds": 1507.618524999998,
269      "failed": [],
270      "sameIdentities": true,
271      "sameInventory": true
272    },
273    "extraArrival": {
274      "status": 503,
275      "atPlayers": 11
276    },
277    "shutdown": {
278      "code": 0,
279      "signal": null
280    }
281  },
282  "final": {
283    "result": "measured-target",
284    "engine": "f179f3de893f26a6ace0ce2f07ec6ac8e10b4e1ef5467a6d3a10b2f77c290c8c",
285    "phases": [
286      {
287        "target": 1,
288        "admitted": 1,
289        "occupancy": [
290          {
291            "room": "route:capacity:hearth:1",
292            "players": 1
293          }
294        ],
295        "elapsedSeconds": 20.006507578,
296        "peakRoomRssMiB": 389.12890625,
297        "worstRecentTickP95Ms": 4,
298        "minimumAckHz": 30.040225544456593,
299        "worstAckP95Ms": 226.06,
300        "gatewayAndRoomsCpuSeconds": {
301          "seconds": 3.1,
302          "complete": true
303        },
304        "databaseCpuSeconds": {
305          "seconds": 0.08,
306          "complete": true
307        },
308        "databaseDelta": {
309          "transactions": 39,
310          "rollbacks": 0,
311          "inserted": 10,
312          "updated": 29,
313          "walBytes": 15094,
314          "durableReceipts": 5
315        },
316        "sentPayloadBytes": 91739,
317        "receivedPayloadBytes": 212319
318      },
319      {
320        "target": 2,
321        "admitted": 2,
322        "occupancy": [
323          {
324            "room": "route:capacity:hearth:1",
325            "players": 2
326          }
327        ],
328        "elapsedSeconds": 20.002077824999994,
329        "peakRoomRssMiB": 389.73046875,
330        "worstRecentTickP95Ms": 7.92,
331        "minimumAckHz": 30.04687839224524,
332        "worstAckP95Ms": 293.2,
333        "gatewayAndRoomsCpuSeconds": {
334          "seconds": 4.14,
335          "complete": true
336        },
337        "databaseCpuSeconds": {
338          "seconds": 0.14,
339          "complete": true
340        },
341        "databaseDelta": {
342          "transactions": 68,
343          "rollbacks": 0,
344          "inserted": 46,
345          "updated": 110,
346          "walBytes": 264874,
347          "durableReceipts": 10
348        },
349        "sentPayloadBytes": 184355,
350        "receivedPayloadBytes": 500128
351      },
352      {
353        "target": 4,
354        "admitted": 4,
355        "occupancy": [
356          {
357            "room": "route:capacity:hearth:1",
358            "players": 4
359          }
360        ],
361        "elapsedSeconds": 20.002145285999998,
362        "peakRoomRssMiB": 412.64453125,
363        "worstRecentTickP95Ms": 11.4,
364        "minimumAckHz": 29.996782416131886,
365        "worstAckP95Ms": 303.46,
366        "gatewayAndRoomsCpuSeconds": {
367          "seconds": 6.79,
368          "complete": true
369        },
370        "databaseCpuSeconds": {
371          "seconds": 0.25,
372          "complete": true
373        },
374        "databaseDelta": {
375          "transactions": 83,
376          "rollbacks": 0,
377          "inserted": 38,
378          "updated": 57,
379          "walBytes": 50315,
380          "durableReceipts": 20
381        },
382        "sentPayloadBytes": 368202,
383        "receivedPayloadBytes": 1300551
384      },
385      {
386        "target": 8,
387        "admitted": 8,
388        "occupancy": [
389          {
390            "room": "route:capacity:hearth:1",
391            "players": 8
392          }
393        ],
394        "elapsedSeconds": 20.001838925999998,
395        "peakRoomRssMiB": 462.56640625,
396        "worstRecentTickP95Ms": 13.42,
397        "minimumAckHz": 29.997241864600348,
398        "worstAckP95Ms": 305.64,
399        "gatewayAndRoomsCpuSeconds": {
400          "seconds": 7.83,
401          "complete": true
402        },
403        "databaseCpuSeconds": {
404          "seconds": 0.43,
405          "complete": true
406        },
407        "databaseDelta": {
408          "transactions": 138,
409          "rollbacks": 0,
410          "inserted": 76,
411          "updated": 95,
412          "walBytes": 117169,
413          "durableReceipts": 40
414        },
415        "sentPayloadBytes": 737875,
416        "receivedPayloadBytes": 3826305
417      },
418      {
419        "target": 16,
420        "admitted": 16,
421        "occupancy": [
422          {
423            "room": "route:capacity:hearth:1",
424            "players": 8
425          },
426          {
427            "room": "route:capacity:hearth:2",
428            "players": 8
429          }
430        ],
431        "elapsedSeconds": 20.002331507000026,
432        "peakRoomRssMiB": 473.02734375,
433        "worstRecentTickP95Ms": 12.21,
434        "minimumAckHz": 29.996503147146807,
435        "worstAckP95Ms": 314.43,
436        "gatewayAndRoomsCpuSeconds": {
437          "seconds": 15.25,
438          "complete": true
439        },
440        "databaseCpuSeconds": {
441          "seconds": 0.8,
442          "complete": true
443        },
444        "databaseDelta": {
445          "transactions": 293,
446          "rollbacks": 0,
447          "inserted": 164,
448          "updated": 205,
449          "walBytes": 211688,
450          "durableReceipts": 80
451        },
452        "sentPayloadBytes": 1474814,
453        "receivedPayloadBytes": 7648508
454      },
455      {
456        "target": 16,
457        "admitted": 16,
458        "occupancy": [
459          {
460            "room": "route:capacity:hearth:1",
461            "players": 8
462          },
463          {
464            "room": "route:capacity:hearth:2",
465            "players": 8
466          }
467        ],
468        "elapsedSeconds": 20.002023362000006,
469        "peakRoomRssMiB": 487.15625,
470        "worstRecentTickP95Ms": 13.68,
471        "minimumAckHz": 29.996965264018463,
472        "worstAckP95Ms": 250,
473        "gatewayAndRoomsCpuSeconds": {
474          "seconds": 13.88,
475          "complete": true
476        },
477        "databaseCpuSeconds": {
478          "seconds": 0.73,
479          "complete": true
480        },
481        "databaseDelta": {
482          "transactions": 298,
483          "rollbacks": 0,
484          "inserted": 176,
485          "updated": 221,
486          "walBytes": 249200,
487          "durableReceipts": 80
488        },
489        "sentPayloadBytes": 1467200,
490        "receivedPayloadBytes": 7602063
491      }
492    ],
493    "reconnectStorm": {
494      "players": 16,
495      "milliseconds": 1028.093531999999,
496      "failed": [],
497      "sameIdentities": true,
498      "sameInventory": true
499    },
500    "extraArrival": {
501      "status": 409,
502      "atPlayers": 16
503    },
504    "shutdown": {
505      "code": 0,
506      "signal": null
507    }
508  },
509  "regionalBrowser": {
510    "statistics": {
511      "startTime": "2026-10-25T16:53:09.761Z",
512      "duration": 64185.824,
513      "expected": 1,
514      "skipped": 0,
515      "unexpected": 0,
516      "flaky": 0
517    },
518    "scenarios": [
519      {
520        "title": "a polished doorway places friends together, opens a second room and recovers routed travelers",
521        "status": "passed",
522        "durationMs": 62585,
523        "errors": [],
524        "attachments": [
525          {
526            "name": "regional-health.json",
527            "data": {
528              "version": 1,
529              "capturedAt": "2026-10-25T16:53:32.698Z",
530              "ready": true,
531              "region": "test-west",
532              "activeRooms": 2,
533              "maxActiveRooms": 2,
534              "rooms": [
535                {
536                  "room": "route:test-west:hearth:1",
537                  "engine": "25506cbfb6c45e7cdca1b1101a3cae62ac0aa6f1b71e3d87a268a3bd2da2259a",
538                  "release": "4ea2693f7232f7c99b4a94a813270f6ac13c1741d244e5425691b502e9b70508",
539                  "state": "ready",
540                  "epoch": "1",
541                  "leaseRemainingMs": 4748,
542                  "players": 2,
543                  "playerCap": 2,
544                  "acceptingNew": true,
545                  "metrics": {
546                    "version": 1,
547                    "windowSeconds": 60,
548                    "recent": {
549                      "windowSeconds": 10,
550                      "eventLoop": {
551                        "count": 48,
552                        "mean": 0.57,
553                        "max": 5.45,
554                        "p95": 4
555                      },
556                      "tick": {
557                        "count": 289,
558                        "mean": 5.57,
559                        "max": 16.17,
560                        "p95": 16
561                      },
562                      "storage": {
563                        "count": 14,
564                        "mean": 19.29,
565                        "max": 75.51,
566                        "p95": 75.51
567                      }
568                    },
569                    "admission": {
570                      "accepting": true,
571                      "reasons": [],
572                      "windowSeconds": 10
573                    },
574                    "eventLoopMs": {
575                      "count": 99,
576                      "mean": 3.08,
577                      "max": 135.4,
578                      "p95": 8
579                    },
580                    "tickMs": {
581                      "count": 564,
582                      "mean": 4.77,
583                      "max": 18.97,
584                      "p95": 16
585                    },
586                    "droppedSimulationSeconds": 0.087,
587                    "queue": {
588                      "pending": 0,
589                      "oldestWorkMs": 0,
590                      "waitMs": {
591                        "count": 14,
592                        "mean": 0.04,
593                        "max": 0.14,
594                        "p95": 0.14
595                      },
596                      "inputQueued": 9
597                    },
598                    "storage": {
599                      "transactionMs": {
600                        "count": 48,
601                        "mean": 17.74,
602                        "max": 106.54,
603                        "p95": 100
604                      },
605                      "commitMs": {
606                        "count": 48,
607                        "mean": 0.31,
608                        "max": 4.85,
609                        "p95": 2
610                      },
611                      "failures": 0
612                    },
613                    "connections": {
614                      "players": 2,
615                      "joinsLastMinute": 2,
616                      "reconnectsLastMinute": 0
617                    },
618                    "memory": {
619                      "rssBytes": 312598528,
620                      "heapUsedBytes": 93242984,
621                      "externalBytes": 12386589,
622                      "arrayBufferBytes": 7337411,
623                      "rssLimitBytes": 536870912
624                    }
625                  }
626                },
627                {
628                  "room": "route:test-west:hearth:2",
629                  "engine": "25506cbfb6c45e7cdca1b1101a3cae62ac0aa6f1b71e3d87a268a3bd2da2259a",
630                  "release": "4ea2693f7232f7c99b4a94a813270f6ac13c1741d244e5425691b502e9b70508",
631                  "state": "ready",
632                  "epoch": "1",
633                  "leaseRemainingMs": 4925,
634                  "players": 1,
635                  "playerCap": 2,
636                  "acceptingNew": false,
637                  "metrics": {
638                    "version": 1,
639                    "windowSeconds": 60,
640                    "recent": {
641                      "windowSeconds": 10,
642                      "eventLoop": {
643                        "count": 46,
644                        "mean": 6.43,
645                        "max": 269.45,
646                        "p95": 4
647                      },
648                      "tick": {
649                        "count": 277,
650                        "mean": 3.62,
651                        "max": 12.08,
652                        "p95": 8
653                      },
654                      "storage": {
655                        "count": 16,
656                        "mean": 20.94,
657                        "max": 70.29,
658                        "p95": 70.29
659                      }
660                    },
661                    "admission": {
662                      "accepting": false,
663                      "reasons": [
664                        "event-loop"
665                      ],
666                      "windowSeconds": 10
667                    },
668                    "eventLoopMs": {
669                      "count": 59,
670                      "mean": 5.69,
671                      "max": 269.45,
672                      "p95": 8
673                    },
674                    "tickMs": {
675                      "count": 277,
676                      "mean": 3.62,
677                      "max": 12.08,
678                      "p95": 8
679                    },
680                    "droppedSimulationSeconds": 0.278,
681                    "queue": {
682                      "pending": 0,
683                      "oldestWorkMs": 0,
684                      "waitMs": {
685                        "count": 6,
686                        "mean": 0.05,
687                        "max": 0.09,
688                        "p95": 0.09
689                      },
690                      "inputQueued": 1
691                    },
692                    "storage": {
693                      "transactionMs": {
694                        "count": 29,
695                        "mean": 20.3,
696                        "max": 70.29,
697                        "p95": 70.29
698                      },
699                      "commitMs": {
700                        "count": 29,
701                        "mean": 0.41,
702                        "max": 2.44,
703                        "p95": 2
704                      },
705                      "failures": 0
706                    },
707                    "connections": {
708                      "players": 1,
709                      "joinsLastMinute": 1,
710                      "reconnectsLastMinute": 0
711                    },
712                    "memory": {
713                      "rssBytes": 299855872,
714                      "heapUsedBytes": 76402304,
715                      "externalBytes": 10806598,
716                      "arrayBufferBytes": 5822956,
717                      "rssLimitBytes": 536870912
718                    }
719                  }
720                }
721              ]
722            }
723          },
724          {
725            "name": "regional-journey.json",
726            "data": {
727              "roomA": "route:test-west:hearth:1",
728              "roomB": "route:test-west:hearth:2",
729              "players": 3,
730              "capacity": 2,
731              "sharedRoom": true,
732              "isolatedInventory": true,
733              "isolatedStall": true,
734              "routerRestart": true,
735              "keptPages": 2,
736              "returnCredential": true,
737              "addedRoundTripLatencyMs": 150,
738              "errors": []
739            }
740          }
741        ]
742      }
743    ]
744  },
745  "cooperativeBrowser": {
746    "statistics": {
747      "startTime": "2026-10-25T16:54:29.546Z",
748      "duration": 39543.94,
749      "expected": 1,
750      "skipped": 0,
751      "unexpected": 0,
752      "flaky": 0
753    },
754    "scenarios": [
755      {
756        "title": "two travelers recover from graceful restart, lease failure and a stopped runtime without reloading",
757        "status": "passed",
758        "durationMs": 37902,
759        "errors": [],
760        "attachments": [
761          {
762            "name": "lifecycle-journey.json",
763            "data": {
764              "profile": "cooperative",
765              "reconnectMs": 2210.4791459999997,
766              "stallExitMs": 6949.156109000003,
767              "actor": "20292fdc-9d6b-4746-9d83-67c4aded240f",
768              "companion": "e0096ee5-5fa6-44a4-83ae-48c00617ad02",
769              "keptPage": true,
770              "keptPages": 2,
771              "gracefulExit": 0,
772              "failedExit": 1,
773              "stalledExit": 1,
774              "addedRoundTripLatencyMs": 150,
775              "errors": [],
776              "history": [
777                {
778                  "time": 1081.199999988079,
779                  "status": "connecting",
780                  "draining": false,
781                  "epoch": "0"
782                },
783                {
784                  "time": 1260.5,
785                  "status": "connected",
786                  "draining": false,
787                  "epoch": "1"
788                },
789                {
790                  "time": 9761.399999976158,
791                  "status": "reconnecting",
792                  "draining": true,
793                  "epoch": "1"
794                },
795                {
796                  "time": 12522.599999964237,
797                  "status": "connected",
798                  "draining": false,
799                  "epoch": "2"
800                },
801                {
802                  "time": 16817.599999964237,
803                  "status": "reconnecting",
804                  "draining": false,
805                  "epoch": "2"
806                },
807                {
808                  "time": 18729,
809                  "status": "connected",
810                  "draining": false,
811                  "epoch": "3"
812                },
813                {
814                  "time": 25216.69999998808,
815                  "status": "reconnecting",
816                  "draining": false,
817                  "epoch": "3"
818                },
819                {
820                  "time": 27743.099999964237,
821                  "status": "connected",
822                  "draining": false,
823                  "epoch": "4"
824                }
825              ]
826            }
827          }
828        ]
829      }
830    ]
831  },
832  "trustedBrowser": {
833    "statistics": {
834      "startTime": "2026-10-25T16:55:23.343Z",
835      "duration": 99786.355,
836      "expected": 1,
837      "skipped": 0,
838      "unexpected": 0,
839      "flaky": 0
840    },
841    "scenarios": [
842      {
843        "title": "persistent players share objects and restore committed travel without local position saves",
844        "status": "passed",
845        "durationMs": 98118,
846        "errors": [],
847        "attachments": [
848          {
849            "name": "persistent-garden-report.json",
850            "data": {
851              "engine": "0.1.0",
852              "world": "darkwind",
853              "release": "lantern-house.storage.1",
854              "playtest": null,
855              "pinnedEngine": null,
856              "development": null,
857              "time": "2026-10-25T16:56:15.099Z",
858              "browser": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
859              "webgpu": true,
860              "quality": "high",
861              "startupStages": {
862                "started": 406,
863                "admission": 890.5999999642372,
864                "graphics": 4072.099999964237,
865                "simulation": 2339.5,
866                "presentation": 4073,
867                "room": 2863.399999976158,
868                "ready": 4780.599999964237,
869                "failed": null
870              },
871              "graphicsLifecycle": [
872                {
873                  "stage": "probe",
874                  "generation": 0,
875                  "at": 890.2999999523163
876                },
877                {
878                  "stage": "device",
879                  "generation": 1,
880                  "at": 1793.199999988079
881                },
882                {
883                  "stage": "adapter-request",
884                  "generation": 1,
885                  "at": 1793.3999999761581
886                },
887                {
888                  "stage": "device-request",
889                  "generation": 1,
890                  "at": 1794.1000000238419
891                },
892                {
893                  "stage": "resources",
894                  "generation": 1,
895                  "at": 1795.8999999761581
896                },
897                {
898                  "stage": "shader-modules",
899                  "generation": 1,
900                  "at": 1808.300000011921
901                },
902                {
903                  "stage": "shader-validation",
904                  "generation": 1,
905                  "at": 1808.800000011921
906                },
907                {
908                  "stage": "shader-pipelines",
909                  "generation": 1,
910                  "at": 2085
911                },
912                {
913                  "stage": "shader-identity",
914                  "generation": 1,
915                  "at": 2434
916                },
917                {
918                  "stage": "initial-upload",
919                  "generation": 1,
920                  "at": 2435.600000023842
921                },
922                {
923                  "stage": "catalog",
924                  "generation": 1,
925                  "at": 2440.5
926                },
927                {
928                  "stage": "model-prepare",
929                  "generation": 1,
930                  "at": 2440.899999976158
931                },
932                {
933                  "stage": "model-allocate",
934                  "generation": 1,
935                  "at": 3286.399999976158
936                },
937                {
938                  "stage": "model-upload",
939                  "generation": 1,
940                  "at": 3375.699999988079
941                },
942                {
943                  "stage": "model-install",
944                  "generation": 1,
945                  "at": 3377.199999988079
946                },
947                {
948                  "stage": "actors",
949                  "generation": 1,
950                  "at": 3379.699999988079
951                },
952                {
953                  "stage": "ready",
954                  "generation": 1,
955                  "at": 4069.399999976158
956                }
957              ],
958              "renderPlacement": "worker",
959              "viewport": [
960                960,
961                640,
962                1
963              ],
964              "place": "garden",
965              "tick": "67",
966              "position": [
967                -8.882930160325486e-06,
968                0.7850872278213501,
969                5.999992370605469
970              ],
971              "frameInterval": {
972                "p50": 216.59999999999945,
973                "p95": 516.5999999999995
974              },
975              "tickMs": 0.8999999761581421,
976              "renderObservedAtMs": 7200.899999976158,
977              "render": {
978                "instances": 578,
979                "triangles": 91980,
980                "visibleInstances": 367,
981                "shadowInstances": 578,
982                "visibleTriangles": 61044,
983                "shadowTriangles": 91980,
984                "drawCalls": 9,
985                "buffers": 53,
986                "textures": 4,
987                "targetBytes": 24150016,
988                "targetGeneration": 1,
989                "width": 960,
990                "height": 640,
991                "frameMs": 3.900000035762787,
992                "submittedFrames": 6,
993                "completedFrames": 5,
994                "failedFrames": 0,
995                "cancelledFrames": 0,
996                "pendingFrames": 1,
997                "skippedFrames": 157,
998                "completionWaitMs": 508.30000001192093,
999                "maxCompletionWaitMs": 546.7999999523163,
1000                "lastSubmittedAtMs": 6710.5,
1001                "lastCompletedAtMs": 6694.199999988079
1002              },
1003              "actors": {
1004                "states": {},
1005                "rigged": 0,
1006                "walking": 0,
1007                "airborne": 0,
1008                "stalled": 0,
1009                "samples": 0,
1010                "matrices": 0
1011              },
1012              "audio": {
1013                "context": "inactive",
1014                "enabled": false,
1015                "paused": false,
1016                "levels": {
1017                  "master": 0.65,
1018                  "music": 0.7,
1019                  "ambience": 0.6,
1020                  "dialogue": 1,
1021                  "effects": 0.7
1022                }
1023              },
1024              "controller": {
1025                "connected": false,
1026                "active": false
1027              },
1028              "presentationTransport": {
1029                "route": "direct",
1030                "received": 1,
1031                "returned": 1,
1032                "capacity": 4194304
1033              },
1034              "renderGraph": {
1035                "plan": {
1036                  "textures": [
1037                    {
1038                      "name": "depth",
1039                      "format": "depth24plus",
1040                      "extent": {
1041                        "kind": "viewport"
1042                      },
1043                      "external": false,
1044                      "sampled": false,
1045                      "attachment": true,
1046                      "firstUse": 1,
1047                      "lastUse": 1,
1048                      "writer": "scene"
1049                    },
1050                    {
1051                      "name": "hdr",
1052                      "format": "rgba16float",
1053                      "extent": {
1054                        "kind": "viewport"
1055                      },
1056                      "external": false,
1057                      "sampled": true,
1058                      "attachment": true,
1059                      "firstUse": 1,
1060                      "lastUse": 2,
1061                      "writer": "scene"
1062                    },
1063                    {
1064                      "name": "output",
1065                      "format": "bgra8unorm",
1066                      "extent": {
1067                        "kind": "viewport"
1068                      },
1069                      "external": true,
1070                      "sampled": false,
1071                      "attachment": true,
1072                      "firstUse": 2,
1073                      "lastUse": 2,
1074                      "writer": "post"
1075                    },
1076                    {
1077                      "name": "shadow",
1078                      "format": "depth32float",
1079                      "extent": {
1080                        "kind": "fixed",
1081                        "width": 2048,
1082                        "height": 2048
1083                      },
1084                      "external": false,
1085                      "sampled": true,
1086                      "attachment": true,
1087                      "firstUse": 0,
1088                      "lastUse": 1,
1089                      "writer": "shadow"
1090                    }
1091                  ],
1092                  "passes": [
1093                    {
1094                      "name": "shadow",
1095                      "after": [],
1096                      "reads": [],
1097                      "colors": [],
1098                      "depth": {
1099                        "resource": "shadow",
1100                        "load": "clear",
1101                        "store": "store"
1102                      }
1103                    },
1104                    {
1105                      "name": "scene",
1106                      "after": [],
1107                      "reads": [
1108                        "shadow"
1109                      ],
1110                      "colors": [
1111                        {
1112                          "resource": "hdr",
1113                          "load": "clear",
1114                          "store": "store"
1115                        }
1116                      ],
1117                      "depth": {
1118                        "resource": "depth",
1119                        "load": "clear",
1120                        "store": "discard"
1121                      }
1122                    },
1123                    {
1124                      "name": "post",
1125                      "after": [],
1126                      "reads": [
1127                        "hdr"
1128                      ],
1129                      "colors": [
1130                        {
1131                          "resource": "output",
1132                          "load": "clear",
1133                          "store": "store"
1134                        }
1135                      ]
1136                    }
1137                  ]
1138                },
1139                "census": {
1140                  "generation": 1,
1141                  "textures": 3,
1142                  "estimatedBytes": 24150016,
1143                  "width": 960,
1144                  "height": 640
1145                }
1146              },
1147              "shaders": {
1148                "requestedRevision": "1",
1149                "activeRevision": "1",
1150                "hash": "039684b97282110739cbee452249807ac2ff2e2cbcefe32a87cf2da1454a8297",
1151                "compilingRevision": null,
1152                "pendingRevision": null,
1153                "retainedSourceBytes": 0,
1154                "disposed": false,
1155                "last": {
1156                  "revision": "1",
1157                  "status": "applied",
1158                  "diagnostics": []
1159                }
1160              },
1161              "graphicsRecovery": {
1162                "status": "idle",
1163                "attempts": 0,
1164                "limit": 2,
1165                "timeoutMs": 20000,
1166                "inFlight": false
1167              },
1168              "graphicsIncidents": [],
1169              "simulationWatchdog": {
1170                "status": "healthy",
1171                "probes": 5,
1172                "acknowledged": 5,
1173                "graceResets": 0
1174              },
1175              "simulationRecovery": {
1176                "status": "idle",
1177                "attempts": 0,
1178                "limit": 2,
1179                "timeoutMs": 45000,
1180                "inFlight": false
1181              },
1182              "simulationCheckpoint": {
1183                "available": true,
1184                "tick": "51",
1185                "received": 7159.799999952316,
1186                "captureMs": 97.89999997615814,
1187                "pending": false,
1188                "issue": ""
1189              },
1190              "canonicalEntities": 1500,
1191              "modelResidency": {
1192                "hash": "c27f3b6d1093484b36e2263b8f7deffdc9fb50d8583f122cb4dba0d9fb77c6f9",
1193                "buffers": 47,
1194                "bytes": 1981492,
1195                "textures": 1,
1196                "update": {
1197                  "status": "ready",
1198                  "attempts": 1,
1199                  "limit": 1,
1200                  "timeoutMs": 20000,
1201                  "inFlight": false
1202                }
1203              },
1204              "save": "postgresql",
1205              "room": {
1206                "status": "connected",
1207                "players": 2,
1208                "peerRows": 1,
1209                "interest": {
1210                  "place": "garden",
1211                  "sequence": "28",
1212                  "total": 2
1213                },
1214                "epoch": "1",
1215                "revision": "26",
1216                "durableRelease": "01983259a283bb144e74c092ab300031e06dfb8d08fe6b46dab343d1fa637180",
1217                "playerRevision": "14"
1218              },
1219              "knownLimits": [
1220                "Trusted static-world preview",
1221                "Single room process",
1222                "Original traveler rig; environment uses procedural geometry",
1223                "Desktop WebGPU only"
1224              ]
1225            }
1226          },
1227          {
1228            "name": "persistent-journey.json",
1229            "data": {
1230              "transport": {
1231                "sent": 60,
1232                "received": 121,
1233                "minSendDelayMs": 75,
1234                "minReceiveDelayMs": 75,
1235                "droppedCaptures": 0,
1236                "closes": []
1237              },
1238              "privateKeepsakes": 1,
1239              "privateTrafficVerified": true,
1240              "gardenTravelMs": 4104.724003000003,
1241              "addedRoundTripLatencyMs": 150,
1242              "actor": "8140b025-646b-4ae0-a02c-0bf5cb0dc1ab",
1243              "place": "sanctuary",
1244              "revision": "21",
1245              "inventory": [
1246                "keeper-lantern"
1247              ],
1248              "otherTraveler": "ec4f57d1-a6de-40ce-8815-b7f289788297",
1249              "errors": []
1250            }
1251          }
1252        ]
1253      }
1254    ]
1255  },
1256  "cancellation": {
1257    "command": "SIGTERM isolated benchmark after first room ready",
1258    "exitCode": 1,
1259    "directoryRemoved": true,
1260    "liveOwnedProcessesAfterExit": [],
1261    "partialResult": "failed",
1262    "gatewayShutdown": {
1263      "code": 0,
1264      "signal": null
1265    },
1266    "partialError": "Error: Benchmark cancelled\n    at process.<anonymous> (/home/jason/coding/dw-web/tools/bench/room-capacity.ts:16:124)\n    at process.emit (node:events:519:28)"
1267  },
1268  "investigation": [
1269    {
1270      "record": "room-capacity-baseline.json",
1271      "finding": "Before prepared sharing, only eleven travelers admitted (3 + 8); sampled first-room RSS exceeded unchanged 512 MiB policy. Movement and reconnect checks passed; overall capacity criteria did not."
1272    },
1273    {
1274      "record": "room-capacity-first-prepared.json",
1275      "finding": "Prepared sharing reached eight travelers in each room within movement and health budgets. Eleven reconnects failed because the bot sent heartbeat before admission; unlike the real client. A held-baseline socket test reproduced the incorrect heartbeat and passed after gating on baseline. No host limits or deadlines changed."
1276    },
1277    {
1278      "record": "room-capacity-cpu-gap.json",
1279      "finding": "Corrected bots preserved all sixteen identities/inventories and refused overflow. A short-lived PostgreSQL child left incomplete CPU coverage at the four-traveler stage. Accounting now includes reaped descendant CPU; real child/grandchild process tests verify retention and missing/replaced root rejection."
1280    }
1281  ],
1282  "limits": [
1283    "Local 20-second stages after 12-second warmup; not long-soak stability or a universal production player limit.",
1284    "Protocol movement and autosaves with one pickup per room; no dense rendered crowd, cross-place travel load or adversarial traffic qualification.",
1285    "Payload byte counts exclude WebSocket/TLS framing, HTTP assets and operator requests.",
1286    "Linux CPU samples are bounded process-tree observations, not atomic kernel snapshots; database counters include observation overhead and can lag.",
1287    "No Docker/Coolify execution, remote CI, physical device matrix or cloud cost qualification.",
1288    "No numbered roadmap milestone closed. Character and shared-arrival camera polish remains deferred."
1289  ]
1290}
1291