diff --git a/coordination/claims/M03-RND-M2-UNIQUE-REGISTRY-001.md b/coordination/claims/M03-RND-M2-UNIQUE-REGISTRY-001.md new file mode 100644 index 0000000..f4b4637 --- /dev/null +++ b/coordination/claims/M03-RND-M2-UNIQUE-REGISTRY-001.md @@ -0,0 +1,90 @@ +# 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`, + `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:`; 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: claimed +- Done: scope, key semantics and ownership published +- Next: implement registry, migrate loader adapters, tests and docs +- Blocked by: + +## Handoff + +- Commit: +- Results: +- Remaining risks: +- Documentation updated: