fix(genome): improve distillation precision + propagation safety

genome-distill.prompt.md:
- Warnung vor versteckten Evolutions in Multi-Change-Commits
- Anleitung: Commit-Message ignorieren, jeden Hunk einzeln prüfen
- Rename-Churn-Erkennung (A→B→A = Specialized)
- Häufige versteckte Evolutions-Muster dokumentiert
- Analyse-Bericht am Ende mit Churn-Counter

genome-propagate.prompt.md:
- Neue Traits: immer einzeln vom User bestätigen lassen
- Nie automatisch neue Traits anlegen ohne explizite Bestätigung
This commit is contained in:
Jens Reinemann 2026-05-18 10:14:54 +02:00
parent 887cdbd3f7
commit 2071d758b5
2 changed files with 30 additions and 2 deletions

View file

@ -47,6 +47,23 @@ Ersetze in den Diffs:
- **Reine Formatting-Änderungen** (nur Whitespace/Tabellenausrichtung): entfernen - **Reine Formatting-Änderungen** (nur Whitespace/Tabellenausrichtung): entfernen
- **Renames ohne inhaltliche Änderung**: entfernen - **Renames ohne inhaltliche Änderung**: entfernen
## Regeln zur Diff-Analyse
> ⚠️ **Wichtig: Commits haben oft eine dominante + eine versteckte Änderung.**
Gehe für jeden Commit wie folgt vor:
1. **Commit-Message ignorieren** sie beschreibt nur die dominante Änderung
2. **Jeden geänderten Hunk einzeln bewerten** auch wenn der Commit-Titel z.B. "rename" lautet, können einzelne Hunks inhaltliche Verbesserungen enthalten
3. **Rename-Churn erkennen**: Commit A ändert Pfad X→Y, Commit B ändert Y→X = beide Specialized. Erst wenn der finale Wert stabil ist, ist es eine Evolution
4. **Nicht zu früh aggregieren**: Ein Commit mit 10 Datei-Diffs kann 2 Specialized + 1 Evolution enthalten trenne sie
**Häufige versteckte Evolutions-Muster:**
- Absolute Pfade (`C:\...`, `x:\...`) → relative Pfade (`.github/...`) → Evolution Score 8
- Board/Order-Zuweisung zu Ticket-Erstellung hinzugefügt → Evolution Score 8
- Script-Aufruf statt vager Beschreibung in Prompt → Evolution Score 7
- Vollständige Label-Liste statt unvollständiger → 🔴 Critical
## Output-Format ## Output-Format
Schreibe das Ergebnis in `.github/genome/output/distilled-mutations.md` mit folgendem Format: Schreibe das Ergebnis in `.github/genome/output/distilled-mutations.md` mit folgendem Format:
@ -95,3 +112,4 @@ Schreibe das Ergebnis in `.github/genome/output/distilled-mutations.md` mit folg
- Halte Zusammenfassungen auf 1 Satz - Halte Zusammenfassungen auf 1 Satz
- Das "Pattern"-Feld bei Evolution beschreibt die **generalisierte Verbesserung**, nicht den konkreten Change - Das "Pattern"-Feld bei Evolution beschreibt die **generalisierte Verbesserung**, nicht den konkreten Change
- Diffs dürfen gekürzt werden nur die relevanten Hunks behalten - Diffs dürfen gekürzt werden nur die relevanten Hunks behalten
- Schreibe am Ende einen **Analyse-Bericht** in den Chat (nicht in die Datei): `Traits: N | Mutations: M | Critical: A | Evolution: B | Specialized entfernt: C | Churn-Commits übersprungen: D`

View file

@ -20,7 +20,7 @@ Du erhältst destillierte Mutations (klassifiziert, gescored, bereinigt) und sol
Für jeden Growth Vector aus `distilled-mutations.md`: Für jeden Growth Vector aus `distilled-mutations.md`:
- Prüfe ob ein **gleichnamiger Trait** im Ziel-Genome existiert → direktes Match - Prüfe ob ein **gleichnamiger Trait** im Ziel-Genome existiert → direktes Match
- Prüfe ob ein **funktional äquivalenter Trait** existiert (anderer Name, gleicher Zweck) → adaptiertes Match - Prüfe ob ein **funktional äquivalenter Trait** existiert (anderer Name, gleicher Zweck) → adaptiertes Match
- Kein Match → neuer Trait (nur bei Score ≥ 8 vorschlagen) - Kein Match → **neuer Trait** (nur bei Score ≥ 8 in die Checkliste aufnehmen, aber IMMER als "neu" kennzeichnen nie automatisch anwenden)
### 2. Patch-Generierung ### 2. Patch-Generierung
@ -98,7 +98,16 @@ Schreibe das Ergebnis in `.github/genome/output/propagation-proposals.md`:
Frage den User: Frage den User:
> Welche Vorschläge soll ich anwenden? (Nummern, "alle", oder "critical+evolution≥7") > Welche Vorschläge soll ich anwenden? (Nummern, "alle", oder "critical+evolution≥7")
Wende dann die ausgewählten Patches an editiere die entsprechenden Dateien direkt. Wende dann die ausgewählten Patches an mit folgenden Einschränkungen:
### Neue Traits: Bestätigung erforderlich
Bevor ein neuer Trait (kein Match im Ziel-Genome) angelegt wird, **immer einzeln bestätigen lassen**:
> Soll ich `<trait-key>` als neuen Trait in `.github/<pfad>` anlegen?
> Inhalt: <Kurzbeschreibung, 1 Satz>
Ers nach expliziter Bestätigung anlegen. Nie mehrere neue Traits auf einmal ohne Bestätigung.
## Regeln ## Regeln
@ -106,4 +115,5 @@ Wende dann die ausgewählten Patches an editiere die entsprechenden Dateien
- Überspringe Vorschläge, bei denen der Ziel-Trait bereits den gleichen Stand hat (kein Diff) - Überspringe Vorschläge, bei denen der Ziel-Trait bereits den gleichen Stand hat (kein Diff)
- Bei Konflikten (Ziel-Datei hat abweichende Struktur): markiere als ⚠️ und zeige beide Varianten - Bei Konflikten (Ziel-Datei hat abweichende Struktur): markiere als ⚠️ und zeige beide Varianten
- Erstelle KEINE neuen Traits mit Score < 8 - Erstelle KEINE neuen Traits mit Score < 8
- Neue Traits immer einzeln bestätigen lassen auch wenn mehrere selektiert wurden
- Passe Einrückung und Stil an die Konventionen des Ziel-Repos an - Passe Einrückung und Stil an die Konventionen des Ziel-Repos an