Erstelle einen umsetzbaren Fix-Plan.
Eingabe:
Eine Liste von Findings mit IDs im Format F-<n> — typischerweise aus einem Review-,
Audit- oder KISSD-Report, entweder direkt im Prompt oder als Datei, auf die der Nutzer
zeigt. Die Finding-ID im Ausgabeformat wird aus dieser Liste uebernommen, nie erfunden.
- Keine Findings-Liste vorhanden: nicht raten und nicht selbst ein Review fahren.
Den Nutzer nach der Quelle fragen ("Welcher Report / welche Datei enthaelt die
Findings?") und hier abbrechen.
- Findings ohne IDs gegeben: in der Reihenfolge, in der sie dastehen, selbst
durchnummerieren als
F-1, F-2, ... und im Report unter der Fix-Reihenfolge
vermerken: "Findings waren unnummeriert, IDs in Eingabereihenfolge vergeben."
- Findings mit einem anderen ID-Schema (z.B.
K1, SEC-03): die vorhandenen IDs
unveraendert uebernehmen, nicht auf F-<n> umschreiben.
Regeln:
- Sortierkaskade (deterministisch, jede Stufe nur bei Gleichstand der vorigen):
- Schritte, von denen andere Schritte abhaengen, zuerst.
- Bei gleicher Abhaengigkeitsstufe: Risiko hoch vor mittel vor niedrig.
- Bei weiterem Gleichstand: aufsteigend nach Finding-ID.
- Risikostufen (je mit pruefbarem Kriterium):
- hoch: oeffentliche API, Datenmodell oder Migration betroffen
- mittel: geteilte Funktion/Modul mit mehr als einem Aufrufer betroffen
- niedrig: Aenderung lokal auf eine Funktion begrenzt
- Kleine, einzeln testbare Schritte
- Pro Schritt genau EIN primaeres Ziel
- Keine neuen Features
Ablauf:
- Findings einlesen
- Abhaengigkeiten bestimmen: Finding A haengt von B ab, wenn (a) A eine Datei oder
Funktion aendert, die B erst anlegt, umbenennt oder entfernt, oder (b) der Test aus A
ohne den Fix aus B nicht gruen werden kann. Trifft keins von beiden zu, sind die
Findings unabhaengig.
- nach Sortierkaskade sortieren
- Felder pro Schritt ausfuellen
- Ausgabe schreiben (siehe Ablage)
- verifizieren (siehe Verifikation)
Ausgabeformat:
Fix-Reihenfolge
Pro Schritt genau so:
- Schritt:
- Finding-ID: — bei zusammengefassten Findings mehrere IDs mit Komma und
Leerzeichen getrennt:
F-2, F-5
- Ziel:
- Aenderungen: <betroffene dateien/funktionen>
- Risiko: niedrig | mittel | hoch
- Test danach: <genauer Befehl/Testfall>
- Done-Kriterium:
Reihenfolge-Begruendung
- 3-6 Stichpunkte; bei weniger als drei Schritten genau ein Stichpunkt pro Schritt
Ablage
Schreibe die Ausgabe nach docs/fixplan-<YYYY-MM-DD>.md im Projekt-Root
(Datum des Laufs, nicht des Findings-Reports).
- Existiert
docs/ nicht: Verzeichnis anlegen.
- Existiert die Zieldatei bereits: nicht ueberschreiben, sondern einen neuen
Abschnitt
## Lauf <YYYY-MM-DDTHH:MM> mit dem vollstaendigen Fix-Plan
dieses Laufs anhaengen.
Wenn etwas fehlschlaegt
| Symptom |
Massnahme |
| Keine Findings-Liste in der Anfrage |
Nutzer nach der Quelle fragen ("Welcher Report / welche Datei?") und abbrechen — nichts schreiben, kein eigenes Review starten |
| Datei mit Findings nicht lesbar oder leer |
Pfad nennen und beim Nutzer rueckfragen, nicht auf eine andere Datei ausweichen |
Finding ohne genug Kontext fuer Aenderungen |
Feld als unklar — Rueckfrage: <konkrete Frage> fuellen, Schritt trotzdem aufnehmen |
| Kein automatisierbarer Test fuer ein Finding vorhanden |
Test danach: manuelle Pruefung — <was genau anzusehen ist> schreiben, nie leer lassen |
| Zwei Findings blockieren sich gegenseitig |
In einen Schritt zusammenfassen, beide IDs im Feld Finding-ID nennen und in der Reihenfolge-Begruendung begruenden |
docs/ existiert nicht |
Verzeichnis anlegen (mkdir -p docs), dann schreiben |
| Zieldatei existiert schon |
Nicht ueberschreiben — ## Lauf <YYYY-MM-DDTHH:MM> anhaengen (siehe Ablage) |
| Schreiben schlaegt fehl (Rechte, Pfad) |
Fehler mit Pfad melden, Plan im Chat vollstaendig ausgeben, keinen Ersatzpfad erfinden |
Verifikation
Nach dem Schreiben pruefen — jede Abweichung korrigieren, bevor der Lauf als fertig gilt:
- Jede Finding-ID aus der Eingabe kommt in genau einem Schritt vor — keine fehlt, keine doppelt,
keine erfundene ID dazu. Ein Schritt darf mehrere IDs tragen (Komma-getrennt), jede einzelne
aber nur in diesem einen Schritt.
- Jeder Schritt hat alle sieben Felder (
Schritt, Finding-ID, Ziel, Aenderungen, Risiko,
Test danach, Done-Kriterium) ausgefuellt — kein Platzhalter wie TBD, <...> oder leer.
Risiko ist genau einer der Werte niedrig, mittel, hoch.
## Reihenfolge-Begruendung haelt die Stichpunkt-Regel aus dem Ausgabeformat ein.
- Die Datei existiert am genannten Pfad und der Fix-Plan dieses Laufs beginnt mit
## Fix-Reihenfolge.
Pruefbefehl:
PLAN="docs/fixplan-$(date +%F).md"
test -f "$PLAN" || echo "FEHLT: $PLAN"
awk '/^## Fix-Reihenfolge/{n=0} /^- Finding-ID:/{n++} END{print n}' "$PLAN"
Das awk setzt bei jedem ## Fix-Reihenfolge zurueck und zaehlt daher nur den zuletzt
angehaengten Fix-Plan, nicht die Schritte frueherer Laeufe in derselben Datei.
Erwartet: keine FEHLT:-Zeile und eine Zahl gleich der Anzahl der Schritte dieses Laufs.
1---2name: izg-create-fixplan3description: Erstelle einen umsetzbaren Fix-Plan aus einer Findings-Liste. Use when nach einem Review oder Audit die Findings in eine abgearbeitete Reihenfolge gebracht werden sollen.4---56Erstelle einen umsetzbaren Fix-Plan.78Eingabe:9Eine Liste von Findings mit IDs im Format `F-<n>` — typischerweise aus einem Review-,10Audit- oder KISSD-Report, entweder direkt im Prompt oder als Datei, auf die der Nutzer11zeigt. Die `Finding-ID` im Ausgabeformat wird aus dieser Liste uebernommen, nie erfunden.1213- Keine Findings-Liste vorhanden: nicht raten und nicht selbst ein Review fahren.14 Den Nutzer nach der Quelle fragen ("Welcher Report / welche Datei enthaelt die15 Findings?") und hier abbrechen.16- Findings ohne IDs gegeben: in der Reihenfolge, in der sie dastehen, selbst17 durchnummerieren als `F-1`, `F-2`, ... und im Report unter der Fix-Reihenfolge18 vermerken: "Findings waren unnummeriert, IDs in Eingabereihenfolge vergeben."19- Findings mit einem anderen ID-Schema (z.B. `K1`, `SEC-03`): die vorhandenen IDs20 unveraendert uebernehmen, nicht auf `F-<n>` umschreiben.2122Regeln:23- Sortierkaskade (deterministisch, jede Stufe nur bei Gleichstand der vorigen):24 1. Schritte, von denen andere Schritte abhaengen, zuerst.25 2. Bei gleicher Abhaengigkeitsstufe: Risiko hoch vor mittel vor niedrig.26 3. Bei weiterem Gleichstand: aufsteigend nach Finding-ID.27- Risikostufen (je mit pruefbarem Kriterium):28 - hoch: oeffentliche API, Datenmodell oder Migration betroffen29 - mittel: geteilte Funktion/Modul mit mehr als einem Aufrufer betroffen30 - niedrig: Aenderung lokal auf eine Funktion begrenzt31- Kleine, einzeln testbare Schritte32- Pro Schritt genau EIN primaeres Ziel33- Keine neuen Features3435Ablauf:361. Findings einlesen372. Abhaengigkeiten bestimmen: Finding A haengt von B ab, wenn (a) A eine Datei oder38 Funktion aendert, die B erst anlegt, umbenennt oder entfernt, oder (b) der Test aus A39 ohne den Fix aus B nicht gruen werden kann. Trifft keins von beiden zu, sind die40 Findings unabhaengig.413. nach Sortierkaskade sortieren424. Felder pro Schritt ausfuellen435. Ausgabe schreiben (siehe Ablage)446. verifizieren (siehe Verifikation)4546Ausgabeformat:47## Fix-Reihenfolge48Pro Schritt genau so:49- Schritt: <nummer>50- Finding-ID: <ID> — bei zusammengefassten Findings mehrere IDs mit Komma und51 Leerzeichen getrennt: `F-2, F-5`52- Ziel: <was nach dem Fix korrekt sein muss>53- Aenderungen: <betroffene dateien/funktionen>54- Risiko: niedrig | mittel | hoch55- Test danach: <genauer Befehl/Testfall>56- Done-Kriterium: <messbares Ergebnis>5758## Reihenfolge-Begruendung59- 3-6 Stichpunkte; bei weniger als drei Schritten genau ein Stichpunkt pro Schritt6061## Ablage62Schreibe die Ausgabe nach `docs/fixplan-<YYYY-MM-DD>.md` im Projekt-Root63(Datum des Laufs, nicht des Findings-Reports).64- Existiert `docs/` nicht: Verzeichnis anlegen.65- Existiert die Zieldatei bereits: nicht ueberschreiben, sondern einen neuen66 Abschnitt `## Lauf <YYYY-MM-DDTHH:MM>` mit dem vollstaendigen Fix-Plan67 dieses Laufs anhaengen.6869## Wenn etwas fehlschlaegt7071| Symptom | Massnahme |72|---|---|73| Keine Findings-Liste in der Anfrage | Nutzer nach der Quelle fragen ("Welcher Report / welche Datei?") und abbrechen — nichts schreiben, kein eigenes Review starten |74| Datei mit Findings nicht lesbar oder leer | Pfad nennen und beim Nutzer rueckfragen, nicht auf eine andere Datei ausweichen |75| Finding ohne genug Kontext fuer `Aenderungen` | Feld als `unklar — Rueckfrage: <konkrete Frage>` fuellen, Schritt trotzdem aufnehmen |76| Kein automatisierbarer Test fuer ein Finding vorhanden | `Test danach: manuelle Pruefung — <was genau anzusehen ist>` schreiben, nie leer lassen |77| Zwei Findings blockieren sich gegenseitig | In einen Schritt zusammenfassen, beide IDs im Feld `Finding-ID` nennen und in der Reihenfolge-Begruendung begruenden |78| `docs/` existiert nicht | Verzeichnis anlegen (`mkdir -p docs`), dann schreiben |79| Zieldatei existiert schon | Nicht ueberschreiben — `## Lauf <YYYY-MM-DDTHH:MM>` anhaengen (siehe Ablage) |80| Schreiben schlaegt fehl (Rechte, Pfad) | Fehler mit Pfad melden, Plan im Chat vollstaendig ausgeben, keinen Ersatzpfad erfinden |8182## Verifikation8384Nach dem Schreiben pruefen — jede Abweichung korrigieren, bevor der Lauf als fertig gilt:85861. Jede Finding-ID aus der Eingabe kommt in genau einem Schritt vor — keine fehlt, keine doppelt,87 keine erfundene ID dazu. Ein Schritt darf mehrere IDs tragen (Komma-getrennt), jede einzelne88 aber nur in diesem einen Schritt.892. Jeder Schritt hat alle sieben Felder (`Schritt`, `Finding-ID`, `Ziel`, `Aenderungen`, `Risiko`,90 `Test danach`, `Done-Kriterium`) ausgefuellt — kein Platzhalter wie `TBD`, `<...>` oder leer.913. `Risiko` ist genau einer der Werte `niedrig`, `mittel`, `hoch`.924. `## Reihenfolge-Begruendung` haelt die Stichpunkt-Regel aus dem Ausgabeformat ein.935. Die Datei existiert am genannten Pfad und der Fix-Plan dieses Laufs beginnt mit94 `## Fix-Reihenfolge`.9596Pruefbefehl:9798```bash99PLAN="docs/fixplan-$(date +%F).md"100test -f "$PLAN" || echo "FEHLT: $PLAN"101awk '/^## Fix-Reihenfolge/{n=0} /^- Finding-ID:/{n++} END{print n}' "$PLAN"102```103104Das `awk` setzt bei jedem `## Fix-Reihenfolge` zurueck und zaehlt daher nur den zuletzt105angehaengten Fix-Plan, nicht die Schritte frueherer Laeufe in derselben Datei.106Erwartet: keine `FEHLT:`-Zeile und eine Zahl gleich der Anzahl der Schritte dieses Laufs.