docs: rebase onto moved main, renumber session ADRs to 0012/0013

Reality moved after the Gate-3 approval (flagged by the human, verified
read-only): main gained decisions/0011 plus a new AAR, gitops gained two
commits, and the live backlog shows gitops#61 without a milestone - the
first real break of the 100% milestone discipline. Session ADRs
renumbered to avoid the id collision, counts updated (11 old ADRs, 6
AARs), gruppenpruefung gains the group-wide milestone/priority duty
check backed by that real case. Addendum in the design doc records all
of it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Thore Cimbal
2026-08-11 12:00:00 +00:00
co-authored by Claude Fable 5
parent 0cce6f641c
commit 5e46372ea8
3 changed files with 56 additions and 23 deletions
@@ -1,6 +1,6 @@
--- ---
type: adr type: adr
id: "0011" id: "0012"
status: accepted status: accepted
date: 2026-08-11 date: 2026-08-11
supersedes: null supersedes: null
@@ -11,7 +11,7 @@ related:
- "decisions/0005-pm-framework-kanban.md" - "decisions/0005-pm-framework-kanban.md"
--- ---
# ADR-0011: Issues leben im Repo; GitLab wird deterministisch bespiegelt # ADR-0012: Issues leben im Repo; GitLab wird deterministisch bespiegelt
## Kontext ## Kontext
@@ -1,6 +1,6 @@
--- ---
type: adr type: adr
id: "0012" id: "0013"
status: accepted status: accepted
date: 2026-08-11 date: 2026-08-11
supersedes: null supersedes: null
@@ -10,7 +10,7 @@ related:
- "decisions/0001-gitlab-kanonisch-push-mirror.md" - "decisions/0001-gitlab-kanonisch-push-mirror.md"
--- ---
# ADR-0012: Gruppenregeln kanonisch im management-Repo, Komponenten zeigen und werden geprüft # ADR-0013: Gruppenregeln kanonisch im management-Repo, Komponenten zeigen und werden geprüft
## Kontext ## Kontext
+52 -19
View File
@@ -8,8 +8,8 @@ related:
- "decisions/0005-pm-framework-kanban.md" - "decisions/0005-pm-framework-kanban.md"
- "decisions/0009-commit-konventionen-und-historien-anonymisierung.md" - "decisions/0009-commit-konventionen-und-historien-anonymisierung.md"
- "decisions/0010-haertung-eigener-meilenstein.md" - "decisions/0010-haertung-eigener-meilenstein.md"
- "docs/adr/0011-issues-im-repo-gitlab-als-spiegel.md" - "docs/adr/0012-issues-im-repo-gitlab-als-spiegel.md"
- "docs/adr/0012-gruppenregeln-kanonisch-mit-pruefung.md" - "docs/adr/0013-gruppenregeln-kanonisch-mit-pruefung.md"
--- ---
# Design: Migration des Management-Systems auf neckbeard # Design: Migration des Management-Systems auf neckbeard
@@ -69,9 +69,10 @@ wurde.
1. **Deterministische Gates grün:** `scripts/validate.py` meldet auf dem 1. **Deterministische Gates grün:** `scripts/validate.py` meldet auf dem
migrierten Repo 0 Fehler; `scripts/gen_status.py --check` meldet migrierten Repo 0 Fehler; `scripts/gen_status.py --check` meldet
STATUS.md aktuell. STATUS.md aktuell.
2. **Entscheidungen portiert:** alle 10 Entscheidungen 2. **Entscheidungen portiert:** alle Entscheidungen aus `decisions/`
(`decisions/0001…0010`) liegen als ADRs mit schema-konformem liegen als ADRs mit schema-konformem Frontmatter unter `docs/adr/`
Frontmatter unter `docs/adr/` — 10/10 validieren. 11/11 validieren *(bei Gate-1-Freigabe 10; `decisions/0011` kam am
2026-08-11 hinzu, siehe Nachtrag in Gate 3)*.
3. **Ein Backlog:** die fünf Arbeitspunkte aus F-004 (OVERMIND-01, 3. **Ein Backlog:** die fünf Arbeitspunkte aus F-004 (OVERMIND-01,
CFGMON-11/12/13, MATRIX-05) existieren als Issues im kanonischen CFGMON-11/12/13, MATRIX-05) existieren als Issues im kanonischen
System — 5/5; 0 offene „Nächste Schritte" in `hosts/` ohne System — 5/5; 0 offene „Nächste Schritte" in `hosts/` ohne
@@ -156,7 +157,7 @@ bleibt auch mit neckbeard ein Loch:
| Muster | Wurzel im Alt-Ansatz | Neckbeard-Gegenstück | Verbleibendes Loch → Mechanismus dieser Migration | | Muster | Wurzel im Alt-Ansatz | Neckbeard-Gegenstück | Verbleibendes Loch → Mechanismus dieser Migration |
|---|---|---|---| |---|---|---|---|
| **A** — Doku nicht nachgezogen (F-001, F-005, F-007, F-010, F-017) | Zustand steht als behauptete Zahl/Prosa an mehreren Stellen; nichts vergleicht | Generiertes STATUS.md (`gen_status.py --check` in CI), ADRs nie editiert nur abgelöst | Prosa, die *Forge*-Zustand behauptet, prüft neckbeard nicht → Drift-Prüfung Repo↔GitLab; Meilenstein-Satz als Schema-Enum (eine Quelle); „Stand"-Etiketten entfallen ersatzlos (git log antwortet) | | **A** — Doku nicht nachgezogen (F-001, F-005, F-007, F-010, F-017) | Zustand steht als behauptete Zahl/Prosa an mehreren Stellen; nichts vergleicht | Generiertes STATUS.md (`gen_status.py --check` in CI), ADRs nie editiert nur abgelöst | Prosa, die *Forge*-Zustand behauptet, prüft neckbeard nicht → Drift-Prüfung Repo↔GitLab; Meilenstein-Satz als Schema-Enum (eine Quelle); „Stand"-Etiketten entfallen ersatzlos (git log antwortet) |
| **B** — Regel repo-weit, Anwendung Teilmenge (F-002, F-003, F-008, F-011) | Regel gilt „für alle Repos", kein Artefakt zählt die Repos auf, kein Skript läuft über alle | **Lücke** — ADR-0001 endet an der Repo-Grenze | Komponenten-Artefakt + Abgleich gegen die zur Laufzeit gelesene Gruppenliste ([ADR-0012](../adr/0012-gruppenregeln-kanonisch-mit-pruefung.md)); Git-Hygiene-Prüfung (12:00Z-Zeitstempel, kanonische Identität) über alle deklarierten Repos | | **B** — Regel repo-weit, Anwendung Teilmenge (F-002, F-003, F-008, F-011) | Regel gilt „für alle Repos", kein Artefakt zählt die Repos auf, kein Skript läuft über alle | **Lücke** — ADR-0001 endet an der Repo-Grenze | Komponenten-Artefakt + Abgleich gegen die zur Laufzeit gelesene Gruppenliste ([ADR-0013](../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md)); Git-Hygiene-Prüfung (12:00Z-Zeitstempel, kanonische Identität) über alle deklarierten Repos |
| **C** — zwei Backlogs (F-004, F-009) | `hosts/`-Markdown hielt „Nächste Schritte" neben dem Board | In-Repo-Issues, ein Ort | Wiki-Seiten können wieder Aufgabenprosa ansammeln → Prüfregel: Aufgaben-Marker („Nächster Schritt", offene Checkboxen) in Wiki-Seiten ohne Issue-Verweis sind ein Befund | | **C** — zwei Backlogs (F-004, F-009) | `hosts/`-Markdown hielt „Nächste Schritte" neben dem Board | In-Repo-Issues, ein Ort | Wiki-Seiten können wieder Aufgabenprosa ansammeln → Prüfregel: Aufgaben-Marker („Nächster Schritt", offene Checkboxen) in Wiki-Seiten ohne Issue-Verweis sind ein Befund |
| **D** — Artefakte ohne Eigentümer überleben (F-006, F-012) | Branches/SHA-Zitate hat niemand je gelesen | `warn_if_orphan` nur für Wiki-Seiten | Branch-Hygiene (Alter/Divergenz verwaister Branches) und SHA-Auflösung inkl. Zuordnungstabelle in der Prüf-Familie; Refinement-Agenda erhält den Punkt | | **D** — Artefakte ohne Eigentümer überleben (F-006, F-012) | Branches/SHA-Zitate hat niemand je gelesen | `warn_if_orphan` nur für Wiki-Seiten | Branch-Hygiene (Alter/Divergenz verwaister Branches) und SHA-Auflösung inkl. Zuordnungstabelle in der Prüf-Familie; Refinement-Agenda erhält den Punkt |
@@ -164,9 +165,9 @@ Die sieben neckbeard-Lücken, Disposition (Akzeptanzkriterium 6, 7/7):
| # | Lücke | Disposition | | # | Lücke | Disposition |
|---|---|---| |---|---|---|
| 1 | Viele Repos, ein Regelwerk | **Eingefaltet:** [ADR-0012](../adr/0012-gruppenregeln-kanonisch-mit-pruefung.md) (Pointer + Prüfung) | | 1 | Viele Repos, ein Regelwerk | **Eingefaltet:** [ADR-0013](../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md) (Pointer + Prüfung) |
| 2 | Kein Komponenten-Artefakt | **Eingefaltet:** Schema-Typ `component`, `docs/components/` (ADR-0012) | | 2 | Kein Komponenten-Artefakt | **Eingefaltet:** Schema-Typ `component`, `docs/components/` (ADR-0013) |
| 3 | Kein Meilenstein-Konzept | **Eingefaltet:** Pflichtfeld `milestone` im Issue-Schema ([ADR-0011](../adr/0011-issues-im-repo-gitlab-als-spiegel.md)) | | 3 | Kein Meilenstein-Konzept | **Eingefaltet:** Pflichtfeld `milestone` im Issue-Schema ([ADR-0012](../adr/0012-issues-im-repo-gitlab-als-spiegel.md)) |
| 4 | SHA-Zitate unaufgelöst | **Eingefaltet (projektseitig):** Prüfskript nach Vorbild `inv_shas.py`; Upstream-Kandidat | | 4 | SHA-Zitate unaufgelöst | **Eingefaltet (projektseitig):** Prüfskript nach Vorbild `inv_shas.py`; Upstream-Kandidat |
| 5 | Git-Hygiene außerhalb des Blickfelds | **Eingefaltet (projektseitig):** Hygiene-Prüfung in der CI-Familie; Upstream-Kandidat | | 5 | Git-Hygiene außerhalb des Blickfelds | **Eingefaltet (projektseitig):** Hygiene-Prüfung in der CI-Familie; Upstream-Kandidat |
| 6 | Externe Link-Ziele ungeprüft | **Teilweise eingefaltet:** Sperrliste stillgelegter Ziele (toter Gitea-Tracker, F-005) als deterministische Prüfung; echte Erreichbarkeitsprüfung **verworfen** (netzabhängig, nichtdeterministisch — widerspricht validate-Philosophie) | | 6 | Externe Link-Ziele ungeprüft | **Teilweise eingefaltet:** Sperrliste stillgelegter Ziele (toter Gitea-Tracker, F-005) als deterministische Prüfung; echte Erreichbarkeitsprüfung **verworfen** (netzabhängig, nichtdeterministisch — widerspricht validate-Philosophie) |
@@ -178,11 +179,11 @@ Die sieben neckbeard-Lücken, Disposition (Akzeptanzkriterium 6, 7/7):
| Wert | Erhaltungsmechanismus | | Wert | Erhaltungsmechanismus |
|---|---| |---|---|
| **F-014** Issue-Hygiene (Meilensteinpflicht, eine Priorität, ein Status, WIP-Limit, keine ID-Wiederverwendung) | Wird von Konvention zu Schema: `milestone`/`priority` Pflichtfelder, Status-Enum, WIP-Limit als Validator-Regel, Duplikat-ID-Prüfung existiert in `validate.py` bereits; Board bleibt via Spiegel erhalten (ADR-0011) | | **F-014** Issue-Hygiene (Meilensteinpflicht, eine Priorität, ein Status, WIP-Limit, keine ID-Wiederverwendung) | Wird von Konvention zu Schema: `milestone`/`priority` Pflichtfelder, Status-Enum, WIP-Limit als Validator-Regel, Duplikat-ID-Prüfung existiert in `validate.py` bereits; Board bleibt via Spiegel erhalten (ADR-0012) |
| **F-013** Mirror-Topologie mit Begründung, Gegenargument, Rettungspfad | Alt-ADRs 0001/0004 werden unverändert portiert; die „Warum zwei Orte"-Prosa und der Rettungspfad ziehen als Wiki-Seiten um; Mirror-Sync bleibt Stillstandsprüfung | | **F-013** Mirror-Topologie mit Begründung, Gegenargument, Rettungspfad | Alt-ADRs 0001/0004 werden unverändert portiert; die „Warum zwei Orte"-Prosa und der Rettungspfad ziehen als Wiki-Seiten um; Mirror-Sync bleibt Stillstandsprüfung |
| **F-015** Rewrite-Zuordnung, 251/251 verifiziert | `shared/commit-zuordnung-2026-08-07.md``docs/sources/` (unveränderlich, agentenschreibgeschützt); SHA-Prüfung löst über die Tabelle auf; die Zuordnungs-Auflage für künftige Rewrites steht im portierten ADR-0009 | | **F-015** Rewrite-Zuordnung, 251/251 verifiziert | `shared/commit-zuordnung-2026-08-07.md``docs/sources/` (unveränderlich, agentenschreibgeschützt); SHA-Prüfung löst über die Tabelle auf; die Zuordnungs-Auflage für künftige Rewrites steht im portierten ADR-0009 |
| **F-016** Redliche Selbstdokumentation | „Redlichkeit"-Regeln ziehen in den Projektabschnitt von AGENTS.md; AAR-/Retro-Kultur bleibt (AARs → `docs/aar/`, Retro-Protokolle → `docs/sources/`) | | **F-016** Redliche Selbstdokumentation | „Redlichkeit"-Regeln ziehen in den Projektabschnitt von AGENTS.md; AAR-/Retro-Kultur bleibt (AARs → `docs/aar/`, Retro-Protokolle → `docs/sources/`) |
| Stillstandsprüfungs-Prinzipien | Bleiben wörtlich: Prüfungen nur aus realen Fällen; „kann nicht prüfen" ist Befund, nicht Skip; Abbruch statt stillem Überspringen; Projektliste zur Laufzeit. Die neuen Gruppen-Prüfungen (ADR-0012, Hygiene, Drift) treten dieser Familie bei | | Stillstandsprüfungs-Prinzipien | Bleiben wörtlich: Prüfungen nur aus realen Fällen; „kann nicht prüfen" ist Befund, nicht Skip; Abbruch statt stillem Überspringen; Projektliste zur Laufzeit. Die neuen Gruppen-Prüfungen (ADR-0013, Hygiene, Drift) treten dieser Familie bei |
| Board-Pflege-Rechte (Zusage-Spalten nur sorb) | Prozessregel im AGENTS.md-Projektabschnitt; Refinement-Ablauf zieht als Wiki-Seite um und instanziiert die WORKFLOW-Agenda (Board rechts-nach-links, Nachziehen, Entscheidungsvorlagen mit Empfehlung, Datumspflicht) | | Board-Pflege-Rechte (Zusage-Spalten nur sorb) | Prozessregel im AGENTS.md-Projektabschnitt; Refinement-Ablauf zieht als Wiki-Seite um und instanziiert die WORKFLOW-Agenda (Board rechts-nach-links, Nachziehen, Entscheidungsvorlagen mit Empfehlung, Datumspflicht) |
| ADR-Pflicht bei dauerhaften Ausnahmen | Übernommen in den Projektabschnitt — neckbeard kennt diese Regel selbst nicht (Upstream-Kandidat) | | ADR-Pflicht bei dauerhaften Ausnahmen | Übernommen in den Projektabschnitt — neckbeard kennt diese Regel selbst nicht (Upstream-Kandidat) |
@@ -194,7 +195,7 @@ werkzeugwidersprechend — Nicht-Ziel „kein Umschreiben"):
| Alt | Neu | | Alt | Neu |
|---|---| |---|---|
| `CLAUDE.md` | Ein-Zeilen-Pointer; Regeln → `AGENTS.md` (Upstream-Abschnitte wörtlich + Abschnitt „Gruppenregeln"); Karpathy-Block wortgleich → `docs/sources/regelwerk/karpathy-guidelines.md`, aus AGENTS.md zitiert *(freigegeben von sorb, 2026-08-11)* | | `CLAUDE.md` | Ein-Zeilen-Pointer; Regeln → `AGENTS.md` (Upstream-Abschnitte wörtlich + Abschnitt „Gruppenregeln"); Karpathy-Block wortgleich → `docs/sources/regelwerk/karpathy-guidelines.md`, aus AGENTS.md zitiert *(freigegeben von sorb, 2026-08-11)* |
| `decisions/0001…0010` | `docs/adr/0001…0010`, Frontmatter ergänzt, Text unverändert; `decisions/` entfällt, Verweise nachgezogen | | `decisions/0001…0011` | `docs/adr/0001…0011`, Frontmatter ergänzt, Text unverändert; `decisions/` entfällt, Verweise nachgezogen |
| `roadmap.md` | Bleibt als Linien/Reihenfolge-Prosa; alle Zählungen und „Stand"-Blöcke raus (→ generiertes STATUS.md); M5 statt „offene Frage" (F-001) | | `roadmap.md` | Bleibt als Linien/Reihenfolge-Prosa; alle Zählungen und „Stand"-Blöcke raus (→ generiertes STATUS.md); M5 statt „offene Frage" (F-001) |
| `verfahren/aar/*` (5) | `docs/aar/*`, Frontmatter (`open`/`harvested` nach Retro-Lage) | | `verfahren/aar/*` (5) | `docs/aar/*`, Frontmatter (`open`/`harvested` nach Retro-Lage) |
| `verfahren/retro/*` | `docs/sources/protokolle/*` (unveränderliche Protokolle) | | `verfahren/retro/*` | `docs/sources/protokolle/*` (unveränderliche Protokolle) |
@@ -242,10 +243,10 @@ flowchart LR
Die zwei tragenden Richtungsentscheidungen stehen als ADRs (Status Die zwei tragenden Richtungsentscheidungen stehen als ADRs (Status
`proposed`, werden mit diesem Gate wirksam): `proposed`, werden mit diesem Gate wirksam):
- **[ADR-0011](../adr/0011-issues-im-repo-gitlab-als-spiegel.md)** — - **[ADR-0012](../adr/0012-issues-im-repo-gitlab-als-spiegel.md)** —
Issues im Repo kanonisch (Management-Scope), GitLab als Issues im Repo kanonisch (Management-Scope), GitLab als
deterministisch bespielter Spiegel; Optionen A/B/C abgewogen im ADR. deterministisch bespielter Spiegel; Optionen A/B/C abgewogen im ADR.
- **[ADR-0012](../adr/0012-gruppenregeln-kanonisch-mit-pruefung.md)** — - **[ADR-0013](../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md)** —
Gruppenregeln kanonisch hier, Komponenten tragen Pointer, ein Gruppenregeln kanonisch hier, Komponenten tragen Pointer, ein
Komponenten-Artefakt macht die Gruppe prüfbar; Kopie/Submodule Komponenten-Artefakt macht die Gruppe prüfbar; Kopie/Submodule
verworfen im ADR. verworfen im ADR.
@@ -330,12 +331,13 @@ ausgewiesen), `STATUS.md` (generiert).
**Wurzel — entfällt (git mv):** `decisions/`, `hosts/`, `verfahren/`, **Wurzel — entfällt (git mv):** `decisions/`, `hosts/`, `verfahren/`,
`vision/`, `shared/`. `vision/`, `shared/`.
**`docs/adr/`:** `0001…0010` portiert (Frontmatter ergänzt; Datum = **`docs/adr/`:** `0001…0011` portiert (Frontmatter ergänzt; Datum =
Original-Datum; Body unverändert bis auf umgezogene Link-Ziele), Original-Datum; Body unverändert bis auf umgezogene Link-Ziele),
`0011`/`0012` (accepted), `template.md` (v0.1.1). `0012`/`0013` (accepted), `template.md` (v0.1.1).
**`docs/aar/`:** die 5 AARs aus `verfahren/aar/` (Dateinamen bleiben, **`docs/aar/`:** die 6 AARs aus `verfahren/aar/` (Dateinamen bleiben,
Frontmatter: die vier vom 2026-08-01/02 `harvested` — von der Retro Frontmatter: die vier vom 2026-08-01/02 `harvested` — von der Retro
2026-08-09 geerntet; `2026-08-09-refinement-und-betrieb.md` `open`), 2026-08-09 geerntet; `2026-08-09-refinement-und-betrieb.md` und
`2026-08-11-apo-calls-profile-zeile.md` `open`),
`template.md` (v0.1.1; ersetzt `aar-vorlage.md`). `template.md` (v0.1.1; ersetzt `aar-vorlage.md`).
**`docs/issues/`:** Import aller offenen management-Issues als **`docs/issues/`:** Import aller offenen management-Issues als
`NNNN-slug.md` (NNNN = GitLab-iid, vierstellig; Slug deterministisch `NNNN-slug.md` (NNNN = GitLab-iid, vierstellig; Slug deterministisch
@@ -414,7 +416,10 @@ gruppenpruefung.py # Lab-CI, Token aus Umgebung, A
# Gruppenliste (Laufzeit) ↔ docs/components/; # Gruppenliste (Laufzeit) ↔ docs/components/;
# Pointer-Präsenz je active/staged-Komponente; # Pointer-Präsenz je active/staged-Komponente;
# Issue-Drift docs/issues ↔ GitLab (Titel/Status/ # Issue-Drift docs/issues ↔ GitLab (Titel/Status/
# Meilenstein/Priorität); Git-Hygiene (Commits nach # Meilenstein/Priorität); Meilenstein- und
# Prioritätspflicht über ALLE offenen Gruppen-Issues
# (realer Fall: gitops#61, siehe Nachtrag);
# Git-Hygiene (Commits nach
# 2026-08-07 ≠ 12:00:00Z oder fremde Identität = Befund) # 2026-08-07 ≠ 12:00:00Z oder fremde Identität = Befund)
spiegel_issues.py [--ausfuehren] # Default Dry-Run: druckt geplante API-Aufrufe; spiegel_issues.py [--ausfuehren] # Default Dry-Run: druckt geplante API-Aufrufe;
# --ausfuehren nur durch sorb; Repo → GitLab, nie zurück # --ausfuehren nur durch sorb; Repo → GitLab, nie zurück
@@ -472,3 +477,31 @@ Abbruch statt Skip).
6. **`gen_status.py`-Fork-Tiefe**: je mehr das Generat zeigt, desto 6. **`gen_status.py`-Fork-Tiefe**: je mehr das Generat zeigt, desto
weiter entfernt es sich vom Upstream; gewählt ist die kleinste weiter entfernt es sich vom Upstream; gewählt ist die kleinste
Erweiterung, die die Roadmap-Zahlen ersetzt. Erweiterung, die die Roadmap-Zahlen ersetzt.
### Nachtrag 2026-08-11 — die Realität lief nach Gate-3-Freigabe weiter
Hinweis von sorb bei der Gate-3-Freigabe, per Fetch und Live-API
(read-only) verifiziert:
- **management `main` +3 Commits:** AAR
`2026-08-11-apo-calls-profile-zeile.md` (+ Nachtrag) und — kritisch —
**`decisions/0011`** (Enrollment-Localpart-Kollision). Das alte Schema
zählt parallel weiter; die Session-ADRs kollidierten mit der Nummer
und wurden zu **0012/0013** umnummeriert (genau die Duplikat-ID-Klasse,
die `validate.py` künftig mechanisch meldet). Branch auf
`origin/main` rebasiert.
- **gitops +2 Commits** (MAS-Fix, Runbook); beide und alle drei
management-Commits halten die Hygiene-Regeln (12:00:00Z, kanonische
Identität) — geprüft.
- **Live-Backlog: 72 offen** (Import zählt beim Lauf, nicht aus diesem
Text). **gitops#61 trägt keinen Meilenstein** und das neue Label
`area:authentik` — die 100%-Meilenstein-Disziplin (F-014) ist binnen
zwei Tagen real gerissen. Konsequenz: `gruppenpruefung.py` prüft die
Meilenstein-/Prioritätspflicht über alle offenen Gruppen-Issues (der
reale Fall, den die Stillstandsprüfungs-Regel für neue Prüfungen
verlangt, existiert hiermit). Management-Scope: 26 offene Issues,
iids 132.
- Zahlen im Dokument nachgezogen: 11 Alt-ADRs, 6 AARs,
Akzeptanzkriterium 2 = 11/11. Die Enums bleiben, wie in Annahme 2
benannt, aus dem management-Scope abgeleitet; `area:authentik` liegt
außerhalb (gitops) und wird erst bei dessen Adoption Schema-Thema.