F04 Rechnungs-State korruptions- und parallelitätssicher machen
Frühere Version vom 2026-07-16T19:53:19.681985+02:00 · zur aktuellen Fassung
Rechnungs-State korruptions- und parallelitätssicher machen
Finding: F04 Priorität: P0 Status: IN UMSETZUNG Stand: 2026-07-16
Problembeschreibung
- Ungültiges/unlesbares JSON wird als leer behandelt (JsonInvoiceStateAdapter.php:31).
- Fester .tmp und Schreib-LOCK schützen nicht den Read-Modify-Write-Zyklus (JsonInvoiceStateAdapter.php:54).
- Parallele Läufe können überschreiben, doppelt posten oder Revisionen verlieren.
Ziel
Korruption und Parallelität führen fail-closed zu einem reparierbaren Zustand, nie zum erneuten Vollimport.
Aufgabe
- Transaktionale DB-Persistenz oder vollständiges Prozesslocking umsetzen.
- Invaliden State als STATE_CORRUPT abbrechen.
- Schema-Version, atomare Migration, Revision/CAS sowie Kill-/Paralleltests ergänzen.
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: invalides JSON ist nie leerer State.
- MUST: genau ein Lauf mutiert einen Schlüssel.
- MUST: Save fsync-atomar oder transaktional.
- MUST: Revision monoton.
Harte Quality Gateways
- 20 Parallelworker ohne Lost Update.
- Truncated JSON stoppt vor Netzwerk.
- Kill während Save lässt alte oder neue vollständige Revision.
- Restore erzeugt keinen POST.
- Global: PHPStan Level 8 und PHPUnit liefern 0 Fehler; kein Ignore oder Baseline.
Code Blast
- Direkt: State-Adapter/Port, InvoiceState/Record, Ingest, CLI.
- Daten: JSON-Migration oder neue DB-Tabelle.
Code-Impact-Analyse
- Parallelstart kann bewusst abgelehnt werden.
- Bestands-JSON benötigt kontrollierten Einmalimport.
Risikoanalyse
| Risiko | Eintritt | Schaden | |---|---|---| | Korruption als Erstlauf | hoch | kritisch | | Lost Update | hoch | kritisch |
Strategie zur Risikonullierung
- Prevent: Eindeutigkeit/Revision.
- Detect: Schema/Checksum.
- Contain: fail-closed.
- Recover: Backup/Import.
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.
Supervisionsfortschritt 2026-07-16
- Korruptes JSON fail-closed, eindeutige Tempdatei und exklusiver Lock ueber kompletten Read-Modify-Remote-Write-Zyklus; Recovery-/Locktests gruen.