d68786355c
Work-Package: M01-FND-DOMAIN-IDENTITIES-001 Agent: sindo-main-codex
3.3 KiB
3.3 KiB
M01-FND-DOMAIN-IDENTITIES-001 — Stable domain identity namespaces
Ownership
- Target: M01
- Program: FND
- Owner/Agent ID: sindo-main-codex
- Branch:
work/sindo-main-codex/m01-domain-identities - Lease expires UTC: 2026-07-15
- Integrator: M01 milestone integrator
Outcome
Add scene-free, immutable identity values for stable authored content, session-local entities, opaque WoW wire GUIDs and namespaced server entries so callers cannot silently interchange their numeric/string representations.
Non-goals
- Allocating Content IDs, Entity IDs or server entries.
- Decoding WoW GUID high types before the build-12340 protocol package.
- Defining map/spell/item/quest/display/sound IDs in this package.
- Migrating gameplay, network or Content Project consumers that do not exist yet.
Paths
- Exclusive:
src/domain/identity/,src/tools/verify_domain_identities.gd,docs/modules/domain-identities.md,docs/adr/0002-domain-identity-namespaces.md - Shared/hotspots:
docs/ARCHITECTURE.md, this claim - Generated/ignored: Godot import metadata
Contracts and data
ContentId: canonical lowercase UUID text persisted with schema-owned contentEntityId: positive session-local integer, never a persisted content/server identityWowGuid: opaque high/low unsigned 32-bit words preserving wire bitsServerEntryId: positive integer plus non-empty adapter/table namespace- Migration: additive types only; no existing persisted data changes
Dependencies
- Requires: M01 coordinate/focus seams through
77cd17a - Blocks: Content Project schemas, server adapters, network entity mapping and gameplay registry
- External state: no dependency or proprietary input
Verification
- Commands: identity contract/boundary verifier, dependency search, coordination/documentation gates and headless project load
- Fixtures: valid/invalid UUIDs, session IDs, full unsigned GUID words and duplicate numeric server entries in different namespaces
- Fidelity evidence: GUID words remain opaque and lossless until build-12340 packet fixtures establish semantic decomposition
- Performance budget: constant-time scalar/string validation outside frame loops
Documentation deliverables
- Inline public API docs: every value and validation/equality method
- Module specification: persistence, ownership, namespace mapping and recovery
- Data-flow diagram: authored/runtime/wire/server identities into adapters
- State/sequence diagrams: lifecycle diagram for content/session/wire/server identity
- ADR: namespace separation and UUID persistence decision
Simplicity and naming
- Important names introduced:
ContentId,EntityId,WowGuid,ServerEntryId - Simplest considered solution: four independent values with explicit fields
- Rejected complexity/abstractions: generic ID base class, registry service, UUID generator and speculative GUID high-type enum
- Unavoidable complexity and justification: server entry namespace and split GUID words prevent collisions and signed 64-bit loss
- Measured optimization evidence: not applicable
Status
- State: active
- Done: identity semantics and package boundary selected
- Next: implement values, verifier, ADR and module specification
- Blocked by: