two-cpu-multiplayer-investigation.json
docs/evidence/two-cpu-multiplayer-investigation.json
1{
2 "baseSource": "21110c2bb689e3cff00025aaaa7687e8f5f2ecc7",
3 "testSource": "Original runtime probe and multiplayer cases loaded at collection; resource-count correction only. Later instrumentation changes were not loaded into this running test worker.",
4 "command": "CI=1 PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell taskset -c 0,1 npm run test:browser -- tests/browser/multiplayer.spec.ts --grep \"rigged travelers walk|travelers keep walking|graphics recovery\"",
5 "environment": "Local workstation, process affinity CPUs 0 and 1 inherited by the test runner, fresh relay and Chromium software WebGPU; not equivalent to GitHub runner hardware.",
6 "stats": {
7 "startTime": "2026-10-25T02:36:15.105Z",
8 "duration": 141205.745,
9 "expected": 2,
10 "skipped": 0,
11 "unexpected": 1,
12 "flaky": 0
13 },
14 "cases": [
15 {
16 "name": "rigged travelers walk, settle when pose delivery stalls, and resume without leaking actors",
17 "status": "passed",
18 "durationMs": 48075,
19 "error": ""
20 },
21 {
22 "name": "travelers keep walking with slow GPU completion and settle when real movement stops",
23 "status": "passed",
24 "durationMs": 36211,
25 "error": ""
26 },
27 {
28 "name": "graphics recovery keeps the shared room and receives door changes during restoration",
29 "status": "failed",
30 "durationMs": 52160,
31 "error": "Error: expect(locator).toContainText(expected) failed\n\nLocator: locator('#save-status')\nExpected substring: \"2 travelers\"\nReceived string: \"3 travelers \u00b7 Connected\"\nTimeout: 15000ms\n\nCall log:\n - Expect \"toContainText\" with timeout 15000ms\n - waiting for locator('#save-status')\n 16 \u00d7 locator resolved to <span id=\"save-status\">3 travelers \u00b7 Connected</span>\n - unexpected value \"3 travelers \u00b7 Connected\"\n"
32 }
33 ],
34 "finding": {
35 "boundary": "Recovery scenario fails its initial two-player roster assertion, before device loss.",
36 "previousObserverId": "5f33068f-485b-4cb7-8feb-b6cf851a7d8a",
37 "priorSample": {
38 "stream": "355bf758-d846-4e9a-a409-3d6c93c78f75",
39 "sequence": "138",
40 "time": 68341.767102
41 },
42 "retainedFirst": {
43 "arrival": 23789.5,
44 "sample": {
45 "stream": "355bf758-d846-4e9a-a409-3d6c93c78f75",
46 "sequence": "456",
47 "time": 109461.051178
48 },
49 "position": [
50 -8.592294875597872e-08,
51 0.744188666343689,
52 4.800001621246338
53 ]
54 },
55 "retainedLast": {
56 "arrival": 36104.20000001788,
57 "sample": {
58 "stream": "355bf758-d846-4e9a-a409-3d6c93c78f75",
59 "sequence": "552",
60 "time": 121835.773721
61 },
62 "position": [
63 8.078491475771443e-08,
64 0.7443048357963562,
65 4.800001621246338
66 ]
67 },
68 "roster": [
69 {
70 "id": "5f33068f-485b-4cb7-8feb-b6cf851a7d8a",
71 "place": "lantern-house",
72 "position": [
73 8.078491475771443e-08,
74 0.7443048357963562,
75 4.800001621246338
76 ],
77 "yaw": -0.08000000000000002,
78 "sample": {
79 "stream": "355bf758-d846-4e9a-a409-3d6c93c78f75",
80 "sequence": "552",
81 "time": 121835.773721
82 }
83 },
84 {
85 "id": "3cceefac-f65f-41f9-8cc6-75fa946c08e0",
86 "place": "lantern-house",
87 "position": [
88 1.017440581563278e-06,
89 0.7448275685310364,
90 -4.649999618530273
91 ],
92 "yaw": -0.08000000000000002,
93 "sample": {
94 "stream": "68d8c6ac-5763-433b-8a3e-ca3dba80ead4",
95 "sequence": "244",
96 "time": 121842.647196
97 }
98 },
99 {
100 "id": "a0da7637-1dfc-490d-b13f-c91968899889",
101 "place": "lantern-house",
102 "position": [
103 0.599997878074646,
104 0.745048463344574,
105 -4.65000057220459
106 ],
107 "yaw": -0.08000000000000002,
108 "sample": {
109 "stream": "788ef4e0-f676-4eb0-beb5-2d15f61648ab",
110 "sequence": "119",
111 "time": 121794.676571
112 }
113 }
114 ],
115 "meaning": "Previous slow-render observer continues sending new pose sequence numbers after its browser context close. This is not merely an expired presence snapshot.",
116 "cause": "Unresolved; collect browser teardown and page scheduling evidence. Do not claim the original CI recovery timeout reproduced."
117 },
118 "movement": {
119 "motion-before-stall": {
120 "frameMs": 14.199999988079071,
121 "completionWaitMs": 3037.300000011921,
122 "maxCompletionWaitMs": 3037.300000011921,
123 "submittedFrames": 9,
124 "completedFrames": 8
125 },
126 "slow-render-walking": {
127 "frameMs": 13.400000005960464,
128 "completionWaitMs": 3626.2000000178814,
129 "maxCompletionWaitMs": 3626.2000000178814,
130 "submittedFrames": 8,
131 "completedFrames": 7
132 }
133 }
134}
135