# M03-RND-WMO-RENDER-GROUP-MATERIALIZER-001 ## Owner - Agent ID: `sindo-main-codex` - Target: M03 Renderer Facade and Safe Extraction - Branch: `work/sindo-main-codex/m03-wmo-render-group-materializer` - Worktree: `C:\Users\sindo\open-wc-worktrees\m03-wmo-render-group-materializer` ## Outcome Move one-step WMO MeshInstance3D and MultiMeshInstance3D creation, render settings and attachment from the loader into one main-thread materializer. ## Non-goals - Change WMO placement, resource loading, build-step planning or queue state. - Change runtime Mesh finalization, WMOBuilder material behavior or cache formats. - Change permits, visibility distances, shadow policy or visible output. - Generalize M2 and WMO materialization behind a shared abstraction. ## Paths - Exclusive: `src/render/wmo/wmo_render_group_materializer.gd`, `src/tools/verify_wmo_render_group_materializer.gd`, `docs/modules/wmo-render-group-materializer.md`, this claim - Shared: loader, renderer module registry/specification, `RENDER.md`, M03 Evidence ## Contracts and data - Mesh and MultiMesh resources retain exact identity. - Names and optional transforms preserve existing indexed fallback behavior. - Shadow and positive visibility-range settings are applied unchanged. - The supplied WMO root becomes the sole SceneTree owner of the created node. - Editor persisted ownership remains an explicit loader composition policy. ## Dependencies - Requires: accepted WMO render build queue/planner and runtime Mesh finalizer - Blocks: remaining loader-owned WMO runtime traversal cleanup ## Verification - Synthetic Mesh/MultiMesh identity, naming, transform, rendering, attachment, invalid-input, ownership, source and bounded-timing contracts; adjacent WMO and renderer gates; full autonomous suite and checkpoint dry-run. ## Documentation deliverables - Inline API docs; module API/I/O/ownership; data-flow/sequence/dependency diagrams; adjacent renderer docs and M03 Evidence. ## Status - State: ready - Done: implementation, verification and documentation - Next: integrator review and merge - Blocked by: ## Handoff - Commit: `f4d5e29` (`render: extract WMO render group materializer`) - Results: materializer PASS `cases=37 iterations=1000 elapsed_ms=2.771`; autonomous headless suite `63/64`, with only the proprietary `verify_adt_m2_placements.gd` probe unavailable because `data/extracted` is absent; cold/editor parse completed without script diagnostics after restoring ignored generated/native worktree artifacts; checkpoint dry-run retained `7/7`; documentation passed with `50` module specifications; coordination passed with `77` historical expired-claim warnings. - Fidelity: exact Mesh/MultiMesh identity, indexed/fallback presentation, render settings, attachment and scheduler/queue boundaries are unchanged. No private-asset or original-client visual parity claim is added. - Remaining risks: synchronous main-thread Node creation remains; no private WMO visual comparison, long traversal, leak/GPU or p95/p99 evidence. - Documentation: new full module specification with API/I/O and data-flow, sequence/dependency diagrams; renderer registry/source map and `RENDER.md` updated. - Merge: `705354d` (`merge: WMO render group materializer`) - Post-merge: materializer PASS `cases=37 iterations=1000 elapsed_ms=3.236`; all nine adjacent WMO services, shutdown, materials, facade, internal-access `30`, manifest `7/7`, documentation `50` and coordination passed.