ED08 - Durées de conservation & immuabilité : hooks Git, packages de preuves
Problème
GoBD et AO exigent une conservation à long terme - mais la mise en œuvre dans la pratique est défaillante :
- "10 ans ? C'est le cloud qui s'en charge." - de nombreux entrepreneurs croient que le logiciel cloud gère automatiquement la conservation - mais lors de la résiliation du compte, les données ne sont souvent plus disponibles (voir ED01, points de douleur 6–7)
- Compte cloud résilié, données perdues - le compte de paie a été mis en pause, les anciens comptes de paie ne sont réactivables que moyennant des frais supplémentaires - non-conformité à la GoBD (§ 146 Abs. 5 AO)
- Anciennes versions logicielles non réactivables - les sauvegardes nécessitent l'ancienne version logicielle, qui n'est plus installable - non-conformité à la GoBD (§ 147 Abs. 2 AO : "immédiatement lisible")
- Absence d'immuabilité - écritures modifiées ultérieurement sans traçabilité - non-conformité à la GoBD (Rz. 146)
- Absence de packages de preuves - lors d'un audit externe, l'auditeur ne peut pas recevoir de support de données (Z3) - non-conformité à la GoBD (§ 147 Abs. 6 AO)
- Durées de conservation inconnues - 10 ans ? 8 ans ? 6 ans ? De nombreux entrepreneurs ne connaissent pas les durées applicables à leurs documents
Message clé
Une conservation conforme à la GoBD avec Git signifie :
- Les bundles Git sont autonomes - aucun compte cloud, aucune
licence logicielle, aucun fournisseur de services -
git clonesuffit - Les durées de conservation sont documentées dans le dépôt - chaque
artefact porte sa durée dans le sidecar (
obsolescence+ date d'échéance) - L'immuabilité par les tags et les branches protégées - les versions validées sont cryptographiquement immuables
- Des packages de preuves pour les clôtures de période -
git bundle+ Static-Web (Z3+) pour les auditeurs (voir ED05) - Un contrôle des échéances en tant qu'artefact Git -
checks/FRISTEN_CHECK.mdsignale les échéances imminentes
Conformité dès la conception : la conservation n'est pas un ajout ultérieur - elle naît du choix du support. Les bundles Git sont autonomes et survivent à tout blocage du cloud, tout changement de version logicielle et toute résiliation de fournisseur de services.
Durées de conservation selon 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
| Durée | Type de document | Base juridique | Exemples |
|---|---|---|---|
| 10 ans | Livres, enregistrements, inventaires, comptes annuels, bilan d'ouverture, instructions de travail | § 147 Abs. 1 Nr. 1 AO | Grand livre (JSON), documentation des processus, plan comptable |
| 8 ans | Pièces justificatives comptables | § 147 Abs. 1 Nr. 4 AO | Factures électroniques (XML), bulletins de paie, avis de sécurité sociale (SV) |
| 6 ans | Courriers commerciaux / lettres d'affaires, autres documents | § 147 Abs. 1 Nr. 2/3/5 AO | E-mails (EML), correspondance, notes |
Important - début du délai : le délai commence à la clôture de l'année civile au cours de laquelle la dernière saisie a été effectuée, les comptes annuels ont été établis, le justificatif a été reçu ou l'enregistrement a été réalisé (§ 147 Abs. 4 AO). Une écriture du 15.08.2026 lance le délai le 31.12.2026 - le délai de 10 ans expire le 31.12.2036.
Immuabilité grâce à Git
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
| Mécanisme | Fonctionnalité Git | Référence GoBD |
|---|---|---|
| Hachage de commit | Hash SHA-256 par commit - chaque modification génère un nouveau hash | Rz. 146 (immuabilité) |
| Tags | Marqueurs immuables pour les versions validées | Rz. 146 (validation) |
| Branches protégées | main protégé, pas de force-push, pas de rebase |
Rz. 146 (absence de réécriture) |
| Obsolescence | Corrections sous forme de nouveaux commits avec superseded_by |
Rz. 146 (traçabilité) |
| Signature GPG | Commits signés - authenticité vérifiable | Rz. 146 (paternité de l'auteur) |
Important - historique linéaire : seul un historique linéaire sans réécriture est conforme à la GoBD.
git rebase,git commit --amendetgit push --forcesurmainsont interdits. Le hook pre-commit vérifie qu'aucun force-push n'est effectué et que les corrections sont apportées par de nouveaux commits avec un marquage d'obsolescence.
Packages de preuves pour la conservation
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
Un Tenant Evidence Package (voir ED05 Z3+) pour un exercice contient :
| Composant | Contenu | Référence GoBD |
|---|---|---|
| git bundle | Dépôt complet (historique, commits, tags) | § 147 Abs. 6 AO (support de données Z3) |
| Static-Web | Site web navigable dans un navigateur (HTML/PDF/JSON) | Z3+ (accès de l'auditeur sans IAM) |
| Manifeste | Sommes de contrôle SHA-256 par fichier, index V7GUID | Rz. 146 (intégrité) |
| Documentation des processus | Rendue en HTML | Rz. 64–91 (documentation des processus) |
| Documents du DMS | Toutes les pièces justificatives (PDF, XML, EML) | § 147 Abs. 1 (conservation) |
| Contrats | Documents couvrant plusieurs périodes | § 147 Abs. 1 Nr. 2/3 (courriers commerciaux) |
La conservation la plus sûre : une clé USB contenant
git bundle+ Static-Web + Manifeste est autonome, hors ligne, sans IAM, sans compte cloud et sans licence logicielle. Elle survit à toute résiliation de fournisseur de services, à tout changement de version logicielle et à tout blocage du cloud. Il s'agit de la forme la plus sûre de conservation conforme à la GoBD - car elle ne comporte aucune dépendance.Bien entendu, la sécurité physique de la clé USB doit être assurée (coffre-fort, protection contre l'incendie, sauvegarde hors site).
Gestion des échéances dans le dépôt
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 |
Alerte automatique en cas d'échéances imminentes
(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
| Type d'échéance | Alerte | Action |
|---|---|---|
| Fin d'une durée de conservation | 30 jours avant | Documenter la destruction après expiration |
| Échéance administrative (ELSTER, SV) | 14 jours avant | Préparer la transmission |
| Délai de prescription (§ 169 AO) | 90 jours avant | Ne pas détruire les documents |
Levier d'atténuation des risques
| Aujourd'hui (faible coût) | Demain (résistant aux révisions) | Risque atténué |
|---|---|---|
git bundle comme archive autonome |
Conservation pendant 10 ans sans compte cloud | Non-conformité à la GoBD due à la résiliation du compte |
| Tags + branches protégées | Immuabilité après validation | Non-conformité à la GoBD due à une modification ultérieure |
| Package de preuves (Z3+) | Accès de l'auditeur sans IAM, hors ligne | Non-conformité à la GoBD en raison de données inaccessibles |
| Contrôle des échéances en tant qu'artefact Git | Non-respect des échéances évité | Majorations de retard § 152 AO |
| Marquage d'obsolescence | Corrections traçables | Modifications dissimulées |
| Commits signés GPG | Authenticité vérifiable | Contestation de la paternité de l'auteur |
| Static-Web (Z3+) | Navigabilité dans un navigateur pour l'auditeur | Non-conformité à la GoBD en raison de données inadaptées à l'usage par l'auditeur |
Exigence du Harness (aperçu)
Déductible d'ED08 :
| ID | Exigence | Priorité |
|---|---|---|
| FA-4.1 | Fichier de contrôle des échéances (checks/FRISTEN_CHECK.md) |
MUST |
| FA-4.2 | Entrées d'échéance avec date, type, tenant et référence de la pièce justificative | MUST |
| FA-4.3 | Alerte automatique pour les échéances < 14 jours | SHOULD |
| FA-6.5 | Conservation pendant 10 ans via des packages de preuves (bundles Git) | MUST |
| FA-6.6 | Immuabilité après validation (tags, branches protégées) | MUST |
| FA-6.7 | Générateur Static-Web pour la clôture de période (Z3+) | SHOULD |
| TA-2.4 | Pre-Commit : vérification du statut d'obsolescence | SHOULD |
La liste complète des exigences figure dans Harness-Anforderungen.md.
Sources
- GoBD (lettre du BMF, Rz. 146 - immuabilité, Rz. 152 - durées de conservation)
- AO (§ 146 Abs. 5 - disponibilité, § 147 - durées de conservation 10/8/6 ans, § 147 Abs. 4 - début du délai, § 147 Abs. 6 - accès aux données Z3)
GitCover.Ledger/docs/02-Tenant-Evidence-Package.md- concept de Tenant Evidence PackageE1/agents/(anonymisé) - concept SSoT avec contrôle des échéances et packages de preuves
Topologie des sources et liens de référence CDN
| Rôle | Emplacement | Finalité |
|---|---|---|
| Primaire / SSoT | git.gitcover.org/GCC | Dépôt canonique (signé GPG, versionné) |
| Miroir public OSS / CDN | codeberg.org/gitcover-commons | Miroir en lecture seule ; FLOSS-Discovery |
| Pôle communautaire | github.com/gitcover-commons | Issues & Discussions ; référence du code source sur Codeberg |
Remarque : cette attribution des sources, du miroir et du pôle communautaire reflète l'état actuel et peut changer. Veuillez vérifier la source canonique concernée sur gitcover.org pour connaître l'état actuel.