# 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: accepted - Done: state holder, loader adapters, contract verifier and required documentation - Next: further M2 Mesh cache/finalizer extraction - Blocked by: ## Handoff - Commit: `82df7a5` - Results: 34 headless contract regressions pass; dedicated pipeline state verifier passes 100-by-256 transitions in 100.273 ms; documentation and coordination gates pass; checkpoint dry-run passes 7/7. - Remaining risks: no private asset traversal, leak/descriptor-pressure or original-client visual comparison; ResourceLoader I/O and Mesh cache/finalizer ownership remain in `StreamingWorldLoader` by design. - Documentation updated: inline API; `m2-mesh-load-pipeline-state.md` with data-flow, state, sequence and dependency diagrams; module registry, `world-renderer.md` and `RENDER.md`. ## Integration - Merge commit: `83b3618` - Post-merge results: pipeline state `cases=11 iterations=100 elapsed_ms=69.196`; classifier, materials, shutdown, facade, internal-access `34`, manifest `7/7`, documentation and coordination gates passed.