Namespace Prefix and V7GUID Identity Model

Architecture decision dated 2026-07-26. Documented in GitCover.Discovery/plans/ADR-001_namespace_prefix_gitcover.md.

Initial Question

Should the long C# namespace prefix GitCover.Discovery be retained for a later OSS release, or should work proceed in a shortened form without the prefix (Discovery.*)?

Background: In dynamic collaboration between developers, AI Agents and MCP Services, all of which work dynamically with one another, "absolute" namespaces could blur the boundaries - because the V7GUID concept uses the first 48 bits for the tenant ID, and types are registered at least at the tool level, but can be re-defined at tenant or repo level (organization level), so that uniqueness prevails between repos in GCEP, regardless of DLL versions or process instances.

The V7GUID Identity Model

The V7GUID concept defines identity and typing entirely at the bit level:

Tenant Identity (bits 0–47)

The tenant identity derives from the 48-bit timestamp of the founding UUIDv7. It is deterministically encoded in the GUID - the C# namespace carries no additional identity information.

repository_id (bits 52–63, 12 bits, 0–4095)

Addresses a repository within a tenant context. Per tenant, there is exactly one TOP repository (id=1) and up to 4,095 more. Uniqueness is established by the repository_id, not by the C# namespace.

kind (bits 114–121, 8 bits) - central normative registry

Standardizes the kind of activity across repos and replaces solution-specific enums (RepoKind, ArtifactKind in GitCover.Discovery; Prozesstyp in GCP.Portfolio; Type in GCPN). The central kinds.json is maintained in the OSS Normative Root (git.gitcover.org/OSS/TOP/.gitcover/dictionaries/).

Dual Identifier (classification, uuid)

Separates the Class Identifier (what/type, deterministically encoded in bits) and the Object ID (which concrete object, pure uuidv7). Together, both form the Composite Key - the namespace is not part of it.

Why the Namespace Prefix Is Neutral

The C# namespace prefix GitCover. suggests an "absolute identity" that is not provided for in the V7GUID model. It is neutral for the identity and typing model:

Reasons for Retention

Argument Rationale
Brand consistency All 18 solutions in Development/Solutions/ use the prefix (apart from historical exceptions such as GCP/GCEP). For the OSS release under git.gitcover.org/GCC-OSS/<repo>, GitCover.* signals the origin.
NuGet collision freedom A plain Discovery.* easily collides with third-party packages; GitCover.Discovery is globally unique.
License visibility The IPLicensing model (Open Core, Field-of-Use taxonomy) uses the namespace as a marker for origin and license affiliation.
Solution ecosystem consistency Cross-solution bundles (GCEP Federation, MCP Hub) currently reference GitCover.Core, GitCover.V7Guid - a shortened namespace breaks this chain.

Consequence for Dynamic Collaboration

The C# namespace is not an identity medium for:

Conclusion

The C# namespace prefix GitCover. is retained as an identifier convention - not as an identity medium. Identity and type uniqueness are established by the V7GUID model (tenant ID in bits 0–47, repository_id in bits 52–63, kind registry in bits 114–121). The prefix is neutral for the dynamic collaboration between developers, AI Agents and MCP Services - it carries no identity information that is not already deterministically encoded in the V7GUID.

Sources