← Übersicht

F12 Migrationen zerstörungsfrei, nachvollziehbar und driftfrei machen

Migrationen zerstörungsfrei, nachvollziehbar und driftfrei machen

Finding: F12 Priorität: P0 Status: ERLEDIGT 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

  1. Tracking mit SHA-256/Transaktion.
  2. 0008 sperren; additive Ist-Baseline.
  3. Rechnungsprozesse/Dokus/Links migrieren.
  4. 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

  1. Prevent: immutable additive Migrationen.
  2. Detect: Checksum/Fingerprint.
  3. Contain: Transaktion/Backup.
  4. 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.

Supervisionsfortschritt 2026-07-16

  • Fresh-DB 0001-0015 erfolgreich; Wiederholung leer; 11 von 11 semantischen Tabellenfingerprints identisch; 0 absolute Artefaktpfade.

Frühere Versionen

VersionZeitpunktOperation
45 2026-07-16 19:53:19.687979+02 UPDATE
30 2026-07-16 19:02:06.160126+02 UPDATE