Namespace Prefix and the V7GUID Identity Model

Architecture decision of 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 with a shortened prefix (Discovery.*)?

Background: In dynamic collaboration between developers, AI agents, and MCP services that all interact dynamically, "absolute" namespaces could blur boundaries — 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 the tenant or repo level (organization level), so that uniqueness holds between repos in GCEP, independent of DLL versions or process instances.

The V7GUID Identity Model

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

Tenant Identity (Bits 0–47)

The tenant identity is derived 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 bit, 0–4095)

Addresses a repository within a tenant context. Each tenant has exactly one TOP repository (id=1) and up to 4,095 further ones. Uniqueness is provided by the repository_id, not by the C# namespace.

kind (Bits 114–121, 8 bit) — 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, a pure uuidv7). Together they 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 foreseen in the V7GUID model. For the identity and typing model it is neutral:

Reasons for Retention

Argument Rationale
Brand consistency All 18 solutions in Development/Solutions/ use the prefix (save for historical exceptions such as GCP/GCEP). For the OSS release under git.gitcover.org/GCC-OSS/<repo>, GitCover.* signals provenance.
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 provenance 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 a naming convention — not as an identity medium. Identity and type uniqueness are provided 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