ED06 - Verfahrensdokumentation GoBD: Pflichtfelder, Versionierung, Freigabe

Problem

GoBD Rz. 64–91 verlangt eine Verfahrensdokumentation - aber im KMU-Bereich ist sie die große Ausnahme:

Kernaussage

Eine GoBD-konforme Verfahrensdokumentation im Git-Repo bedeutet:

  1. Die Verfahrensdoku ist ein versioniertes Git-Artefakt - nicht ein Word-Dokument, sondern Markdown + JSON im Repo
  2. Jede Änderung ist nachvollziehbar - git log zeigt Wer, Wann, Was, Warum (Commit-Autor, uuidV7-Zeitstempel, Diff, Commit-Message)
  3. Freigabe durch Tags - ein Git-Tag markiert den freigegebenen Stand der Verfahrensdoku (z. B. vd-v1.0-2026)
  4. Systemwechsel werden fortgeschrieben - bei Migration wird ein neuer Commit mit Begründung erstellt, die alte Version bleibt nachvollziehbar
  5. Das Repo selbst ist Teil der Verfahrensdoku - git log zeigt das Verfahren, .gitcover/schemas/ zeigt die Datenstrukturen, Git-Hooks zeigen die Kontrollen

Compliance by Design: Die Verfahrensdokumentation ist nicht nachträglich - sie entsteht durch die Nutzung von Git. Wer mit Git-Repositories arbeitet, dokumentiert sein Verfahren automatisch durch Commits, Diffs und Tags. Die formelle Verfahrensdoku ergänzt dies um die menschenlesbare Beschreibung.

Was ist eine Verfahrensdokumentation?

