Files
management/docs/adr/0023-fremdhistorie-von-der-git-hygiene-ausnehmen.md
Thore Cimbal 6731d2a70f ADR-0023: fremde Historie erklaert von der Git-Hygiene ausnehmen
Der Upstream-Merge holte 70.265 fremde Commits nach ThreadNet-Web; 39 davon
faerbten die Gruppenpruefung als Echtzeit-Stempel rot. Sie verletzen die
Konvention wirklich, konnten ihr aber nie folgen und werden sich nie aendern -
also ein Dauerrot, und ein Dauerrot meldet nichts mehr (#0104).

Neues Feld fremdhistorie in docs/components/*.md. Wo gesetzt, prueft die
Hygiene nur Commits, die von eigenen Identitaeten COMMITTET wurden. Der
Trennschnitt ist gemessen, nicht geraten: 18 eigene Commits, alle von uns
committet; 39 fremde von GitHub/RiotRobot; keine Ueberschneidung. Der Autor
taugt nicht - eigene Commits koennen fremde Autoren tragen (Cherry-Picks).

Der Feldwert ist die Begruendung, kein Schalter - Muster der Quittungen aus
ADR-0020. Die Ausnahme gilt nur, wo sie deklariert ist, nicht global; der Preis
(ein Commit unter voellig unbekannter Identitaet faellt dort durchs Raster)
steht in den Konsequenzen.

Belegt: nach dem Fix 0 offene Befunde bei 20 Quittungen, und in ThreadNet-Web
werden weiterhin 18 Commits geprueft, alle auf 12:00:00.

Ausserdem zurueckgenommen: mein Nachtrag an ADR-0022. Eine angenommene ADR wird
nicht editiert (Regel in der Vorlage) - die Erkenntnis steht jetzt in #0099.
2026-08-19 12:00:00 +00:00

82 lines
4.0 KiB
Markdown

---
type: adr
id: "0023"
status: accepted
date: 2026-08-19
supersedes: null
superseded_by: null
related:
- "docs/adr/0009-commit-konventionen-und-historien-anonymisierung.md"
- "docs/adr/0022-upstream-anschluss-durch-einmaligen-merge.md"
- "docs/issues/0104-daueralarme-melden-nichts-mehr.md"
---
# ADR-0023: Fremde Historie von der Git-Hygiene ausnehmen — erklärt, nicht global
## Kontext
Der Upstream-Merge aus [ADR-0022](0022-upstream-anschluss-durch-einmaligen-merge.md)
hat am 2026-08-19 **70.265 fremde Commits** in `ThreadNet-Web` geholt. Sie stammen von
Element und tragen deren Zeitstempel und Identitäten.
Die Git-Hygiene-Prüfung aus [ADR-0009](0009-commit-konventionen-und-historien-anonymisierung.md)
(`gruppenpruefung.py`, Prüfung 5) bemängelte davon sofort **39 Commits** als
„Echtzeit-Stempel" — alle im Fenster seit der Regel-Grenze 2026-08-07.
Das ist kein Fehlalarm im engeren Sinn: Die Commits verletzen die Konvention wirklich.
Sie konnten ihr aber nie folgen, weil sie nicht bei uns entstanden sind, und sie werden
sich nie ändern lassen. Damit war die Prüfung dauerhaft rot — genau der Zustand, den
[#0104](../issues/0104-daueralarme-melden-nichts-mehr.md) am selben Tag beseitigt hatte.
Ein Alarm, der immer rot ist, meldet nichts mehr.
## Optionen
**A: Quittieren** über den Mechanismus aus ADR-0020. Verworfen: 39 Einträge, und die
Quittung verlangt eine Frist — hier gäbe es keine, weil sich nichts ändern wird.
ADR-0020 lässt „permanent" ausdrücklich nur als ADR zu, was auf diese ADR hinausläuft,
aber mit 39 Zeilen Ballast im Quittungs-Log.
**B: Regel-Grenze verschieben oder die Prüfung global lockern.** Verworfen: Das nähme
allen Repos den Schutz, um einem zu helfen.
**C: Fremde Absender hart im Code ausnehmen** (`releases@riot.im`,
`noreply@github.com`). Verworfen: Das ist eine Liste, die mit jedem neuen fremden
Beitragenden wächst — dieselbe Falle, die MASCHINEN bewusst per Adresse und nicht per
Name matched, nur eine Ebene höher.
**D: Erklärte Ausnahme pro Komponente.** Neues Feld `fremdhistorie` in
`docs/components/*.md`. Wo es gesetzt ist, prüft die Hygiene nur noch Commits, die von
**eigenen Identitäten committet** wurden.
## Entscheidung
**Option D** (sorb, 2026-08-19: „gruppenprüfung fixen, upstream-commits ausnehmen").
Der Trennschnitt ist der **Committer**, nicht der Autor. Gemessen an ThreadNet-Web im
Fenster seit 2026-08-07: 18 eigene Commits, alle von `cfx@riot.8shield.net` committet;
39 fremde, committet von `GitHub <noreply@github.com>` (35) und `RiotRobot` (4). **Keine
Überschneidung.** Der Autor taugt nicht als Kriterium — unsere eigenen Commits können
fremde Autoren tragen (Cherry-Picks), und fremde Commits tragen Autoren, die wie
Menschen aussehen.
Der Feldwert ist die **Begründung**, kein Schalter: Wer die Ausnahme erklärt, sagt,
woher die fremden Commits stammen. Das folgt dem Muster der Quittungen aus ADR-0020 —
eine Ausnahme ohne Begründung gibt es nicht.
## Konsequenzen
- Die Alarmanlage ist wieder grün und damit wieder aussagekräftig: 0 offene Befunde,
20 quittiert.
- Die Prüfung bleibt in ThreadNet-Web **wirksam** — nachgewiesen, nicht angenommen:
Nach dem Fix werden dort weiterhin 18 Commits geprüft, alle auf `12:00:00`.
- ⚠️ **Der Preis, ehrlich benannt:** In Repos mit erklärter Fremdhistorie fällt ein
Commit durchs Raster, den jemand von uns unter einer **völlig unbekannten** Identität
erzeugt — also weder eigene Adresse als Autor noch als Committer. Genau diesen Fall
fängt die Identitätsprüfung sonst. Deshalb gilt die Ausnahme nur dort, wo sie
deklariert ist, und nicht global.
- Wer künftig ein Repo mit fremder Historie aufnimmt, muss das Feld setzen — sonst
färbt die Prüfung rot, und das ist richtig so: Die Ausnahme soll eine bewusste
Erklärung sein, kein stiller Nebeneffekt.
- Nicht gelöst: Der Gitea-Spiegel von ThreadNet-Web scheitert seit demselben Merge am
Umfang des Pushs (70.269 Commits, ~600 MB, `HTTP 499`). Eigener Vorgang.