REPOSITORY SOURCE

browser-editor-acceptance.json

docs/evidence/browser-editor-acceptance.json

1{
2  "sourceBase": "6afe84cb1b4119c24d23f2ac61b4a06e6c4d59c0",
3  "sourceSha256": {
4    "apps/editor/main.ts": "d56df21f94e736d0541e6f06ceebac3313925688552e04d750bb0d9089348f83",
5    "apps/editor/scene.ts": "9a1551ea1d9d94c973de5a33311eab072598b77bf1487027593894bef691ab28",
6    "apps/editor/style.css": "c0ebbf708015967cceee5989dcae98e44e27ec11e3567a94cdfbc209c52a257c",
7    "services/authoring/store.ts": "2a3a9794d44a079bff9ed36ac3c952ecd6a1a17c08daa1273b615065406fb024",
8    "services/authoring/http.ts": "987fa630288d2d3fb5cc387955250313b9152ca0b1639ae3b2d8c6d6bb64bf41",
9    "services/relay/config.ts": "c0ca901b681b8534f7e7887efc6a84d1e38848ad196c1ebd9901b4b7f0f7ba42",
10    "services/relay/server.ts": "ce78f93fce329d599d24ff4b23cf0771272ad31527ade8da64b05af919e64233",
11    "tools/cli/editor.mjs": "55d034e259c20d94057186992c27bfb21c8c9b00f2730a9425712c17ec60b611",
12    "tools/cli/dev.mjs": "6861a8374ec05891f1bb52a50dbf40fc35f7f7523e13e68562bde1bd52426073",
13    "editor.html": "51e883ab08a150973422ec266baa3ae0b785a4fd8ca26f1019dfa89bc4f7ee07",
14    "vite.config.ts": "74da20eddb6d73a33a712d7d3cf1c57b31c0e211c25c399af6b45c3671d50619",
15    "package.json": "45f11661106346e19b50fa52957365b19b552d72d1b33dba7b5213ce4f7df6f1",
16    "compose.yaml": "b086936e7e0dc788fb105ede8ae0bd53144767080f3365319d6a0200f95f42c8",
17    "compose.coolify.yaml": "325f0582d406dd2f7b9783d40481bd7ffeb9bbb6c755913dacb97744abd2f35e",
18    "compose.ferry.yaml": "5823435b198a906db7a5278bb481181e7c964874040ff600df12b9e4c407fb29",
19    "tests/editor.test.ts": "ac0284c41a9c6f0de1b1a8f6ce335fb0e987df18feb3807c8e7625c0c3c3684f",
20    "tests/browser/editor.spec.ts": "f23daa38aaf6411a68c9f88ad2102dd4376def2e6d3ef65682302e0d844eb560"
21  },
22  "headless": {
23    "passed": 389,
24    "failed": 0
25  },
26  "browser": {
27    "stats": {
28      "startTime": "2026-10-25T05:57:55.437Z",
29      "duration": 12773.329000000002,
30      "expected": 2,
31      "skipped": 0,
32      "unexpected": 0,
33      "flaky": 0
34    },
35    "cases": [
36      {
37        "title": "browser editor previews, saves, undoes and exports durable transforms without changing identity",
38        "status": "expected",
39        "results": [
40          "passed"
41        ]
42      },
43      {
44        "title": "two editors reject a stale save and preserve the unsaved local transform",
45        "status": "expected",
46        "results": [
47          "passed"
48        ]
49      }
50    ],
51    "physicalGpu": "not claimed; Chromium SwiftShader acceptance"
52  },
53  "checks": {
54    "typescript": "passed",
55    "importBoundaries": 82,
56    "serverBuild": "passed in /tmp/dw-editor-server",
57    "productionClientBuild": "passed in isolated browser server",
58    "coolifyCompose": "passed",
59    "ferryCompose": "passed",
60    "livePreview": "5181 client and 8791 relay healthy; separate .data/editor-ferry.1"
61  },
62  "corrections": [
63    "Empty model catalog is explicitly provided to the renderer.",
64    "Gameplay light overrides are stripped from strict presentation envelopes, now covered by a full-world regression.",
65    "Numeric inputs accept arbitrary finite decimal transforms. Only edited coordinates are written, preserving untouched precision.",
66    "Gameplay-linked transform constraints remain enforced. Browser acceptance checks rejection before editing an independent plinth.",
67    "Port 8789 was occupied by an unrelated service. The editor uses verified-free port 8791, and the dev launcher now preserves a child failure exit code."
68  ],
69  "visualReview": "Inspected the actual 1440 x 900 editor capture: object selection, unsaved transform, outline and complete inspector visible. Browser acceptance also verifies the canvas image changes.",
70  "limits": [
71    "Draft saves do not publish or activate content in a running room.",
72    "Single-process durable draft with a shared creator key; accounts, audit identities, collaborative presence and property-level merge remain open.",
73    "Undo/redo history is session-local; idempotency receipts and durable history remain open.",
74    "Initial transform inspector, searchable/paged list and primitive bounds picking. Creation/deletion/grouping, interaction anchors, prefab/route controls and drag gizmos remain open.",
75    "No main merge, Coolify deployment or physical device acceptance."
76  ]
77}
78