Fable Debug — wissenschaftliches Debugging
Opus' häufigster Fehler: eine vermeintliche Ursache instinktiv diagnostizieren und sofort losfixen, ohne zu prüfen, ob der Fehler überhaupt real ist oder woher die Daten kommen. Dieser Skill verbietet das und erzwingt ein methodisches Vorgehen.
Vorgehen (in Reihenfolge)
1. Reproduzieren
- Erst den Fehler reproduzierbar machen. Lies die tatsächliche Fehlermeldung / den Stacktrace — nicht die vermutete. Notiere die exakten Schritte/Eingaben, die ihn auslösen.
- Lässt er sich nicht reproduzieren: erst klären, ob er real ist, bevor du irgendetwas "fixt".
2. Erst beobachten, dann erklären
- Verfolge, woher die betroffenen Daten/Werte kommen (Quelle → Transformationen → Stelle des Fehlers).
- Sammle Fakten (Logs, Werte, Zustände), bevor du eine Erklärung formulierst.
3. Hypothesen bilden — mehrere
- Formuliere ≥2 konkrete, falsifizierbare Hypothesen für die Ursache.
- Für jede: Welche Beobachtung würde sie bestätigen oder widerlegen? Spring nicht auf die erste.
4. Gezielt testen — eine Variable pro Schritt
- Ändere/prüfe jeweils nur eine Sache, damit die Ursache eindeutig zuordenbar bleibt.
- Nutze gezielte Logs/Asserts/minimale Repro statt breiter, hoffnungsbasierter Änderungen.
5. Root Cause vor Fix
- Behebe die Ursache, nicht das Symptom. Erkläre kurz, warum der Fehler entsteht.
- Prüfe, ob dieselbe Ursache an anderen Stellen ebenfalls auftritt.
6. Nach dem Fix verifizieren
- Repro erneut ausführen → wirklich behoben? Keine Regression im Happy Path und an den Error-Paths?
- Wenn möglich, einen Test ergänzen, der genau diesen Bug künftig fängt.
Antimuster (vermeiden)
- Diagnostizieren, ohne den Fehler reproduziert zu haben.
- Annehmen, ein gemeldeter Fehler sei echt, ohne ihn zu verifizieren.
- Mehrere Dinge gleichzeitig ändern und hoffen, dass eines wirkt.