Axis 6: Templates
OSCAL Catalog Template
Draft
The GCBoK defines German compliance taxonomies as OSCAL catalogs - a market novelty:
oscal_catalog:
groups:
- id: "gobdControls"
title: "GoBD - Nachvollziehbarkeit"
controls:
- id: "GOBD-01"
title: "Progressive Navigation"
description: "Jeden Geschäftsvorfall rückwärts verfolgbar"
- id: "bsiControls"
title: "BSI IT-Grundschutz Module"
controls:
- id: "APP.3.1.A1"
title: "Datensicherung"
- id: "dsgvoControls"
title: "DSGVO Anförderungen"
controls:
- id: "DSGVO-Art.17"
title: "Recht auf Vergessenwerden"
OPA Policy Template
Draft
Example of a Rego policy for document validation:
package gitcover.compliance
deny[msg] {
input.class == "INVOICE"
not input.prev_sha256
msg := "INVOICE muss prev-hash referenzieren"
}
deny[msg] {
input.class == "PAYMENT"
not input.gpg_fingerprint
msg := "PAYMENT muss GPG-signiert sein"
}
allow {
count(deny) == 0
}
V7GUID Schema
Draft
The canonical V7GUID metadata schema:
{
"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"
}
classis one ofPERSON | INVOICE | PAYMENT | CONTRACT | ...;prev_sha256isnullfor the genesis document.
Compliance Depth → V7GUID Schema Tiering
Depending on the integration depth of the Git repository and the compliance requirement, different V7GUID JSON schemas are needed. The GCBoK defines schema tiering (a tiered model) that is linked to VariantId, kind and status:
| Tier | Compliance Requirement | Required Schema Fields | VariantId |
kind |
status |
|---|---|---|---|---|---|
| T1 | GoBD/AO only (Minimal) | v7guid, class, sha256, prev_sha256, gpg_fingerprint, timestamp_iso, gobd_periode |
10 (10-year retention §147 AO) |
INVOICE, RECEIPT, CONTRACT |
ACTIVE |
| T2 | PII / GDPR | T1 + tenant_id, org_unit_id, data_category (Art. 9 DSGVO), retention_legal_basis |
11 (GDPR protection level) |
PERSON, HR_DATA |
ACTIVE |
| T3 | NIS2 (Critical Infrastructures) | T2 + risk_level, incident_reporting_obligation, supply_chain_tier |
12 (NIS2 risk class) |
INFRASTRUCTURE, LOG_DATA |
ACTIVE |
| T4 | ISO 27001 (Full) | T3 + control_id (ISO 27001 Annex A), asset_classification, treatment_plan_ref |
13 (IFRS/HGB + ISO) |
POLICY, AUDIT_EVIDENCE |
ACTIVE |
Principle: “In the end, only Git repos remain” — the fallback for reviews/audits is code artifacts + .gitcover registries/dictionaries in JSON/JSONL format. The HTML audit package is only presentation; the forensics is the Git repo (see Procedures: Audit Readiness and derivative gcbok-audit-evidence-docs/docs/02-audit-website-als-pruefungsartefakt).
The schema files are stored versioned in the .gitcover/schemas/ of the TOP repo and are made resolvable via others.json.
DMS Container Template
The .gc.zip container for GCDMS (scope depends on use case):
document.gc.zip
├── document.gc.md # Metadaten (SHA-256 des Ur-Dokuments, docUid, v7guid, Taxonomie)
├── document.gc.sig # GPG-Signatur des Manifests
├── document.pdf # Originaldokument (Urdokument)
├── document.json # Maschinenlesbare Extrakte
├── document.xml # Maschinenlesbare Extrakte (z.B. X-Rechnung)
└── attachments/ # Anhänge
Order in the container: The manifest (document.gc.md) comes first and carries the SHA-256 of the original document; the entries follow deterministically (manifest, signature, original document, extracts, attachments). This makes the container readable without a registry while remaining bound to the DMS object_id (= sidecar docUid).
Format Selection Depending on Use Case
| Format | Use |
|---|---|
.gc.json |
Machine-readable, OPA policies, OSCAL export |
.gc.md |
Hyperlinks, human-readable, Git web UI |
.gc.yaml |
Configuration file, human-editable |
GitCover Sidecar Template
Canonical sidecar (*.gc.md) for a digital original document. Schema: https://gitcover.org/schemas/v7g-sidecar-2.0.schema.json; the instance metadata follow record-metadata-1.0.schema.json (ISO 15489).
DocID =
uuidv7(instance identifier) vs.v7guid(class/context identifier). Both are maintained in the sidecar and linked viacomposite_key({v7guid}:{uuidv7}). Minimum content:sha256of the original document.
# GitCover Sidecar - {original_filename}
**SHA-256:** `{sha256}`
**Tenant:** {tenant}
**Kategorie:** {category}
**Sphäre:** {sphere}
**Tags:** {tags}
```json
{
"$schema": "https://gitcover.org/schemas/v7g-sidecar-2.0.schema.json",
"docUid": "{uuidv7}",
"sha256": "{sha256}",
"title": "{original_filename}",
"original_filename": "{original_filename}",
"locations": [
{ "unc_path": "./{tenant}/{path}", "from": "{YYMMDD}", "to": null, "note": "Primärspeicherort" }
],
"v7g_taxonomy": [
{ "v7guid": "{v7guid}", "taxonomy": "{tenant}/{taxonomy}", "valid_from": "{YYMMDD}", "valid_to": null }
],
"gcpn": { "prima_nota_ref": null, "journal_entry_ref": null },
"obsolescence": { "status": "active", "superseded_by": null, "last_checked_at": "{ts}", "last_checked_by": "{user}" },
"verification": { "verified_at": "{ts}", "verified_by": "auto", "method": "sha256_file", "intact": true },
"tags": ["{tag}"],
"sphere": "{sphere}"
}
```
DocID assignment: If the document is newly added to the DMS, the sidecar tool generates a UUIDv7 from a timestamp argument as the DocID (uuidV7). The default source is the file mtime; if the filename or content provides a business date, that date is used (see Axis 5: Procedures).