From 6617dfe74e01a31f650a3a35f1c077def2ef7788 Mon Sep 17 00:00:00 2001 From: sindoring Date: Thu, 16 Jul 2026 09:25:43 +0400 Subject: [PATCH] coord(M03): claim terrain mesh cache service --- .../M03-RND-TERRAIN-CACHE-SERVICE-001.md | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 coordination/claims/M03-RND-TERRAIN-CACHE-SERVICE-001.md diff --git a/coordination/claims/M03-RND-TERRAIN-CACHE-SERVICE-001.md b/coordination/claims/M03-RND-TERRAIN-CACHE-SERVICE-001.md new file mode 100644 index 0000000..830862b --- /dev/null +++ b/coordination/claims/M03-RND-TERRAIN-CACHE-SERVICE-001.md @@ -0,0 +1,96 @@ +# M03-RND-TERRAIN-CACHE-SERVICE-001 — Terrain quality mesh cache service + + + +## Ownership + +- Target: M03 +- Program: RND +- Owner/Agent ID: sindo-main-codex +- Branch: `work/sindo-main-codex/m03-terrain-quality-cache` +- Lease expires UTC: 2026-07-18 +- Integrator: M03 milestone integrator + +## Outcome + +Extract the full-quality terrain revisit Mesh cache, its LRU ownership and +source-admission rules from `StreamingWorldLoader` into a small scene-free +`TerrainQualityMeshCache`, preserving all call sites and observable behavior. + +## Non-goals + +- Move ADT parsing, tile state, quality-upgrade tasks/results or SceneTree/RID finalization. +- Change cache capacity defaults, quality profiles, source priority or cache formats. +- Cache control-splat/splat meshes that the current loader deliberately rejects. +- Extract chunk LOD, terrain material building, ground query or other asset services. +- Add dependencies, persistence, background work or mark the terrain service complete. + +## Paths + +- Exclusive: `src/render/terrain/terrain_quality_mesh_cache.gd`, + `src/tools/verify_terrain_quality_mesh_cache.gd`, + `docs/modules/terrain-quality-mesh-cache.md`, this claim +- Shared/hotspots: `src/scenes/streaming/streaming_world_loader.gd`, + `src/tools/verify_render_runtime_cache_shutdown.gd`, + `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 renderer corpus + +## Contracts and data + +- Public service API: `store`, `restore`, `clear`, detached `diagnostic_snapshot` +- Entry: tile key, retained Mesh reference and source string +- Admission: non-empty key, non-null Mesh, source other than + `control_splat_cache`, `splat_cache` or `splat` +- LRU: successful restore touches newest; store touches then trims oldest to + `max(0, capacity)`; invalid restored records are removed +- Persistence/cache format: none; session-memory ownership only + +## Dependencies + +- Requires: integrated facade contracts master `61bad09` +- Blocks: later terrain service extraction and cache/finalization acceptance audit +- External state: none; tests use synthetic ArrayMesh references + +## Verification + +- Commands: dedicated cache contract/LRU/ownership regression; streamer source + boundary; shutdown/facade/internal-access/manifest/planner/scheduler and repository gates +- Fixtures: admission/rejection, replacement, LRU touch/eviction, zero/negative + capacity, invalid record cleanup, clear and detached diagnostics +- Fidelity evidence: same sources/capacity/call sites; all seven baseline plans unchanged +- Performance budget: dictionary lookup plus bounded single-entry LRU operations; + no Node, task, file, cache serialization or RID creation + +## Documentation deliverables + +- Inline public API docs: store/restore/clear/diagnostics and ownership +- Module specification: new terrain quality mesh cache specification +- Data-flow diagram: upgrade result through cache to revisit state +- Sequence/state/dependency diagrams: store/restore/evict/reset and failure paths +- Source map/status updates: module registry, world renderer and `RENDER.md` + +## Simplicity and naming + +- Important names introduced: `TerrainQualityMeshCache` +- Simplest considered solution: one RefCounted with dictionary plus ordered tile-key array +- Rejected complexity/abstractions: generic cache framework, weak references, + callbacks, Resource cache integration, background eviction or persistence +- Unavoidable complexity and justification: Mesh references must survive unloaded + tile state while LRU keeps revisit memory bounded +- Measured optimization evidence: exact ownership extraction, no optimization claim + +## Status + +- State: claimed +- Done: ownership, behavior and non-goals published +- Next: implement service, migrate loader wrappers, tests and docs +- Blocked by: + +## Handoff + +- Commit: +- Results: +- Remaining risks: +- Documentation updated: