F12 Migrationen zerstörungsfrei, nachvollziehbar und driftfrei machen
Frühere Version vom 2026-07-16T19:02:06.153766+02:00 · zur aktuellen Fassung
Migrationen zerstörungsfrei, nachvollziehbar und driftfrei machen
Finding: F12 Priorität: P0 Status: IN UMSETZUNG Stand: 2026-07-16
Problembeschreibung
- DB hat 0 Migrationstracking, aber vor Taskanlage 19 Dokus, 26 Prozesse und 10 Rechnungsprozesse.
- 0008_system_seed.sql:17 truncatet Doku/Prozesse und würde aktuellen Stand löschen.
- 0006:17 und 0008:7 hardcodieren /var/www/demo.karlkratz.com/.
- Idempotenz ist nicht belegt.
Ziel
Jeder DB-Stand ist aus immutable, einmaligen, vorwärtsgerichteten Migrationen reproduzierbar; Seeds löschen nie Fachdaten.
Aufgabe
- Tracking mit SHA-256/Transaktion.
- 0008 sperren; additive Ist-Baseline.
- Rechnungsprozesse/Dokus/Links migrieren.
- Absolute Pfade eliminieren; Backup/Restore-Preflight.
Scope
- In Scope: alle unter Code Blast genannten Komponenten, Daten, Verträge und Tests.
- Out of Scope: neue Features und produktive externe Mutation ohne separate Freigabe.
Harte Spezifikation
- MUST: Version/Checksum/Zeit/Actor.
- MUST: angewandte Checksums immutable.
- MUST: keine destructive Fach-/Doku-Seeds.
- MUST: Neubau/Upgrade gleicher Fingerprint.
Harte Quality Gateways
- Leere DB erzeugt aktuelle Slugs.
- Zweitlauf No-op.
- Upgrade Snapshot verliert 0 Zeilen.
- rg absolute/destructive Seeds 0; Restore grün.
- Global: PHPStan Level 8 und PHPUnit liefern 0 Fehler; kein Ignore oder Baseline.
Code Blast
- Direkt: Migrationen 0001-0010, Runner, Deploy.
- DB: 24 Tabellen/Audit/Sequenzen; Doku/Prozess-/Code-IDs.
Code-Impact-Analyse
- Verhindert Totalverlust.
- Baseline muss Ad-hoc-Iststand konservieren.
Risikoanalyse
| Risiko | Eintritt | Schaden | |---|---|---| | Seed löscht Daten | hoch | kritisch | | Drift verhindert Recovery | hoch | kritisch |
Strategie zur Risikonullierung
- Prevent: immutable additive Migrationen.
- Detect: Checksum/Fingerprint.
- Contain: Transaktion/Backup.
- Recover: Restore/Roll-forward.
Abschlussnachweis
Erledigt erst, wenn alle MUST-Spezifikationen implementiert, alle Gateways mit unveränderlicher Evidenz grün und Restrisiken technisch ausgeschlossen oder ausdrücklich fachlich akzeptiert sind.
Umsetzungsstatus
- `run-migrations.php` und checksum-basierter `MigrationRunner` implementiert.
- Versionen 0001-0010 mit aktuellen SHA-256-Werten als `BASELINED` registriert; 0011 als `APPLIED`.
- Zweiter Lauf faktisch No-op (`changes: []`).
- Destruktives TRUNCATE aus 0008 entfernt; Initialseed bricht auf nichtleeren Fachtabellen fail-closed ab.
- Absolute Projektpfade aus 0006/0008 entfernt.
- Offen: additive Reproduktion des aktuellen Doku-/Rechnungsprozessstands und Empty-DB-Fingerprint-Gateway.