Eje 2: Conceptos

V7GUID - Version-7-GUID

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

Estructura

Segmento Bits Alcance Significado
timestamp_ms 48 Base UUIDv7 RFC 4122 Milisegundos desde la época Unix (ordenable)
version 4 Base UUIDv7 RFC 4122 Fijo: 0111 (UUIDv7)
rand_a 12 Base UUIDv7 RFC 4122 Vector determinista para los diccionarios de Tenant/Doc/Class/Action de GitCover (definidos en el repo .gitcover de TOP)
variant 2 Base UUIDv7 RFC 4122 Fijo: 10 (RFC 4122)
repository_id 12 Extensión GitCover Ámbito de repo/Tenant (de RFC rand_a)
class (L1–L6 + campos de caracterización ampliados) 62 Extensión GitCover Carga útil de GitCover asignada de forma determinista (jerarquía de 6 niveles + campos de caracterización ampliados para la 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: oportunidad temporal) sin una base de datos de secuencias centralizada.

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 GMT/UTC (offset 0) - nunca sobre la base de una zona horaria local (MESZ, MEZ, 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 detección: al decodificar un V7GUID/uuidV7, el valor de 48 bits extraído debe leerse siempre como UTC. La visualización/el 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 los bits de la GUID, rangos de bits fijos, lookup O(1), referencias entre repos) forma 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 mantiene con carácter normativo en la especificación del protocolo specs/v7guid/ - véase allí 00_gesamtkarte.md. El GCBoK representa esta norma; en caso de desviaciones rige 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 de negocio de seis niveles. Cada nivel tiene 4 bits de ancho (rango de valores 0–15, es decir, 16 valores posibles 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 caracterización 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 GitCover.

Jerarquía de negocio (clasificación determinista)

# Segmento Bits Max-Value Dictionary 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 de ancla de Org-Unit para la responsabilidad PII de dos niveles (legal Tenant + 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 Leistung, 13 Preisposition)
L5 ProcessType 4 15 processtypes.json Tipo de proceso (p. ej., 13 ERechnung, 14 Gobd, 11 Agentic; 15 = Sentinel Custom/TenantDefined)
L6 Instance 4 15 instances.json Instancia (p. ej., 1 Default, 2 Primary)

La notación Classification-String 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 (de Entity a Instance) forman en conjunto la GitCover-Ontología: un vocabulario compartido y legible por máquina de la organización — entidades (p. ej. Business Entity, Business Partner), sus relaciones, reglas y clasificaciones. Con ello, personas, validadores y agentes de IA hablan el mismo idioma: un término como „ERechnung" (ProcessType 13) significa lo mismo en cada repo, en cada esquema y en cada política.

En GitCover, la ontología está implementada de forma nativa en Git — no como base de datos de grafos en una plataforma:

Característica GitCover-Ontología Ontologías de plataforma (p. ej. Microsoft „Fabric IQ", allí „Ontology" como Preview-Item)
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 („Forensik = Git-Repo"); cada cambio es un commit Lineage dentro de la plataforma; fuera de ella no reproducible
Acceso de los auditores Cada auditor reproduce la semántica con herramientas abiertas (Git, jq, validadores de JSON Schema) — No Vendor Lock-In Acceso vinculado a una cuenta de la plataforma
Soberanía sobre los cambios Gobernanza mediante review/merge en el repo Modelo de roles de la plataforma

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

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

Además de la jerarquía de 6 niveles, la V7GUID incorpora seis campos extendidos más, asignables de forma determinista. Son ayudantes de categorización/clasificación y tipifican aspectos de cumplimiento adicionales de un documento. Explícitamente no son identificadores de instancia de objeto - a qué objeto concreto se refiere lo dice únicamente el Object ID (el uuidv7 puro) del identificador dual. Muchos objetos comparten el mismo valor de campo.

Segmento Bits Valor máximo (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 documento (GoBD, EN16931, AI-Act)
GatewayId 8 255 ¿Punto de control? Punto de entrega/aprobación (cadena de documentos, segregación de funciones)
Status 8 255 ¿Qué etapas? Máscara de bits del ciclo de vida (planificado/aprobado/desarrollado/…; filtro O(1))
Kind 8 255 ¿Qué tipo? Tipo de actividad/medida (I+D, rutina, tramitación de pedidos …)
VariantId 6 63 ¿Variante? Contexto jurídico (conservación §147 AO, nivel de protección DSGVO, 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. GatewayId/VariantId se redujeron de 16/14 a 8/6 bits con ADR-002 para dejar sitio a status y kind - véase specs/v7guid/ADR-002_layout_v2_kind.md.

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 se originó un documento - verificable directamente a partir de la GUID (O(1), sin consulta a la 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 a nivel global y se coordinan exclusivamente a través de los diccionarios del repo TOP-.gitcover (intercambio vía GCEP/GCUCB). Para los campos extendidos se aplican diccionarios propios (repository_ids.json, processtype_ids.json, gateway_ids.json, variant_ids.json); el valor más alto de cada uno está reservado como Custom/TenantDefined. Los códigos no asignados quedan libres para una asignación global posterior. Referencia normativa: specs/v7guid/50_erweiterte_kennfelder_compliance.md.

Campos de caracterización ampliados de la V7GUID (tipificación de cumplimiento)

Además de la jerarquía de 6 niveles, la V7GUID lleva otros seis campos de caracterización asignables de forma determinista. Son auxiliares de categorización/clasificación y tipifican aspectos de cumplimiento adicionales de un comprobante. Expresamente no son identificadores de instancia de objeto - qué objeto concreto se entiende lo dice únicamente el Object ID (el uuidv7 puro) del identificador dual. Muchos objetos comparten el mismo valor de campo de caracterización.

Segmento Bits Max-Value (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 clientes/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, segregación de funciones)
Status 8 255 ¿Qué etapas? Máscara de bits del ciclo de vida (planificado/aprobado/desarrollado/…; filtro O(1))
Kind 8 255 ¿Qué tipo? Tipo de actividad/medida (I+D, rutina, tramitación de pedidos …)
VariantId 6 63 ¿Modalidad? 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 modalidad, no una instancia de objeto. GatewayId/VariantId se redujeron de 16/14 a 8/6 bits con ADR-002 para dejar sitio a status y kind - véase specs/v7guid/ADR-002_layout_v2_kind.md.

Con ello, un único identificador codifica de forma multidimensional qué, dónde, mediante qué, a través de qué punto de control y en qué modalidad se originó un comprobante - 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 de 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 a través de los diccionarios del repo .gitcover de TOP (intercambio vía GCEP/GCUCB). Para los campos de caracterización ampliados rigen diccionarios propios (repository_ids.json, processtype_ids.json, gateway_ids.json, variant_ids.json); el valor más alto de cada uno está reservado como Custom/TenantDefined. Los códigos no asignados quedan 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 GitCover no se deriva de una serie numérica asignada, sino de forma determinista de los primeros 48 bits (marca de tiempo en milisegundos) de la UUIDv7 que se genera al crear por primera vez el directorio TOP del Tenant. El identificador de Tenant es así ligado al tiempo, ordenable y unívoco sin una base de datos de secuencias centralizada - mientras no surjan dos Tenants en el mismo instante de milisegundos.

Fuente de tiempo de libre elección: la marca de tiempo de 48 bits no tiene por qué 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 jurídica o cualquier otra fecha de referencia elegida (cf. CustomEpoch/Timestamp en el TenantContext). Así, el identificador de Tenant puede vincularse a una fecha con relevancia de negocio; la unicidad se mantiene mientras el instante en milisegundos elegido no colisione entre Tenants (otro motivo para el registro voluntario).

Dado que los repos GitCover se referencian 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 unívoca en el uso entre repos. Por eso existe un registro central, voluntario.

Modelo de registro (voluntario, sin rangos de numeración)

Estado Significado Interoperabilidad
Registrado públicamente la UUIDv7 del Tenant consta en el registro central (nombre corto, entidad jurídica, marca de tiempo, estado) resoluble sin colisiones; vinculante para los recorridos de others.json entre repos
Privado / no registrado la UUIDv7 del Tenant existe localmente, pero no consta en el registro admisible para uso interno; riesgo de colisión en recorridos entre repos (sin protección contra conflictos, sin resolución garantizada)

Instancia canónica del registro: el registro de Tenants operativo se mantiene en el Tenant-Root respectivo bajo .gitcover/access/TENANT_GUID_REGISTER.md (nombre corto · entidad jurídica · UUIDv7 · marca de tiempo · estado). Es la lista autoritativa de los 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 se presentan como archivo binario (PDF, DOCX, EML, imagen) no pueden llevar metadatos internamente en Git. Se incorporan a la cadena de comprobantes mediante un sidecar V7GUID (*.v7g.md junto al original): el sidecar contiene como mínimo el sha256 del original, así como la DocID (uuidv7, identificador de instancia) y la v7guid categorizada (contexto). El proceso y la asignación de la DocID a partir de la marca de tiempo del archivo se describen en Eje 5: Procedimientos; en cuanto al registro de Tenant correspondiente, véase Registro central de Tenants más arriba.

Contenedor de expedientes (.gcpn.md) — Nivel de proceso de la cadena de comprobantes

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

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

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

Un GCPN es una forma de acta. En el GCBoK, con el compliance como tema principal, se habla a menudo de asambleas de socios con acuerdos que se resumen en un GVB:

Término Interpretación como acta Interpretación como estado
GVB el acta de la asamblea (documento resumen) puede contener muchos Acts (acuerdos)
Act el acuerdo individual describe el cambio entre dos estados (antes → después)
GCPN el acta 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 (acta + transición de estado) es el núcleo de la demostrabilidad: cada Act está descrito 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 decidió?)
  3. V7GUID - Direccionamiento determinista (Qué y Cuándo)

Así se forma una cadena que está anclada criptográficamente y es ordenable temporalmente - la base para evidencias de cumplimiento a prueba de auditoría.

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

Ramificación determinista

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

se generan 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.