3.6 KiB
3.6 KiB
M03-RND-WMO-RENDER-BUILD-QUEUE-001 — WMO render build queue
Ownership
- Target: M03
- Program: RND
- Owner/Agent ID: sindo-main-codex
- Branch:
work/sindo-main-codex/m03-wmo-render-build-queue - Lease expires UTC: 2026-07-20
- Integrator: M03 milestone integrator
Outcome
Extract typed lightweight-WMO render build jobs and their FIFO key queue from the loader while leaving all engine-object destruction and materialization in the loader.
Non-goals
- Queue-free Nodes or free Resources/RIDs.
- Move material refresh, Node creation, editor ownership or budget permits.
- Change duplicate enqueue, stale-key cleanup, cancel or clear ordering.
- Change placement, cache loading/versioning, transforms, shadows or visibility.
- Claim asset-backed WMO fidelity, leak acceptance or traversal p95/p99.
Paths
- Exclusive:
src/render/wmo/wmo_render_build_job.gd,src/render/wmo/wmo_render_build_queue.gd,src/tools/verify_wmo_render_build_queue.gd,docs/modules/wmo-render-build-queue.md, this claim - Shared/hotspots:
src/scenes/streaming/streaming_world_loader.gd,docs/modules/wmo-render-build-step-planner.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
- Typed job: placement key, strong Node3D/Resource references and two cursors
- FIFO queue preserves duplicate key append and first-occurrence erase behavior
- Stale front keys remain observable for loader-compatible pop-and-continue
- Cancel releases the keyed job reference and first queued key only
- Clear releases every job/key reference idempotently; never frees engine objects
- Loader retains validity checks, planner invocation, cursor adoption, materialization, permits, cancellation reactions and Node destruction
- Cache/schema/coordinate/profile versions: unchanged
Dependencies
- Requires: current master
1e740aa, accepted WMO build step planner - Blocks: further WMO cache/load and materialization decomposition
- External state: none; verification uses synthetic Node3D/Resource instances
Verification
- Commands: dedicated invalid/FIFO/duplicate/stale/cursor/cancel/clear/ diagnostics/source/timing verifier; WMO planner/registry/resolver/material/ shutdown plus M2/terrain/facade/internal-access/manifest/scheduler/streaming/ coordinate/docs/coord gates
- Fidelity evidence: exact current queue/dictionary behavior preserved
- Performance budget: 100 cycles over 256 jobs under 1 second
Documentation deliverables
- Inline job/queue API documentation
- New module spec with inputs/outputs, data flow, state/sequence, ownership, threading, failure/recovery, performance/fidelity limits and source map
- Build-step planner, renderer module registry, world renderer and RENDER updates
Simplicity and naming
- Important names:
WmoRenderBuildJob,WmoRenderBuildQueue - Simplest solution: one typed record plus Dictionary/Array queue composition
- Rejected complexity: generic job scheduler, signals, callbacks, mutexes, Resources as job records or engine lifetime callbacks
- Unavoidable complexity: duplicate keys can intentionally leave stale entries
- Measured optimization evidence: bounded synthetic enqueue/cancel/clear loop
Status
- State: claimed
- Done: ownership, duplicate/stale and engine-lifetime boundary published
- Next: implement queue/job, migrate loader state, tests and docs
- Blocked by:
Handoff
- Commit:
- Results:
- Remaining risks:
- Documentation updated: