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.
4.0 KiB
type, id, status, date, supersedes, superseded_by, related
| type | id | status | date | supersedes | superseded_by | related | |||
|---|---|---|---|---|---|---|---|---|---|
| adr | 0023 | accepted | 2026-08-19 | null | null |
|
ADR-0023: Fremde Historie von der Git-Hygiene ausnehmen — erklärt, nicht global
Kontext
Der Upstream-Merge aus ADR-0022
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
(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 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.