From d34f8b6f54fc91780d10f7167de5397988cb1d15 Mon Sep 17 00:00:00 2001 From: Florian Wilde Date: Mon, 12 Oct 2026 18:08:03 +0200 Subject: [PATCH] docs(devlog): Sitzung 6, #031 und #032 nachgetragen (#032) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zeiten und Entscheidungen der Sitzung festhalten, damit die Abnahme von 1.0.0 den vollständigen Stand sieht. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 5 +++++ DEVLOG.md | 26 +++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index beb7be1..1c7ee26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,10 +9,15 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/lang/de/). ### Hinzugefügt - Geführte Rotation des Deployment-Keys in fünf Schritten (erzeugen, verteilen, prüfen, umstellen, aufräumen) – kein Host steht dabei ohne funktionierenden Key da; nicht erreichbare Hosts lassen sich bewusst übergehen (#031) +- Laufende Schlüsselrotation abbrechen – der Nachfolger wird per Dry-Run wieder entfernt (#032) +- „Zum Dry-Run“ in der Zuweisungsmatrix springt direkt zur Dry-Run-Karte (#032) ### Geändert +- Protokoll-IDs werden lückenlos vergeben (#032) ### Behoben +- Massenwiderruf lehnte im Browser erzeugte Schlüssel ab (IDs mit Bindestrich) (#032) +- Hinweis nach verweigerter Bestätigung nannte beim Massenwiderruf den falschen Knopf (#032) ### Sicherheit diff --git a/DEVLOG.md b/DEVLOG.md index 36200a6..edbc474 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -2,8 +2,8 @@ ## Zeitübersicht -**Gesamt (Wandzeit):** 4 h 25 min -**Summe der Issue-Zeiten:** 13 h 18 min – Sub-Agenten arbeiteten parallel an #002, #006, #008, #011, #012–#014, #019 (Oberfläche), #023–#025, #027 und #028. +**Gesamt (Wandzeit):** 5 h 20 min +**Summe der Issue-Zeiten:** 15 h 13 min – Sub-Agenten arbeiteten parallel an #002, #006, #008, #011, #012–#014, #019 (Oberfläche), #023–#025, #027, #028 und #032. | Issue | Zeit | |---|---| @@ -37,7 +37,9 @@ | #027 Protokollansicht, CSV, Syslog | 0 h 20 min | | #028 Benachrichtigungen | 0 h 30 min | | #029 Handbuch und Betriebsdokumentation | 0 h 50 min | -| #030 Gitea-Abgleich (vorbereitet) | 0 h 05 min | +| #030 Gitea-Abgleich | 0 h 05 min | +| #031 Rotation des Deployment-Keys | 1 h 10 min | +| #032 Nacharbeiten Phase 4/5 | 0 h 45 min | | Meilenstein | Zeit | |---|---| @@ -46,6 +48,7 @@ | v0.3.0 | 0 h 30 min (Wandzeit) | **abgeschlossen** | v0.4.0 | 0 h 45 min (Wandzeit) | **abgeschlossen** | v0.5.0 | 0 h 45 min (Wandzeit) | **abgeschlossen** +| v1.0.0 | 0 h 55 min (Wandzeit) | in Arbeit – Abnahme steht aus --- @@ -149,3 +152,20 @@ - **Master-Key nicht in die Sicherung,** nur ein Prüfwert; Worker verweigert den Start mit falschem Master-Key. - **Benachrichtigungen lesen ihre Anlässe aus der Datenbank** statt sich in den Abgleich einzuhängen; Doppelmeldungen verhindert ein Versandprotokoll mit Fingerabdruck je Anlass. - **Keine 1.0.0 ohne Abnahme:** 0.5.0 schließt die fünf Phasen; authentik, Gitea und ein Lauf auf echten Hosts stehen noch aus. + +## 2026-10-12 · Sitzung 6 · 17:12–18:07 +**Issue:** #030–#032 +**Version:** unveröffentlicht (auf dem Weg zu 1.0.0) + +### Erledigt +- Remote-Repo in Gitea: `main` und Tags v0.1.0–v0.5.0 gepusht, Issues abgeglichen (Basic-Auth, weil die hinterlegten Zugangsdaten ein Passwort sind) +- #031 Geführte Rotation des Deployment-Keys: Service, Worker-Schritte, Seite mit Schrittleiste, Integrationstest gegen beide Testziele, E2E +- #032 Nacharbeiten (Sub-Agent): lückenlose Protokoll-IDs, Rotation abbrechen, Anker „Zum Dry-Run“, Massenwiderruf-E2E – der fand, dass der Massenwiderruf UUIDs mit Bindestrich abwies +- Stand: 876 Unit-/DB-Tests, 46 Integrationstests, 27 E2E-Abläufe grün + +### Entscheidungen +- **Der Nachfolger des Deployment-Keys ist ein eigener Schlüssel,** der während der Rotation über `sollFuer()` in Block und Pflichtliste steht – so verteilt ihn der normale Dry-Run, und der Aussperrschutz deckt beide Keys. +- **Umstellen erst nach Prüfung** auf allen Hosts; ein Host lässt sich nur bewusst und protokolliert übergehen. +- **Rotation abbrechen nutzt den vorhandenen Widerruf** statt eines neuen Zustands (#032). +- **Protokoll-ID nur noch aus dem Trigger** unter der Advisory-Sperre – keine Lücken mehr durch verworfene Sequenzwerte. +