ledger: #0051 had none, and that is the point of having one
The framework asks for a run ledger per undertaking, and this one was missing while Authentik and cert-manager were already deployed. It exists now, and it says so at the top: reconstructed from commits rather than kept as the work went, which is exactly the gap a ladder trace is meant to close. Same day the AAR obligation also only got met when asked. The ladder rows carry what actually saved work today: scanning a target image before upgrading, following two documented upgrade sequences instead of jumping, and checking five potentially breaking changes against our own state — all five turned out not to apply. Only one thing was built rather than reused, the temporary disarming of Flux's automatic rollback. The notes carry the failures plainly: an untested first commit of the narrowing caught by its own sabotage check, three of my own numbers corrected, and a boundary in Gate 3 that was never enforceable because Postgres hangs in the same chart.
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
---
|
||||
type: ledger
|
||||
date: 2026-08-21
|
||||
size: L
|
||||
status: open
|
||||
related:
|
||||
- "docs/design/2026-08-21-cve-remediation.md"
|
||||
- "docs/issues/0051-cve-remediation-pass.md"
|
||||
- "docs/aar/2026-08-21-spiegel-ausfall.md"
|
||||
---
|
||||
|
||||
# Ledger: Den CVE-Bestand abarbeiten (#0051)
|
||||
|
||||
⚠️ **Nachtraeglich geschrieben.** Dieses Ledger entstand erst auf sorbs Nachfrage
|
||||
„hast du die Arbeiten alle gemaess Framework dokumentiert?", nachdem Authentik
|
||||
und cert-manager bereits ausgerollt waren. Die Gate- und Slice-Zeilen sind aus
|
||||
den Commits rekonstruiert, nicht mitlaufend gefuehrt. Das ist genau die Luecke,
|
||||
gegen die dieses Ledger gedacht ist — und sie gehoert hierhin, nicht in eine
|
||||
Fussnote. Es ist derselbe Tag, an dem die AAR-Pflicht schon einmal nur auf
|
||||
Nachfrage erfuellt wurde (`docs/wiki/stolpersteine/aar-pflicht-ohne-werkzeug.md`).
|
||||
|
||||
## Gates
|
||||
|
||||
| gate | commit | approval | status | note |
|
||||
|---|---|---|---|---|
|
||||
| 3+4 | 70823b4 | sorb | DONE | Zusammengelegt (eine Datei, eine Zeile, keine Signaturen); Fund: Flux haette selbsttaetig zurueckgerollt. |
|
||||
| 2 | 80ee448 | sorb | DONE | Gestufter Authentik-Weg belegt; die Pflicht-Zwischenstufe traegt den ganzen CRITICAL-Gewinn. |
|
||||
| 1 | 24ae5b9 | sorb | DONE | Drei Haufen statt eines Vorhabens; Reichweite Haufen C = einengen auf Betriebenes. |
|
||||
| 5 | | | BLOCKED | Nicht faellig: Haufen B (68 CRITICAL ohne Fix) und der Rest von Haufen A stehen aus. |
|
||||
|
||||
## Slices
|
||||
|
||||
| slice | commit | status | note |
|
||||
|---|---|---|---|
|
||||
| Authentik 0 | df6d291 | DONE | Selbsttaetige Rueckrollung entschaerft (`retries: 3` -> `0`). |
|
||||
| Authentik 1 | — | DONE | Sicherung von Hand, 167,09 MB, Erfolg nach 20 s. |
|
||||
| Authentik 2 | a252ac0 | DONE | 2026.5.6; Migrationen sauber, Anmeldung 14:51:04 serverseitig belegt. |
|
||||
| Authentik 3 | 92add9b | DONE | 2026.8.0; 56 Migrationen, Anmeldung 15:00:35 belegt. |
|
||||
| Authentik 4 | c9a3ae6 | DONE | Rueckrollung wieder scharf. |
|
||||
| Haufen C | 4758e35, 59c75c8 | DONE_WITH_CONCERNS | Einengung gebaut; ⚠️ der erste Commit war UNGETESTET, siehe Notes. Wirkt erst nach Redeploy auf CFGMON. |
|
||||
| cert-manager 1–7 | 93155c2 … 13aecc8 | DONE | v1.14.0 -> v1.21.1 in sieben Stufen, je 3/3 Deployments und 15/15 Zertifikate. |
|
||||
|
||||
## Ladder
|
||||
|
||||
| searched | found | outcome | commit |
|
||||
|---|---|---|---|
|
||||
| ob ein Update ueberhaupt etwas bringt, bevor eines gefahren wird | Trivy kann ein Image pruefen, das nirgends laeuft — lokal ausfuehrbar | reused: das vorhandene Scan-Werkzeug als Vorab-Messung; daraus wurde die Methode „vor jedem Update das Zielimage scannen" | |
|
||||
| eine Anleitung zum Ueberspringen von Fassungsreihen, statt es zu wagen | Authentik: „upgrades MUST follow the sequence of major releases"; cert-manager: „one minor at a time, always the latest patch" | reused: die dokumentierten Wege statt eines Sprungs — beide Male gestuft | |
|
||||
| ob die Bruchstellen uns treffen, statt sie zu fuerchten | 5 von 5 geprueft, 5 von 5 gegenstandslos (CONN_OPTIONS, WebAuthn-Option, Outposts, ACME-Metriken, cert-manager-edit) | reused: der eigene Bestand als Pruefmassstab; keine vorsorglichen Anpassungen gebaut | |
|
||||
| einen Rueckweg, bevor die Datenbank migriert wird | #0030 hatte Authentiks Sicherung bereits zurueckgespielt (325.149 Zeilen); Anleitung: „revert to your database backup" | reused: die geprobte Sicherung; nur eine frische Ausloesung von Hand ergaenzt | |
|
||||
| ob Flux beim Fehlschlag etwas Eigenes tut | CRD: `strategy` defaults to `rollback`, Remediation zwischen jedem Versuch, `remediateLastFailure` bei retries>0 ebenfalls scharf | built: eine Entschaerfung (`retries: 0`) fuer die Dauer des Sprungs — die einzige gebaute Sache, die nicht Fassungsnummer war | df6d291 |
|
||||
| ob es ein neueres Wiki.js-Image gibt | `2.5` (gleitend) traegt 12 CRITICAL, das „neuere" Release-Tag `2.5.277` traegt 40 | reused: der laufende Stand — das Update waere eine Verschlechterung gewesen | |
|
||||
| ob Draupnir eine neuere Fassung hat | `v3.1.0` ist die neueste; `develop` ist kein Release | reused: nichts angefasst — „Paket hat einen Fix" heisst nicht „es gibt ein Image damit" | |
|
||||
| eine Quelle fuer die Einengung von Haufen C, statt einer Ausschlussliste | die Herleitung bildet den laufenden Bestand ohnehin | reused: dieselbe Menge als Filter — keine zweite Liste (ADR-0026) | 4758e35 |
|
||||
|
||||
## Notes
|
||||
|
||||
⚠️ **Der erste Commit der Haufen-C-Einengung war ungetestet, und die Gegenprobe
|
||||
hat es gefangen.** Nach dem Abschalten des Filters blieben alle 22 Zusicherungen
|
||||
gruen — meine „Gegenprobe" prueft die Uebersprung-Logik in `herleiten()`, nicht
|
||||
den Filter in `ziele_registry()`. Drei echte Zusicherungen nachgezogen
|
||||
(`59c75c8`); dieselbe Sabotage faehrt jetzt einen Test rot. Es ist die
|
||||
Fehlerklasse dieses Projekts, in der Aenderung, die Rauschen entfernen sollte.
|
||||
|
||||
**Drei eigene Zahlen waren falsch und stehen korrigiert im Entwurf:** „~65
|
||||
Ziele" wurden 56 (vier von sechs Repos haben nur einen Tag), „bis zu 65
|
||||
Meldungen" wurden 39, und die Normalisierung aenderte jeden Alarm-Fingerabdruck,
|
||||
sodass alle bekannten Befunde einmalig erneut gemeldet wurden.
|
||||
|
||||
⚠️ **Eine Grenze in Gate 3 war nicht durchsetzbar.** Postgres stand dort unter
|
||||
„nicht Teil dieses Sprungs" — es haengt aber als Abhaengigkeit im selben Chart
|
||||
und wanderte 17.9 -> 17.10 -> 17.11 mit. Eine Grenze, die man nicht ziehen kann,
|
||||
haette so nicht dastehen duerfen.
|
||||
|
||||
**Der Anmeldeweg war je Authentik-Stufe 20–45 s unten** (HTTP 503, Datenbank
|
||||
startet neu). Bei einer Einzelreplik erwartbar, stand aber nirgends im Plan.
|
||||
|
||||
**Ein Schreibfehler wurde am Diff gefangen, nicht am Ergebnis:** Der erste
|
||||
Kommentarblock erzeugte jede Zeile sechsfach (benachbarte Zeichenketten-Literale
|
||||
kleben in Python vor der Wiederholung). Aufgefallen an „50 insertions" fuer neun
|
||||
Zeilen.
|
||||
|
||||
**Der Ausfall der Ausrollstrecke** hat einen eigenen AAR
|
||||
(`docs/aar/2026-08-21-spiegel-ausfall.md`) und ist hier nur verlinkt, nicht
|
||||
wiederholt.
|
||||
Reference in New Issue
Block a user