%%{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-Anforderung Inhalt Wie Git es erfüllt
Verfahren (Rz. 64–71) Beschreibung des Buchführungsverfahrens git log zeigt jeden Schritt; Commit-Messages dokumentieren Begründung
Systemumgebung (Rz. 72–76) Software, Hardware, Versionen .gitcover/ mit Schemata, Dictionaries; git config zeigt Einstellungen
Organisation (Rz. 77–80) Zuständigkeiten, Rollen, Berechtigungen role-Feld pro Artefakt; git log --author zeigt Zuständigkeit
Kontrollen (Rz. 81–85) Internen Kontrollen, Plausibilitätsprüfungen Pre-Commit-Hooks (Schema, Sphären, Obsoleszenz); Post-Commit-Hooks (Index)
Daten (Rz. 86–91) Datenstrukturen, Formate, Schnittstellen JSON-Schemata in .gitcover/schemas/; Sidecars mit v7g_taxonomy

Pflichtfelder der Verfahrensdokumentation

Struktur im 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

Verfahrensdoku als JSON-Artefakt

Die Verfahrensdoku selbst ist ein versioniertes Artefakt mit V7GUID (Class) und uuidV7 (Object ID als 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"]
}

Hinweis: Die uuidV7 ist die DocID der Verfahrensdoku. Der Composite Key V7GUID:uuidV7 dient der Ablage-Organisation und DB-Query. Kein separates datetime/date-Feld - die Zeit steckt in der uuidV7.

Versionierung und Freigabe

%%{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-Bezug
Entwurf Commit auf main (oder Feature-Branch) Rz. 83 (Aktualität)
Review Weitere Commits mit Änderungen Rz. 83 (Nachvollziehbarkeit)
Freigabe git tag vd-v1.0-2026 Rz. 83 (verbindlicher Stand)
Produktiv Tag ist unveränderbar (Protected) Rz. 146 (Unveränderbarkeit)
Änderung Neue Commits + neuer Tag Rz. 146–150 (Systemwechsel)
Obsoleszenz Alte Version obsolescence: superseded_by Rz. 146 (Nachvollziehbarkeit)

Wichtig - Tags als Freigabe-Marker: Ein Git-Tag ist unveränderbar

  • er markiert einen exakten Commit-Stand, der nicht nachträglich geändert werden kann. Das entspricht GoBD Rz. 146 (Unveränderbarkeit). Der Prüfer kann mit git show vd-v1.0-2026 den exakten Stand der Verfahrensdoku zum Prüfungszeitpunkt rekonstruieren.

Systemwechsel und 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 verlangt bei Systemwechsel:

  1. Daten des alten Systems verfügbar halten - git bundle als self-contained Archiv (kein Cloud-Account nötig, siehe ED04 Z3)
  2. Verfahrensdokumentation fortgeschreiben - neuer Commit mit Begründung: "Migration von Cloud-Lohn zu GitCover, Datum, Rolle"
  3. Übergangszeit dokumentieren - welche Daten wurden wie migriert, welche Prüfungen wurden durchgeführt
  4. Alte Version als obsolet markieren - obsolescence: superseded_by im alten Verfahrensdoku-Artefakt

Praxis-Beispiel: Der Unternehmer (E1) migriert von einer Cloud-Lohnsoftware zu GitCover. Er erstellt einen git bundle der alten Daten, schreibt die Verfahrensdoku fort (neuer Commit mit Commit-Message "Migration zu GitCover, 260815, Rolle: GF"), markiert die alte Version als superseded und taggt die neue Version als vd-v2.0-2027. Der Prüfer kann beide Versionen nachvollziehen.

Das Repo selbst als Verfahrensdokumentation

%%{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

Die zentrale Einsicht: Ein Git-Repo ist selbst eine Verfahrensdokumentation - git log zeigt das Verfahren, git config zeigt die Systemumgebung, Git-Hooks zeigen die Kontrollen, Schemata zeigen die Datenstrukturen. Die formelle Verfahrensdoku (Markdown in docs/verfahrensdokumentation/) ergänzt dies um die menschenlesbare Beschreibung - aber die autoritative Quelle ist das Repo selbst.

Risiko-Leverage

Heute (cheap) Morgen (revisionssicher) Risiko gemindert
Verfahrensdoku als Git-Artefakt GoBD Rz. 64–91 by Design erfüllt Schätzung § 162 AO (keine Verfahrensdoku)
git log als Verfahrensnachweis Nachvollziehbarkeit in angemessener Zeit Bestreitung der Verfahrensdoku
Tags als Freigabe-Marker Unveränderbarer Stand zum Prüfungszeitpunkt Bestreitung des Standes
Systemwechsel als Commit + Bundle GoBD Rz. 146–150 konform GoBD-Verstoß durch nicht dokumentierten Wechsel
Obsoleszenz-Markierung Alte Versionen nachvollziehbar Verdeckte Änderungen
Repo selbst als Verfahrensdoku Automatische Dokumentation durch Nutzung Verfahrensdoku veraltet

Harness-Anforderung (Vorschau)

Aus ED06 ableitbar:

ID Anforderung Priorität
FA-6.1 Verfahrensdokumentation als versioniertes Git-Artefakt MUST
FA-6.3 SKR04-Kontenplan-Verwaltung (inkl. Lohnkonten) SHOULD
FA-6.6 Unveränderbarkeit nach Freigabe (Tags, Protected Branches) MUST
FA-6.7 Static-Web-Generator für Periodenabschluss (Z3+) SHOULD
TA-2.1 Pre-Commit: JSON-Schema-Validierung MUST
TA-2.4 Pre-Commit: Obsoleszenz-Status-Prüfung SHOULD
TA-2.6 Post-Commit: Auto-Index-Generierung SHOULD

Die vollständige Anforderungsliste in Harness-Anforderungen.md.

Quellen

Rolle Ort Zweck
Primary / SSoT git.gitcover.org/GCC Kanonische Ablage (GPG-signiert, versioniert)
Public OSS Mirror / CDN codeberg.org/gitcover-commons Read-only-Spiegel; FLOSS-Discovery
Community Hub github.com/gitcover-commons Issues & Discussions; Quell-Code-Referenz auf Codeberg

Hinweis: Diese Zuordnung von Quellen, Mirror und Community-Hub spiegelt den aktuellen Stand wider und kann sich ändern. Bitte prüfen Sie die jeweilige kanonische Quelle auf gitcover.org für den aktuellen Zustand.