Eje 2: Conceptos

V7GUID - Version-7-GUID

V7GUID (también: Categorized UUIDv7 Identifier) es un esquema de categorización para identificadores en artefactos de GitCover, basado en UUID versión 7 compatible con RFC-4122 (basada en tiempo, ordenable), extendido con una clasificación de clases específica de GitCover.

Estructura

Segmento Bits Rango Significado
timestamp_ms 48 Base RFC 4122 UUIDv7 Milisegundos desde la época Unix (ordenable)
version 4 Base RFC 4122 UUIDv7 Fijo: 0111 (UUIDv7)
rand_a 12 Base RFC 4122 UUIDv7 Vector determinista para diccionarios de Tenant/Doc/Class/Action de GitCover (definido en el repo .gitcover del TOP)
variant 2 Base RFC 4122 UUIDv7 Fijo: 10 (RFC 4122)
repository_id 12 Extensión GitCover Alcance de repo/tenant (desde rand_a de RFC)
class (L1–L6 + campos de identificación extendidos) 62 Extensión GitCover Carga útil determinista de GitCover (jerarquía de 6 niveles + campos de identificación extendidos para tipificación de cumplimiento, desde rand_b de RFC)

Propósito: Vinculación determinista y ordenable de evidencias en una cadena de evidencias. Permite la reconstruibilidad temporal/versionada (GoBD: oportunidad temporal) sin una base de datos de secuencias centralizada.

Base temporal: GMT/UTC (regla normativa)

Los sellos de tiempo de 48 bits de todas las V7GUID y uuidV7 deben generarse e interpretarse siempre sobre la base GMT/UTC (desplazamiento 0) - nunca sobre la base de una zona horaria local (CEST, CET, etc.):

