REPOSITORY SOURCE

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