Files
open-wc/coordination/claims/M03-RND-M2-UNIQUE-REGISTRY-001.md
T

4.2 KiB

M03-RND-M2-UNIQUE-REGISTRY-001 — M2 unique placement registry

Ownership

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

Outcome

Extract cross-tile positive MDDF.uniqueId reservation ownership from the streamer into a scene-free M2UniquePlacementRegistry.

Non-goals

  • Move tile state, candidate requeue, group/build tasks or result queues.
  • Move MultiMesh/Node/Mesh/material creation, animation or resource loading.
  • Change unique-key format, first-owner semantics or unkeyed placement behavior.
  • Change placement transforms, detail radius, cache versions or quality profiles.
  • Add dependencies or mark the broad M2 service complete.

Paths

  • Exclusive: src/render/m2/m2_unique_placement_registry.gd, src/tools/verify_m2_unique_placement_registry.gd, docs/modules/m2-unique-placement-registry.md, this claim
  • Shared/hotspots: src/scenes/streaming/streaming_world_loader.gd, src/tools/verify_m2_unique_dedupe.gd, docs/modules/world-renderer.md, docs/modules/README.md, RENDER.md, targets/03-renderer-facade.md
  • Generated/ignored: .godot, native DLL, generated ADT resources, caches and proprietary renderer corpus

Contracts and data

  • Input: tile key and raw ADT M2 placement dictionaries
  • Reserve output: fresh filtered placements, owned unique keys and skipped keys
  • Release input/output: tile key plus claimed keys; only current owner releases
  • Positive IDs map to uid:<decimal>; zero/negative/missing IDs remain untracked
  • Registry is session-memory only and clears on renderer world reset
  • Queue/cache/schema/coordinate versions: unchanged

Dependencies

  • Requires: current master 57ae1b8
  • Blocks: broader M2 service extraction and dependency/performance acceptance
  • External state: none; tests use synthetic placement dictionaries

Verification

  • Commands: dedicated unkeyed/duplicate/cross-tile/release/clear/detached- diagnostic and bounded timing verifier; loader source boundary; M2 unique-id smoke plus facade/terrain/internal-access/manifest/shutdown/scheduler gates
  • Fidelity evidence: exact positive-ID key format and first-owner/retry behavior
  • Performance budget: dictionary membership over placement count; no Node, Resource, RID, task, file or persistent cache

Documentation deliverables

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

Simplicity and naming

  • Important name: M2UniquePlacementRegistry
  • Simplest solution: one private key-to-owner dictionary and explicit operations
  • Rejected complexity: generic identity registry, signals, callbacks, Resources, locks or ownership graph
  • Unavoidable complexity: raw placement dictionaries remain at ADT adapter boundary
  • Measured optimization evidence: bounded synthetic reserve/release verifier

Status

  • State: handoff
  • Done: stateful registry, loader adapters, migrated smoke, regressions and docs
  • Next: milestone integrator merge and asset-backed boundary traversal later in M03
  • Blocked by:

Handoff

  • Commit: acb3a80 (refactor(M03): extract M2 unique placement registry)
  • Results: dedicated contract PASS (cases=10, iterations=100, 35.688 ms); historical uid:11785 smoke PASS; terrain/facade/internal-access/manifest/ shutdown/scheduler/streaming/focus/terrain-query/coordinate regressions PASS; internal inventory remains 42; editor parse and documentation/coordination/ diff gates PASS; checkpoint dry-run planned 7/7
  • Remaining risks: private Azeroth corpus was absent, so the asset-backed ADT placement probe could not open the map and is not counted as passed evidence; first ownership remains processing-order based; M2 grouping/build/tasks/caches/ finalization and asset-backed p95/p99 remain pending
  • Documentation updated: m2-unique-placement-registry.md, module registry, world-renderer.md, RENDER.md, inline API documentation and data-flow, lifecycle and sequence diagrams