ED06 - GoBD Process Documentation: Mandatory Fields, Versioning, Approval

Problem

GoBD Rz. 64–91 requires process documentation - but in the SME sector it is the great exception:

Key Message

A GoBD-compliant process documentation in the Git repo means:

  1. The process documentation is a versioned Git artifact - not a Word document, but Markdown + JSON in the repo
  2. Every change is traceable - git log shows who, when, what, why (commit author, uuidV7 timestamp, diff, commit message)
  3. Approval via tags - a Git tag marks the approved state of the process documentation (e.g., vd-v1.0-2026)
  4. System changes are carried forward - during a migration, a new commit with a rationale is created; the old version remains traceable
  5. The repo itself is part of the process documentation - git log shows the process, .gitcover/schemas/ shows the data structures, Git hooks show the controls

Compliance by Design: Process documentation is not created after the fact - it emerges from the use of Git. Anyone working with Git repositories automatically documents their process through commits, diffs, and tags. The formal process documentation supplements this with the human-readable description.

What Is Process Documentation?

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD VD["Verfahrensdokumentation
(GoBD Rz. 64–91)"] VD --> V["Verfahren
(Wie wird gebucht?)"] VD --> S["Systemumgebung
(Welche Software/Hardware?)"] VD --> O["Organisation
(Wer macht was?)"] VD --> K["Kontrollen
(Wie wird geprüft?)"] VD --> D["Daten
(Welche Formate/Strukturen?)"] V --> G["Git-Repo
(Commits, Hooks)"] S --> G O --> G K --> G D --> G style VD fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style V fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style S fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style O fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style K fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style D fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style G fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
GoBD Requirement Content How Git Fulfills It
Process (Rz. 64–71) Description of the bookkeeping process git log shows every step; commit messages document the rationale
System environment (Rz. 72–76) Software, hardware, versions .gitcover/ with schemas, dictionaries; git config shows settings
Organization (Rz. 77–80) Responsibilities, roles, permissions role field per artifact; git log --author shows responsibility
Controls (Rz. 81–85) Internal controls, plausibility checks Pre-commit hooks (schema, spheres, obsolescence); post-commit hooks (index)
Data (Rz. 86–91) Data structures, formats, interfaces JSON schemas in .gitcover/schemas/; sidecars with v7g_taxonomy

Mandatory Fields of the Process Documentation

Structure in the Git Repo

ORG-1/
├── .gitcover/
│   ├── schemas/                    # Datenstrukturen (Rz. 86–91)
│   │   ├── diary-entry-1.0.schema.json
│   │   ├── v7g-sidecar-1.0.schema.json
│   │   └── timesheet-1.0.schema.json
│   ├── dictionaries/               # Klassifizierungen (Rz. 86–91)
│   │   ├── spheres.json
│   │   ├── roles.json
│   │   └── beleg-types.json
│   └── LEGAL_ENTITY.v7g.json       # Tenant-Identität
├── docs/
│   └── verfahrensdokumentation/
│       ├── README.md               # Einstieg + Übersicht
│       ├── 01-verfahren.md         # Buchführungsverfahren (Rz. 64–71)
│       ├── 02-systemumgebung.md    # Software/Hardware (Rz. 72–76)
│       ├── 03-organisation.md      # Zuständigkeiten (Rz. 77–80)
│       ├── 04-kontrollen.md        # Internen Kontrollen (Rz. 81–85)
│       └── 05-daten.md             # Datenstrukturen (Rz. 86–91)
└── .githooks/
    ├── pre-commit                  # Kontrollen (Rz. 81–85)
    └── post-commit                 # Index-Generierung

Process Documentation as a JSON Artifact

The process documentation itself is a versioned artifact with V7GUID (Class) and uuidV7 (Object ID as DocID):

{
  "$schema": "https://gitcover.org/schemas/verfahrensdoku-1.0.schema.json",
  "V7GUID": "<V7GUID-Class-aus-Registry>",
  "uuidV7": "<uuidV7-Object-mit-vorgegebener-Zeitmarke>",
  "author": "E1",
  "role": "GF",
  "tenant": "ORG-1",
  "sphere": "wirtschaftlich",
  "source": "E1",
  "version": "1.0",
  "status": "released",
  "sections": ["01-verfahren", "02-systemumgebung", "03-organisation", "04-kontrollen", "05-daten"]
}

Note: The uuidV7 is the DocID of the process documentation. The composite key V7GUID:uuidV7 serves storage organization and DB queries. No separate datetime/date field - the time is embedded in the uuidV7.

Versioning and Approval

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD E["Entwurf
Commit 1"] E --> R["Review
Commit 2 (Änderungen)"] R --> F["Freigabe
Tag: vd-v1.0-2026"] F --> P["Produktiv
Stand v1.0"] P --> A["Änderung nötig
(z. B. Systemwechsel)"] A --> E2["Entwurf v2.0
Commit 3"] E2 --> R2["Review v2.0"] R2 --> F2["Freigabe
Tag: vd-v2.0-2027"] F2 --> P2["Produktiv
Stand v2.0"] F -.-> OBS["obsolescence:
v1.0 → superseded by v2.0"] style E fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style R fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style F fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style P fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style A fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style E2 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style R2 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style F2 fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style P2 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style OBS fill:#E5E7EB,stroke:#6B7280,color:#0F1B33
Phase Git Operation GoBD Reference
Draft Commit on main (or feature branch) Rz. 83 (currency)
Review Further commits with changes Rz. 83 (traceability)
Approval git tag vd-v1.0-2026 Rz. 83 (binding state)
Production Tag is immutable (protected) Rz. 146 (immutability)
Change New commits + new tag Rz. 146–150 (system change)
Obsolescence Old version obsolescence: superseded_by Rz. 146 (traceability)

Important - Tags as Approval Markers: A Git tag is immutable

  • it marks an exact commit state that cannot be changed afterwards. This corresponds to GoBD Rz. 146 (immutability). The auditor can use git show vd-v1.0-2026 to reconstruct the exact state of the process documentation at the time of the audit.

System Changes and Migration (GoBD Rz. 146–150)

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart LR A["Altes System
(z. B. Cloud-Lohn)"] A --> M["Migration
Commit mit Begründung"] M --> N["Neues System
(z. B. Git-Cover)"] A --> DA["Daten alt
git bundle
(self-contained)"] N --> DN["Daten neu
Git-Repo
(fortgeführt)"] M --> VD["Verfahrensdoku
fortgeschrieben
+ Commit-Message
mit Begründung"] style A fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style M fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style N fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style DA fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style DN fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style VD fill:#10A987,stroke:#0A7F5C,color:#FBFAF7

GoBD Rz. 146–150 requires the following in the event of a system change:

  1. Keep the data of the old system available - git bundle as a self-contained archive (no cloud account required, see ED04 Z3)
  2. Update the process documentation - new commit with a rationale: "Migration from Cloud-Lohn to GitCover, date, role"
  3. Document the transition period - which data was migrated and how, which checks were performed
  4. Mark the old version as obsolete - obsolescence: superseded_by in the old process documentation artifact

Practical Example: The entrepreneur (E1) migrates from Cloud-Lohn payroll software to GitCover. He creates a git bundle of the old data, updates the process documentation (new commit with the commit message "Migration to GitCover, 260815, role: GF"), marks the old version as superseded, and tags the new version as vd-v2.0-2027. The auditor can trace both versions.

The Repo Itself as Process Documentation

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD R["Git-Repo"] R --> GL["git log
Verfahren (Rz. 64–71)"] R --> GC["git config
Systemumgebung (Rz. 72–76)"] R --> GA["git log --author
Organisation (Rz. 77–80)"] R --> GH["Git-Hooks
Kontrollen (Rz. 81–85)"] R --> SC["Schemata + Sidecars
Daten (Rz. 86–91)"] GL --> VD["Verfahrensdokumentation
entsteht automatisch"] GC --> VD GA --> VD GH --> VD SC --> VD style R fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style GL fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style GC fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style GA fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style GH fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style SC fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style VD fill:#10A987,stroke:#0A7F5C,color:#FBFAF7

The Central Insight: A Git repo is itself a process documentation - git log shows the process, git config shows the system environment, Git hooks show the controls, schemas show the data structures. The formal process documentation (Markdown in docs/verfahrensdokumentation/) supplements this with the human-readable description - but the authoritative source is the repo itself.

Risk Leverage

Today (cheap) Tomorrow (audit-proof) Risk Mitigated
Process documentation as a Git artifact GoBD Rz. 64–91 fulfilled by design Estimated assessment under § 162 AO (no process documentation)
git log as evidence of the process Traceability within a reasonable time Denial of the process documentation
Tags as approval markers Immutable state at the time of the audit Denial of the state
System change as commit + bundle GoBD Rz. 146–150 compliant GoBD violation due to an undocumented change
Obsolescence marking Old versions remain traceable Concealed changes
Repo itself as process documentation Automatic documentation through use Outdated process documentation

Harness Requirement (Preview)

Derivable from ED06:

ID Requirement Priority
FA-6.1 Process documentation as a versioned Git artifact MUST
FA-6.3 SKR04 chart of accounts management (incl. payroll accounts) SHOULD
FA-6.6 Immutability after approval (tags, protected branches) MUST
FA-6.7 Static web generator for period closing (Z3+) SHOULD
TA-2.1 Pre-commit: JSON schema validation MUST
TA-2.4 Pre-commit: obsolescence status check SHOULD
TA-2.6 Post-commit: automatic index generation SHOULD

The complete list of requirements in Harness-Anforderungen.md.

Sources

Role Location Purpose
Primary / SSoT git.gitcover.org/GCC Canonical storage (GPG-signed, versioned)
Public OSS Mirror / CDN codeberg.org/gitcover-commons Read-only mirror; FLOSS discovery
Community Hub github.com/gitcover-commons Issues & Discussions; source code reference on Codeberg

Note: This assignment of sources, mirror, and community hub reflects the current state and may change. Please check the respective canonical source on gitcover.org for the current state.