# M03-RND-M2-BUILD-RESOURCE-SNAPSHOT-001

<!-- OPENWC_CLAIM:M03-RND-M2-BUILD-RESOURCE-SNAPSHOT-001:sindo-main-codex:2026-07-20 -->

## Owner

- Agent ID: `sindo-main-codex`
- Target: M03 Renderer Facade and Safe Extraction
- Branch: `work/sindo-main-codex/m03-m2-build-resource-snapshot`
- Worktree: `C:\Users\sindo\open-wc-worktrees\m03-m2-build-resource-snapshot`

## Outcome

Replace loose per-step M2 animated/static resource variables with a typed
observation snapshot consumed by the dispatch planner and materializer adapter.

## Non-goals

- Move ResourceLoader I/O, cache lookup/request execution or retry ownership.
- Own or free prototype Nodes or Mesh Resources.
- Change dispatch priority, batch sizing, queue ordering, permits or visuals.
- Change M2 cache paths, formats, allowlists or native animation selection.

## Paths

- Exclusive: `src/render/m2/m2_build_resource_snapshot.gd`,
  `src/tools/verify_m2_build_resource_snapshot.gd`,
  `docs/modules/m2-build-resource-snapshot.md`, this claim
- Shared/hotspots: `src/render/m2/m2_build_dispatch_planner.gd`, its verifier/spec,
  `src/scenes/streaming/streaming_world_loader.gd`, M2 queue/materializer/cache
  specs and tests, `docs/modules/world-renderer.md`, `docs/modules/README.md`,
  `RENDER.md`, `targets/03-renderer-facade.md`
- Generated/ignored: `.godot`, native DLL, generated resources/caches and proprietary corpus

## Contracts and data

- Snapshot retains normalized path, optional animated prototype, animation
  request state, optional static Mesh and terminal missing-model state.
- Static observation is adopted only after animation is not pending, the batch
  is positive and no animated prototype exists.
- Accessors borrow exact engine references without transferring/freeing ownership.
- Diagnostics expose only path and scalar availability flags.

## Dependencies

- Requires: accepted M2 dispatch planner on master `b113db0`
- Blocks: extracting M2 resource observation/request service ownership
- External state: prototype/cache/pipeline/resource lifetime remains loader-owned

## Verification

- Commands: dedicated identity/adoption/diagnostic/lifetime/source/timing verifier;
  dispatch/queue/batch/materializer/cache/pipeline/shutdown/facade/internal-access/
  manifest regressions; documentation, coordination and checkpoint dry-run gates
- Fixtures: synthetic Node3D prototype and ArrayMesh resources
- Fidelity evidence: exact resource presence/pending/missing values and branch order
- Performance budget: 20,000 snapshot construct/adopt/read cycles under one second

## Documentation deliverables

- Inline API docs
- Module spec with inputs/outputs, ownership and source map
- Data-flow, lifecycle/state, sequence and dependency diagrams
- Adjacent dispatch/queue/world-renderer/module-registry/RENDER updates

## Simplicity and naming

- Important name: `M2BuildResourceSnapshot`
- Simplest solution: one small RefCounted value holder with explicit accessors
- Rejected complexity: generic resource union, signals, callbacks and cache ownership
- Unavoidable complexity: two-phase animation then optional static observation
- Measured optimization evidence: bounded synthetic lifecycle loop

## Status

- State: integration accepted
- Done: implementation, verification, documentation and worktree handoff
- Next: extract the M2 resource observation/request producer service
- Blocked by:

## Handoff

- Commit: `ec1b90f1e44037572e3e5052e6dedc016c29859a`
- Results: resource snapshot `cases=12 iterations=20000 elapsed_ms=42.995`;
  dispatch planner remained green; all autonomous headless regressions `54/54`;
  internal access `private_symbols=30`; baseline manifest/dry-run `7/7`;
  documentation `module_specs=41`; coordination passed with 30 historical warnings.
- Remaining risks: proprietary ADT visual/p95/p99 evidence is unavailable;
  resource lookup/request execution, action execution, permits and engine lifetime
  intentionally remain loader-owned.
- Documentation updated: new `m2-build-resource-snapshot.md` with API/I/O,
  data-flow, lifecycle, sequence, dependency and ownership diagrams; dispatch/
  queue/world renderer specs, module registry, RENDER and M03 Evidence updated.
- Integration: master merge `4354834c50ae426640c721041af67d5265e82205`;
  post-merge snapshot `cases=12 iterations=20000 elapsed_ms=42.211`, dispatch
  planner and twelve adjacent resource/materializer/lifetime/facade/internal-
  access/manifest checks, documentation and coordination all passed; checkpoint
  dry-run retained `7/7` plans.
