scoped-invariants-acceptance.json
docs/evidence/scoped-invariants-acceptance.json
1{
2 "format": 1,
3 "source": {
4 "revision": "70f7f024204910aca230ac206c814ed6309df9b3",
5 "dirty": false,
6 "builtAt": "2026-10-24T20:51:06.925Z"
7 },
8 "engine": "0.1.0",
9 "environment": {
10 "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
11 "secureContext": true,
12 "hardwareConcurrency": 16,
13 "devicePixelRatio": 1
14 },
15 "headless": {
16 "command": "npm test",
17 "tests": 119,
18 "passed": 119,
19 "failed": 0,
20 "log": "scoped-invariants-headless.tap"
21 },
22 "browser": {
23 "command": "CI=1 PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell npm run test:browser",
24 "stats": {
25 "startTime": "2026-10-24T20:51:06.481Z",
26 "duration": 130992.35,
27 "expected": 21,
28 "skipped": 0,
29 "unexpected": 0,
30 "flaky": 0
31 },
32 "tests": [
33 {
34 "name": "two real browsers share doors and chat, then the guest takes over when the host leaves",
35 "ok": true,
36 "results": [
37 {
38 "status": "passed",
39 "durationMs": 6791
40 }
41 ]
42 },
43 {
44 "name": "simultaneous real-browser pickups grant one lantern, including across host handoff",
45 "ok": true,
46 "results": [
47 {
48 "status": "passed",
49 "durationMs": 34219
50 }
51 ]
52 },
53 {
54 "name": "travelers see each other move in the rendered world",
55 "ok": true,
56 "results": [
57 {
58 "status": "passed",
59 "durationMs": 7539
60 }
61 ]
62 },
63 {
64 "name": "new checkpoints save without animation frames",
65 "ok": true,
66 "results": [
67 {
68 "status": "passed",
69 "durationMs": 3747
70 }
71 ]
72 },
73 {
74 "name": "restored checkpoints save without animation frames",
75 "ok": true,
76 "results": [
77 {
78 "status": "passed",
79 "durationMs": 3113
80 }
81 ]
82 },
83 {
84 "name": "front lawn supports leaving the porch and walking back up",
85 "ok": true,
86 "results": [
87 {
88 "status": "passed",
89 "durationMs": 7823
90 }
91 ]
92 },
93 {
94 "name": "renders, walks, pauses, releases input, and restores the local checkpoint",
95 "ok": true,
96 "results": [
97 {
98 "status": "passed",
99 "durationMs": 9842
100 }
101 ]
102 },
103 {
104 "name": "keeper dialogue pauses movement and updates the journal",
105 "ok": true,
106 "results": [
107 {
108 "status": "passed",
109 "durationMs": 3170
110 }
111 ]
112 },
113 {
114 "name": "place travel, pickup conditions, beacon state, and render resources remain coherent",
115 "ok": true,
116 "results": [
117 {
118 "status": "passed",
119 "durationMs": 8339
120 }
121 ]
122 },
123 {
124 "name": "unsupported GPU and malformed saves fail safely",
125 "ok": true,
126 "results": [
127 {
128 "status": "passed",
129 "durationMs": 2060
130 }
131 ]
132 },
133 {
134 "name": "legacy saves are preserved while exact uint64 saves advance and reload from the new key",
135 "ok": true,
136 "results": [
137 {
138 "status": "passed",
139 "durationMs": 6991
140 }
141 ]
142 },
143 {
144 "name": "owned renderer works on the main thread and survives worker resize, device loss and restart",
145 "ok": true,
146 "results": [
147 {
148 "status": "passed",
149 "durationMs": 8919
150 }
151 ]
152 },
153 {
154 "name": "probe reports unsupported graphics without joining a room",
155 "ok": true,
156 "results": [
157 {
158 "status": "passed",
159 "durationMs": 187
160 }
161 ]
162 },
163 {
164 "name": "cancelling a worker probe releases ownership and permits another run",
165 "ok": true,
166 "results": [
167 {
168 "status": "passed",
169 "durationMs": 3595
170 }
171 ]
172 },
173 {
174 "name": "gesture probe confirms pointer release and closes the silent audio context",
175 "ok": true,
176 "results": [
177 {
178 "status": "passed",
179 "durationMs": 230
180 }
181 ]
182 },
183 {
184 "name": "worker exceptions produce a bounded failure and the next run can recover",
185 "ok": true,
186 "results": [
187 {
188 "status": "passed",
189 "durationMs": 5014
190 }
191 ]
192 },
193 {
194 "name": "a silent worker hits its deadline and releases ownership",
195 "ok": true,
196 "results": [
197 {
198 "status": "passed",
199 "durationMs": 634
200 }
201 ]
202 },
203 {
204 "name": "contract worker failures release ownership and can be retried",
205 "ok": true,
206 "results": [
207 {
208 "status": "passed",
209 "durationMs": 7035
210 }
211 ]
212 },
213 {
214 "name": "unavailable workers are reported as unsupported after main-thread rendering",
215 "ok": true,
216 "results": [
217 {
218 "status": "passed",
219 "durationMs": 573
220 }
221 ]
222 },
223 {
224 "name": "replay worker failure and cancellation release ownership and allow recovery",
225 "ok": true,
226 "results": [
227 {
228 "status": "passed",
229 "durationMs": 7014
230 }
231 ]
232 },
233 {
234 "name": "a silent simulation replay worker reaches its deadline and releases ownership",
235 "ok": true,
236 "results": [
237 {
238 "status": "passed",
239 "durationMs": 2126
240 }
241 ]
242 }
243 ]
244 },
245 "scope": "Scoped candidate-view validation, atomic callback/restore failure, 600 mixed edits/restores against the original full-snapshot oracle, descendant and ancestor composed bounds, and the complete existing multiplayer and worker replay journey. Software WebGPU. World fingerprints remain unchanged. No live authored-world migration or entire milestone completion claim."
246}
247