graphics-recovery-acceptance.json
docs/evidence/graphics-recovery-acceptance.json
1{
2 "format": 1,
3 "recordedAt": "2026-10-24T22:30:37.897361+00:00",
4 "source": {
5 "revision": "e5de328f137febe0343c002f4083b6e5884541db",
6 "dirty": false
7 },
8 "headless": {
9 "command": "npm test",
10 "tests": 178,
11 "pass": 178,
12 "fail": 0,
13 "skipped": 0,
14 "log": "graphics-recovery-headless.tap"
15 },
16 "browser": {
17 "command": "CI=1 PLAYWRIGHT_EXECUTABLE_PATH=/tmp/dw-browser-test/chrome-linux/headless_shell npm run test:browser",
18 "pass": 26,
19 "fail": 0,
20 "skipped": 0,
21 "flaky": 0,
22 "report": "graphics-recovery-browser-tests.json",
23 "capabilities": "graphics-recovery-capabilities.json"
24 },
25 "environment": {
26 "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/141.0.7390.37 Safari/537.36",
27 "secureContext": true,
28 "hardwareConcurrency": 16,
29 "devicePixelRatio": 1
30 },
31 "recoveryBudget": {
32 "attemptsPerSession": 2,
33 "deadlineMs": 20000,
34 "nativeOperationsInFlight": 1
35 },
36 "coverage": [
37 "Headless ownership transfer only after successful preparation",
38 "Overlapping allocation and session limit rejection",
39 "Creation/preparation deadlines, abort, late candidate disposal and teardown fences",
40 "Actual WebGPU device destruction while playing and paused",
41 "Fresh baseline and completed rendered frame before offering resume",
42 "Pixel-visible authored world after two replacements",
43 "Held movement released; existing character braking stays within expected stopping distance",
44 "Third loss fails without allocating a fourth device",
45 "Replacement-device rejection keeps the paused save",
46 "Original simulation worker and one room admission across replacement",
47 "Second client changes shared door during restoration; original client sees change and can change it again after resume",
48 "Self identity, host, authority epoch and peers preserved",
49 "All prior shader activation, visibility reference, ECS, prefab and gameplay checks"
50 ],
51 "captures": [
52 "graphics-recovery-wait.png",
53 "graphics-recovery-ready.png",
54 "graphics-recovery-shared.png"
55 ],
56 "preliminaryRuns": [
57 {
58 "result": "1 passed, 2 failed in the initial three-case browser run",
59 "findings": [
60 "A new save could still be absent when the test paused before its first simulation tick; seed a nonzero existing checkpoint for save-preservation assertions.",
61 "Exact resumed position incorrectly excluded existing motor inertia; verify released input and the bounded stopping distance from its 24 m/s\u00b2 deceleration."
62 ],
63 "followup": "All three targeted scenarios passed, followed by the complete clean-source suite."
64 }
65 ],
66 "limits": [
67 "Software WebGPU, not a physical driver crash or full device support matrix",
68 "Main-thread event-loop stalls can delay deadline delivery",
69 "Native adapter/device acquisition cannot be cancelled; late results are fenced and disposed",
70 "Current procedural assets and default engine shaders are rebuilt; imported assets and authored shader sources need a retained catalog",
71 "No automatic simulation-worker recovery or complete milestone claim"
72 ],
73 "ci": {
74 "source": "e5de328f137febe0343c002f4083b6e5884541db",
75 "status": "queued",
76 "url": "https://github.com/jasona/darkwind-web/actions/runs/40138869891"
77 }
78}
79