REPOSITORY SOURCE

room-ingress-acceptance.json

docs/evidence/room-ingress-acceptance.json

1{
2  "sourceBase": "ada53d27bfdb94f8155a81d22cea11a23cacaaf6",
3  "sourceFilesSha256": {
4    "packages/net/client.ts": "1df809254e2122a87f08247c2574ebe34424075348146ac1f0f0b0088f53e182",
5    "packages/net/protocol.ts": "a3126bee8813b25b5a22e071f58315bbaa369282f50b053ac91c815313f60ea5",
6    "packages/net/packets.ts": "2cf49eb7fd4c9241d4ed72a68834b1e388b68d597cac56281a830517605d0aac",
7    "tests/net-packets.test.ts": "24ba2827cac7f8c7650b0e30eb63024dead93e8209c2a54e8dd40397b1e0fbe2"
8  },
9  "scope": "Validate complete server-to-browser room envelopes before mutation; reject identity/epoch/revision regressions and fence closing/retired socket callbacks. Document current JSON protocol 2.",
10  "priorSourceReproduction": {
11    "source": "ada53d2",
12    "method": "prior RoomClient.receive authority path with an admitted fixture",
13    "malformedDoorPublished": "open",
14    "epoch": "4",
15    "observations": 1
16  },
17  "checks": {
18    "headless": {
19      "tests": 344,
20      "passed": 344,
21      "failed": 0,
22      "durationMs": 14445.95575
23    },
24    "typecheck": true,
25    "sourceBoundaries": 75
26  },
27  "browser": {
28    "stats": {
29      "startTime": "2026-10-25T04:15:28.647Z",
30      "duration": 76314.41500000001,
31      "expected": 3,
32      "skipped": 0,
33      "unexpected": 0,
34      "flaky": 0
35    },
36    "tests": [
37      {
38        "title": "two real browsers share doors and chat, then the guest takes over when the host leaves",
39        "results": [
40          {
41            "status": "passed",
42            "durationMs": 14021
43          }
44        ]
45      },
46      {
47        "title": "simultaneous real-browser pickups grant one lantern, including across host handoff",
48        "results": [
49          {
50            "status": "passed",
51            "durationMs": 42907
52          }
53        ]
54      },
55      {
56        "title": "graphics recovery keeps the shared room and receives door changes during restoration",
57        "results": [
58          {
59            "status": "passed",
60            "durationMs": 17254
61          }
62        ]
63      }
64    ],
65    "source": "Final source, after unavailable/empty-action compatibility correction.",
66    "command": "CI=1 PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell npm run test:browser -- tests/browser/multiplayer.spec.ts --grep \"two real browsers share doors|simultaneous real-browser pickups|graphics recovery keeps the shared room\""
67  },
68  "regressions": [
69    "Owned round trips for every relay envelope variant, including coordinator item returns and denial receipts.",
70    "Malformed identity, peer, authority, action, shared snapshot, chat and receipt cases reject.",
71    "Five real-socket malformed/regressive snapshots close with 1002 and preserve accepted state; already queued successor packets cannot revive a closing connection.",
72    "Old authority is ignored; a valid newer authority and commit still apply.",
73    "An unavailable empty action gets a normal reducer denial without disconnecting the host."
74  ],
75  "testCorrections": [
76    "Initial focused run passed 9/11: assertions needed to allow the existing Duplicate room peer error and begin snapshot observation after the connecting phase. No production relaxation was needed for those assertion corrections.",
77    "Review found the relay permits empty/unknown action strings; the reader now preserves that wire compatibility and a real-socket regression proves safe rejection by the reducer."
78  ],
79  "limits": [
80    "This is schema/lifecycle validation, not a trusted authority implementation or proof of honest elected-browser rules.",
81    "Physical-device performance, broad shaped-network recovery, shared platforms and generated/binary protocol work remain open.",
82    "The preceding ada53d2 CI passes seven of eight multiplayer scenarios and still fails the shared graphics-recovery deadline; see startup-failure-capture-ci-multiplayer.json."
83  ],
84  "fullPlanEstimatePercent": 35
85}
86