diff --git a/coordination/claims/M03-RND-M2-NATIVE-ANIMATION-RESOURCE-OBSERVER-001.md b/coordination/claims/M03-RND-M2-NATIVE-ANIMATION-RESOURCE-OBSERVER-001.md new file mode 100644 index 0000000..8ad50bd --- /dev/null +++ b/coordination/claims/M03-RND-M2-NATIVE-ANIMATION-RESOURCE-OBSERVER-001.md @@ -0,0 +1,71 @@ +# 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: active +- Done: ownership/compatibility contract +- Next: implementation, verification and documentation +- Blocked by: + +## Handoff + +- Commit: +- Results: +- Remaining risks: +- Documentation updated: