# M03-RND-WMO-RENDER-RESOURCE-CACHE-001 — WMO render resource cache state ## Ownership - Target: M03 - Program: RND - Owner/Agent ID: sindo-main-codex - Branch: `work/sindo-main-codex/m03-wmo-render-resource-cache` - Lease expires UTC: 2026-07-20 - Integrator: M03 milestone integrator ## Outcome Extract lightweight-WMO render Resource cache, negative cache and asynchronous request bookkeeping from the loader while preserving loader-owned I/O and cache-format validation. ## Non-goals - Call `ResourceLoader`, construct cache paths or inspect files. - Validate `WMOStreamingResource` script identity or format version. - Own cached WMO scenes, live prototypes, placement/build jobs or Nodes/RIDs. - Change fallback order, retry behavior, quality profiles or visual output. - Claim asset-backed WMO fidelity, leak acceptance or traversal p95/p99. ## Paths - Exclusive: `src/render/wmo/wmo_render_resource_cache_state.gd`, `src/tools/verify_wmo_render_resource_cache_state.gd`, `docs/modules/wmo-render-resource-cache-state.md`, this claim - Shared/hotspots: `src/scenes/streaming/streaming_world_loader.gd`, `src/tools/verify_render_runtime_cache_shutdown.gd`, `docs/modules/wmo-render-build-queue.md`, `docs/modules/world-renderer.md`, `docs/modules/README.md`, `RENDER.md`, `targets/03-renderer-facade.md` - Generated/ignored: `.godot`, native DLL, generated ADT/WMO resources, caches and proprietary renderer corpus ## Contracts and data - State keys are loader-normalized relative WMO paths copied as `String`. - Cached values are already validated `Resource` references. - Pending values are cache paths for loader-owned `ResourceLoader` requests. - Terminal request removal precedes validated-resource or missing-state adoption. - Request/missing reset preserves accepted resources; full clear releases all. - Cache/schema/coordinate/profile versions and validation rules remain unchanged. ## Dependencies - Requires: current master `c954704`, accepted WMO render build queue - Blocks: further WMO cached-scene/load and materialization decomposition - External state: none; verification uses synthetic Resources and paths ## Verification - Commands: dedicated lifecycle/request/cache/reset/diagnostics/source/timing verifier; WMO queue/planner/registry/resolver/material/shutdown plus adjacent renderer/streaming/coordinate/documentation/coordination gates - Fixtures: synthetic Resource instances and normalized relative/cache paths - Fidelity evidence: exact current cache/missing/request transitions preserved - Performance budget: 100 cycles over 256 resource/request keys under 1 second ## Documentation deliverables - Inline public API docs - Module specification with inputs/outputs, ownership and source map - Data-flow, lifecycle/state and loader interaction sequence diagrams - World-renderer, module registry, WMO queue and RENDER status updates ## Simplicity and naming - Important names introduced: `WmoRenderResourceCacheState` - Simplest considered solution: one RefCounted around three Dictionaries - Rejected complexity/abstractions: generic cache, callbacks, signals, mutexes, ResourceLoader wrapper, persistence layer or shared WMO/M2 cache hierarchy - Unavoidable complexity and justification: partial reset must retain validated Resources while discarding pending/negative state at map reset and shutdown - Measured optimization evidence: bounded synthetic store/request/reset loop ## Status - State: claimed - Done: scope and state transitions identified - Next: implement state holder, migrate loader adapters, verify and document - Blocked by: ## Handoff - Commit: - Results: - Remaining risks: - Documentation updated: