4.2 KiB
Mid-Stream-Änderungen — Rollback-Playbook
Zweck: Wenn ein AI-Coding-Agent ein Milestone falsch baut und du es mittendrin korrigieren musst, ohne dass 5 andere Module brechen.
Grundsatz: atomare Commits pro Slice
Der ToolController committet pro Slice atomar. Eine Slice rückgängig zu machen heißt: einen Commit-Range zu reverten — nicht einen einzelnen File.
Eskalations-Stufen
Stufe 1: Kosmetik / UI falsch
Anzeichen: Funktion läuft technisch, aber Layout/Wording/Reihenfolge falsch.
Vorgehen:
- NIEMALS direkt im
app/routes/**korrigieren — Designer baut neu in Subframe - Subframe-Update → AI-Agent integriert in
packages/ui-hivegrid/src/adapters/ - Visual-Regression-Gate (M016) zeigt Diff
- Merge
Risiko: sehr niedrig. Layer-Trennung schützt.
Stufe 2: View-Model falsch (Daten-Form)
Anzeichen: Funktion zeigt falsche Daten / fehlende Felder / falsche Aggregation.
Vorgehen:
- View-Model in
packages/view-models/src/<domain>/*.vm.tskorrigieren - Zod-Schema mit-aktualisieren
- Loader-Funktion im
app/routes/**korrigieren - UI-Component in
packages/ui-hivegrid/**muss NICHT geändert werden (sonst war die Trennung schlecht)
Risiko: mittel. Wenn die UI-Component die VM-Form falsch annimmt: neuer Vertrag.
Stufe 3: Domain-Logik falsch
Anzeichen: Daten werden falsch geschrieben, Permissions stimmen nicht, falsche Side-Effects.
Vorgehen:
app/domain/**korrigieren (NICHT UI, NICHT VM)- Bei DB-Schema-Änderung: neue Prisma-Migration als FORWARD-MIGRATION (kein Backward-Edit der alten)
- Bei Permission-Bug: Permission-Wrapper-Test in M004 erweitern
- Cross-Tenant-Probe-Test (M005) muss grün bleiben
Risiko: hoch. Daten könnten bereits in der DB falsch sein.
Stufe 4: Komplettes Milestone neu
Anzeichen: Architektur-Fehler, falscher Layer-Schnitt, Anti-Pattern in der Foundation.
Vorgehen:
- Branch identifizieren — TC arbeitet pro Milestone in einem Branch
- Branch nicht mergen → revert ist trivial
- Wenn schon gemergt:
git revert <merge-commit>als neuer Commit - PLAN.md des Milestones aktualisieren (Lessons Learned als Hinweis für Slice-Planung)
- TC neu starten auf das Milestone
Risiko: sehr hoch wenn andere Milestones bereits darauf bauen. Deshalb: vor jedem Milestone PLAN.md prüfen, ob die Abhängigkeiten klar sind.
Reversibilitäts-Pflichten pro Milestone
Bevor TC ein Milestone als fertig markiert, müssen folgende Rollback-Pfade existieren:
| Artefakt | Rollback-Pfad |
|---|---|
| Code-Änderungen | git revert <slice-commit> — atomic per Slice |
| DB-Migration | Forward-Only-Migration mit dokumentiertem Inverse-SQL als Kommentar im Migration-File |
| Sidebar-Eintrag | Eintrag in sidebar.config.ts löschen → Sidebar baut sich neu |
| Routes | Route-Datei löschen → RR7 verweigert die URL |
| Permissions | Permission-Key in permissions.ts als deprecated markieren |
| Feature-Flag | Flag aus auf false → Modul unsichtbar ohne Code-Deploy |
Notbremse: Feature-Flag
Jedes Modul, das in Produktion landet, kann via Feature-Flag aus M006 ausgeschaltet werden — ohne Deploy. Wenn etwas live brennt:
- Plattform-Admin → Feature-Flags
- Flag des betroffenen Moduls auf
falsefür betroffenen Mandanten - Modul verschwindet aus der Sidebar (siehe sidebar.config.ts
feature_flagFeld) - Bug in Ruhe fixen
- Flag wieder auf
true
Was du als Mensch nicht selbst korrigieren solltest
- NICHT direkt in
packages/ui-subframe/**— das ist Subframe-Output, wird beim nächsten Designer-Update überschrieben - NICHT direkt in
packages/ui-hivegrid/src/adapters/**— der AI-Agent generiert das aus dem Subframe-Output - NICHT in TC-State (
.tc/) ohne Backup
Was du selbst korrigieren KANNST
docs/milestones/M*/PLAN.md— Pflichtenheft-Bezug, Hinweise, Erfolgskriterien anpassenAGENTS.mdunddocs/INTEGRATION-CONTRACTS.md— Agent-Regeln verschärfendocs/CHANGE-REQUESTS.md— Change-Request festhalten
Eskalationspfad
- Feature-Flag aus (Notbremse)
- PLAN.md aktualisieren mit klarer Korrektur-Anweisung
- TC auf das Milestone neu starten oder gezielt eine Slice via
/tc steerumsteuern - Verify-Gates laufen lassen, bis grün
- Flag wieder an