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