diff --git a/coordination/claims/M03-RND-M2-MESH-LOAD-PIPELINE-001.md b/coordination/claims/M03-RND-M2-MESH-LOAD-PIPELINE-001.md new file mode 100644 index 0000000..f57f12d --- /dev/null +++ b/coordination/claims/M03-RND-M2-MESH-LOAD-PIPELINE-001.md @@ -0,0 +1,92 @@ +# M03-RND-M2-MESH-LOAD-PIPELINE-001 — M2 mesh load pipeline state + + + +## Ownership + +- Target: M03 +- Program: RND +- Owner/Agent ID: sindo-main-codex +- Branch: `work/sindo-main-codex/m03-m2-mesh-load-pipeline` +- Lease expires UTC: 2026-07-20 +- Integrator: M03 milestone integrator + +## Outcome + +Extract static M2 threaded ResourceLoader request records and their terminal +finalize FIFO from `StreamingWorldLoader`, preserving request order, status +transition, metrics and reset/shutdown behavior. + +## Non-goals + +- Call ResourceLoader or choose `.tscn`/`.glb` cache paths. +- Own M2 Mesh, scene, missing or material-refresh caches. +- Extract Mesh from Resources or rebuild/adopt runtime Meshes. +- Consume `M2_MESH_FINALIZE` permits. +- Change cache formats, animation loading or visible M2 behavior. + +## Paths + +- Exclusive: `src/render/m2/m2_mesh_load_pipeline_state.gd`, + `src/tools/verify_m2_mesh_load_pipeline_state.gd`, + `docs/modules/m2-mesh-load-pipeline-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 + +- One normalized path owns at most one pending request. +- Pending records preserve Dictionary insertion order for polling snapshots. +- Terminal completion removes the request and appends its record/status to FIFO. +- Finalize pop remains oldest-first; duplicate/unknown transitions are rejected. +- Total work count remains pending plus finalize records. +- Clear drops bookkeeping only; loader drains ResourceLoader requests first. + +## Dependencies + +- Requires: accepted classifier package on current master `8ec13d6` +- Blocks: further M2 Mesh cache/finalization service extraction +- External state: none; verification uses synthetic paths and opaque statuses + +## Verification + +- Commands: dedicated validation/order/transition/FIFO/clear/source/timing + verifier; M2 classifier/builder/grouper/transform/registry, materials, shutdown, + facade, internal-access, manifest, documentation and coordination gates +- Fixtures: synthetic normalized paths, resource paths and integer terminal statuses +- Fidelity evidence: exact request/finalize transitions and metric/reset sites preserved +- Performance budget: 100 cycles over 256 request/completion/pop records under 1 second + +## Documentation deliverables + +- Inline public API docs +- Module specification with inputs/outputs, ownership and source map +- Data-flow, lifecycle/state, sequence and dependency diagrams +- World-renderer, module registry and RENDER status updates + +## Simplicity and naming + +- Important names introduced: `M2MeshLoadPipelineState` +- Simplest considered solution: one RefCounted with request map and finalize FIFO +- Rejected complexity/abstractions: generic ResourceLoader queue, signals, + callbacks, Mesh cache ownership or animation/static pipeline merger +- Unavoidable complexity and justification: polling and budgeted finalization are + distinct lifecycle stages across frames +- Measured optimization evidence: bounded synthetic transition loop + +## Status + +- State: claimed +- Done: all request/finalize/metric/wait/reset sites identified +- Next: implement state holder, migrate loader adapters, verify and document +- Blocked by: + +## Handoff + +- Commit: +- Results: +- Remaining risks: +- Documentation updated: