Eje 2: Conceptos

V7GUID - GUID de versión 7

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 (basado en tiempo, ordenable), ampliado con una clasificación de clases específica de GitCover.

Estructura

Segmento Bits Rango Significado
timestamp_ms 48 Base UUIDv7 RFC 4122 Milisegundos desde Unix-Epoch (ordenable)
version 4 Base UUIDv7 RFC 4122 Fijo: 0111 (UUIDv7)
rand_a 12 Base UUIDv7 RFC 4122 Vector determinista para diccionarios Tenant/Doc/Class/Action de GitCover (definido en el repo .gitcover de TOP)
variant 2 Base UUIDv7 RFC 4122 Fijo: 10 (RFC 4122)
repository_id 12 Extensión GitCover Ámbito Repo/Tenant (de RFC rand_a)
class (L1–L6 + campos identificadores ampliados) 62 Extensión GitCover Carga útil de GitCover asignada de forma determinista (jerarquía de 6 niveles + campos identificadores ampliados para tipificación de cumplimiento, de RFC rand_b)

Propósito: Vinculación determinista y ordenable de comprobantes en una cadena de comprobantes. Permite la reconstruibilidad temporal/versionada (GoBD: adecuación temporal) sin una base de datos de secuencia central.

Base temporal: GMT/UTC (regla normativa)

Las marcas de tiempo de 48 bits de todos los V7GUID y uuidV7 deben generarse e interpretarse siempre sobre la base de GMT/UTC (offset 0) — nunca sobre la base de una zona horaria local (CEST, CET, etc.):

flowchart LR GEN["Generierung
uuidV7 / V7GUID"] -->|"48-Bit-Timestamp
immer UTC (GMT+0)"| GUID["GUID
zeitzone-neutral"] GUID -->|"lesbar als
ISO-8601 UTC"| APP["App / Verwendung"] APP -->|"lokale Umrechnung
z.B. Europe/Berlin (MESZ)"| UI["Zeitmarke in App
z.B. Zeiterfassung Mitarbeiter"] style GEN fill:#c8e6c9 style GUID fill:#bbdefb style APP fill:#ffe0b2 style UI fill:#f8bbd0

Justificación:

Regla de reconocimiento: Al decodificar un 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 app, nunca en la base del identificador.

Norma e implementación: El principio V7GUID (jerarquía de 6 niveles en bits GUID, rangos de bits fijos, búsqueda O(1), referencias cross-repo) es parte de la solicitud de patente 10 2025 003 091.6. La asignación canónica de bits (offsets/anchos/rangos de valores exactos por segmento) se lleva de forma normativa en la especificación de protocolo specs/v7guid/ — véase allí 00_gesamtkarte.md. GCBoK representa esta norma; en caso de divergencias, prevalece la especificación.

Class-Identifier - Registro de segmentos

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

Jerarquía de negocio (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 anclaje de unidad organizativa para la responsabilidad de PII en dos niveles (tenant legal + organizativo PMO/Department, véase Técnicas: Git como IdP
L3 Category 4 15 categories.json Categoría (p. ej. 12 Service, 14 DocSigning; 15 = sentinel Custom/TenantDefined)
L4 SubCategory 4 15 subcategories.json Subcategoría (p. ej. 14 prestación, 13 posición de precio)
L5 ProcessType 4 15 processtypes.json Tipo de proceso (p. ej. 13 factura electrónica, 14 Gobd, 11 Agentic; 15 = sentinel Custom/TenantDefined)
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.

Jerarquía de negocio como ontología

Los seis diccionarios (Entity hasta Instance) forman juntos la ontología de GitCover: un vocabulario compartido y legible por máquina de la organización — entidades (p. ej. Business Entity, Business Partner), sus relaciones, reglas y clasificaciones. Así, personas, validadores y agentes de IA hablan el mismo idioma: un término como «factura electrónica» (ProcessType 13) significa lo mismo en cada repo, cada esquema y cada política.

La ontología está realizada en GitCover de forma nativa de Git — no como una base de datos de grafos en una plataforma:

Característica Ontología de GitCover Ontologías de plataforma (p. ej. Microsoft «Fabric IQ», allí «Ontology» como elemento en vista previa)
Ubicación Diccionarios JSON versionados en el repo .gitcover (L1–L6) + esquemas JSON Grafo central en la plataforma (OneLake, superficie de consulta GQL)
Trazabilidad La propia historia de Git («forense = repo de Git»); cada cambio es un commit Linaje dentro de la plataforma; fuera de ella no reproducible
Acceso del auditor Cada auditor reproduce la semántica con herramientas abiertas (Git, jq, validadores de esquema JSON) — No Vendor Lock-In Acceso vinculado a una cuenta de plataforma
Soberanía de cambios Gobernanza mediante revisión/merge en el repo Modelo de roles de la plataforma

Microsoft describe su capa semántica como «governed, self-service knowledge graph», que proporciona a los agentes «shared context» — el mismo espacio de problemas (contexto de agentes, términos uniformes), pero resuelto de forma ligada a la plataforma. GitCover lo resuelve de forma nativa de repo: La ontología es el acervo normativo en el repo de Git, no un servicio de un proveedor. Detalles sobre la delimitación: Glosario («Ontología») y Componentes: GCUCB, contexto de mercado.

Campos identificadores ampliados del V7GUID (tipificación de cumplimiento)

Además de la jerarquía de 6 niveles, el V7GUID lleva seis campos identificadores más que pueden asignarse de forma determinista. Son ayudas de categorización/clasificación y tipifican aspectos de cumplimiento adicionales de un comprobante. No son explícitamente identificadores de instancia de objeto — qué objeto concreto se designa lo dice únicamente el Object ID (el uuidv7 puro) del identificador dual. Muchos objetos comparten el mismo valor de campo identificador.

Segmento Bits Valor máx. (Custom) Pregunta Dimensión de cumplimiento
RepositoryId 12 4.095 ¿Dónde? Ámbito de repo/datos (TOP + hasta 4.095 repos por tenant); separación de tenants/PII
ProcessTypeId 8 255 ¿Mediante qué? Procedimiento que generó el comprobante (GoBD, EN16931, AI-Act)
GatewayId 8 255 ¿Punto de control? Punto de entrega/aprobación (cadena de comprobantes, separación de funciones)
Status 8 255 Which stages? Lifecycle bitmask (planned/approved/developed/…; O(1) filter)
Kind 8 255 Which kind? Type of activity/measure (R&D, routine, order processing …)
VariantId 6 63 ¿Variante? Contexto jurídico (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 variante, no una instancia de objeto.

Así, un único identificador codifica de forma multidimensional qué, dónde, mediante qué, a través de qué punto de control y en qué variante surgió un comprobante — verificable directamente desde el 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 de cuatro ojos) + VariantId 10 (conservación de 10 años).

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

Registro central de tenants

La TenantId de una entidad jurídica de GitCover no se deriva de un rango de números asignado, sino de forma determinista a partir de los primeros 48 bits (marca de tiempo en milisegundos) del UUIDv7, que se genera al crear por primera vez el directorio TOP del tenant. El identificador de tenant queda así vinculado al tiempo, es ordenable y unívoco sin una base de datos de secuencia central — siempre que no surjan dos tenants en el mismo instante en milisegundos.

Fuente temporal de libre elección: La marca 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 el UUIDv7 a partir de un momento explícitamente predeterminado — por ejemplo, la fecha de constitución de la entidad jurídica o una fecha de referencia elegida arbitrariamente de otro modo (cf. CustomEpoch/Timestamp en el TenantContext). Así, el identificador de tenant puede vincularse a una fecha relevante desde el punto de vista funcional; la unicidad se mantiene siempre que el instante en milisegundos elegido no colisione entre tenants (otra razón para el registro voluntario).

Dado que los repos de GitCover se referencian entre sí mediante travesías others.json (resolución cross-repo de rutas físicas y lógicas), un identificador de tenant debe poder resolverse de forma unívoca en el uso entre repos. Por eso existe un registro central y voluntario.

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

Estado Significado Interoperabilidad
Registrado públicamente El UUIDv7 del tenant está incluido en el registro central (nombre corto, entidad jurídica, marca de tiempo, estado) Resoluble sin colisiones; vinculante para travesías others.json entre repos
Privado / no registrado El UUIDv7 del tenant existe localmente, pero no está incluido en el registro Admisible para uso interno; riesgo de colisión en travesías entre repos (sin protección contra conflictos, sin resolución garantizada)

Instancia canónica del registro: El registro operativo de tenants se lleva en el respectivo tenant root bajo .gitcover/access/TENANT_GUID_REGISTER.md (nombre corto · entidad jurídica · UUIDv7 · marca de tiempo · estado). Es la lista determinante de tenants registrados.

Cadenas de comprobantes (Evidence Chains)

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

  1. Comprobante B1 - V7GUID: ...-PERSON-..., SHA256: 3f2a1c..., prev: -
  2. Comprobante B2 - V7GUID: ...-INVOICE-..., SHA256: 7d4e2f..., prev: 3f2a1c...
  3. Comprobante B3 - V7GUID: ...-PAYMENT-..., SHA256: 1b8f90..., prev: 7d4e2f...

Cada comprobante referencia el hash SHA-256 de su predecesor. Toda la cadena queda así anclada criptográficamente y protegida contra manipulaciones.

Esquema de metadatos (.v7g.md)

v7guid: "0197a3b2-f3c0-7b00-8001-000000000042"
class: INVOICE
sha256: "7d4e2f..."
prev_sha256: "3f2a1c..."
gpg_fingerprint: "ABCD1234..."
timestamp_iso: "2026-06-14T11:18:00+02:00"
gobd_periode: "FY2026"

Originales binarios y sidecars V7GUID

Los comprobantes que existen como archivo binario (PDF, DOCX, EML, imagen) no pueden llevar metadatos internamente en Git. Se insertan en la cadena de comprobantes mediante un sidecar V7GUID (*.v7g.md junto al original): el sidecar contiene al menos el sha256 del original, así como el DocID (uuidv7, identificador de instancia) y el v7guid categorizado (contexto). El proceso y la asignación de DocID a partir de la marca de tiempo del archivo se describen en Eje 5: Procedimientos; para el registro de tenant correspondiente, véase Registro central de tenants arriba.

Contenedor de expediente (.gcpn.md) — nivel de proceso de la cadena de comprobantes

Junto a la catalogación por sidecar aparece el contenedor GCPN para expedientes de varias etapas (p. ej. la creación y firma de un GVB): un .gcpn.md junto al Referenced-Doc (<Referenced-Doc-Basisname>.gcpn.md), que acompaña al proceso como documento original de proceso independiente — no como sidecar del Referenced-Doc. Conceptualmente:

Un Referenced-Doc firmado se vuelve después inmutable (GoBD: inmutabilidad); el contenedor permanece mutable y sigue documentando el proceso — la historia de Git es la prueba.

GCPN como protocolo — el Act como transición de estado

Un GCPN es una forma de protocolo. En el GCBoK, con Compliance como tema principal, se habla a menudo de juntas de socios con resoluciones que se resumen en un GVB:

Término Significado como protocolo Significado de estado
GVB el protocolo de la junta (documento resumen) puede contener muchos Acts (resoluciones)
Act la resolución individual describe el cambio entre dos estados (antes → después)
GCPN el protocolo de proceso del expediente (creación, firma) documenta las transiciones de estado a prueba de auditoría (eventos como flags, referenced_doc.status, máscara de bits events_result)

Esta doble interpretación (protocolo + transición de estado) es el núcleo de la capacidad de prueba: cada Act se describe de forma determinista — el estado anterior es demostrable mediante la cadena SHA-256 (sidecars, Referenced-Doc), el estado posterior mediante la expresión de flags y el artefacto incrustado. La historia de Git del contenedor proporciona la cronología. Procedimiento y verificación: Eje 3 (GCPN) y Firma digital (DS02–DS05).

Cryptographic Evidence Chain

La Cryptographic Evidence Chain combina tres primitivas criptográficas:

  1. Hash de commit de Git - inmutabilidad del estado del repositorio
  2. Firma GPG - identidad del actor (¿quién ha decidido?)
  3. V7GUID - direccionamiento determinista (qué y cuándo)

Así surge una cadena que está tanto anclada criptográficamente como ordenable temporalmente — la base para comprobantes de cumplimiento a prueba de auditoría.

Recovery-Fallback: Al final solo quedan repos de Git En caso de catástrofe, pérdida de infraestructura o auditoría 10 años después, el último conjunto de artefactos funcional es el propio repositorio de Git (o git bundle/exportación ZIP). Contiene: artefactos de código, registros/diccionarios .gitcover/ (JSON/JSONL), llaveros GPG (.gitcover/keys/), cadenas de comprobantes V7GUID. No se requiere base de datos, ni servidor web, ni servicios en ejecución. La forense es el repo de Git — los paquetes de verificación HTML son solo derivados de presentación (véase Procedimientos: Audit-Readiness).

Bifurcación determinista

La bifurcación determinista permite vincular cadenas de comprobantes a estructuras de repositorios de Git. Mediante la combinación de:

surgen estructuras de cumplimiento reproducibles y aptas para auditoría — sin mantenimiento manual posterior.

Véase también: Las primitivas técnicas (GPG, uuidV7, OSCAL) se profundizan en Eje 4: Técnicas.