{
  "sourceBase": "03be433c0b4fe50af5b744d7dda2ba65bde66d38",
  "sourceSha256": {
    "apps/editor/main.ts": "6dafe37e4f9d52b22b3a43ebea79c2a06f496387cef58d9485e29dd1dc758d03",
    "package.json": "7a062a0af885786c16a7c6b47811df573bac7f2d1868869782772b45501e9ad6",
    "packages/authoring/selection.ts": "c195d0cd9c04ae6ff7060903ecb0e9d8e53d1b1a8a8d67f9891fa91c57952de1",
    "tests/browser/editor-selection.spec.ts": "d9aacb2902f561950058f198a3b461b611d393ea18b794c985752e357b14bd62",
    "tests/editor-selection.test.ts": "f2c42bc8921a10d59e25d0d869748ca4548c10cd586330ac612b4fc1d431d1f8",
    "tools/cli/check-boundaries.ts": "0fac00164b8634d1af1b998c906440b5888e76085da3ac92ff1fe222fda220a7"
  },
  "headless": {
    "fullSuite": {
      "tests": 450,
      "pass": 450,
      "fail": 0,
      "skipped": 0
    },
    "focused": {
      "tests": 22,
      "pass": 22,
      "fail": 0,
      "skipped": 0
    },
    "finalPrecision": {
      "tests": 4,
      "pass": 4,
      "fail": 0,
      "skipped": 0
    }
  },
  "browser": {
    "finalSelection": [
      {
        "title": "mixed primitive and imported selection transforms together with pointer cancellation and atomic save undo redo",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "a linked member or shearing scale rejects the entire selection and discard restores the saved scene",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "group saves merge unrelated properties and reject an overlapping member without partial writes",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "viewport picking toggles primitive and imported bounds in the same selection",
        "status": "expected",
        "results": [
          "passed"
        ]
      }
    ],
    "editorRegression": [
      {
        "title": "viewport handles move, rotate and scale a draft with snapping and exact save undo redo",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "cancelled handle gestures preserve earlier drafts and keyboard handles obey gameplay validation",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "mixed primitive and imported selection transforms together with pointer cancellation and atomic save undo redo",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "a linked member or shearing scale rejects the entire selection and discard restores the saved scene",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "group saves merge unrelated properties and reject an overlapping member without partial writes",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "browser editor previews, saves, undoes and exports durable transforms without changing identity",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "two editors reject a stale save and preserve the unsaved local transform",
        "status": "expected",
        "results": [
          "passed"
        ]
      },
      {
        "title": "atelier creates and duplicates solid shapes, stages deletion and restores exact identities through undo and reload",
        "status": "expected",
        "results": [
          "passed"
        ]
      }
    ],
    "distinctScenarios": 9
  },
  "validation": {
    "typecheck": true,
    "packageBoundaries": 88,
    "productionClientBuild": "Final Playwright run builds an isolated Vite client before all four scenarios.",
    "productionRelayBuild": "/tmp/dw-selection-server-final"
  },
  "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.",
  "verified": [
    "64-object bounded selection produces one atomic transaction of at most 192 property changes.",
    "Group position, rotation and scale compose about a common pivot without changing source objects.",
    "Uniform scale preserves rotated shapes; unsupported shear rejects before persistence.",
    "Mixed primitive/imported selections preserve child transforms and display gold bounds.",
    "Pointer and keyboard handles, cancellation, no-op input, save, exact undo/redo and reload work.",
    "A linked member rejects the entire proposal without disk changes.",
    "Independent collaborator properties merge and survive group undo; an overlapping member blocks the whole save.",
    "Shift-click viewport picking adds/removes both primitive and imported bounds."
  ],
  "initialFindings": [
    "Returning group fields to their saved transform initially produced an empty transaction error; it now clears the draft without a write.",
    "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.",
    "Group rotation decomposition now uses atan2 with a measured cosine to retain precision near Euler singularities; the matrix-composition test covers this case."
  ],
  "localPreview": {
    "url": "http://localhost:5181/editor.html",
    "editorStatus": 200,
    "updatedModuleServed": true,
    "savedDraftRevision": "0",
    "savedDraftSha256": "f076388ad340c7b1e1aa84e72368aa6a9d3a3f6546187a2fed1d0fba66c36977",
    "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."
  },
  "remaining": [
    "Persistent hierarchy/grouping and marquee selection.",
    "Multi-object duplication/deletion and group presence/remote cages (presence retains the focused member).",
    "Cross-session durable undo and remaining live-revision retention/fault gates.",
    "The full milestones 0\u201318 acceptance and deferred character art pass."
  ],
  "fullPlanEstimatePercent": 44,
  "wholeRoadmapMilestonesClosed": []
}
