# M03-RND-M2-STATIC-BUILD-RESOURCE-OBSERVER-001 ## Owner - Agent ID: `sindo-main-codex` - Target: M03 Renderer Facade and Safe Extraction - Branch: `work/sindo-main-codex/m03-m2-static-build-resource-observer` - Worktree: `C:\Users\sindo\open-wc-worktrees\m03-m2-static-build-resource-observer` ## Outcome Move static M2 build cache lookup, threaded request selection and terminal missing transition from the loader into a service that fills `M2BuildResourceSnapshot`. ## Non-goals - Move animation/native prototype observation or finalize drains. - Own/free Meshes, Nodes or cache entries. - Change path candidate order, GLB filtering, retry behavior, permits or visuals. - Change cache formats, profiles or batching. ## Paths - Exclusive: `src/render/m2/m2_static_build_resource_observer.gd`, `src/tools/verify_m2_static_build_resource_observer.gd`, `docs/modules/m2-static-build-resource-observer.md`, this claim - Shared: loader, M2 snapshot/dispatch/pipeline/cache specs and verifiers, world renderer, module registry, RENDER and M03 Evidence ## Contracts and data - Cached Mesh wins; terminal missing returns missing; existing pending request waits. - Candidate order remains normalized/lowercase nested then basename per extension. - `.tscn` precedes `.glb`; pivot-prefix GLB is skipped for static build. - Successful/`ERR_BUSY` request is remembered; no usable candidate marks missing. - Snapshot adopts exact Mesh/missing result; service never frees engine objects. ## Dependencies - Requires: accepted resource snapshot `032a256` - Blocks: remaining animated resource observer extraction ## Verification - Synthetic cache/pipeline/snapshot lifecycle, path order, source boundaries and timing; adjacent M2 and renderer gates; full headless suite and checkpoint dry-run. ## Documentation deliverables - Inline API docs; module API/I/O/ownership; data-flow/state/sequence/dependency diagrams; adjacent renderer docs and M03 Evidence. ## Status - State: ready for integration - Done: implementation, verification and documentation - Next: integrator merge and post-merge acceptance - Blocked by: ## Handoff - Commit: `7cb3e34` (`render: extract static M2 build resource observer`) - Results: observer PASS (`11` cases, `20,000` iterations, `64.654ms`); full autonomous suite PASS (`55/55`); renderer checkpoint dry-run PASS (`7/7`); internal-access PASS (`30` private symbols); documentation PASS (`42` module specs); coordination PASS with `30` historical warnings. - Remaining risks: successful asynchronous admission is covered by source and existing pipeline regressions because an undrained unit request leaks; private asset traversal, p95/p99, leak and visual evidence remain unavailable; animated observation and static finalize polling remain loader-owned. - Documentation updated: new observer module API/I/O/data-flow/state/sequence/ dependency/ownership specification; M2 snapshot, pipeline/cache, world-renderer, module registry, `RENDER.md` and M03 Evidence updated.