diff --git a/coordination/claims/M03-RND-M2-MESH-RESOURCE-CACHE-001.md b/coordination/claims/M03-RND-M2-MESH-RESOURCE-CACHE-001.md new file mode 100644 index 0000000..032b0b4 --- /dev/null +++ b/coordination/claims/M03-RND-M2-MESH-RESOURCE-CACHE-001.md @@ -0,0 +1,89 @@ +# M03-RND-M2-MESH-RESOURCE-CACHE-001 — M2 mesh resource cache state + + + +## Ownership + +- Target: M03 +- Program: RND +- Owner/Agent ID: sindo-main-codex +- Branch: `work/sindo-main-codex/m03-m2-mesh-resource-cache` +- Lease expires UTC: 2026-07-20 +- Integrator: M03 milestone integrator + +## Outcome + +Extract the normalized-path to static M2 Mesh resource cache from +`StreamingWorldLoader`, preserving lookup, replacement, shutdown lifetime and +all existing cache consumers. + +## Non-goals + +- Own the shared M2 missing-path cache or animated/prototype node caches. +- Call ResourceLoader, extract Meshes from Resources or select cache paths. +- Prepare, rebuild or materialize M2 Meshes. +- Change cache formats, material refresh, animation or visible behavior. + +## Paths + +- Exclusive: `src/render/m2/m2_mesh_resource_cache_state.gd`, + `src/tools/verify_m2_mesh_resource_cache_state.gd`, + `docs/modules/m2-mesh-resource-cache-state.md`, this claim +- Shared/hotspots: `src/scenes/streaming/streaming_world_loader.gd`, + `docs/modules/world-renderer.md`, `docs/modules/README.md`, `RENDER.md`, + `targets/03-renderer-facade.md` +- Generated/ignored: `.godot`, native DLL, generated M2 resources, caches and + proprietary renderer corpus + +## Contracts and data + +- Non-empty normalized M2 paths map to at most one Mesh resource reference. +- Store replaces the previous reference for the same path. +- Lookup returns the exact retained Mesh reference; unknown/empty paths return null. +- Clear releases all cache references only at the existing final-shutdown site. +- Shared missing/prototype/animated caches remain loader-owned and unchanged. + +## Dependencies + +- Requires: accepted mesh load pipeline package on master `ef782d1` +- Blocks: isolated M2 Mesh resource finalizer extraction +- External state: none; verification uses synthetic Mesh resources + +## Verification + +- Commands: dedicated validation/store/replace/lookup/clear/source/timing + verifier; mesh pipeline/classifier/material/shutdown/M2 build/facade/internal- + access/manifest, documentation and coordination gates +- Fixtures: synthetic ArrayMesh resources and normalized paths +- Fidelity evidence: exact cache call-site and shutdown lifetime preservation +- Performance budget: 100 cycles over 256 store/lookup entries under 1 second + +## Documentation deliverables + +- Inline public API docs +- Module specification with inputs/outputs, ownership and source map +- Data-flow, lifecycle/state and dependency diagrams +- World-renderer, module registry and RENDER status updates + +## Simplicity and naming + +- Important name introduced: `M2MeshResourceCacheState` +- Simplest solution: one RefCounted with one typed-purpose Dictionary +- Rejected complexity: generic resource cache, missing-state merger, eviction, + signals, callbacks or materialization ownership +- Unavoidable complexity: none beyond retaining engine Resource references +- Measured optimization evidence: bounded synthetic store/lookup loop + +## Status + +- State: claimed +- Done: all Mesh cache read/write/clear sites identified +- Next: implement cache state, migrate adapters, verify and document +- Blocked by: + +## Handoff + +- Commit: +- Results: +- Remaining risks: +- Documentation updated: