REPOSITORY SOURCE

place-interest-acceptance.json

docs/evidence/place-interest-acceptance.json

1{
2  "capability": "Place-scoped multiplayer presence with cross-place authority context",
3  "approximate_full_plan_percent": 60,
4  "headless": {
5    "passed": 592,
6    "failed": 0,
7    "evidence": "place-interest-headless.tap",
8    "command": "node --import tsx --test --test-concurrency=4 tests/*.test.ts",
9    "scope": "Full suite before final off-scope-host count invariant; final packet suite passed all 7 tests after that adjustment."
10  },
11  "checks": [
12    "TypeScript and package boundaries: 120 source files",
13    "Real socket cross-place door blocking with an elected host elsewhere, then successful close after blocker leaves",
14    "Mixed legacy/scoped protocol-4 clients; legacy server fallback exercised by existing client fixtures",
15    "Full replacement snapshot gaps allowed, duplicate/regressive snapshots and within-connection capability changes rejected",
16    "Repeated subscription removal/recreation across 80 cycles with bounded ECS allocation and stale handle rejection",
17    "Wire capture: gateway travel retains connection and motion stream; forced reconnect retains identity with a new stream"
18  ],
19  "browser": {
20    "interest": {
21      "stats": {
22        "startTime": "2026-10-25T12:06:05.866Z",
23        "duration": 24322.866,
24        "expected": 1,
25        "skipped": 0,
26        "unexpected": 0,
27        "flaky": 0
28      },
29      "cases": [
30        {
31          "title": "place subscriptions follow real gateways, survive live apply and reconnect, and retain global chat and authority",
32          "status": "expected",
33          "results": [
34            {
35              "status": "passed",
36              "duration": 21240
37            }
38          ]
39        }
40      ]
41    },
42    "places_regression": {
43      "stats": {
44        "startTime": "2026-10-25T12:06:54.741Z",
45        "duration": 41145.075000000004,
46        "expected": 1,
47        "skipped": 0,
48        "unexpected": 0,
49        "flaky": 0
50      },
51      "cases": [
52        {
53          "title": "two travelers explore a live-added place, occupied removal is rejected, and undo restores the round trip",
54          "status": "expected",
55          "results": [
56            {
57              "status": "passed",
58              "duration": 38107
59            }
60          ]
61        }
62      ]
63    },
64    "environment": "Separate isolated production relays, CI=1, Chromium/SwiftShader, serial after full headless suite",
65    "wire": "place-interest-wire.json",
66    "screenshot": "place-interest-separated.png",
67    "verified": [
68      "Two-player separation and reunion with full room count and local peer count",
69      "Room-wide chat while separated",
70      "Live named-arrival revision while separated",
71      "Repeated real gateway crossings without extra sockets or retained departed actors",
72      "Forced reconnect restores same identity and current-place view",
73      "Host departure leaves the remaining traveler connected as elected authority",
74      "Connected place creation, occupied removal rejection, deletion and durable undo regression"
75    ],
76    "multiplayer_regression": {
77      "stats": {
78        "startTime": "2026-10-25T12:07:40.434Z",
79        "duration": 29236.784,
80        "expected": 2,
81        "skipped": 0,
82        "unexpected": 0,
83        "flaky": 0
84      },
85      "cases": [
86        {
87          "title": "two real browsers share doors and chat, then the guest takes over when the host leaves",
88          "status": "expected",
89          "results": [
90            {
91              "status": "passed",
92              "duration": 13812
93            }
94          ]
95        },
96        {
97          "title": "travelers see each other move in the rendered world",
98          "status": "expected",
99          "results": [
100            {
101              "status": "passed",
102              "duration": 12287
103            }
104          ]
105        }
106      ]
107    }
108  },
109  "measurement": {
110    "fixture": "Three travelers split across two places; serialized presence envelope for the traveler alone",
111    "full_room_bytes": 754,
112    "scoped_bytes": 320,
113    "room_peers": 3,
114    "received_peers": 1,
115    "limit": "One fixture payload comparison; not throughput, latency or large-room capacity."
116  },
117  "initial_failures": [
118    {
119      "case": "Distant-host doorway fixture",
120      "cause": "The interacting actor was initially outside the authored reach. Corrected fixture z from -3.2 to -4.6, with blocker at -5.7. Final focused 23 tests and full suite passed; production reach unchanged."
121    }
122  ],
123  "limits": [
124    "Eight-player cap unchanged",
125    "Peer presence only; world assets remain preloaded",
126    "No privacy boundary or server-authoritative movement",
127    "Shared gameplay, chat and route clocks remain room-wide",
128    "No adjacent-place subscriptions, authority islands or cross-host travel",
129    "No numbered roadmap milestone closed; final character art deferred"
130  ],
131  "remote_ci": "Independent place-interest job configured; remote outcome not asserted by local acceptance.",
132  "local_editor": {
133    "port": 5181,
134    "saved_revision": "0",
135    "saved_sha256": "f076388ad340c7b1e1aa84e72368aa6a9d3a3f6546187a2fed1d0fba66c36977",
136    "idle_before_refresh": true,
137    "unchanged_after_refresh": true,
138    "new_diagnostics_served": true
139  }
140}
141