From da673b537afc96ff1f8028bd4e287e363b27e414 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Sat, 15 Aug 2026 12:00:00 +0000 Subject: [PATCH] fix(pruefung): BOT becomes a set of machine senders, matched by address MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Declaring threadnet-wiki as a component took the check from 23 to 72 findings, 46 of them Wiki.js git-storage commits. Those are the same class ADR-0009 already exempted for the rotation bot — written without a human present, so attributing them to a person would be wrong — but the exemption held exactly one name. Matching is on the address rather than the display name on purpose: the Wiki.js account shows up as 'Administrator', which is far too generic to silence findings with. Down to 25, and the checks that should still fire do: eight non-canonical commits remain, all of them mine from the past two days. Co-Authored-By: Claude Opus 4.8 --- scripts/gruppenpruefung.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/scripts/gruppenpruefung.py b/scripts/gruppenpruefung.py index 4be9316..a8d2161 100644 --- a/scripts/gruppenpruefung.py +++ b/scripts/gruppenpruefung.py @@ -17,8 +17,8 @@ zu überspringen, und jede Prüfung bildet einen real passierten Fall ab 4. Issue-Drift management ↔ docs/issues/ — Titel, Zustand, Meilenstein, Priorität, Status-Label. (F-001/F-017-Klasse) 5. Git-Hygiene seit 2026-08-07 — Autor- und Committer-Zeit 12:00:00 - UTC, kanonische Identität; Ausnahme: der Rotations-Bot - (ADR-0009). (F-002/F-003) + UTC, kanonische Identität; ausgenommen sind maschinelle Absender + (MASCHINEN, per Adresse — ADR-0009). (F-002/F-003) Demo-Modus für den Altbestand (Muster-B-Nachweis, Feldtest F-002): --hygiene-lokal [--seit JJJJ-MM-TT] @@ -43,7 +43,16 @@ API = "https://git.lab/api/v4" GRUPPE = "axion1337.chat" GRENZE = "2026-08-07" KANONISCH = ("Thore Cimbal", "cfx@riot.8shield.net") -BOT = "turn-secret-rotation" +# Maschinelle Absender: ihre Commits entstehen ohne Menschen am Gerät, eine +# Zuschreibung an eine Person wäre falsch (ADR-0009, dort für den Rotations-Bot +# entschieden; dieselbe Begründung trägt für jeden weiteren Automaten). +# Gematcht wird die ADRESSE, nicht der Name: "Administrator" ist als Name viel zu +# generisch, um damit Befunde stillzulegen. +MASCHINEN = { + "turn-secret-rotation@axion1337.chat", # TURN-Secret-Rotation (CronJob im Cluster) + "admin@axion1337.chat", # Wiki.js Git-Storage (Anzeigename "Administrator") + "wiki@axion1337.chat", # Wiki.js Git-Storage (Dienst-Identität) +} EIGENE_MAILS = {"cfx@riot.8shield.net", "gamemaster@axion1337.de", "cfxqriot.8shield.net", "Scrublord@Mac.Bad"} STATUS_LABEL = {"open": None, "next": "status:next", @@ -224,7 +233,7 @@ def main() -> int: 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 BOT in (c.get("author_name") or ""): + if (c.get("author_email") or "").lower() in MASCHINEN: 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"]):