flowchart LR GEN["Generación
uuidV7 / V7GUID"] -->|"Sello de 48 bits
siempre UTC (GMT+0)"| GUID["GUID
neutra en zona horaria"] GUID -->|"legible como
ISO-8601 UTC"| APP["App / Uso"] APP -->|"conversión local
p. ej. Europe/Berlin (CEST)"| UI["Marca temporal en App
p. ej. registro de horas de empleados"] style GEN fill:#c8e6c9 style GUID fill:#bbdefb style APP fill:#ffe0b2 style UI fill:#f8bbd0

Justificación:

Regla de reconocimiento: Al decodificar una V7GUID/uuidV7, el valor de 48 bits extraído debe leerse siempre como UTC. La visualización/procesamiento posterior en hora local se realiza exclusivamente en la capa de presentación de la aplicación, nunca en la base del identificador.

Norma e implementación: El principio de V7GUID (jerarquía de 6 niveles en bits de GUID, rangos de bits fijos, búsqueda O(1), referencias entre repos) es parte de la solicitud de patente 10 2025 003 091.6. La asignación de bits canónica (desplazamientos/anchos/rangos de valores exactos por segmento) se gestiona normativamente en la especificación de protocolo specs/v7guid/ - ver allí 00_gesamtkarte.md. GCBoK representa esta norma; en caso de desviaciones, prevalece la especificación.

Class-Identifier - Registro de segmentos

El Class-Identifier de GitCover (el segmento class de la V7GUID) se construye de forma determinista a partir de una jerarquía empresarial de seis niveles. Cada nivel tiene 4 bits de ancho (rango de valores 015, es decir, 16 posibles valores por nivel) y se asigna globalmente mediante un diccionario normativo en el repo .gitcover del directorio TOP. Además, la V7GUID lleva varios campos de identificación extendidos. El siguiente registro enumera todos los segmentos agrupados con su valor máximo posible y constituye la referencia vinculante para la interoperabilidad entre repos de GitCover.

Jerarquía empresarial (clasificación determinista)

# Segmento Bits Valor máx. Diccionario Significado
L1 Entity 4 15 entities.json Entidad de negocio (p. ej. 1 BusinessEntities, 2 BusinessPartners)
L2 Department 4 15 departments.json Departamento/área (p. ej. 14 Portfolio, 9 IT) — sirve como ancla de unidad organizativa para la responsabilidad PII de dos niveles (tenant legal + PMO/Departamento organizativo, ver Técnicas: Git como IdP
L3 Category 4 15 categories.json Categoría (p. ej. 15 Service, 14 DocSigning)
L4 SubCategory 4 15 subcategories.json Subcategoría (p. ej. 14 Leistung, 13 Preisposition)
L5 ProcessType 4 15 processtypes.json Tipo de proceso (p. ej. 13 ERechnung, 14 Gobd, 15 Agentic)
L6 Instance 4 15 instances.json Instancia (p. ej. 1 Default, 2 Primary)

La notación de cadena de clasificación combina los seis niveles en L1_L2_L3_L4_L5_L6 - p. ej. 1_14_12_14_13_1 (posición de precio de portfolio). El rango de valores 16⁶ = 16.777.216 cubre todas las clasificaciones deterministas.

Campos de identificación extendidos de la V7GUID (tipificación de cumplimiento)

Además de la jerarquía de 6 niveles, la V7GUID lleva cuatro campos de identificación adicionales asignables de forma determinista. Son ayudas de categorización/clasificación y tipifican aspectos adicionales de cumplimiento de una evidencia. Son explícitamente identificadores de instancia de objeto - qué objeto concreto se refiere lo indica únicamente el Object ID (el uuidv7 puro) del identificador dual. Muchos objetos comparten el mismo valor de campo de identificación.

Segmento Bits Valor máx. (Custom) Pregunta Dimensión de cumplimiento
RepositoryId 12 4.095 ¿Dónde? Alcance de repo/datos (TOP + hasta 4.095 repos por tenant); separación de mandatos/PII
ProcessTypeId 8 255 ¿Por medio de qué? Proceso que generó la evidencia (GoBD, EN16931, AI-Act)
GatewayId 16 65.535 ¿Punto de control? Punto de transferencia/aprobación (cadena de evidencias, separación de funciones)
VariantId 14 16.383 ¿Variación? Contexto legal (conservación §147 AO, nivel de protección RGPD, IFRS/HGB)

Nota: VariantId se llamaba antes InstanceId; el nombre se cambió porque el campo tipifica una clase de variación, no una instancia de objeto.

De este modo, un único identificador codifica multidimensionalmente qué, dónde, por medio de qué, a través de qué punto de control y en qué variación se generó una evidencia - verificable directamente desde la GUID (O(1), sin consulta a base de datos). Ejemplo de una factura electrónica verificada: 1_14_12_14_13_1 + RepositoryId 3 (DMS) + ProcessTypeId 12 (verificación EN16931) + GatewayId 220 (aprobación a cuatro ojos) + VariantId 10 (conservación de 10 años).

Asignación: Los niveles de 4 bits L1–L6 son canónicos a nivel global y se coordinan exclusivamente mediante los diccionarios en el repo .gitcover del TOP (intercambio vía GCEP/GCUCB). Para los campos de identificación extendidos se aplican diccionarios propios (repository_ids.json, processtype_ids.json, gateway_ids.json, variant_ids.json); el valor más alto se reserva como Custom/TenantDefined. Los códigos no asignados permanecen libres para una asignación global futura. Referencia normativa: specs/v7guid/50_erweiterte_kennfelder_compliance.md.

Registro central de tenants

La TenantId de una entidad legal de GitCover no se deriva de un rango de números asignado, sino que se genera de forma determinista a partir de los primeros 48 bits (sello de tiempo en milisegundos) de la UUIDv7, que se crea en el primer momento de creación del directorio TOP del tenant. El identificador de tenant es, por tanto, ligado al tiempo, ordenable e inequívoco sin una base de datos de secuencias centralizada - siempre que no se creen dos tenants en el mismo instante de milisegundos.

Fuente de tiempo libremente elegible: El sello de tiempo de 48 bits no tiene que ser el momento real de creación. En lugar de la hora del sistema (DateTime.Now), cada tenant puede generar la UUIDv7 a partir de un momento explícitamente predefinido - por ejemplo, la fecha de fundación de la entidad legal o una fecha de referencia elegida de cualquier otra manera (ver CustomEpoch/Timestamp en TenantContext). De este modo, el identificador de tenant puede vincularse a una fecha de relevancia profesional; la inequívocidad se mantiene siempre que el punto de tiempo en milisegundos elegido no colisione entre tenants (otro motivo para el registro voluntario).

Dado que los repos de GitCover se refieren entre sí mediante recorridos de others.json (resolución entre repos de rutas físicas y lógicas), un identificador de tenant debe ser resoluble de forma inequívoca en un uso entre repos. Por eso existe un registro central voluntario.

Modelo de registro (voluntario, sin rangos de números)

Estado Significado Interoperabilidad
Registrado públicamente La UUIDv7 del tenant está registrada en el registro central (nombre corto, entidad legal, sello de tiempo, estado) Resoluble sin colisiones; vinculante para recorridos de others.json entre repos
Privado / no registrado La UUIDv7 del tenant existe localmente, pero no está en el registro Admisible para uso interno; riesgo de colisión en recorridos entre repos (sin protección de conflictos, sin resolución garantizada)

Instancia canónica del registro: El registro operativo de tenants se gestiona en la raíz del tenant correspondiente bajo .gitcover/access/TENANT_GUID_REGISTER.md (nombre corto · entidad legal · UUIDv7 · sello de tiempo · estado). Es la lista determinante de tenants registrados.

Cadenas de evidencias (Evidence Chains)

Una cadena de evidencias encadena artefactos de cumplimiento mediante referencias prev-hash:

  1. Evidencia B1 - V7GUID: ...-PERSON-..., SHA256: 3f2a1c..., prev: -
  2. Evidencia B2 - V7GUID: ...-INVOICE-..., SHA256: 7d4e2f..., prev: