live-apply-acceptance.json
docs/evidence/live-apply-acceptance.json
1{
2 "sourceBase": "858df016f1f2776d5883f338fb84bb82d3f34d41",
3 "sourceSha256": {
4 "apps/editor/main.ts": "ba4e62ee9d39a7aa9fa4b36bc8728bd6e3d2e8edce45005a3629c1bd69050c82",
5 "apps/editor/style.css": "442380181b92eae754767c56593697a9454c5eafb2d48353ea2aa63d26c848be",
6 "apps/player/development.ts": "ea7038aaee440d4eeeb421599521e900927d724434b372836d25dfb29dc2aa65",
7 "apps/player/graphics-protocol.ts": "cb429ac3889ea60c69f845830c71faa49087c19c26912792e0938e5d40330dcf",
8 "apps/player/graphics.ts": "e83fdadaf98a96152bc7d81977b0b7536ff790614d93fa23577aa9a216d610cc",
9 "apps/player/graphics.worker.ts": "91bf622dd8fad2b287291cfaf6ed9fdf8f1319e89febb83a4eefb641b7398559",
10 "apps/player/main.ts": "df974e20d4ecb19943ea9608528d4b6cd8847a9e8cc602734e83036f30c05de7",
11 "apps/player/simulation.worker.ts": "5680e02fc33a21c8aa26487e99acfb549ae28166e72959711272fe42f57e8b8e",
12 "apps/player/style.css": "7520bab32e6e355bf9beacdbef963f9b61afe6bf1de4ff32a29ccc2de51f1424",
13 "packages/net/client.ts": "e4edad1a8a5309ba27a6b4aa9e2c813893553cdb606124aa373871e9b82718bc",
14 "packages/presentation/channel.ts": "37552c800b0b48a0120fa7cd11b9b9ac2b6e1427f7f07c3a62bfe33d0be7bc0e",
15 "packages/presentation/index.ts": "606fd448223f0b8fd5af0525715053ba4d0450e26042482d727daf9237c0d907",
16 "packages/render-webgpu/index.ts": "987378974a43273f333ff7bd08bd01edce5ba41cbaf0e640933a6f82aea4e386",
17 "packages/render/presentation.ts": "ec9f8e363e8a4028c4c9beb5a11b3ecd2f9390c6339686ef686d0ba8dd8ed64d",
18 "packages/schema/index.ts": "b52e4a2ef857b80595746449a63b7225611d1b43a28d959fcf3f59e1bcfa8abe",
19 "services/relay/server.ts": "1ea0303e9e52336b79a3405a855cb0a42bdfea49a9011b28434a35a5c8244078",
20 "tests/browser/development-room.spec.ts": "9e1371d1c7bd744690ffd7451b64bea49626c0da91bfc26b06548beab8469da5",
21 "tests/development-session.test.ts": "21298b89cccb299561229c1d4e1e78a64806d91968f70d74e651a885676b4cb9",
22 "tests/net-packets.test.ts": "df2138fec14aa789566078467595d2aa99dc4b11303f9359dbd00978396909b0"
23 },
24 "headless": {
25 "fullSuite": {
26 "tests": 446,
27 "pass": 446,
28 "fail": 0,
29 "skipped": 0
30 },
31 "finalFocused": {
32 "tests": 20,
33 "pass": 20,
34 "fail": 0,
35 "skipped": 0
36 },
37 "finalFiles": [
38 "tests/net-packets.test.ts",
39 "tests/development-session.test.ts",
40 "tests/development-room.test.ts",
41 "tests/revision-coordinator.test.ts"
42 ]
43 },
44 "browser": {
45 "matrix": [
46 {
47 "title": "two travelers see an applied imported scene, retain their journey, reject unsafe collision and continue after correction",
48 "status": "expected",
49 "results": [
50 "passed"
51 ]
52 },
53 {
54 "title": "an offline traveler reloads against a newer development revision using the saved source snapshot",
55 "status": "expected",
56 "results": [
57 "passed"
58 ]
59 },
60 {
61 "title": "a lost commit announcement reconnects to the accepted revision without reloading or resetting the traveler",
62 "status": "unexpected",
63 "results": [
64 "failed"
65 ]
66 },
67 {
68 "title": "publish a saved draft and explore its collision with two travelers while later edits stay isolated",
69 "status": "expected",
70 "results": [
71 "passed"
72 ]
73 },
74 {
75 "title": "invalid and missing playtest links fail visibly without joining the base room",
76 "status": "expected",
77 "results": [
78 "passed"
79 ]
80 }
81 ],
82 "correctedWorkerFaultInjection": [
83 {
84 "title": "a lost commit announcement reconnects to the accepted revision without reloading or resetting the traveler",
85 "status": "expected",
86 "results": [
87 "passed"
88 ]
89 }
90 ],
91 "acceptance": "Five distinct browser scenarios passed across the matrix and focused recovery runs. The failed matrix case did not intercept the worker socket; the corrected injection drops a real commit announcement after server acceptance and verifies automatic recovery."
92 },
93 "validation": {
94 "typecheck": true,
95 "packageBoundaries": 87,
96 "productionClientBuild": "/tmp/dw-live-apply-client-final",
97 "productionRelayBuild": "/tmp/dw-live-apply-server-final"
98 },
99 "ordering": "The full suite and browser runs preceded the final browser-valid close-code correction. The final 20 headless tests enforce the browser close-code contract and cover every affected net/revision path; type/import checks and both isolated production builds passed afterward.",
100 "initialFindings": [
101 "Rejected proposals initially advanced the player revision label during preparation. The UI now advances only after application/recovery; the two-player rejection scenario passes.",
102 "The first failed test left an unsafe saved candidate that contaminated the offline scenario. The fixture now removes that candidate before testing migration.",
103 "Page-level WebSocket routing did not intercept the simulation worker. A worker bootstrap now injects the lost commit while preserving fetch URL resolution and using a browser-valid close code.",
104 "The fault harness exposed reserved close codes in the existing RoomClient error paths. The client now uses 4003/4004, with native-like close validation in its packet tests."
105 ],
106 "verified": [
107 "Two travelers keep identity, tick and position through an imported catalog plus collision update.",
108 "Main-thread and worker graphics both prepare and install the revision.",
109 "Unsafe player overlap rejects the room-wide proposal; a corrected saved draft can apply afterward.",
110 "A fresh presentation generation supersedes old packets, including exact generations above 2^53.",
111 "An offline lightweight save migrates from its retained source document.",
112 "A missing commit announcement triggers accepted-head recovery without a page reload or traveler reset.",
113 "Published playtests stay pinned and isolated; invalid links never join the base room."
114 ],
115 "remaining": [
116 "Broader device-loss/OOM and network-fault combinations; headless preparation rejection does not simulate a real GPU device loss.",
117 "32-snapshot archive retention/compaction around offline saves.",
118 "Cross-session durable undo, executable pinning, unrestricted gameplay/schema migrations and the remainder of roadmap milestones 0\u201318.",
119 "Character art redesign remains deferred."
120 ],
121 "localPreview": {
122 "editor": "http://localhost:5181/editor.html",
123 "updatedIdleEditor": true,
124 "savedDraftSha256": "4c9f8eed83a49d072fbf61fdfdef334698dcae8e3374ad15e73896fbbf7c1432",
125 "developmentStatus": {
126 "active": null,
127 "status": null
128 },
129 "originalBetaHealth": {
130 "ready": true,
131 "players": 0
132 },
133 "note": "Only the verified idle editor launcher was restarted. Its key and draft were retained. Existing dist/server-dist and player data were not rebuilt or migrated; browser tests used isolated temporary directories."
134 },
135 "fullPlanEstimatePercent": 44,
136 "wholeRoadmapMilestonesClosed": []
137}
138