fix(pruefung): BOT becomes a set of machine senders, matched by address
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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
9aea4ad69d
commit
da673b537a
@@ -17,8 +17,8 @@ zu überspringen, und jede Prüfung bildet einen real passierten Fall ab
|
|||||||
4. Issue-Drift management ↔ docs/issues/ — Titel, Zustand,
|
4. Issue-Drift management ↔ docs/issues/ — Titel, Zustand,
|
||||||
Meilenstein, Priorität, Status-Label. (F-001/F-017-Klasse)
|
Meilenstein, Priorität, Status-Label. (F-001/F-017-Klasse)
|
||||||
5. Git-Hygiene seit 2026-08-07 — Autor- und Committer-Zeit 12:00:00
|
5. Git-Hygiene seit 2026-08-07 — Autor- und Committer-Zeit 12:00:00
|
||||||
UTC, kanonische Identität; Ausnahme: der Rotations-Bot
|
UTC, kanonische Identität; ausgenommen sind maschinelle Absender
|
||||||
(ADR-0009). (F-002/F-003)
|
(MASCHINEN, per Adresse — ADR-0009). (F-002/F-003)
|
||||||
|
|
||||||
Demo-Modus für den Altbestand (Muster-B-Nachweis, Feldtest F-002):
|
Demo-Modus für den Altbestand (Muster-B-Nachweis, Feldtest F-002):
|
||||||
--hygiene-lokal <klonverzeichnis> [--seit JJJJ-MM-TT]
|
--hygiene-lokal <klonverzeichnis> [--seit JJJJ-MM-TT]
|
||||||
@@ -43,7 +43,16 @@ API = "https://git.lab/api/v4"
|
|||||||
GRUPPE = "axion1337.chat"
|
GRUPPE = "axion1337.chat"
|
||||||
GRENZE = "2026-08-07"
|
GRENZE = "2026-08-07"
|
||||||
KANONISCH = ("Thore Cimbal", "cfx@riot.8shield.net")
|
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",
|
EIGENE_MAILS = {"cfx@riot.8shield.net", "gamemaster@axion1337.de",
|
||||||
"cfxqriot.8shield.net", "Scrublord@Mac.Bad"}
|
"cfxqriot.8shield.net", "Scrublord@Mac.Bad"}
|
||||||
STATUS_LABEL = {"open": None, "next": "status:next",
|
STATUS_LABEL = {"open": None, "next": "status:next",
|
||||||
@@ -224,7 +233,7 @@ def main() -> int:
|
|||||||
pfad = urllib.parse.quote(f"{GRUPPE}/{slug}", safe="")
|
pfad = urllib.parse.quote(f"{GRUPPE}/{slug}", safe="")
|
||||||
for c in api(f"projects/{pfad}/repository/commits"
|
for c in api(f"projects/{pfad}/repository/commits"
|
||||||
f"?since={GRENZE}T00:00:00Z&all=true", token):
|
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
|
continue
|
||||||
wer = f"{c.get('author_name')} <{c.get('author_email')}>"
|
wer = f"{c.get('author_name')} <{c.get('author_email')}>"
|
||||||
if not zeit_ok(c["authored_date"]) or not zeit_ok(c["committed_date"]):
|
if not zeit_ok(c["authored_date"]) or not zeit_ok(c["committed_date"]):
|
||||||
|
|||||||
Reference in New Issue
Block a user