Gate 4, slice 3: verfahren/, hosts/, vision/ and shared/ moved via git mv - six AARs to docs/aar/ (four harvested by the 2026-08-09 retro, two open), procedures and host knowledge to docs/wiki/ (admin, deployment, architecture, new area vision), the retro protocol and the commit mapping table to docs/sources/ (protokolle/, migration/). New: the wiki index linking every page, and the mirror-topology page carrying the why-two-places reasoning verbatim from the old CLAUDE.md (F-013 preserved). All moved-path references retargeted; the link checker drove the sweep to zero. pruefe_prosa.py added (pattern C+D): SHA citations resolve via repo, mapping table, optional component clones or a curated exemption list (documented dead Gitea-force-push commits, a vendor-repo tag, an Authentik uid that is hex but no git SHA, the external neckbeard reference); wiki task prose without an issue reference errors, with a visible pragma for deliberate checklists; the dead-tracker denylist now covers every mirrored repo's retired Gitea tracker (F-005) - two links re-verified against live GitLab titles and retargeted, five defused into honest historical citations. Verified: validate 0/0, gen_status --check current, drift 0. Demo on the pre-migration state fires 6 findings (3 orphaned SHAs, 3 task blocks); on the current tree exactly the 3 F-004 task blocks remain - they turn green in slice 4 when the issues exist, which is why pruefe_prosa joins CI only then. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
103 lines
4.8 KiB
Markdown
103 lines
4.8 KiB
Markdown
---
|
|
type: adr
|
|
id: "0009"
|
|
status: accepted
|
|
date: 2026-08-07
|
|
supersedes: null
|
|
superseded_by: null
|
|
related: []
|
|
---
|
|
|
|
# 0009 — Commit-Konventionen und rückwirkende Anonymisierung der Historie
|
|
|
|
**Status:** akzeptiert · **Datum:** 2026-08-07 (Regel) / 2026-08-09 (Durchführung) · **Entscheider:** sorb
|
|
|
|
> Nachgetragen am 2026-08-09 in der [Retro](../sources/protokolle/retro-2026-08-09.md). Die
|
|
> Entscheidung war getroffen und ausgeführt, bevor sie als ADR vorlag — das ist
|
|
> genau der Fehler, den die ADR-Pflicht verhindern soll, und wird hier benannt
|
|
> statt geglättet.
|
|
|
|
## Kontext
|
|
|
|
Commit-Zeitstempel geben Arbeitszeiten preis. Bei einem Ein-Personen-Projekt mit
|
|
öffentlichem Gitea-Spiegel heißt das: Jeder, der die Repos liest, kann ablesen, an
|
|
welchen Abenden und bis wann gearbeitet wurde. Vor der Umstellung standen die
|
|
Commits eines Tages typischerweise zwischen 17:00 und 23:00 — ein Muster, das
|
|
nichts mit der Software zu tun hat.
|
|
|
|
Dazu kam eine uneinheitliche Sprache in den Commit-Nachrichten (Deutsch und
|
|
Englisch gemischt) und drei Autoren-Identitäten für dieselbe Person.
|
|
|
|
## Entscheidung
|
|
|
|
**Regel ab 2026-08-07**, gültig für alle Repos der Gruppe `axion1337.chat` und die
|
|
ThreadNet-Dienste:
|
|
|
|
- Nachrichten auf **Englisch**, Conventional-Commit-Stil
|
|
- Autor- **und** Committer-Datum auf **12:00:00 UTC des laufenden Tages**
|
|
|
|
**Rückwirkend angewandt am 2026-08-09** auf **251 Commits** — alles aus dieser
|
|
Zusammenarbeit, nicht die davor liegende Historie:
|
|
|
|
| Repo | umgeschrieben | Grenze |
|
|
|---|---|---|
|
|
| gitops | 117 von 264 | ab 2026-07-27 |
|
|
| management | 78 von 78 | vollständig |
|
|
| ThreadNet-Web | 47 von 50 | ab 2026-07-28 |
|
|
| threadnet-call | 9 von 9 | vollständig |
|
|
|
|
Dabei wurden 17 Tags mit umgezogen und die Autoren-Identitäten vereinheitlicht —
|
|
**mit Ausnahme des `turn-secret-rotation`-Bots**, dessen Commits maschinell
|
|
entstehen und deren Zuschreibung an einen Menschen falsch wäre.
|
|
|
|
Zeitstempel wurden auf **12:00 UTC des jeweils eigenen Tages** gesetzt, nicht auf
|
|
ein einheitliches Datum: Der Tag bleibt damit als Information erhalten, die
|
|
Uhrzeit verschwindet.
|
|
|
|
## Konsequenzen
|
|
|
|
- **Der Inhalt ist unverändert.** Alle Trees sind bitgleich, Nachrichten und
|
|
Merge-Struktur erhalten — geprüft über alle 251 Paare.
|
|
- **Alle SHAs im Bereich sind neu.** Verweise in Issues, Doku und Commit-Texten
|
|
zeigen ins Leere. Die Doku wurde nachgezogen (12 Stellen); für alles andere gibt
|
|
es die dauerhafte Zuordnungstabelle
|
|
[`shared/commit-zuordnung-2026-08-07.md`](../sources/migration/commit-zuordnung-2026-08-07.md).
|
|
- **Issue-Kommentare wurden bewusst NICHT umgeschrieben.** Eine Tabelle
|
|
nachzuschlagen ist zumutbar; nachträglich zu ändern, was jemand geschrieben hat,
|
|
beschädigt dieselbe Nachvollziehbarkeit ein zweites Mal.
|
|
- **Container-Images verweisen auf Commits, die es nicht mehr gibt.** Sie laufen
|
|
unverändert; ihre Herkunft ist nur über die Tabelle auflösbar.
|
|
- **Branch- und Tag-Schutz mussten vorübergehend gelockert werden.** Beide sind
|
|
wieder aktiv.
|
|
|
|
⚠️ **Der Nutzen ist begrenzt, und das gehört zur Entscheidung.** Geschützt ist
|
|
allein die Git-Historie. Push-Zeiten, Issue- und Kommentar-Zeitstempel,
|
|
Pipeline-Läufe und Paket-Veröffentlichungen tragen weiterhin die echte Uhrzeit,
|
|
liegen im selben GitLab und teilweise auf dem öffentlichen Spiegel — und sind
|
|
**feiner** als Commit-Zeiten, weil es mehr davon gibt. Wer wirklich kein Muster
|
|
ableitbar haben will, muss dort ansetzen. Diese ADR löst das nicht.
|
|
|
|
## Was dabei fast schiefging
|
|
|
|
Das Force-Push der umgezogenen Tags hat in ThreadNet-Web **drei Release-Pipelines
|
|
neu gestartet**. Ohne Sperre hätte `docker_web` das veröffentlichte Image
|
|
`v0.4.0` aus altem Quellcode gegen heutige Basis-Images neu gebaut und
|
|
überschrieben. Verhindert hat es allein, dass die geschützten Registry-Variablen
|
|
in diesem Fenster nicht verfügbar waren — **Zufall, nicht Planung**. Behoben in
|
|
ThreadNet-Web#14; die Sperre ist seit `3cb43f5` scharf.
|
|
|
|
## Verworfene Alternativen
|
|
|
|
- **Nur vorwärts, Historie unangetastet.** War die Empfehlung: kein Risiko, keine
|
|
toten Verweise, und der Nutzen des Rewrites ist durch die Plattform-Zeitstempel
|
|
ohnehin begrenzt. sorb hat sich bewusst dagegen entschieden — die Git-Historie
|
|
ist der Teil, der geklont und weitergegeben wird.
|
|
- **Alles umschreiben, auch die Vor-Historie.** Hätte fremde Autorenschaft
|
|
angefasst (`Scrublord@Mac.Bad`, 135 Commits aus der Zeit vor dieser
|
|
Zusammenarbeit) und den Nutzen nicht erhöht.
|
|
- **Ein einheitliches Datum für alle Commits.** Hätte die zeitliche Reihenfolge
|
|
unlesbar gemacht, ohne mehr zu schützen als der Tagesstempel.
|
|
- **Auch die Commit-Nachrichten rückwirkend übersetzen.** 251 Nachrichten neu zu
|
|
formulieren hieße, die darin festgehaltenen Begründungen umzuschreiben —
|
|
Inhaltsverlust für einen Stilgewinn, den nur die Vergangenheit hätte.
|