editor-startup-acceptance.json
docs/evidence/editor-startup-acceptance.json
1{
2 "date": "2026-10-25",
3 "baselineCommit": "db79b49",
4 "scope": "Overlap authenticated editor document admission/compilation with serialized GPU startup; add explicitly selected physical-GPU browser qualification.",
5 "sourceSha256": {
6 "apps/editor/main.ts": "fdcddead954588b1dc691763fe574f42995d5eef635db7d496bef3911e5da690",
7 "playwright.config.ts": "1b21efa6240e9d9dcdf7cbc22a7694cf7111437b01b5b7ec2e7987017d46af90",
8 "tools/cli/qualify-gpu.ts": "13d716ac1b76aea30a2c0dbd9db7ef39255bd6a0f260aa4f06e02f725921a36d",
9 "tests/browser/editor-startup.spec.ts": "b164788483bd7b0c71f31e3ca70657dabd376a3c767381dfe574be94c4bea2b5",
10 "tests/browser/editor-restoration.spec.ts": "4edcac71654f0a45300c6c038415443cb2ccf16d49ac40dfd21d999af790e121"
11 },
12 "softwareTiming": {
13 "beforeObservedReadyMs": 8777.800000011921,
14 "afterObservedReadyMs": 6532.5,
15 "afterDiagnosticJourneyMs": 56800,
16 "samplesPerSource": 1,
17 "fixture": "Same diagnostic restoration copy from renderer-startup-diagnostic.spec.ts; 30s readiness / 120s overall diagnostic limits. The accepted editor startup source was then strengthened with stale/lifecycle UI fences; timing is from the preceding overlapped implementation.",
18 "limits": "Observed readiness includes polling; adapter/GPU scheduling varies. This is not a performance guarantee or a passed five-second software reload gate.",
19 "raw": "editor-startup-overlap-timing.json"
20 },
21 "hardware": {
22 "capturedAt": "2026-10-26T04:28:36.109Z",
23 "adapter": {
24 "vendor": "intel",
25 "architecture": "xe-3lpg",
26 "device": "",
27 "description": "",
28 "isFallbackAdapter": false,
29 "features": [
30 "bgra8unorm-storage",
31 "chromium-experimental-multi-draw-indirect",
32 "chromium-experimental-snorm16-texture-formats",
33 "chromium-experimental-subgroup-matrix",
34 "chromium-experimental-timestamp-query-inside-passes",
35 "chromium-experimental-unorm16-texture-formats",
36 "clip-distances",
37 "core-features-and-limits",
38 "depth-clip-control",
39 "depth32float-stencil8",
40 "dual-source-blending",
41 "float32-blendable",
42 "float32-filterable",
43 "indirect-first-instance",
44 "primitive-index",
45 "rg11b10ufloat-renderable",
46 "shader-f16",
47 "subgroups",
48 "texture-component-swizzle",
49 "texture-compression-bc",
50 "texture-compression-bc-sliced-3d",
51 "texture-compression-etc2",
52 "timestamp-query"
53 ],
54 "maxTextureDimension2D": 8192,
55 "maxBufferSize": 268435456,
56 "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36"
57 },
58 "os": {
59 "platform": "linux",
60 "release": "7.2.8-9-omarchy",
61 "arch": "x64"
62 },
63 "cpu": "Intel(R) Core(TM) Ultra X7 358H",
64 "node": "v22.23.4",
65 "browser": "141.0.7390.37",
66 "launchArgs": [
67 "--enable-unsafe-webgpu",
68 "--use-angle=vulkan",
69 "--enable-features=Vulkan"
70 ],
71 "inventory": {
72 "gpu": "Intel Corporation Panther Lake [Arc B390] [8086:b080], rev 04",
73 "kernelDriver": "xe",
74 "mesa": "1:26.2.5-1",
75 "vulkanIntel": "1:26.2.5-1",
76 "runningKernel": "7.2.8-9-omarchy"
77 },
78 "tests": [
79 {
80 "file": "day-cycle.spec.ts",
81 "title": "main shared-time daylight loops, restores, lights portals and recovers exactly",
82 "status": "passed",
83 "durationMs": 1551
84 },
85 {
86 "file": "day-cycle.spec.ts",
87 "title": "worker shared-time daylight loops, restores, lights portals and recovers exactly",
88 "status": "passed",
89 "durationMs": 932
90 },
91 {
92 "file": "editor-restoration.spec.ts",
93 "title": "archived invitations stay shared while restoring an older world previews, saves and undoes a new draft",
94 "status": "passed",
95 "durationMs": 19855
96 },
97 {
98 "file": "editor-startup.spec.ts",
99 "title": "authenticated graphics prepare during document validation but cannot publish an unchecked scene",
100 "status": "passed",
101 "durationMs": 746
102 },
103 {
104 "file": "editor-startup.spec.ts",
105 "title": "invalid document cancels its late device and a newer load waits for that allocation to drain",
106 "status": "passed",
107 "durationMs": 785
108 },
109 {
110 "file": "editor-startup.spec.ts",
111 "title": "page closure during graphics preparation disposes the late result without publishing",
112 "status": "passed",
113 "durationMs": 610
114 },
115 {
116 "file": "editor.spec.ts",
117 "title": "browser editor previews, saves, undoes and exports durable transforms without changing identity",
118 "status": "passed",
119 "durationMs": 4835
120 },
121 {
122 "file": "editor.spec.ts",
123 "title": "two editors reject a stale save and preserve the unsaved local transform",
124 "status": "passed",
125 "durationMs": 3726
126 },
127 {
128 "file": "editor.spec.ts",
129 "title": "atelier creates and duplicates solid shapes, stages deletion and restores exact identities through undo and reload",
130 "status": "passed",
131 "durationMs": 8708
132 },
133 {
134 "file": "renderer-initialization.spec.ts",
135 "title": "failed renderer startup drains sibling builds before releasing the device, then retries",
136 "status": "passed",
137 "durationMs": 2743
138 },
139 {
140 "file": "weather.spec.ts",
141 "title": "main shared weather animates, occludes, respects quality and recovers exactly",
142 "status": "passed",
143 "durationMs": 1047
144 },
145 {
146 "file": "weather.spec.ts",
147 "title": "worker shared weather animates, occludes, respects quality and recovers exactly",
148 "status": "passed",
149 "durationMs": 1142
150 }
151 ],
152 "softwareFallbackRejectionVerified": true
153 },
154 "software": {
155 "tests": [
156 {
157 "file": "editor-restoration.spec.ts",
158 "title": "archived invitations stay shared while restoring an older world previews, saves and undoes a new draft",
159 "status": "failed",
160 "durationMs": 46879
161 },
162 {
163 "file": "editor-startup.spec.ts",
164 "title": "authenticated graphics prepare during document validation but cannot publish an unchecked scene",
165 "status": "passed",
166 "durationMs": 1840
167 },
168 {
169 "file": "editor-startup.spec.ts",
170 "title": "invalid document cancels its late device and a newer load waits for that allocation to drain",
171 "status": "passed",
172 "durationMs": 2082
173 },
174 {
175 "file": "editor-startup.spec.ts",
176 "title": "page closure during graphics preparation disposes the late result without publishing",
177 "status": "passed",
178 "durationMs": 968
179 },
180 {
181 "file": "editor.spec.ts",
182 "title": "browser editor previews, saves, undoes and exports durable transforms without changing identity",
183 "status": "passed",
184 "durationMs": 11643
185 },
186 {
187 "file": "editor.spec.ts",
188 "title": "two editors reject a stale save and preserve the unsaved local transform",
189 "status": "passed",
190 "durationMs": 10590
191 },
192 {
193 "file": "editor.spec.ts",
194 "title": "atelier creates and duplicates solid shapes, stages deletion and restores exact identities through undo and reload",
195 "status": "passed",
196 "durationMs": 18694
197 }
198 ],
199 "unchangedGate": "editor-restoration.spec.ts:17 still fails its 5000ms readiness expectation; six other scenarios pass."
200 },
201 "build": {
202 "status": "passed",
203 "packageBoundaryFiles": 181,
204 "engine": "1732892fa3272b3ccadf313104bde3f93e91119ddc210724312462afbe7ec9e5"
205 },
206 "limits": [
207 "Short headless Chromium/Vulkan functional checks on one physical workstation; no long-session, FPS/battery, other-GPU or mobile qualification.",
208 "Software-WebGPU restoration reload timing remains open; no deadline was increased in acceptance.",
209 "No numbered full-plan milestone closed; final character/environment/arrival art remains required."
210 ],
211 "progressApproximatePercent": 80
212}
213