From d68786355cd1d6b1453088d83b6f03d34d943857 Mon Sep 17 00:00:00 2001 From: sindoring Date: Mon, 13 Jul 2026 16:05:55 +0400 Subject: [PATCH] docs(M01): claim domain identity contracts Work-Package: M01-FND-DOMAIN-IDENTITIES-001 Agent: sindo-main-codex --- .../claims/M01-FND-DOMAIN-IDENTITIES-001.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 coordination/claims/M01-FND-DOMAIN-IDENTITIES-001.md diff --git a/coordination/claims/M01-FND-DOMAIN-IDENTITIES-001.md b/coordination/claims/M01-FND-DOMAIN-IDENTITIES-001.md new file mode 100644 index 0000000..6a74e51 --- /dev/null +++ b/coordination/claims/M01-FND-DOMAIN-IDENTITIES-001.md @@ -0,0 +1,81 @@ +# 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 content +- `EntityId`: positive session-local integer, never a persisted content/server identity +- `WowGuid`: opaque high/low unsigned 32-bit words preserving wire bits +- `ServerEntryId`: 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: