diff --git a/STATUS.md b/STATUS.md index 19b5f56..c460b07 100644 --- a/STATUS.md +++ b/STATUS.md @@ -2,17 +2,16 @@ -## 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) diff --git a/docs/aar/2026-08-21-clark-calls-reset-vier-fehldiagnosen.md b/docs/aar/2026-08-21-clark-calls-reset-vier-fehldiagnosen.md new file mode 100644 index 0000000..d76a983 --- /dev/null +++ b/docs/aar/2026-08-21-clark-calls-reset-vier-fehldiagnosen.md @@ -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. diff --git a/docs/aar/2026-08-21-cve-zielmenge-deploy.md b/docs/aar/2026-08-21-cve-zielmenge-deploy.md new file mode 100644 index 0000000..085509f --- /dev/null +++ b/docs/aar/2026-08-21-cve-zielmenge-deploy.md @@ -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. diff --git a/docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md b/docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md index ffe264a..e4956e6 100644 --- a/docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md +++ b/docs/adr/0026-pruefziele-werden-abgeleitet-nicht-gepflegt.md @@ -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" --- diff --git a/docs/design/2026-08-21-cve-ziele-ableiten.md b/docs/design/done/2026-08-21-cve-ziele-ableiten.md similarity index 98% rename from docs/design/2026-08-21-cve-ziele-ableiten.md rename to docs/design/done/2026-08-21-cve-ziele-ableiten.md index fd9f5b1..a29f7d3 100644 --- a/docs/design/2026-08-21-cve-ziele-ableiten.md +++ b/docs/design/done/2026-08-21-cve-ziele-ableiten.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. diff --git a/docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md b/docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md index a432ac0..e9a46bb 100644 --- a/docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md +++ b/docs/issues/0106-cve-scan-deckt-nur-die-haelfte-zielliste-ist-handgepflegt.md @@ -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`. diff --git a/docs/ledger/2026-08-21-cve-ziele-ableiten.md b/docs/ledger/2026-08-21-cve-ziele-ableiten.md index affee9c..13360d3 100644 --- a/docs/ledger/2026-08-21-cve-ziele-ableiten.md +++ b/docs/ledger/2026-08-21-cve-ziele-ableiten.md @@ -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`. diff --git a/docs/wiki/stolpersteine/aar-pflicht-ohne-werkzeug.md b/docs/wiki/stolpersteine/aar-pflicht-ohne-werkzeug.md index efe0968..7374c73 100644 --- a/docs/wiki/stolpersteine/aar-pflicht-ohne-werkzeug.md +++ b/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. diff --git a/docs/wiki/stolpersteine/nachgebauter-test-prueft-den-nachbau.md b/docs/wiki/stolpersteine/nachgebauter-test-prueft-den-nachbau.md index a8aa45b..37586b4 100644 --- a/docs/wiki/stolpersteine/nachgebauter-test-prueft-den-nachbau.md +++ b/docs/wiki/stolpersteine/nachgebauter-test-prueft-den-nachbau.md @@ -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"