Files
open-wc/coordination/claims/M03-RND-WMO-PLACEMENT-REGISTRY-001.md
T

4.5 KiB

M03-RND-WMO-PLACEMENT-REGISTRY-001 — WMO placement registry

Ownership

  • Target: M03
  • Program: RND
  • Owner/Agent ID: sindo-main-codex
  • Branch: work/sindo-main-codex/m03-wmo-placement-registry
  • Lease expires UTC: 2026-07-20
  • Integrator: M03 milestone integrator

Outcome

Extract WMO placement-key to tile-reference ownership from the loader while leaving every Node and renderer-resource lifecycle in the loader.

Non-goals

  • Change placement identity rules or WMO transforms.
  • Move Node maps, world roots, tile state, jobs, queues or cancellation.
  • Move cache/load requests, material refresh or render-group building.
  • Change duplicate ordering, global-WMO lifetime or build budgets.
  • Claim asset-backed WMO fidelity or performance acceptance.

Paths

  • Exclusive: src/render/wmo/wmo_placement_registry.gd, src/tools/verify_wmo_placement_registry.gd, docs/modules/wmo-placement-registry.md, this claim
  • Shared/hotspots: src/scenes/streaming/streaming_world_loader.gd, docs/modules/wmo-placement-resolver.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

  • Input: resolved WMO placement key and tile/global reference key
  • add_reference creates a key/ref set or idempotently retains an existing ref
  • release_reference erases only the supplied ref and returns true only when the final ref removes the placement key
  • contains, active_count, detached sorted diagnostics and idempotent clear
  • Loader retains key→Node mapping and reacts to final release by cancelling the render build and queue-freeing the corresponding Node
  • Cache/schema/coordinate/profile versions: unchanged

Dependencies

  • Requires: current master 5aa40d6, WmoPlacementResolver identity contract
  • Blocks: WMO build/resource state decomposition
  • External state: none; tests use synthetic placement/tile keys

Verification

  • Commands: dedicated add/shared/idempotent/non-owner/final/global/clear/ diagnostics/source/timing verifier; resolver/material/shutdown plus M2/terrain/ facade/internal-access/manifest/scheduler/streaming/coordinate/docs/coord gates
  • Fidelity evidence: exact shared-ref and final-release behavior preserved
  • Performance budget: dictionary membership over active WMO keys/refs; no Node, Resource, RID, task, queue, mutex, cache or file access

Documentation deliverables

  • Inline registry API documentation
  • New module spec with inputs/outputs, data-flow, lifecycle/state, ownership, failure/recovery, performance, fidelity limitations and source map
  • Placement resolver, renderer/module registry and RENDER.md updates

Simplicity and naming

  • Important name: WmoPlacementRegistry
  • Simplest solution: one private key-to-reference-set Dictionary
  • Rejected complexity: generic ref-count registry, signals, callbacks, Resources, weak refs or Node ownership inside the service
  • Unavoidable complexity: loader keeps a parallel key-to-Node map
  • Measured optimization evidence: bounded synthetic add/release loop

Status

  • State: accepted
  • Done: registry extracted; global/tile adapters migrated; Node/resource/job ownership retained in loader; contract, regressions, dry-run and docs passed
  • Next: WMO build/resource state extraction and asset-backed placement evidence
  • Blocked by:

Handoff

  • Commit: c590036
  • Results: verify_wmo_placement_registry.gd PASS cases=10, iterations=100, elapsed_ms=53.941; 21 adjacent WMO/M2/terrain/facade/ scheduler/streaming/coordinate regressions PASS; documentation and coordination gates PASS; render dry-run PASS 7/7.
  • Remaining risks: no proprietary asset corpus or original-client paired WMO capture; dry-run reports expected missing ADT/DBC/character assets; WMO build/resource state remains loader-owned.
  • Documentation updated: docs/modules/wmo-placement-registry.md, docs/modules/wmo-placement-resolver.md, docs/modules/world-renderer.md, docs/modules/README.md, RENDER.md; inline public API comments added.
  • Integration: accepted in master merge f9e5a4f; post-merge registry (cases=10, iterations=100, elapsed_ms=54.178), resolver, runtime-cache shutdown, facade, documentation and coordination gates passed.