REPOSITORY SOURCE

editor-groups-acceptance.json

docs/evidence/editor-groups-acceptance.json

1{
2  "date": "2026-10-25",
3  "capability": "Persistent authored groups and hierarchy",
4  "full_plan_percent_estimate": 46,
5  "numbered_milestones_closed": [],
6  "source_branch": "codex/engine-foundations",
7  "base_commit": "281b633",
8  "world_format": 5,
9  "compiler": "hierarchy-world.5",
10  "checks": {
11    "headless": {
12      "command": "npm test",
13      "tests": 468,
14      "passed": 468,
15      "exit_code": 0,
16      "log_sha256": "1b7d7fd813e7b5c8c8c2a69cd1ceb4560917923f011367db563bfbca44a1c136"
17    },
18    "type_and_import_boundaries": {
19      "command": "npm run check",
20      "source_files": 92,
21      "exit_code": 0
22    },
23    "server_build": {
24      "command": "npx vite build --ssr services/relay/main.ts --outDir /tmp/dw-groups-server-build",
25      "exit_code": 0
26    },
27    "browser_production_build": "The isolated Playwright server built the client from source; production artifacts in the workspace were preserved."
28  },
29  "browser_runs": [
30    {
31      "files": [
32        "editor-groups.spec.ts",
33        "editor-selection.spec.ts"
34      ],
35      "passed": 5,
36      "failed": 1,
37      "exit_code": 1,
38      "finding": "A fresh world with more than 512 authored rows installed children before groups in a later ECS batch. The player rejected a missing parent. Fixed authoredRows to install parent-first groups before object rows; added a large-world startup/checkpoint regression."
39    },
40    {
41      "files": [
42        "development-room.spec.ts",
43        "editor-groups.spec.ts",
44        "editor-undo.spec.ts"
45      ],
46      "passed": 9,
47      "failed": 0,
48      "exit_code": 0,
49      "duration_ms": 176132
50    }
51  ],
52  "distinct_passing_browser_scenarios": 13,
53  "covered": [
54    "Group/reparent/ungroup preserve world matrices and persistent identities",
55    "Nested hierarchy survives document and browser reload",
56    "Durable inverse restores omitted fields, exact array order, initial world format and selection",
57    "Cycle, missing/cross-kind parent and shear rejection is atomic",
58    "Parent-frame reads conflict with writes but not independent reads or material edits",
59    "Primitive collision, ECS matrices, editor geometry and checkpoint agree after a group revision",
60    "Fresh large-world startup installs groups before children across 512-row transaction chunks",
61    "Two connected travelers accept a group revision and retain peer identity and position",
62    "Existing multi-selection, durable undo and main/worker shared-revision regression scenarios"
63  ],
64  "other_corrected_findings": [
65    "An initial new test referenced a nonexistent second place in engineZoo; corrected the missing/non-group-parent case.",
66    "Initial parent dependency keys falsely conflicted with independent object properties. Added read dependencies, read/write conflict semantics and preserved pre-hierarchy receipt shapes. Full regression tests pass."
67  ],
68  "local_preview": {
69    "url": "http://localhost:5181/editor.html",
70    "refreshed": true,
71    "saved_revision": "0",
72    "saved_format": 4,
73    "saved_sha256_before_and_after": "f076388ad340c7b1e1aa84e72368aa6a9d3a3f6546187a2fed1d0fba66c36977",
74    "players_before_and_after": 0,
75    "production_or_coolify_deployed": false
76  },
77  "visuals": [
78    "editor-persistent-groups.png",
79    "groups-shared-applied.png"
80  ],
81  "limits": [
82    "256 groups per place, 128 parent levels, 64 selected roots, 256 commands per transaction",
83    "Unrepresentable child shear rejects rather than approximating geometry",
84    "Gameplay-driven objects require future parent-relative behavior bindings",
85    "Group cloning/deletion, speculative group presence and marquee selection remain open",
86    "Full roadmap milestones 0\u201318 and final character-art pass remain in scope"
87  ]
88}
89