e4bb10cee7
Work-Package: M03-RND-M2-RAW-MODEL-REPOSITORY-001 Agent: sindo-main-codex Tests: coordination gate passed before claim Fidelity: native-boundary extraction only; parser methods and paths unchanged
3.4 KiB
3.4 KiB
M03-RND-M2-RAW-MODEL-REPOSITORY-001 — raw M2 model repository
Ownership
- Target: M03
- Program: RND
- Owner/Agent ID: sindo-main-codex
- Branch:
work/sindo-main-codex/m03-m2-raw-model-repository - Lease expires UTC: 2026-07-20
- Integrator: M03 milestone integrator
Outcome
Extract the repeated FileAccess/ClassDB native M2Loader boundary for static
and animated raw model Dictionaries from StreamingWorldLoader.
Non-goals
- Cache raw data, Meshes, prototypes, missing paths or animation decisions.
- Build Nodes/Meshes, refresh materials or choose
.tscn/.glbcaches. - Change static/animated parser methods, path resolution or fallback order.
- Add dependencies, persistence, retries or visible behavior.
Paths
- Exclusive:
src/render/m2/m2_raw_model_repository.gd,src/tools/verify_m2_raw_model_repository.gd,docs/modules/m2-raw-model-repository.md, this claim - Shared/hotspots:
src/scenes/streaming/streaming_world_loader.gd, M2 finalizer/extractor/cache/pipeline/material/animation/shutdown verifiers and module specs,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
- Static load calls native
load_m2; animated load callsload_m2_animated. - Paths remain
globalize_path(extracted_directory.path_join(normalized_path)). - Empty path, missing native class/file/instance/method, parse failure or non-Dictionary result returns an empty Dictionary without retained state.
- Each successful request creates one native loader instance as before.
Dependencies
- Requires: accepted runtime Mesh finalizer package on master
1d94eac - Blocks: M2 prototype/cache state extraction
- External state: native M2Loader registration and local extracted files
Verification
- Commands: dedicated invalid/missing/class/source/timing verifier; finalizer/ classifier/extractor/cache/pipeline/material/animation/shutdown/M2 build/facade/ internal-access/manifest, documentation and coordination gates
- Fixtures: empty/missing normalized paths plus source contract; proprietary success corpus remains external
- Fidelity evidence: exact native method names, path expression and three caller transitions
- Performance budget: 10,000 rejected empty-path calls 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
- Finalizer/extractor/cache/pipeline, world-renderer, registry and RENDER updates
Simplicity and naming
- Important name introduced:
M2RawModelRepository - Simplest solution: one stateless RefCounted with static and animated load methods
- Rejected complexity: generic native repository, caching, dependency injection, retries, diagnostics framework or async wrapper
- Unavoidable complexity: animated native method availability is a distinct guard
- Measured optimization evidence: bounded rejected-input loop
Status
- State: claimed
- Done: refresh/static-prototype/native-animation M2Loader paths identified
- Next: implement repository, migrate adapters, verify and document
- Blocked by:
Handoff
- Commit:
- Results:
- Remaining risks:
- Documentation updated: