diff --git a/dev/2026-09-11-audit/ENTWICKLUNGSPLAN.md b/dev/2026-09-11-audit/ENTWICKLUNGSPLAN.md index 111a2879..23903ba6 100644 --- a/dev/2026-09-11-audit/ENTWICKLUNGSPLAN.md +++ b/dev/2026-09-11-audit/ENTWICKLUNGSPLAN.md @@ -297,7 +297,7 @@ Grundlage: [`UMSETZUNGSAUDIT-2026-09-29.md`](UMSETZUNGSAUDIT-2026-09-29.md) (4 | 9.6 | K-02, R-04, R-05, E9-Schalter | erledigt | Kontingent-/Bildsperre im Scheduler als „blockiert" (Exit 0, einmaliger Verlaufseintrag), KI-Job ohne Retry; nach Kundenbestätigung erneut routen; `X-Pk-Ref` per HMAC signiert, Hard-Sperre nur bei gültiger Signatur; Unmerge setzt nur unveränderte Füllwerte zurück (`company_merge_moves.merged_value`); `NEWSLETTER_SENDING_ENABLED` (Standard aus) | | 9.7 | Q-01, Q-02, Q-06, P3, OPT | erledigt bis auf Q-05 | Testhelfer nach `tests/Pest.php` (Suite läuft parallel); Larastan voller Scope ohne Meldung; P3-Liste und OPT-1 bis OPT-9 umgesetzt (OPT-4 teilweise, Integritätshash bleibt bewusst); Q-07 war ein Fehlalarm (`IMAGE_PRECHECK_MODEL` steht auskommentiert in `.env.example`). Q-05 entschieden am 05.10.2026: `docs/` ist der per Devcontainer eingebundene Obsidian-Vault und kommt aus dem Repository (`.gitignore`), die Historie bleibt. | -Zusätzlich bei der Integration: `press-release-images:sweep-orphan-originals` wöchentlich (So 04:45) im Scheduler, löscht nichts, solange der Archiv-Sweep pausiert ist; `purge-events` von 03:20 auf 03:50; alle `withoutOverlapping()` mit kurzer Sperrdauer (`ScheduleConfigurationTest`); Scheduler-Tabelle im Runbook vollständig. **Im Runbook stand seit `665c94f` (21.07.2026) ein Passwort neben dem KAS-SSH-Zugang** — aus der Arbeitskopie entfernt; in der Git-Historie und auf `origin` bleibt es, deshalb rotieren (Betreiber). +Zusätzlich bei der Integration: `press-release-images:sweep-orphan-originals` wöchentlich (So 04:45) im Scheduler, löscht nichts, solange der Archiv-Sweep pausiert ist; `purge-events` von 03:20 auf 03:50; alle `withoutOverlapping()` mit kurzer Sperrdauer (`ScheduleConfigurationTest`); Scheduler-Tabelle im Runbook vollständig. **Im Runbook stand seit `665c94f` (21.07.2026) ein Passwort neben dem KAS-SSH-Zugang** — aus der Arbeitskopie entfernt; in der Git-Historie und auf `origin` bleibt es, deshalb rotieren (Betreiber). **Erledigt 06.10.2026:** SSH-Zugang des Altsystems geändert und deaktiviert (Betreiber). ### Entscheidungen (bei der Umsetzung getroffen, **vom Betreiber am 02.10.2026 bestätigt**, einschließlich der Revision von E25) @@ -360,7 +360,7 @@ Gilt für beide Blöcke zusammen (Block 10 hat keine eigene Migration). In Klamm **E — Danach, außerhalb des Codes** -19. **KAS-Passwort rotieren** — stand bis 29.09. im Runbook und liegt in der Git-Historie und auf `origin`. +19. ~~**KAS-Passwort rotieren**~~ — **erledigt 06.10.2026:** SSH-Passwort des Altsystems geändert, SSH-Zugang deaktiviert. Das KAS-Hosting bleibt für die E-Mail-Postfächer. 20. **Datenschutzerklärung:** Rückläufer-Protokoll (`email_bounces`, 395 Tage) in Abschnitt 5a/13 aufnehmen (E27, Betreiber/Anwalt). 21. Restore-Übung in isolierter Umgebung (DB alt/Disk neu, Disk alt/DB neu, beide alt) mit den neuen Schritten aus Runbook Abschnitt 9 (O04/O05). 22. Protokoll unten um Deploy-Datum und Ergebnisse von 8–18 ergänzen. @@ -490,5 +490,5 @@ Ergebnisse der Schritte 8–13 des Deploy-Plans in offenen Archivaufträge, drei API-Zuordnungen von connektar alle freigeschaltet, 342 Canonical-Paare neu zugeordnet und 13 veraltete Verweise zurückgesetzt, Sweeps leer, Scheduler mit 21 Tasks. Schritte 14–18 (Abnahme) nicht einzeln -gemeldet; 19–21 (KAS-Passwort, DSE, Restore-Übung) offen. Q-05 entschieden +gemeldet; 19 (KAS-Passwort) erledigt 06.10.2026; 20–21 (DSE, Restore-Übung) offen. Q-05 entschieden (`docs/` aus dem Repository). diff --git a/dev/betrieb/deploy-v1.1.0.md b/dev/betrieb/deploy-v1.1.0.md index 5ce57682..4d36f84f 100644 --- a/dev/betrieb/deploy-v1.1.0.md +++ b/dev/betrieb/deploy-v1.1.0.md @@ -148,7 +148,7 @@ Schlägt `composer install` oder `migrate` fehl: **nicht** `up`, sondern Rollbac 29. **Externer Monitor** (Uptime Kuma o. Ä.) auf `https://pressekonto.com/health`, Header `Authorization: Bearer …`, 60 s, 2 Wiederholungen, Benachrichtigung über ntfy (`push.adametz.media`, `pressekonto-ops`). (1.5) -30. **KAS-Passwort rotieren** (B9/10 Nr. 19). +30. ~~**KAS-Passwort rotieren**~~ (B9/10 Nr. 19) — erledigt 06.10.2026, SSH-Zugang deaktiviert. 31. **Datenschutzerklärung** (Betreiber/Anwalt): Rückläufer-Protokoll (B9/10 Nr. 20), Fehlerprotokollierung GlitchTip (User-ID, URL, Browser, Fehlermeldung, 90 Tage), fehlgeschlagene Anmeldungen im Verlauf (IP nur als HMAC). Danach — und erst @@ -191,6 +191,6 @@ Abschnitt D, Ausgaben auf Live: | 19, 20 | GlitchTip- und ntfy-Test ausgeführt; nach `config:cache` wiederholt | Abschnitt E (Abnahme Testkonto) vom Betreiber nicht einzeln gemeldet. -Abschnitt F offen: externer Monitor auf `/health` (29), KAS-Passwort (30), +Abschnitt F offen: externer Monitor auf `/health` (29), Datenschutzerklärung (31), Restore-Übung (32); dazu Context7-Schlüssel rotieren -(stand bis `df7ebdc` im Repository). +(stand bis `df7ebdc` im Repository). KAS-Passwort (30) erledigt 06.10.2026. diff --git a/dev/roadmap.md b/dev/roadmap.md index ee2e5555..aa26b043 100644 --- a/dev/roadmap.md +++ b/dev/roadmap.md @@ -30,9 +30,11 @@ Phasen im Archiv (`dev/archive/`). - [ ] **Connektar-API-Keys rotieren** (mittelfristig — die Legacy-Keys sind über diverse Test-Kanäle gelaufen; Rotation über `/customer/tokens`). - [ ] **Alt-System endgültig abschalten**, sobald ein paar Tage stabil: - KAS-Hosting kündigen/stilllegen; vorher letztes Backup der Alt-DBs und - Alt-Uploads sichern. Danach kann auch `dev/migration/` (7 GB lokales - Medien-Staging) auf ein Backup-Medium und vom Arbeitsrechner runter. + Webspace und Alt-DBs auf dem KAS stilllegen; vorher letztes Backup der + Alt-DBs und Alt-Uploads sichern. Danach kann auch `dev/migration/` (7 GB + lokales Medien-Staging) auf ein Backup-Medium und vom Arbeitsrechner + runter. **Das KAS-Hosting selbst bleibt** (E-Mail-Postfächer, Stand + 06.10.2026); der SSH-Zugang des Altsystems ist geändert und deaktiviert. ## Beobachten (erste Wochen)