ED07 - Aufbewahrungsfristen & Unveränderbarkeit: Git-Hooks, Evidence-Packages

Problem

GoBD und AO verlangen langfristige Aufbewahrung - aber die Praxis scheitert an der Umsetzung:

Kernaussage

GoBD-konforme Aufbewahrung mit Git bedeutet:

  1. Git-Bundles sind self-contained - kein Cloud-Account, keine Software-Lizenz, kein Dienstleister - git clone reicht
  2. Aufbewahrungsfristen werden im Repo dokumentiert - jedes Artefakt trägt seine Frist im Sidecar (obsolescence + Frist-Datum)
  3. Unveränderbarkeit durch Tags und Protected Branches - freigegebene Stände sind kryptographisch unveränderbar
  4. Evidence-Packages für Periodenabschlüsse - git bundle + Static-Web (Z3+) für Prüfer (siehe ED04)
  5. Fristen-Check als Git-Artefakt - checks/FRISTEN_CHECK.md warnt vor drohenden Fristen

Compliance by Design: Aufbewahrung ist nicht nachträglich - sie entsteht durch die Wahl des Mediums. Git-Bundles sind self-contained und überdauern jede Cloud-Sperre, jeden Software-Stand-Wechsel, jede Dienstleister-Kündigung.

Aufbewahrungsfristen nach AO § 147

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD AO["AO § 147
Aufbewahrungsfristen"] AO --> J10["10 Jahre
§ 147 Abs. 1 Nr. 1"] AO --> J8["8 Jahre
§ 147 Abs. 1 Nr. 4"] AO --> J6["6 Jahre
§ 147 Abs. 1 Nr. 2/3/5"] J10 --> D10["Bücher, Aufzeichnungen
Inventare, Jahresabschlüsse
Eröffnungsbilanz
Arbeitsanweisungen"] J8 --> D8["Buchungsbelege
E-Rechnungen (XML)
Lohnbelege"] J6 --> D6["Handels- / Geschäftsbriefe
E-Mails (EML)
Sonstige Unterlagen"] style AO fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style J10 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style J8 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style J6 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style D10 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style D8 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style D6 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
Frist Unterlagen-Typ Rechtsgrundlage Beispiele
10 Jahre Bücher, Aufzeichnungen, Inventare, Jahresabschlüsse, Eröffnungsbilanz, Arbeitsanweisungen § 147 Abs. 1 Nr. 1 AO Grundbuch (JSON), Verfahrensdokumentation, Kontenplan
8 Jahre Buchungsbelege § 147 Abs. 1 Nr. 4 AO E-Rechnungen (XML), Lohnabrechnungen, SV-Bescheide
6 Jahre Handels- / Geschäftsbriefe, sonstige Unterlagen § 147 Abs. 1 Nr. 2/3/5 AO E-Mails (EML), Korrespondenz, Notizen

Wichtig - Fristbeginn: Die Frist beginnt mit dem Schluss des Kalenderjahrs, in dem die letzte Eintragung gemacht, der Jahresabschluss aufgestellt, der Beleg empfangen oder die Aufzeichnung vorgenommen wurde (§ 147 Abs. 4 AO). Eine Buchung vom 15.08.2026 startet die Frist am 31.12.2026 - 10 Jahre enden am 31.12.2036.

Unveränderbarkeit durch Git

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD B["Buchung
Commit"] B --> H["SHA-256-Hash
des Commits"] H --> T["Tag
(Freigabe-Marker)"] T --> P["Protected Branch
(kein Force-Push)"] P --> U["Unveränderbarkeit
GoBD Rz. 146"] K["Korrektur nötig"] K --> NC["Neuer Commit
+ Obsoleszenz-Markierung"] NC --> O["Original bleibt
nachvollziehbar"] style B fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style H fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style T fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style P fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style U fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style K fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style NC fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style O fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
Mechanismus Git-Feature GoBD-Bezug
Commit-Hash SHA-256-Hash pro Commit - jede Änderung erzeugt neuen Hash Rz. 146 (Unveränderbarkeit)
Tags Unveränderbare Marker für freigegebene Stände Rz. 146 (Freigabe)
Protected Branches main geschützt, kein Force-Push, kein Rebase Rz. 146 (keine Umschreibung)
Obsoleszenz Korrekturen als neue Commits mit superseded_by Rz. 146 (Nachvollziehbarkeit)
GPG-Signatur Commits signiert - Authentizität nachweisbar Rz. 146 (Urheberschaft)

Wichtig - lineare Historie: GoBD-konform ist nur lineare Historie ohne Umschreibung. git rebase, git commit --amend und git push --force auf main sind verboten. Der Pre-Commit-Hook prüft, dass keine Force-Pushes erfolgen und Korrekturen als neue Commits mit Obsoleszenz-Markierung erfolgen.

Evidence-Packages für die Aufbewahrung

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD FY["Geschäftsjahr
z. B. FY2026"] FY --> EP["Tenant Evidence Package
(Periodenabschluss)"] EP --> GB["git bundle
self-contained Archiv"] EP --> SW["Static-Web
(Z3+ Browser)"] EP --> MF["Manifest
+ SHA-256-Checksummen"] GB --> USB["USB-Stick
oder Off-Site-Backup"] SW --> USB MF --> USB USB --> PR["Prüfer
git clone oder index.html
offline, ohne IAM"] style FY fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style EP fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style GB fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style SW fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style MF fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style USB fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style PR fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33

Ein Tenant Evidence Package (siehe ED04 Z3+) für ein Geschäftsjahr enthält:

Komponente Inhalt GoBD-Bezug
git bundle Vollständiges Repo (Historie, Commits, Tags) § 147 Abs. 6 AO (Z3-Datenträger)
Static-Web Browser-navigierbare Website (HTML/PDF/JSON) Z3+ (Prüfer-Zugang ohne IAM)
Manifest SHA-256-Checksummen pro Datei, V7GUID-Index Rz. 146 (Integrität)
Verfahrensdoku Als HTML gerendert Rz. 64–91 (Verfahrensdokumentation)
DMS-Dokumente Alle Belege (PDF, XML, EML) § 147 Abs. 1 (Aufbewahrung)
Verträge Periodenübergreifende Dokumente § 147 Abs. 1 Nr. 2/3 (Handelsbriefe)

Die sicherste Aufbewahrung: Ein USB-Stick mit git bundle + Static-Web + Manifest ist self-contained, offline, ohne IAM, ohne Cloud-Account, ohne Software-Lizenz. Er überdauert jede Dienstleister-Kündigung, jeden Software-Stand-Wechsel, jede Cloud-Sperre. Das ist die sicherste Form der GoBD-konformen Aufbewahrung - weil es keine Abhängigkeiten gibt.

Natürlich muss man die physische Sicherheit des USB-Sticks beachten (Tresor, Brandschutz, Off-Site-Backup).

Fristen-Management im Repo

checks/FRISTEN_CHECK.md

# Fristen-Check

## Vorlauf (bis 010926) - PRIO 1

- [ ] 200826: ELSTER-Organisationszertifikat anfordern
- [ ] 250826: Gefahrtarifstelle festlegen
- [ ] 300826: D&O-Versicherung GF-Haftung

## Aufbewahrungsfristen (laufend)

| Frist | Unterlagen-Typ | Endet | Status |
|---|---|---|---|
| 10 Jahre | Grundbuch FY2026 | 31.12.2036 | aktiv |
| 8 Jahre | E-Rechnungen FY2026 | 31.12.2034 | aktiv |
| 6 Jahre | E-Mails FY2026 | 31.12.2032 | aktiv |

Auto-Warnung bei drohenden Fristen

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart LR FC["Fristen-Check
(Git-Artefakt)"] FC --> P14["über 14 Tage
grün"] FC --> P7["7–14 Tage
gelb"] FC --> P0["unter 7 Tage
orange/rot"] P0 --> W["Warnung
an Unternehmer"] style FC fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style P14 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style P7 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style P0 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style W fill:#FDBA74,stroke:#C2410C,color:#0F1B33
Frist-Typ Warnung Aktion
Aufbewahrungsfrist endet 30 Tage vorher Vernichtung nach Ablauf dokumentieren
Behörden-Frist (ELSTER, SV) 14 Tage vorher Übermittlung vorbereiten
Verjährungsfrist (§ 169 AO) 90 Tage vorher Unterlagen nicht vernichten

Risiko-Leverage

Heute (cheap) Morgen (revisionssicher) Risiko gemindert
git bundle als self-contained Archiv 10-Jahres-Aufbewahrung ohne Cloud-Account GoBD-Verstoß durch Account-Kündigung
Tags + Protected Branches Unveränderbarkeit nach Freigabe GoBD-Verstoß durch nachträgliche Änderung
Evidence-Package (Z3+) Prüfer-Zugang ohne IAM, offline GoBD-Verstoß durch unzugängliche Daten
Fristen-Check als Git-Artefakt Fristenversäumnis vermieden Verspätungszuschläge § 152 AO
Obsoleszenz-Markierung Korrekturen nachvollziehbar Verdeckte Änderungen
GPG-signierte Commits Authentizität nachweisbar Bestreitung der Urheberschaft
Static-Web (Z3+) Browser-Navigierbarkeit für Prüfer GoBD-Verstoß durch prüfer-unfreundliche Daten

Harness-Anforderung (Vorschau)

Aus ED07 ableitbar:

ID Anforderung Priorität
FA-4.1 Fristen-Check-Datei (checks/FRISTEN_CHECK.md) MUST
FA-4.2 Fristen-Einträge mit Datum, Typ, Tenant, Beleg-Referenz MUST
FA-4.3 Auto-Warnung bei Fristen < 14 Tage SHOULD
FA-6.5 10-Jahres-Aufbewahrung via Evidence-Packages (Git-Bundles) MUST
FA-6.6 Unveränderbarkeit nach Freigabe (Tags, Protected Branches) MUST
FA-6.7 Static-Web-Generator für Periodenabschluss (Z3+) SHOULD
TA-2.4 Pre-Commit: Obsoleszenz-Status-Prüfung 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.