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.
This commit is contained in:
@@ -21,6 +21,11 @@ zu überspringen, und jede Prüfung bildet einen real passierten Fall ab
|
||||
5. Git-Hygiene seit 2026-08-07 — Autor- und Committer-Zeit 12:00:00
|
||||
UTC, kanonische Identität; ausgenommen sind maschinelle Absender
|
||||
(MASCHINEN, per Adresse — ADR-0009). (F-002/F-003)
|
||||
Komponenten mit dem Feld `fremdhistorie` prüfen nur Commits, die
|
||||
von eigenen Identitäten COMMITTET wurden: Seit dem Upstream-Merge
|
||||
(ADR-0022) trägt ThreadNet-Web 70.265 fremde Commits, die unserer
|
||||
Konvention nie folgen konnten. Die Ausnahme ist erklärungspflichtig
|
||||
und gilt nur dort, wo sie deklariert ist — nicht global.
|
||||
|
||||
Demo-Modus für den Altbestand (Muster-B-Nachweis, Feldtest F-002):
|
||||
--hygiene-lokal <klonverzeichnis> [--seit JJJJ-MM-TT]
|
||||
@@ -244,11 +249,30 @@ def main() -> int:
|
||||
for slug, meta in sorted(erklaert.items()):
|
||||
if meta.get("phase") == "external":
|
||||
continue
|
||||
# Repos mit erklärter Fremdhistorie (Feld `fremdhistorie`) tragen Commits,
|
||||
# die nie unserer Konvention folgen konnten, weil sie nicht bei uns
|
||||
# entstanden sind. Sie zu bemängeln hiesse, einen Alarm dauerhaft rot zu
|
||||
# faerben, an dem niemand etwas aendern kann - und ein Dauerrot ist kein
|
||||
# Alarm mehr (#0104). Der Trennschnitt ist der COMMITTER, nicht der Autor:
|
||||
# gemessen an ThreadNet-Web nach dem Upstream-Merge trennt er exakt (18
|
||||
# eigene Commits committet von uns, 39 fremde von GitHub/RiotRobot, keine
|
||||
# Ueberschneidung). Der Autor taugt nicht dafuer - unsere eigenen Commits
|
||||
# koennen fremde Autoren tragen (Cherry-Picks), und fremde Commits tragen
|
||||
# Autoren, die wie Menschen aussehen.
|
||||
#
|
||||
# ⚠️ Preis: In diesen Repos faellt ein Commit durchs Raster, den jemand von
|
||||
# uns unter einer voellig unbekannten Identitaet erzeugt - der Fall, den die
|
||||
# Identitaetspruefung sonst faengt. Deshalb gilt die Ausnahme NUR fuer
|
||||
# Komponenten, die sie ausdruecklich erklaeren, und nicht global.
|
||||
nur_eigene_committer = bool(meta.get("fremdhistorie"))
|
||||
pfad = urllib.parse.quote(f"{GRUPPE}/{slug}", safe="")
|
||||
for c in api(f"projects/{pfad}/repository/commits"
|
||||
f"?since={GRENZE}T00:00:00Z&all=true", token):
|
||||
if (c.get("author_email") or "").lower() in MASCHINEN:
|
||||
continue
|
||||
if (nur_eigene_committer
|
||||
and (c.get("committer_email") or "").lower() not in EIGENE_MAILS):
|
||||
continue
|
||||
wer = f"{c.get('author_name')} <{c.get('author_email')}>"
|
||||
if not zeit_ok(c["authored_date"]) or not zeit_ok(c["committed_date"]):
|
||||
befunde.append(f"{slug} {c['short_id']}: Echtzeit-Stempel "
|
||||
|
||||
Reference in New Issue
Block a user