From 3794faa4aae8d910b6af58a9e470ddd808339cba Mon Sep 17 00:00:00 2001 From: Rbanh Date: Sun, 12 Jul 2026 13:18:40 -0400 Subject: [PATCH] Document material workflow acceptance --- docs/editor/README.md | 1 + .../material-library-targeted-drop/README.md | 47 +++++++++++++++++++ .../material-instance-surface-preview.png | 3 ++ docs/editor/material-system.md | 3 ++ 4 files changed, 54 insertions(+) create mode 100644 docs/editor/evaluations/material-library-targeted-drop/README.md create mode 100644 docs/editor/evaluations/material-library-targeted-drop/material-instance-surface-preview.png diff --git a/docs/editor/README.md b/docs/editor/README.md index ba9ed5a..f7cf7fd 100644 --- a/docs/editor/README.md +++ b/docs/editor/README.md @@ -25,6 +25,7 @@ Docs for the in-process egui editor (`crates/editor/`). Update this index when a | [material-system.md](material-system.md) | Shared Material/Material Instance assets, static/skinned renderer slots, Surface ABI, Solari scope, and migration | | [collaborative-file-safety.md](collaborative-file-safety.md) | Exact authored-file revisions, Git/read-only status, conflict recovery, and optional ownership providers | | [evaluations/material-renderer-foundation/](evaluations/material-renderer-foundation/) | Live screenshots and verification record for the renderer/material/component foundation | +| [evaluations/material-library-targeted-drop/](evaluations/material-library-targeted-drop/) | Live screenshot and verification record for the docked Material Library and exact reversible surface drops | | [evaluations/navigation-authoring/](evaluations/navigation-authoring/) | Live screenshots and verification record for navigation authoring and runtime parity | | [evaluations/production-readiness/](evaluations/production-readiness/) | Current #50 release-candidate matrix and required clean-checkout, soak, performance, limitation, and independent-signoff evidence | diff --git a/docs/editor/evaluations/material-library-targeted-drop/README.md b/docs/editor/evaluations/material-library-targeted-drop/README.md new file mode 100644 index 0000000..e4c67ad --- /dev/null +++ b/docs/editor/evaluations/material-library-targeted-drop/README.md @@ -0,0 +1,47 @@ +# Material Library And Targeted Drop Evaluation + +Date: 2026-07-12 +Branch: `codex/material-library-targeted-drop` +Implementation commit: `02247f0` + +This record captures live acceptance for the docked Material Library and exact viewport +Material/Texture assignment workflow. The permanent user workflow lives in the +[material-system guide](../../material-system.md), and the implementation plan is +[material_library_and_targeted_drop_2026-07-12.plan.md](../../../../.cursor/plans/material_library_and_targeted_drop_2026-07-12.plan.md). + +## Live Editor Evidence + +The image below is a native Wayland capture from the debug editor. The assignment was previewed, +committed once, undone, previewed again, and canceled with Escape; the authored scene was not saved. + +![Material Instance preview on the exact Ground surface with the docked Material Library and green target feedback](material-instance-surface-preview.png) + +The Material Library resolves `surface_tint_instance` through its base Material and sparse +overrides. While the pointer is over the viewport, the green card names `Ground / Surface`, the +inspector reflects the transient material, and the scene-usage section identifies the exact actor +and surface. The preview does not push history or dirty the scene. + +## Acceptance Results + +| Area | Result | Evidence | +|------|--------|----------| +| Catalog workflow | Pass | Window menu entry, persisted bottom dock, search, Material/Instance/Used/Unused filters, grid/list views, resolved instance thumbnail, and details selection | +| Exact targeting | Pass | Primitive preview resolves one actor surface; automated coverage resolves one stable renderer slot and one stable brush face | +| Feedback | Pass | Neutral acquisition changes to green valid actor/surface feedback; invalid payload and read-only paths are covered by focused tests | +| Preview lifecycle | Pass | Live material and usage update without a history entry; Escape restores the exact prior material | +| Commit lifecycle | Pass | Release creates one typed history/operator entry; undo restores the prior surface | +| Startup hygiene | Pass | Relaunching the authored showcase after visibility-order correction produced no Bevy hierarchy warnings | +| Packaged acceptance | Deferred | Explicitly deferred by project-owner direction; no packaged result is claimed here | + +## Automated Verification + +| Command/suite | Result | +|---------------|--------| +| `cargo fmt --all -- --check` | Pass | +| `cargo check --workspace --all-targets` | Pass | +| `cargo clippy --workspace --all-targets -- -D warnings` | Pass | +| `cargo test --workspace` | Pass | +| Editor strict Clippy with `dev` and `hot-reload` features | Pass | +| `cargo validate-levels --project .` | 59 dependencies, 5 non-blocking findings, 0 blocking errors | +| `cargo bake-navigation --project . --check` | 1 deterministic artifact current | +| `git diff --check` | Pass | diff --git a/docs/editor/evaluations/material-library-targeted-drop/material-instance-surface-preview.png b/docs/editor/evaluations/material-library-targeted-drop/material-instance-surface-preview.png new file mode 100644 index 0000000..db26e86 --- /dev/null +++ b/docs/editor/evaluations/material-library-targeted-drop/material-instance-surface-preview.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:becd567561a7f438ea701077ee0206db5c018a5fc5bf8f4e3394fd8fb058ab8a +size 2172108 diff --git a/docs/editor/material-system.md b/docs/editor/material-system.md index cef955e..6f7873e 100644 --- a/docs/editor/material-system.md +++ b/docs/editor/material-system.md @@ -47,6 +47,9 @@ Texture drops target a primitive's base-color texture or one brush face. Direct renderer slot are rejected because a renderer slot stores a Material reference; create or edit a Material Instance and assign the texture there. +See the [Material Library and targeted-drop evaluation](evaluations/material-library-targeted-drop/) +for the live preview, commit/undo, cancel, and source-verification record. + Static draw slots and material slots are separate. Removing a static draw retains its explicit material assignment as an orphan rather than guessing a replacement. Reimport also reconciles slots by stable ID, never by display name. Resolve an orphan explicitly in the renderer inspector.