docs: close #0106, accept ADR-0026 — and the two AARs I had argued away

An AAR is not optional. AGENTS.md line 202 demands one after every deploy with a
handover and after every incident, and today held both: the account without a
profile row, and this deploy on the operating host. Neither existed until sorb
asked. I had reasoned the first one away using a comment in the template rather
than the rule itself.

That is FB-01 again, one day after it was partly fixed by writing the rule into
AGENTS.md — and in a sharper form. The knowledge gap was closed this time. The
rule stood where it belongs and was findable. It lost anyway, because a
secondary text offered a more convenient reading and nothing contradicted it.
The stolperstein records that distinction, because it changes what a fix would
have to do.

The incident AAR carries the more useful content: four causes claimed in a row,
each disproven by the next measurement, two of them stopped by sorb's objection
rather than by mine. The real cause was documented ten days earlier, and its
diagnostic shortcut had aged — a count of zero only catches accounts that never
placed a call, and this one had twenty-one, all old.
This commit is contained in:
Thore Cimbal
2026-08-21 12:00:00 +00:00
parent f49ec6144b
commit 8a032d9eb8
9 changed files with 321 additions and 20 deletions
+9 -10
View File
@@ -2,17 +2,16 @@
<!-- Generated by scripts/gen_status.py — do not edit. -->
## Issues (48 open, 52 closed)
## Issues (47 open, 53 closed)
Verteilung: M1 2 · M2 16 · M3 4 · M4 11 · M5 15
Verteilung: M1 1 · M2 16 · M3 4 · M4 11 · M5 15
Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
### M1 (2)
### M1 (1)
| Issue | Priorität | Status | Title |
|---|---|---|---|
| [0106](docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md) | high | open | CVE-Scan deckt 52 % — die Zielliste ist handgepflegt und läuft dem Bestand hinterher |
| [0072](docs/issues/0072-gitops-34-dsgvo-datenschutz-compliance-konkretisieren.md) | low | open | DSGVO/Datenschutz-Compliance konkretisieren |
### M2 (16)
@@ -82,11 +81,9 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
| [0090](docs/issues/0090-gitops-59-kein-kubernetes-audit-log-zugriffe-an-der-api.md) | low | open | Kein Kubernetes-Audit-Log — Zugriffe an der API werden nicht protokolliert |
## Active design docs (1)
## Active design docs (0)
| Design | Gate | Title |
|---|---|---|
| [2026-08-21-cve-ziele-ableiten](docs/design/2026-08-21-cve-ziele-ableiten.md) | gate-4 | Design: Die CVE-Zielmenge ableiten statt pflegen (#0106) |
_none active_
## ADRs (26)
@@ -117,9 +114,9 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
| [0023](docs/adr/0023-fremdhistorie-von-der-git-hygiene-ausnehmen.md) | accepted | ADR-0023: Fremde Historie von der Git-Hygiene ausnehmen — erklärt, nicht global |
| [0024](docs/adr/0024-drei-framework-dateien-erklaert-erweitert.md) | accepted | ADR-0024: Drei Framework-Dateien sind erklärt erweitert — Diff-Referenz statt Byte-Vergleich |
| [0025](docs/adr/0025-egress-ausnahmen-als-cidr-ausser-hinter-cdn.md) | accepted | ADR-0025: Egress-Ausnahmen werden als CIDR gepinnt — außer hinter einem CDN |
| [0026](docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md) | proposed | ADR-0026: Prüfziele werden abgeleitet, nicht gepflegt — und das Ausbleiben der Herleitung alarmiert |
| [0026](docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md) | accepted | ADR-0026: Prüfziele werden abgeleitet, nicht gepflegt — und das Ausbleiben der Herleitung alarmiert |
## Open AARs (6)
## Open AARs (8)
- [AAR — Alle geplanten Prüfungen waren dauerhaft rot und meldeten damit nichts mehr](docs/aar/2026-08-18-alle-pruefungen-dauerhaft-rot.md)
- [AAR — Nach der Freischaltung sendete Safari ungefiltert weiter](docs/aar/2026-08-18-safari-sendete-ungefiltert.md)
@@ -127,6 +124,8 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md).
- [AAR — Drei DKIM-Einträge verschwanden bei der DMARC-Härtung](docs/aar/2026-08-20-dkim-verlust-zonenaenderung.md)
- [AAR — Game-Host-Anbindung: Deploy über zwei Übergaben, Ursache war nie die Firewall](docs/aar/2026-08-20-game-host-anbindung.md)
- [AAR — rohana lief voll, der ThreadNet-Web-Spiegel riss](docs/aar/2026-08-20-rohana-platte-voll-spiegel-gerissen.md)
- [AAR: Clarks Calls und Identitäts-Reset — vier Fehldiagnosen bis zur bekannten Ursache](docs/aar/2026-08-21-clark-calls-reset-vier-fehldiagnosen.md)
- [AAR: Deploy der abgeleiteten CVE-Zielmenge (#0106)](docs/aar/2026-08-21-cve-zielmenge-deploy.md)
## Fehlerklassen (18)
@@ -0,0 +1,115 @@
---
type: aar
status: open
date: 2026-08-21
related:
- "docs/wiki/stolpersteine/fremder-defekt-der-aenderung-angelastet.md"
- "docs/aar/2026-08-11-apo-calls-profile-zeile.md"
- "docs/issues/0088-gitops-56-networkpolicy-ausgehender-verkehr-ist-unbesch.md"
---
# AAR: Clarks Calls und Identitäts-Reset — vier Fehldiagnosen bis zur bekannten Ursache
**Host/Stack:** MATRIX · **Meldender:** sorb · **Bearbeitung:** diese Sitzung
**Schwere:** MEDIUM (ein Konto ohne Calls und ohne Reset-Möglichkeit; Chat lief)
## What was planned / expected
Geplant war der Abschluss von #0088 (Egress-Regeln). Währenddessen meldete sorb:
Clark kann seine Identität nicht zurücksetzen und keinen Call starten — die
Seite lädt endlos, Chats laufen. Erwartet wurde eine Prüfung, ob die Egress-
Arbeit desselben Tages beteiligt ist.
## What happened
**Zeitachse (alles 2026-08-21, Zeiten UTC).**
| Zeit | Ereignis |
|---|---|
| ~11:14 | Clarks `POST /keys/device_signing/upload` → 401, 60 B, `{None}` |
| 11:15:55 | Clarks Client erneuert seinen Token zum letzten Mal — danach hängt er |
| 11:20:55 | Token abgelaufen; ab hier alle Anfragen „Token is not active" |
| 11:36:05 / 11:36:44 | MAS ruft `allow_cross_signing_reset` bei Synapse auf — **2× HTTP 200** |
| ~11:55 | Profil-Zeile für `clark` eingefügt |
| 11:57:18 | Clark holt wieder OpenID-Token — **davor nichts seit 08-17 20:26** |
**Vier Ursachen wurden nacheinander behauptet und jede durch die nächste Messung
widerlegt:**
| # | Behauptung | Widerlegt durch |
|---|---|---|
| 1 | Fehlender `org.matrix.msc2965.authentication`-Block im `.well-known` | Synapse liefert dieselben Angaben über `/_matrix/client/v1/auth_metadata` — der Block wird nicht gebraucht |
| 2 | Geänderter Berechtigungs-Dialekt der Sitzungen | Synapse kennt **beide** Dialekte; im Quelltext des laufenden Pods nachgelesen |
| 3 | Regression in `v0.6.0` gegenüber `rc.3` | `git diff v0.6.0-rc.3..v0.6.0`**kein Commit, keine Datei** |
| 4 | Fehlender `openid`-Umfang in neuen Sitzungen | sorb meldete sich inkognito ohne diesen Umfang an und telefonierte; 20 s später lag sein OpenID-Token vor |
**Zwei davon wurden nicht von meiner Messung gestoppt, sondern von sorbs
Einwand** — einmal *„warum sollte es an Element Call liegen, wenn der Crypto-Reset
dasselbe Problem hat?"*, einmal *„warum konnte sich sorb gerade inkognito
anmelden und einen Call starten?"*.
**Die tatsächliche Ursache:** `@clark` hatte **keine Zeile in Synapses
`profiles`-Tabelle**. Ohne sie bricht das Setzen des Anzeigenamens, ohne
Anzeigenamen initialisiert das Element-Call-Widget nie, ohne Widget gibt es
keinen OpenID-Token und keinen SFU-Eintritt. Messaging braucht diesen Pfad
nicht und lief weiter.
**Der Fall war seit dem 2026-08-11 dokumentiert** — damals für `@apo`, samt Fix.
Ausgerechnet `clark` diente dort als *gesundes Referenzkonto*; seine Zeile ist
seitdem verschwunden (deaktiviert und reaktiviert; Deaktivieren löscht das
Profil, Reaktivieren legt es nicht neu an).
**Die Gegenprobe lieferte sich selbst:** Von neun aktiven Konten ohne
Profil-Zeile waren **acht deaktiviert**`clark` war der einzige Ausreißer.
## Why the difference
**Routing-Klasse: intent issue.** Kein Code war falsch, keine Spezifikation.
Falsch war die **Suchrichtung**.
Die eigene Änderung desselben Tages war die einzige bekannte Veränderung und
zugleich die am besten durchleuchtbare — es gibt Manifeste, Commits und Regeln,
an denen sich stundenlang messen lässt. Das erzeugt Fortschrittsgefühl ohne
Fortschritt. Jede widerlegte Behauptung erzeugte sofort die nächste **innerhalb
derselben falschen Richtung**, statt die Richtung selbst zu revidieren.
Erschwerend: Das dokumentierte Diagnose-Kürzel von 2026-08-11 lautet
`open_id_tokens = 0`. Clark hatte **21** — alle alt. Das Kürzel greift nur bei
Konten, die *nie* telefoniert haben; richtig wäre das **Datum des jüngsten**
Tokens gewesen.
## Learnings
- ⚠️ **Bei einer Meldung während eines laufenden Vorhabens ist die erste
Messung ein Vergleich betroffen/nicht betroffen — nicht eine Prüfung der
eigenen Änderung.** Drei Konten waren im Spiel, eines betroffen, zwei nicht.
Die entscheidende Abfrage war ein Spaltenvergleich über diese drei und hätte
am Anfang stehen können statt nach vier Stunden.
- **Eine Trennlinie muss gegen die Grundgesamtheit geprüft werden**, sonst ist
sie eine Auffälligkeit und keine Ursache. Hier: *jedes* andere Konto ohne
Profil-Zeile war deaktiviert.
- **Ein Diagnose-Kürzel altert.** `count = 0` war 2026-08-11 richtig und ist
heute falsch; wer je telefoniert hat, behält seine Einträge.
- **Serverseitiger Erfolg widerlegt eine clientseitige Ursache nicht.** MAS
meldete den Reset zweimal mit HTTP 200 an Synapse — und der Client hing
trotzdem, weil er schon vorher klemmte.
- ⚠️ **Der Einwand des Auftraggebers war zweimal das schnellere Messinstrument
als ich.** Beide Male hat er eine Behauptung gekippt, bevor sie in ein
Manifest wandern konnte.
## Actions
- [x] Ursache behoben: Profil-Zeile für `clark` eingefügt, Wirkung nach vier
Minuten an `open_id_tokens` belegt.
- [x] Stolperstein angelegt:
[fremder-defekt-der-aenderung-angelastet](../wiki/stolpersteine/fremder-defekt-der-aenderung-angelastet.md)
(Stand: offen, für die nächste Ernte).
- [x] Gedächtnis-Eintrag zum apo-Fall um dieses zweite Vorkommen ergänzt, samt
der Abfrage, die beim nächsten Mal zuerst laufen soll, und der Falle im
alten Diagnose-Kürzel.
- [ ] **Offen:** Es gibt keine Prüfung, die ein aktives Konto ohne Profil-Zeile
meldet. Der Fall ist jetzt zweimal aufgetreten (apo, clark), beide Male
erst nach einer Nutzermeldung. Eine Regel darauf wäre billig — gehört als
Issue vorgeschlagen, nicht hier entschieden.
- [ ] **Offen:** Ob weitere reaktivierte Konten betroffen sind, ist heute mit
**0** beziffert; es gibt aber keinen Automatismus, der das hält.
+114
View File
@@ -0,0 +1,114 @@
---
type: aar
status: open
date: 2026-08-21
related:
- "docs/design/done/2026-08-21-cve-ziele-ableiten.md"
- "docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md"
- "docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md"
- "docs/aar/2026-08-01-cve-pipeline-gitops47.md"
---
# AAR: Deploy der abgeleiteten CVE-Zielmenge (#0106)
**Host/Stack:** CFGMON, `/opt/threadnet-operating/monitoring`
**Gebaut:** diese Sitzung · **Ausgerollt:** sorb · **Stand:** `07875ba`
## What was planned / expected
Vier Slices sollten gebaut, in einer Deploy-Übergabe abgegeben und einzeln
verifiziert werden. Das Mengengerüst lag bei: **~65 Ziele** (statt 29),
**~90 Registry-Anfragen** je Herleitung, **bis zu 65 Meldungen** je Runde.
Die Abnahme von Slice 1 sollte eine Zahl sein, die vorher von Hand ermittelt
war: `cve_targets_missing` **24**, `orphaned` **2**, Deckung **≈ 0,52**.
## What happened
sorb rollte **alle vier Slices zusammen** aus, statt Slice für Slice — auf
seinen ausdrücklichen Wunsch („gerne alles auf mal"). Der Deploy verlief ohne
Zwischenfall.
| | erwartet | gemessen |
|---|---|---|
| Scan-Ziele | ~65 | **56** |
| Deckung | 100 % | **100 %** (`missing` 0, `orphaned` 0) |
| Dauer der ersten vollen Runde | unbekannt | **~2 Minuten** |
| Meldungen im Security-Raum | ≤ 65 | **39** (1 + 25 + 13, drei `group_interval`) |
| Drosselung (429) | Risiko laut AAR 2026-08-01 | **keine**, 39× HTTP 200 |
| Frische je Quelle | < 3600 s | 177 s |
**Alle namentlich genannten blinden Flecken tragen jetzt einen Bericht**
(Web-Client, beide Traefik-Schichten, Registry, Wiki, Prometheus, Grafana,
Alertmanager, Trivy selbst), und beide Karteileichen sind fort
(`threadnet-web:v0.3.0`, `coturn/coturn:latest`).
⚠️ **Ein Zwischenstand sah nach Ausfall aus und war keiner.** Vier Minuten nach
dem Deploy feuerten 44 CRITICAL-Alarme bei **einer** Meldung im Raum. Erst die
Wiederholungsmessung nach 210 s zeigte 25 und 13 weitere: Alertmanager liefert
je `group_interval` (5 min), nicht sofort. Ohne die zweite Messung wäre daraus
ein Befund geworden, den es nicht gibt.
**Die eigentliche Nachricht:** Über 56 statt 29 Images stehen jetzt **253
CRITICAL** (vorher 126) und **3674 HIGH** (vorher 1222). Der Zuwachs ist kein
neuer Schaden, sondern vorher unsichtbarer Bestand.
## Why the difference
**Routing-Klasse: spec issue** — in den Zahlen, nicht in der Sache.
1. **„~65 Ziele" beruhte auf drei Tags je Repo.** Vier der sechs Repos haben
nur **einen**. Die Registry-Auswahl ergibt 9 statt 18; mit 51 laufenden minus
4 Überschneidungen sind das exakt 56. Ich hatte die Reichweite geschätzt,
ohne die Tag-Zahlen je Repo dafür zu benutzen — obwohl ich sie gemessen
hatte.
2. **„≤ 65 Meldungen" war die richtige Größenordnung**, aber die tatsächlichen
39 enthalten einen einmaligen Anteil, den ich nicht vorhergesehen hatte
(siehe 3).
3. ⚠️ **Die Normalisierung ändert jeden Alarm-Fingerabdruck.** Aus
`docker.io/postgres:17-alpine` wird `postgres:17-alpine`; damit gelten alle
bisher bekannten Alarme als aufgelöst und alle neuen als neu. Sämtliche
bekannten Befunde wurden einmalig erneut gemeldet. Gate 2 führt die
Normalisierung ausdrücklich als **Pflicht** — ihre Wirkung eine Schicht
höher, in der Alarmierung, habe ich nicht zu Ende gedacht.
4. **Die geplante Abnahme von Slice 1 war nach dem gemeinsamen Ausrollen nicht
mehr beobachtbar.** 24/2/0,52 sind Werte *vor* der ersten neuen Runde; die
lief sofort durch. Ersatzweise belegt über die namentlich genannten blinden
Flecken — ein Ersatz, kein Gleichwertiges.
## Learnings
- ⚠️ **Ein Zwischenstand ist kein Ergebnis.** 44 Alarme gegen 1 Meldung sah
nach kaputter Zustellung aus; es war das Zustellintervall. Vor jedem Befund
über ein zeitgesteuertes System gehört eine zweite Messung nach mindestens
einem Intervall.
- **Wer alle Slices zusammen ausrollt, verliert die Abnahme der frühen.** Das
war sorbs Entscheidung und legitim — aber es kostet den Tracer seinen Zweck,
und das gehört beim Zusammenlegen ausgesprochen, nicht nachträglich bemerkt.
- **Eine Normalisierung ist nie nur eine Normalisierung.** Sie ändert
Beschriftungen, und Beschriftungen sind Identität — für Alertmanager,
für Dedup-Zustände, für Zeitreihen-Kontinuität.
- **Die laufende Anlage ist die bessere Quelle als ihre Beschreibung.** cAdvisor
sah alle acht im Compose deklarierten Images **und vier weitere, die in keiner
unserer Compose-Dateien stehen** — darunter die Registry selbst. Eine aus dem
Compose abgeleitete Liste hätte genau die übersehen.
- **Die Aggregation aus ADR-0003 trägt auch bei doppelter Zielzahl.** Der in der
AAR vom 2026-08-01 beschriebene Flut-/429-Fall trat nicht ein.
## Actions
- [x] Gate 5 im Entwurf, Entwurf nach `docs/design/done/`.
- [x] **ADR-0026 angenommen** (Entscheidung sorb, 2026-08-21).
- [x] #0051 um das neue Mengengerüst ergänzt — der Remediation-Pass ist rund
doppelt so groß wie bei seiner Erstellung angenommen, und die neuen
Kandidaten sind die exponierteren.
- [x] Stolperstein
[nachgebauter-test-prueft-den-nachbau](../wiki/stolpersteine/nachgebauter-test-prueft-den-nachbau.md).
- [ ] **Offen:** Kriterium 5 (eine neue Fassung erscheint ohne Zutun) ist bis
zum nächsten `threadnet-web`-Release unbewiesen.
- [ ] **Offen:** `rohana.axion1337.de/sorb/axion-backup:v1` meldet CRITICAL,
läuft aber nirgends — er steht nur in der Menge, weil die Auswahl „letzte
drei je Repo" nimmt und das Repo zwei hat. Ein Registry-Aufräumen wäre
billiger als ein Update.
- [ ] **Offen:** Ein gerade gestoppter Dienst fehlt weiterhin still in der
Soll-Menge. Heute mit **0** beziffert, morgen nicht zwingend.
@@ -1,13 +1,13 @@
---
type: adr
id: "0026"
status: proposed
status: accepted
date: 2026-08-21
supersedes: null
superseded_by: null
related:
- "docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md"
- "docs/design/2026-08-21-cve-ziele-ableiten.md"
- "docs/design/done/2026-08-21-cve-ziele-ableiten.md"
- "docs/adr/0003-cve-meldeweg-aggregiert.md"
---
@@ -1,6 +1,6 @@
---
type: design
status: gate-4
status: done
date: 2026-08-21
size: L
related:
@@ -376,7 +376,7 @@ steht, wird gelöscht; bei **fehlender** `targets.txt` wird nichts gelöscht.
Der Betriebs-Host ist kein Flux-Ziel; dort läuft Compose von Hand. Gemessen am
2026-08-21: `10.0.0.3:2248` ist von MATRIX aus offen, Agent-Weiterleitung
funktioniert, aber der Schlüssel ist dort nicht zugelassen. Es gilt daher das
Verfahren [Deploy-Übergabe](../wiki/deployment/deploy-uebergabe.md), das nach
Verfahren [Deploy-Übergabe](../../wiki/deployment/deploy-uebergabe.md), das nach
genau diesem Stack eingeführt wurde: **Wer baut, übergibt; wer ausrollt, prüft
und schreibt den AAR.**
@@ -710,4 +710,11 @@ nachgebaute Tests, als eigener Stolperstein.
4. **Die Auswahl „letzte drei je Repo" ist grob.** Bei `axion-backup` sind das
beide Tags, auch der ungenutzte `v1` — der prompt CRITICAL meldet.
> **STOP — Freigabe für Gate 5.**
> **Gate 5 freigegeben durch sorb, 2026-08-21.** ADR-0026 angenommen.
>
> ⚠️ **Nachtrag auf sorbs Hinweis:** Ein AAR ist nicht optional. Zu diesem
> Vorhaben gehoert `docs/aar/2026-08-21-cve-zielmenge-deploy.md` (Deploy mit
> Uebergabe), zum Vorfall desselben Tages
> `docs/aar/2026-08-21-clark-calls-reset-vier-fehldiagnosen.md`. Beide fehlten
> zunaechst; ich hatte sie mit dem Kommentar der Vorlage wegargumentiert statt
> mit `AGENTS.md` Z. 202.
@@ -1,7 +1,7 @@
---
type: issue
id: "0106"
status: open
status: done
created: 2026-08-21
milestone: M1
priority: high
@@ -10,6 +10,9 @@ host: cfgmon
related:
- "docs/issues/0078-gitops-45-cve-meldeweg-v2-metriken-grafana-dashboard-al.md"
- "docs/adr/0003-cve-meldeweg-aggregiert.md"
- "docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md"
- "docs/design/done/2026-08-21-cve-ziele-ableiten.md"
- "docs/aar/2026-08-21-cve-zielmenge-deploy.md"
---
# CVE-Scan deckt 52 % — die Zielliste ist handgepflegt und läuft dem Bestand hinterher
@@ -107,3 +110,35 @@ Der Umfang gehört begrenzt und begründet.
Nicht Teil davon: die Behebung der gefundenen CVEs (#0051), der Meldeweg selbst
(#0078, erledigt) und `release-watch` (#0022).
## Abschluss — 2026-08-21
**Erledigt.** Die Zielmenge wird abgeleitet statt gepflegt; `images.txt` ist
ersatzlos entfallen. Ausgerollt von sorb, danach gemessen:
| | vorher | nachher |
|---|---|---|
| Scan-Ziele | 29 | **56** |
| Deckung | 52 % | **100 %** (`cve_targets_missing` 0) |
| Verwaiste Berichte | 2 | **0** |
| CRITICAL / HIGH | 126 / 1222 | **253 / 3674** |
Alle im Text genannten blinden Flecken tragen jetzt einen Bericht — Web-Client,
**beide** Traefik-Schichten, die Registry, das Wiki, Prometheus, Grafana,
Alertmanager und `aquasec/trivy` selbst. `threadnet-web:v0.3.0` und
`coturn/coturn:latest` sind fort.
Die Runde lief in **~2 Minuten**, es kamen **39** Meldungen (geschätzt waren
≤ 65), keine Drosselung.
⚠️ **Der Zuwachs an Befunden ist kein neuer Schaden, sondern vorher unsichtbarer
Bestand.** Die 127 zusätzlichen CRITICAL gehören zu **#0051**, das um das neue
Mengengerüst ergänzt wurde.
**Offen und ausdrücklich benannt:** Kriterium 5 (eine neue Fassung erscheint
ohne Zutun) ist bis zum nächsten Release unbewiesen; ein gerade gestoppter
Dienst fehlt weiterhin still in der Soll-Menge (heute mit 0 beziffert).
Entwurf mit allen fünf Gates: `docs/design/done/2026-08-21-cve-ziele-ableiten.md`.
Richtungsentscheidung: **ADR-0026** (angenommen). AAR des Deploys:
`docs/aar/2026-08-21-cve-zielmenge-deploy.md`.
+11 -3
View File
@@ -2,9 +2,9 @@
type: ledger
date: 2026-08-21
size: L
status: open
status: closed
related:
- "docs/design/2026-08-21-cve-ziele-ableiten.md"
- "docs/design/done/2026-08-21-cve-ziele-ableiten.md"
- "docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md"
---
@@ -14,7 +14,7 @@ related:
| gate | commit | approval | status | note |
|---|---|---|---|---|
| 5 | e342229 | | OPEN | Wartet auf Freigabe. Ausgerollt von sorb; 56 Ziele, Deckung 100 %, 39 Meldungen, keine Drosselung. |
| 5 | e342229 | sorb | DONE | Ausgerollt von sorb; 56 Ziele, Deckung 100 %, 39 Meldungen, keine Drosselung. ADR-0026 angenommen. |
| 4 | e316193 | sorb | DONE | Fuenf Slices; Ausrollen als Deploy-Uebergabe, Mengengeruest beigelegt. |
| 3 | a0cd02a | sorb | DONE | Dateien, Signaturen, Zusicherungen, Grenzen; fuenf wackelige Annahmen benannt. |
| 2 | 2693a2d | sorb | DONE | Herleitung im Exporter statt drittem Dienst; ADR-0026 vorgeschlagen. |
@@ -85,3 +85,11 @@ die ausgelieferte Datei kaputt ist. Nach dem Umbau auf Laden der echten
`runde()` fiel binnen eines Laufs auf, dass `scan-loop.sh` seine Pfade fest
setzte und die Umgebung ignorierte. Wer eine Nachbildung prueft, prueft die
Nachbildung.
⚠️ **Zwei AARs fehlten und wurden erst auf sorbs Nachfrage geschrieben** - der
Vorfall um das Konto ohne Profil-Zeile und dieser Deploy mit Uebergabe. Ich
hatte den eigenen AAR mit dem Kommentar der Vorlage wegargumentiert statt mit
`AGENTS.md` Z. 202, die ihn nach jedem Deploy mit Uebergabe und jedem Incident
verlangt. Das ist FB-01 einen Tag nach seiner Teilbehebung, in verschaerfter
Form: nicht Unwissen, sondern eine bequemere Lesart. Festgehalten in
`docs/wiki/stolpersteine/aar-pflicht-ohne-werkzeug.md`.
@@ -39,3 +39,26 @@ AARs in vier Tagen sind viel.
➡️ Die hier vermutete Asymmetrie ist am 2026-08-20 über den **gesamten** Regelsatz
nachgemessen worden und hat sich bestätigt: **FB-11**.
Dieser Befund bleibt als Einzelfall gültig; FB-11 trägt die Regelmäßigkeit.
## ⚠️ Rueckfall am 2026-08-21 — einen Tag nach der Teilbehebung
Am Tag nach der Aufnahme in `AGENTS.md` fehlten erneut **zwei** AARs: der
Vorfall um ein Konto ohne Profil-Zeile (Incident **und** schwere Fehldiagnose)
und der Deploy mit Uebergabe zu #0106. Beide entstanden wieder erst auf
Nachfrage von sorb.
**Der Rueckfall verlief nicht ueber Unwissen, sondern ueber eine Begruendung.**
Die Vorlage `docs/aar/template.md` traegt den Kommentar *"Standalone AARs are
for incidents and major deviations only - normal undertakings get their AAR as
Gate 5 inside the design doc."* Daraus wurde geschlossen, ein eigener AAR waere
redundant - obwohl `AGENTS.md` Z. 202 ihn nach **jedem Deploy mit Uebergabe**
und **jedem Incident** verlangt und beides zutraf.
**Das ist die schaerfere Form des Befundes:** Die Wissensluecke war geschlossen,
die Regel stand an der richtigen Stelle und war auffindbar - und wurde trotzdem
nicht befolgt, weil ein Nebentext eine bequemere Lesart anbot. Ein Werkzeug
haette widersprochen; ein Kommentar in einer Vorlage tut es nicht.
Siehe auch [[regeln-ohne-widerspruch]] - dieser Fall gehoert dort hinein: Er
zeigt, dass nicht nur *fehlende* Durchsetzung, sondern auch ein **konkurrierender
Text** genuegt, damit eine unbewachte Regel unterliegt.
@@ -3,7 +3,7 @@ type: wiki-page
area: stolpersteine
status: open
sources:
- "docs/design/2026-08-21-cve-ziele-ableiten.md"
- "docs/design/done/2026-08-21-cve-ziele-ableiten.md"
related:
- "docs/wiki/stolpersteine/meldet-erfolg-ist-aber-blind.md"
- "docs/wiki/stolpersteine/fremder-defekt-der-aenderung-angelastet.md"