place-residency-acceptance.json
docs/evidence/place-residency-acceptance.json
1{
2 "capability": "Destination readiness and per-place GPU model residency",
3 "approximate_full_plan_percent": 61,
4 "headless": {
5 "passed": 599,
6 "failed": 0,
7 "evidence": "place-residency-headless.tap",
8 "command": "node --import tsx --test --test-concurrency=4 tests/*.test.ts",
9 "scope": "Full native suite; subsequent UI startup-timer and launcher fixes verified with browser and actual launcher checks."
10 },
11 "checks": [
12 "TypeScript and import boundaries: 121 source files",
13 "Native independent travel fork preserves source checkpoint until graphics readiness",
14 "Failed upload, cancellation, commit waiting, reset and monotonically increasing presentation generations",
15 "Cancelled shared revision cannot resume after waiting for local travel",
16 "Actual repeated dev:editor launch recognizes the existing authenticated editor and exits successfully without starting a second server"
17 ],
18 "browser": {
19 "residency_worker": {
20 "stats": {
21 "startTime": "2026-10-25T12:23:26.321Z",
22 "duration": 26185.400999999998,
23 "expected": 1,
24 "skipped": 0,
25 "unexpected": 0,
26 "flaky": 0
27 },
28 "cases": [
29 {
30 "title": "place GPU residency stages real travel, preserves source on allocation failure, and recovers only the current catalog",
31 "status": "expected",
32 "results": [
33 {
34 "status": "passed",
35 "duration": 23091
36 }
37 ]
38 }
39 ]
40 },
41 "residency_main": {
42 "stats": {
43 "startTime": "2026-10-25T12:27:38.271Z",
44 "duration": 31415.39,
45 "expected": 1,
46 "skipped": 0,
47 "unexpected": 0,
48 "flaky": 0
49 },
50 "cases": [
51 {
52 "title": "place GPU residency stages real travel, preserves source on allocation failure, and recovers only the current catalog",
53 "status": "expected",
54 "results": [
55 {
56 "status": "passed",
57 "duration": 28290
58 }
59 ]
60 }
61 ]
62 },
63 "arrival_regression": {
64 "stats": {
65 "startTime": "2026-10-25T12:25:35.348Z",
66 "duration": 59139.847,
67 "expected": 1,
68 "skipped": 0,
69 "unexpected": 0,
70 "flaky": 0
71 },
72 "cases": [
73 {
74 "title": "named arrival editing controls two travelers positions and headings without moving current occupants",
75 "status": "expected",
76 "results": [
77 {
78 "status": "passed",
79 "duration": 56029
80 }
81 ]
82 }
83 ]
84 },
85 "interest_regression": {
86 "stats": {
87 "startTime": "2026-10-25T12:26:47.798Z",
88 "duration": 35717.202000000005,
89 "expected": 1,
90 "skipped": 0,
91 "unexpected": 0,
92 "flaky": 0
93 },
94 "cases": [
95 {
96 "title": "place subscriptions follow real gateways, survive live apply and reconnect, and retain global chat and authority",
97 "status": "expected",
98 "results": [
99 {
100 "status": "passed",
101 "duration": 32780
102 }
103 ]
104 }
105 ]
106 }
107 },
108 "environment": "Separate isolated production servers, Chromium/SwiftShader, serial browser runs after the headless suite",
109 "measurement": "place-residency-measurement.json",
110 "screenshots": [
111 "place-residency-preparing.png",
112 "place-residency-annex.png"
113 ],
114 "verified": [
115 "Source retained during held destination GPU upload and rejected allocation",
116 "Destination collision grounded before ongoing play",
117 "GPU device recovery retains only the current place catalog",
118 "Live world revision in the destination retains place scoping",
119 "Five gateway crossings return to exact per-place live buffer counts",
120 "Return-to-start allocation failure retains destination, retry restores entry",
121 "Reset after the initial startup deadline no longer raises a startup error"
122 ],
123 "initial_failures": [
124 {
125 "case": "Initial metrics check",
126 "cause": "The periodic metrics UI had not refreshed; poll its expected catalog size instead of immediately comparing stale text."
127 },
128 {
129 "case": "Playwright source import",
130 "cause": "Player catalog imported JSON without a Node import attribute; move pure dependency selection into packages/assets and explicitly import the test traveler JSON."
131 },
132 {
133 "case": "Reset test selector",
134 "cause": "Corrected the test selector from nonexistent #reset to actual #new-journey; failure collection now tolerates a closed page without masking the original error."
135 },
136 {
137 "case": "Late reset startup failure",
138 "cause": "A staged reset cleared ready after the initial 20-second deadline. Scope that timer to initial startup only; failed reset explicitly returns a ready source state. Browser checks retry after allocation failure."
139 },
140 {
141 "case": "Arrival round-trip regression fixture",
142 "cause": "The heading movement check could walk beyond gateway reach on slow frames. The test now walks back into reach before its round trip; gameplay reach checks unchanged."
143 },
144 {
145 "case": "Uncertain commit cleanup",
146 "cause": "Disposal now handles the rejected pending cancellation promise; the original commit failure still escalates to recovery."
147 }
148 ],
149 "limits": [
150 "GPU residency only; whole-world source catalogs, collision and CPU descriptions still loaded",
151 "Existing 32 MiB peak GPU model budget unchanged",
152 "No network streaming, prefetch, larger catalog limits or authoritative crossing transactions",
153 "No cross-host travel or durable native player-state transaction",
154 "No numbered milestone closed; final character art deferred"
155 ],
156 "remote_ci": "Separate worker/main residency jobs configured; remote result not asserted by local acceptance.",
157 "local_editor": "Existing editor on 5181 retained; no interruption of user testing. Restart its original terminal when ready to rebuild the pinned engine."
158}
159