editor-selection-acceptance.json
docs/evidence/editor-selection-acceptance.json
1{
2 "sourceBase": "03be433c0b4fe50af5b744d7dda2ba65bde66d38",
3 "sourceSha256": {
4 "apps/editor/main.ts": "6dafe37e4f9d52b22b3a43ebea79c2a06f496387cef58d9485e29dd1dc758d03",
5 "package.json": "7a062a0af885786c16a7c6b47811df573bac7f2d1868869782772b45501e9ad6",
6 "packages/authoring/selection.ts": "c195d0cd9c04ae6ff7060903ecb0e9d8e53d1b1a8a8d67f9891fa91c57952de1",
7 "tests/browser/editor-selection.spec.ts": "d9aacb2902f561950058f198a3b461b611d393ea18b794c985752e357b14bd62",
8 "tests/editor-selection.test.ts": "f2c42bc8921a10d59e25d0d869748ca4548c10cd586330ac612b4fc1d431d1f8",
9 "tools/cli/check-boundaries.ts": "0fac00164b8634d1af1b998c906440b5888e76085da3ac92ff1fe222fda220a7"
10 },
11 "headless": {
12 "fullSuite": {
13 "tests": 450,
14 "pass": 450,
15 "fail": 0,
16 "skipped": 0
17 },
18 "focused": {
19 "tests": 22,
20 "pass": 22,
21 "fail": 0,
22 "skipped": 0
23 },
24 "finalPrecision": {
25 "tests": 4,
26 "pass": 4,
27 "fail": 0,
28 "skipped": 0
29 }
30 },
31 "browser": {
32 "finalSelection": [
33 {
34 "title": "mixed primitive and imported selection transforms together with pointer cancellation and atomic save undo redo",
35 "status": "expected",
36 "results": [
37 "passed"
38 ]
39 },
40 {
41 "title": "a linked member or shearing scale rejects the entire selection and discard restores the saved scene",
42 "status": "expected",
43 "results": [
44 "passed"
45 ]
46 },
47 {
48 "title": "group saves merge unrelated properties and reject an overlapping member without partial writes",
49 "status": "expected",
50 "results": [
51 "passed"
52 ]
53 },
54 {
55 "title": "viewport picking toggles primitive and imported bounds in the same selection",
56 "status": "expected",
57 "results": [
58 "passed"
59 ]
60 }
61 ],
62 "editorRegression": [
63 {
64 "title": "viewport handles move, rotate and scale a draft with snapping and exact save undo redo",
65 "status": "expected",
66 "results": [
67 "passed"
68 ]
69 },
70 {
71 "title": "cancelled handle gestures preserve earlier drafts and keyboard handles obey gameplay validation",
72 "status": "expected",
73 "results": [
74 "passed"
75 ]
76 },
77 {
78 "title": "mixed primitive and imported selection transforms together with pointer cancellation and atomic save undo redo",
79 "status": "expected",
80 "results": [
81 "passed"
82 ]
83 },
84 {
85 "title": "a linked member or shearing scale rejects the entire selection and discard restores the saved scene",
86 "status": "expected",
87 "results": [
88 "passed"
89 ]
90 },
91 {
92 "title": "group saves merge unrelated properties and reject an overlapping member without partial writes",
93 "status": "expected",
94 "results": [
95 "passed"
96 ]
97 },
98 {
99 "title": "browser editor previews, saves, undoes and exports durable transforms without changing identity",
100 "status": "expected",
101 "results": [
102 "passed"
103 ]
104 },
105 {
106 "title": "two editors reject a stale save and preserve the unsaved local transform",
107 "status": "expected",
108 "results": [
109 "passed"
110 ]
111 },
112 {
113 "title": "atelier creates and duplicates solid shapes, stages deletion and restores exact identities through undo and reload",
114 "status": "expected",
115 "results": [
116 "passed"
117 ]
118 }
119 ],
120 "distinctScenarios": 9
121 },
122 "validation": {
123 "typecheck": true,
124 "packageBoundaries": 88,
125 "productionClientBuild": "Final Playwright run builds an isolated Vite client before all four scenarios.",
126 "productionRelayBuild": "/tmp/dw-selection-server-final"
127 },
128 "ordering": "The 450-test suite preceded a final near-singularity Euler precision correction. The four final geometry/transaction tests include that case; the final four browser journeys, typecheck and client build used the corrected source. The relay build does not import the editor selection helper.",
129 "verified": [
130 "64-object bounded selection produces one atomic transaction of at most 192 property changes.",
131 "Group position, rotation and scale compose about a common pivot without changing source objects.",
132 "Uniform scale preserves rotated shapes; unsupported shear rejects before persistence.",
133 "Mixed primitive/imported selections preserve child transforms and display gold bounds.",
134 "Pointer and keyboard handles, cancellation, no-op input, save, exact undo/redo and reload work.",
135 "A linked member rejects the entire proposal without disk changes.",
136 "Independent collaborator properties merge and survive group undo; an overlapping member blocks the whole save.",
137 "Shift-click viewport picking adds/removes both primitive and imported bounds."
138 ],
139 "initialFindings": [
140 "Returning group fields to their saved transform initially produced an empty transaction error; it now clears the draft without a write.",
141 "An initial viewport-picking test overlapped objects left by earlier scenarios. It correctly picked the older object. The fixture now hides earlier selection objects before the picking scenario; the complete four-scenario matrix passes.",
142 "Group rotation decomposition now uses atan2 with a measured cosine to retain precision near Euler singularities; the matrix-composition test covers this case."
143 ],
144 "localPreview": {
145 "url": "http://localhost:5181/editor.html",
146 "editorStatus": 200,
147 "updatedModuleServed": true,
148 "savedDraftRevision": "0",
149 "savedDraftSha256": "f076388ad340c7b1e1aa84e72368aa6a9d3a3f6546187a2fed1d0fba66c36977",
150 "note": "Observed the authoritative saved draft without writing it. Vite serves the new source; no process was restarted. Browser tests use isolated temporary builds and data. Existing editor relay and beta health both ready."
151 },
152 "remaining": [
153 "Persistent hierarchy/grouping and marquee selection.",
154 "Multi-object duplication/deletion and group presence/remote cages (presence retains the focused member).",
155 "Cross-session durable undo and remaining live-revision retention/fault gates.",
156 "The full milestones 0\u201318 acceptance and deferred character art pass."
157 ],
158 "fullPlanEstimatePercent": 44,
159 "wholeRoadmapMilestonesClosed": []
160}
161