# Renderer, material, and component foundation > **Historical plan — not current implementation guidance.** Use the [documentation index](../../docs/README.md) for current behavior and architecture. ## Goal Separate static and skinned renderer ownership, restore deterministic skinned edit poses, add shared material/material-instance slots, and make authoring components registry-driven and composable. ## Component foundation milestone - Give authoring components immutable IDs distinct from Rust type paths. - Split persisted active state from inspector ordering with legacy-state migration. - Route presence, persistence, add/remove/reset/copy/paste, and component history through Bevy reflection and atomic transactions. - Treat `ActorKind` as a derived compatibility/display hint; validate component data and explicit requirements/conflicts. - Provide one statically linked extension registration helper and reflection round-trip fixture. - Verify registry integrity, transaction undo/redo, scene save inclusion, composition, and legacy enable-state preservation. ## Related renderer/material milestone - Keep `StaticMeshRenderer` and `SkinnedMeshRenderer` as separate authoring and hydration paths. - Give both renderer types stable imported-source/explicit Material slots and preserve orphaned assignments by ID across source changes. - Add versioned Material and direct-base Material Instance assets, sparse editor overrides, shared handle live refresh, and runtime-only property blocks. - Capture and restore imported Transform/MorphWeights baselines; sample only the explicitly chosen default edit clip and never reload a rig for a material-only change. - Compose one validated Surface evaluator into raster and Solari, including normal/emissive/unlit fields and exact cutout candidate acceptance. Safely omit skinned/morph geometry from Solari until instance-owned deformed vertices and dynamic BLAS updates exist. - Upgrade scenes/materials explicitly to schema v4 with dry-run, staged writes, backup, rollback, stable slot normalization, and active-state separation. ## Acceptance - Shared, scene, game, game-hot, editor, Surface, and maintained Solari-fork tests pass. - `cargo --locked validate-levels` reports zero blocking findings. - A second project-upgrade dry run reports no changes after apply. - Editor evidence shows the stable component cards, static/skinned material slots, Material Instance workflow, deterministic animated actor pose, and Surface/Solari diagnostics. - Gitea implementation issue and related roadmap issues link the documentation and screenshot evidence without claiming unsupported dynamic deformed BLAS behavior.