BS-JD-217 - M2 content-workspace migration and acceptance signoff #65

Closed
opened 2026-07-13 16:52:06 -04:00 by Rbanh · 3 comments
Owner

Goal

Production-accept the complete M2 content-workspace and material-authoring milestone across native editor use, migration, headless validation, runtime property blocks, and packaging.

Required scenario

  • Create assets/Props/Office/ in the Content Browser.
  • Import a static model and a skeletal model directly there without type-directory reshuffling.
  • Extract one valid source material, map another slot to an existing Material Instance, retain one source fallback, and set one slot to Default.
  • Verify UV-less/unassigned static and skinned meshes, primitives without active material, unassigned brush faces, and previews remain visible with DefaultGrid.
  • Select a project default Material, then break/delete it and verify safe DefaultGrid recovery with diagnostics.
  • Place both models, add one scene override and one runtime MaterialPropertyBlock, promote the block to a direct-base Material Instance, save, close, and reopen.
  • Edit a shared Material continuously, release without a write or stall, verify dirty state in every surface, then explicitly Save/Save All and reopen with the saved values.
  • Move/rename the containing folder, reimport both models, and explicitly resolve a removed-slot orphan.
  • Verify unchanged UUIDs, model defaults, scene-override precedence, editable Material bytes, thumbnails, Locate/Browse, PIE/runtime rendering, validation, and release packaging.
  • Demonstrate cancelled/failed import and recursive move restoring exact prior filesystem/registry state.

Gates

  • Registry/settings/scene migration fixtures cover the current fixed-folder registry/generated layout and legacy renderer material paths.
  • Static/skinned parity plus source/project/default material policies have focused tests.
  • DefaultGrid has forward/Solari parity, UV-less coverage, singleton-handle checks, and project-fallback failure coverage.
  • Watcher #19 and headless processor #21 use the same path/type/import rules.
  • Property blocks #53 apply per owner/slot and promote transactionally without persistence leaks.
  • Dirty asset documents #67 keep interactive edits in memory, publish only on explicit guarded Save/Save All, and participate in close/project-switch recovery.
  • Modular editor architecture #68 decomposes the Inspector and Content Browser, centralizes registered component dispatch, and enforces the architecture-debt ratchet.
  • Full workspace checks, tests, strict lint, level/sample validation, process-assets check, clean-worktree assertions, and QA package launch pass.
  • Native screenshots/evidence and the canonical content-workspace guide are committed.
  • Root README controls/checklist and affected ADRs/docs are coherent.
  • Every implementation issue assigned to M2 is closed; this signoff and parent epic close next.

Non-goals

External absolute linked assets, nested Material Instances, terrain fallback unification, and dynamic deformed Solari geometry #54.

Child of #59; final milestone gate.

## Goal Production-accept the complete M2 content-workspace and material-authoring milestone across native editor use, migration, headless validation, runtime property blocks, and packaging. ## Required scenario - [x] Create `assets/Props/Office/` in the Content Browser. - [x] Import a static model and a skeletal model directly there without type-directory reshuffling. - [x] Extract one valid source material, map another slot to an existing Material Instance, retain one source fallback, and set one slot to Default. - [x] Verify UV-less/unassigned static and skinned meshes, primitives without active material, unassigned brush faces, and previews remain visible with DefaultGrid. - [x] Select a project default Material, then break/delete it and verify safe DefaultGrid recovery with diagnostics. - [x] Place both models, add one scene override and one runtime MaterialPropertyBlock, promote the block to a direct-base Material Instance, save, close, and reopen. - [x] Edit a shared Material continuously, release without a write or stall, verify dirty state in every surface, then explicitly Save/Save All and reopen with the saved values. - [x] Move/rename the containing folder, reimport both models, and explicitly resolve a removed-slot orphan. - [x] Verify unchanged UUIDs, model defaults, scene-override precedence, editable Material bytes, thumbnails, Locate/Browse, PIE/runtime rendering, validation, and release packaging. - [x] Demonstrate cancelled/failed import and recursive move restoring exact prior filesystem/registry state. ## Gates - [x] Registry/settings/scene migration fixtures cover the current fixed-folder registry/generated layout and legacy renderer material paths. - [x] Static/skinned parity plus source/project/default material policies have focused tests. - [x] DefaultGrid has forward/Solari parity, UV-less coverage, singleton-handle checks, and project-fallback failure coverage. - [x] Watcher #19 and headless processor #21 use the same path/type/import rules. - [x] Property blocks #53 apply per owner/slot and promote transactionally without persistence leaks. - [x] Dirty asset documents #67 keep interactive edits in memory, publish only on explicit guarded Save/Save All, and participate in close/project-switch recovery. - [x] Modular editor architecture #68 decomposes the Inspector and Content Browser, centralizes registered component dispatch, and enforces the architecture-debt ratchet. - [x] Full workspace checks, tests, strict lint, level/sample validation, process-assets check, clean-worktree assertions, and QA package launch pass. - [x] Native screenshots/evidence and the canonical content-workspace guide are committed. - [x] Root README controls/checklist and affected ADRs/docs are coherent. - [x] Every implementation issue assigned to M2 is closed; this signoff and parent epic close next. ## Non-goals External absolute linked assets, nested Material Instances, terrain fallback unification, and dynamic deformed Solari geometry #54. Child of #59; final milestone gate.
Rbanh added this to the M2 - Content workspace and asset pipeline milestone 2026-07-13 16:52:06 -04:00
Author
Owner

Candidate signoff evidence — commit cf6eaba

The consolidated M2 acceptance record is published at M2 Content Workspace Native Evaluation, with the exact Penpot targets at the design export index.

Evidence covers destination-first static/skeletal import, extraction and guarded re-extraction, model mappings and orphan reconciliation, move/duplicate/trash/undo integrity, dirty/save/restart, DefaultGrid and broken-reference safety, property-block promotion, watcher/headless parity, Forward/Solari behavior, packaged runtime launch, and responsive Inspector/overlay interaction.

The exact candidate passed architecture audit, formatting, full workspace/all-feature tests, strict all-target/all-feature Clippy, process-assets --check, level/sample validation, QA packaging, documentation audit, and native editor/package acceptance. Publication readback resolves cf6eaba53473d2825d0109f5a18f44794af5bd48 on branch codex/m2-content-workspace.

## Candidate signoff evidence — commit `cf6eaba` The consolidated M2 acceptance record is published at [M2 Content Workspace Native Evaluation](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/src/commit/cf6eaba53473d2825d0109f5a18f44794af5bd48/docs/editor/evaluations/content-workspace-m2/README.md), with the exact Penpot targets at the [design export index](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/src/commit/cf6eaba53473d2825d0109f5a18f44794af5bd48/docs/editor/evaluations/content-workspace-m2/penpot/README.md). Evidence covers destination-first static/skeletal import, extraction and guarded re-extraction, model mappings and orphan reconciliation, move/duplicate/trash/undo integrity, dirty/save/restart, DefaultGrid and broken-reference safety, property-block promotion, watcher/headless parity, Forward/Solari behavior, packaged runtime launch, and responsive Inspector/overlay interaction. The exact candidate passed architecture audit, formatting, full workspace/all-feature tests, strict all-target/all-feature Clippy, `process-assets --check`, level/sample validation, QA packaging, documentation audit, and native editor/package acceptance. Publication readback resolves `cf6eaba53473d2825d0109f5a18f44794af5bd48` on branch `codex/m2-content-workspace`.
Rbanh closed this issue 2026-07-17 23:48:23 -04:00
Rbanh reopened this issue 2026-07-17 23:53:20 -04:00
Author
Owner

Acceptance reopened — visual proof incomplete

The prior closure was premature. Exported Penpot targets and automated geometry tests do not by themselves prove current native 1:1 conformance. Fresh implemented-UI captures were not attached beside each authoritative design target, and the latest user review identifies remaining visible Inspector work.

This item is reopened. Acceptance now requires current side-by-side design/implementation evidence for the applicable 620 px and 420 px Material layouts, shared component headers, Static Mesh Renderer compositions, material states, and color overlays. Each observed delta must be recorded and resolved before this item can return to Candidate-ready or Closed.

## Acceptance reopened — visual proof incomplete The prior closure was premature. Exported Penpot targets and automated geometry tests do not by themselves prove current native 1:1 conformance. Fresh implemented-UI captures were not attached beside each authoritative design target, and the latest user review identifies remaining visible Inspector work. This item is reopened. Acceptance now requires current side-by-side design/implementation evidence for the applicable 620 px and 420 px Material layouts, shared component headers, Static Mesh Renderer compositions, material states, and color overlays. Each observed delta must be recorded and resolved before this item can return to Candidate-ready or Closed.
Author
Owner

M2 signoff accepted — main candidate 634ec16

Consolidated signoff is accepted against 634ec16c5e627d598aaccf130974224ba76b0e13, published on main and the candidate branch.

Evidence summary:

  • All M2 implementation children are closed, including authored-document/save correctness #67 and final modular/responsive UI conformance #68.
  • The canonical M2 evaluation covers destination-first imports, source/extracted/project/default materials, stable moves/reimports/orphans, DefaultGrid recovery, runtime property blocks, dirty Save/restart, cancellation/rollback, Forward/Solari, and native editor/package acceptance.
  • Candidate gates pass on the exact commit: architecture audit; workspace all-feature tests; strict all-target/all-feature Clippy; process-assets --check; level and sample validation; 126-file QA package; and documentation authority (141/141).
  • Remote readback confirms both main and codex/m2-content-workspace resolve the candidate.
  • User explicitly accepted publication and requested issue and milestone closure.

The parent epic #59 closes next, followed by milestone #12 only after its open issue count reaches zero.

## M2 signoff accepted — main candidate `634ec16` Consolidated signoff is accepted against [`634ec16c5e627d598aaccf130974224ba76b0e13`](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/commit/634ec16c5e627d598aaccf130974224ba76b0e13), published on `main` and the candidate branch. Evidence summary: - All M2 implementation children are closed, including authored-document/save correctness #67 and final modular/responsive UI conformance #68. - The [canonical M2 evaluation](https://git.spacetrainclubhouse.com/Falling-Metal-Interactive/Blacksite/src/commit/634ec16c5e627d598aaccf130974224ba76b0e13/docs/editor/evaluations/content-workspace-m2/README.md) covers destination-first imports, source/extracted/project/default materials, stable moves/reimports/orphans, DefaultGrid recovery, runtime property blocks, dirty Save/restart, cancellation/rollback, Forward/Solari, and native editor/package acceptance. - Candidate gates pass on the exact commit: architecture audit; workspace all-feature tests; strict all-target/all-feature Clippy; `process-assets --check`; level and sample validation; 126-file QA package; and documentation authority (141/141). - Remote readback confirms both `main` and `codex/m2-content-workspace` resolve the candidate. - User explicitly accepted publication and requested issue and milestone closure. The parent epic #59 closes next, followed by milestone #12 only after its open issue count reaches zero.
Rbanh closed this issue 2026-07-22 18:12:32 -04:00
Sign in to join this conversation.
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Falling-Metal-Interactive/Blacksite#65
No description provided.