# M03-RND-M2-NATIVE-ANIMATION-RESOURCE-OBSERVER-001 ## Owner - Agent ID: `sindo-main-codex` - Target: M03 Renderer Facade and Safe Extraction - Branch: `work/sindo-main-codex/m03-m2-native-animation-resource-observer` - Worktree: `C:\Users\sindo\open-wc-worktrees\m03-m2-native-animation-resource-observer` ## Outcome Move native GryphonRoost M2 animation candidate selection, synchronous raw read, native animated build, prototype/static-only adoption and debug diagnostics from the loader into a dedicated observer. ## Non-goals - Change the exact native candidate predicate or add more animated models. - Move cached-GLB observation, ResourceLoader polling/finalize or playback. - Own attached instances, consume permits or change queue/batch behavior. - Change native parsing/building, cache formats, profiles or visible output. ## Paths - Exclusive: `src/render/m2/m2_native_animation_resource_observer.gd`, `src/tools/verify_m2_native_animation_resource_observer.gd`, `docs/modules/m2-native-animation-resource-observer.md`, this claim - Shared: loader, M2 cached observer/snapshot/raw repository/prototype specs and verifiers, world renderer, module registry, `RENDER.md` and M03 Evidence ## Contracts and data - Only case-insensitive paths containing `gryphonroost` are native candidates. - Cached animated prototype wins; static-only state suppresses repeated reads. - Empty raw data or animated surfaces marks animation static. - Builder result must be non-null with at least one child; rejection marks static. - Successful result is adopted through first-wins prototype cache semantics. - Existing `M2_NATIVE_ANIM_CACHE` fields and debug gating remain exact. - Observer attaches/frees no Node and starts no async work. ## Dependencies - Requires: accepted cached observer `6f385ed`, raw repository and prototype state - Blocks: remaining ResourceLoader polling/finalize extraction ## Verification - Synthetic candidate/cache/static/raw/build/adoption/lifetime/logging/source and timing contracts; adjacent M2/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 - Done: implementation, verification and documentation - Next: integrator no-ff merge and post-merge acceptance - Blocked by: ## Handoff - Commit: `1cb0101` - Results: observer `33` cases / `20,000` timing iterations; all `57/57` autonomous headless regressions; facade/internal-access/shutdown/manifest; documentation `44`; coordination; checkpoint dry-run `7/7`. - Remaining risks: private asset animation/visual/leak/p95/p99 evidence is absent; native parse/build stays synchronous; historical childless rejected Node remains unfreed; cached ResourceLoader terminal polling/finalize stays loader-owned. - Documentation updated: new native observer API/I/O/data-flow/state/sequence/ dependency/ownership spec; cached observer, snapshot, dispatch, repository, prototype cache, world renderer, module registry, `RENDER.md` and M03 Evidence.