- Specialized klar abgegrenzt: nur konkrete Server-Deployments, Renames, Seeding - 5 häufige Distillation-Fehler dokumentiert (member-added ignorieren, nur Anfang lesen, etc.) - Erweiterte Evolutions-Muster (GPU-Hardening, Hot-Reload, API statt Restart) - Zusätzliche Sanitization-Regeln (Server-IPs, Package-Namen) - Erwartete Conversion-Rate: 15-30% als Orientierung
7.9 KiB
| description | model | tools | ||
|---|---|---|---|---|
| Genome Engine Phase 2: Distilliert raw-mutations.md – klassifiziert, scored und bereinigt Mutations für Cross-Repo-Propagation. | Claude Opus 4.6 (copilot) |
|
Genome Distillation
Du erhältst eine Datei mit rohen Git-Mutations aus Copilot-Customization-Dateien. Deine Aufgabe: klassifizieren, scoren, bereinigen – damit nur übertragbare Verbesserungen übrig bleiben.
Input
Lies die Datei .github/genome/output/raw-mutations.md.
Aufgabe
Für jeden Trait und jede Mutation darin:
1. Klassifizierung
| Klasse | Bedeutung | Beispiele |
|---|---|---|
| 🔴 Critical | Bugfixes, die andere Repos auch treffen würden | Fehlende Escapes, falsche Tool-Syntax, Security-Lücke in Prompt |
| 🟡 Evolution | Generelle Verbesserungen, übertragbar | Bessere Formulierung, neues Pattern, strukturelle Optimierung |
| ⚪ Specialized | Projektspezifisch, NICHT übertragbar | Deployment auf einen konkreten Server (IP/Domain), projektspezifische DB-Seeding-Daten, App-spezifische Package-Namen ohne generelles Pattern |
2. Scoring (1–10)
Bewerte den Übertragungswert jeder Critical/Evolution-Mutation:
- 9–10: Universell wertvoll, jedes Repo profitiert
- 7–8: Breit anwendbar, gutes Pattern
- 4–6: Situativ nützlich
- 1–3: Grenzwertig, kaum übertragbar
3. Sanitization
Ersetze in den Diffs:
- Benutzernamen →
<user> - Maschinenpfade (z.B.
C:\Users\...,/home/...) →<local-path> - Tokens, API-Keys, Secrets →
<redacted> - Projektspezifische IDs (Issue-Nummern, Project-Board-IDs) →
<project-id> - Repo-spezifische Namen (z.B.
bollwerk,krisenvorrat) →<project> - Server-IPs/Domains (z.B.
195.246.231.210,bollwerk.online) →<server> - Package-Namen (z.B.
de.bollwerk.app) →<package>
Specialized vs. Evolution – Abgrenzung
Specialized = betrifft NUR dieses eine Projekt und ist nach Sanitization NICHT auf ein anderes Repo übertragbar.
Specialized (entfernen):
- Deployment-Skripte die eine konkrete Server-IP/Domain ansprechen (SCP auf den Island-VPS)
- Projekt-Renames (
krisenvorrat→bollwerk) ohne inhaltliche Verbesserung - Seeding-Daten, Issue-Body-Templates für ein konkretes Feature dieses Projekts
- Docker-Compose-Anpassungen für einen konkreten Server
NICHT Specialized (behalten als Evolution):
- Technologie-Handling: Gradle-Build-Patterns, Room-Migration-Checklisten, Emulator-GPU-Workarounds
- Workflow-Patterns: Ticket-Orchestrierung, Sub-Agent-Isolation, Board-Status-Automatisierung
- Tooling-Bugfixes: PowerShell-Binary-Encoding umgehen, ADB-Timeout-Loops, Force-Kill-Fallbacks
- Architektur-Patterns: API-Call statt Container-Restart, Hot-Reload ohne Emulator-Neustart
- Neue Skills/Prompts deren Kernlogik nach Sanitization universell ist
4. Filterung
- Specialized Mutations: komplett entfernen (nicht in Output aufnehmen)
- Reine Formatting-Änderungen (nur Whitespace/Tabellenausrichtung): entfernen
- Renames ohne inhaltliche Änderung: entfernen
⚠️ Häufige Fehler bei der Distillation (vermeiden!)
Fehler 1: member-added pauschal als Specialized verwerfen
Neue Dateien (member-added) sind oft die wertvollsten Mutations. Ein neuer Skill, Prompt oder Agent ist nach Sanitization häufig hochgradig übertragbar. Prüfe:
- Enthält die Datei ein allgemeines Pattern (z.B. Checkliste, Workflow-Struktur, Fehlerklassen-Katalog)?
- Ist sie nach Pfad-/Namen-Sanitization auf andere Projekte anwendbar?
- → Wenn ja: Evolution (Score 7–9), nicht Specialized.
Nur als Specialized werten, wenn der gesamte Inhalt projektspezifisch ist (z.B. nur eine Entity-Definition für eine bestimmte App).
Fehler 2: Nur den ersten Teil der raw-mutations lesen
Die raw-mutations-Datei kann tausende Zeilen lang sein. Skills, Scripts und neue Traits stehen oft am Ende. Lies die GESAMTE Datei bevor du klassifizierst – nicht nur die ersten 1000–2000 Zeilen.
Fehler 3: Mehrteilige Commits nicht trennen
Ein einzelner Commit kann enthalten:
- 3× Specialized (Rename
krisenvorrat→bollwerkin 3 Dateien) - 1× Evolution (GPU-Hardening-Pattern mit Timeout-Loop)
- 1× Evolution (Hot-Reload-Action als neues Pattern)
Trenne diese pro Hunk, nicht pro Commit.
Fehler 4: Technische Scripts als Specialized abtun
PowerShell/Python-Scripts die ein universelles DevOps-Problem lösen (z.B. Emulator-Boot-Timing, PowerShell-Binary-Encoding-Bug, APK-Deployment ohne Container-Restart) sind Evolutions, auch wenn sie projektspezifische Pfade enthalten. Nach Sanitization sind sie übertragbar.
Fehler 5: Zu konservativ scoren
Eine Conversion-Rate von < 10% ist ein Warnsignal. Bei typischen aktiven Repos mit 20+ Traits sollte die Rate bei 15–30% liegen (bezogen auf Traits mit mindestens einer Evolution, nicht auf Mutations-Gesamtzahl).
Regeln zur Diff-Analyse
⚠️ Wichtig: Commits haben oft eine dominante + eine versteckte Änderung.
Gehe für jeden Commit wie folgt vor:
- Commit-Message ignorieren – sie beschreibt nur die dominante Änderung
- Jeden geänderten Hunk einzeln bewerten – auch wenn der Commit-Titel z.B. "rename" lautet, können einzelne Hunks inhaltliche Verbesserungen enthalten
- 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
- 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
- Neues Skript das universellen Bug umgeht (z.B. PowerShell-Binary-Encoding, GPU-Inkompatibilität) → Evolution Score 8
- Neuer Skill/Prompt mit transferierbarer Checkliste (z.B. DB-Migration-Steps, Audit-Fehlerklassen) → Evolution Score 8–9
- Workflow-Isolation (Sub-Agent pro Iteration, kein geteilter Kontext) → Evolution Score 7
- API-Call statt Container-Restart für Config-Updates → Evolution Score 7
- Timeout-Loop + Fallback statt einfachem
wait-for-device→ Evolution Score 7
Output-Format
Schreibe das Ergebnis in .github/genome/output/distilled-mutations.md mit folgendem Format:
# Distilled Mutations
**Quelle:** <repo-name>
**Zeitraum:** <aus raw-mutations übernehmen>
**Distilliert:** <aktuelles Datum>
**Ergebnis:** X Critical, Y Evolution (Z Specialized entfernt)
---
## 🔴 Critical
### Trait: `<trait-key>`
**Score:** N/10
**Zusammenfassung:** <1-Satz was gefixt wurde>
```diff
<bereinigter Diff>
```
🟡 Evolution
Trait: <trait-key>
Score: N/10 Zusammenfassung: <1-Satz was verbessert wurde> Pattern: <abstrahiertes Pattern, das andere übernehmen können>
<bereinigter Diff>
## Regeln
- Fasse mehrere Commits am selben Trait zu EINER Mutation zusammen, wenn sie dasselbe verbessern
- Bei Score < 4: nicht aufnehmen (zu wenig Übertragungswert)
- Sortiere innerhalb jeder Klasse absteigend nach Score
- Halte Zusammenfassungen auf 1 Satz
- Das "Pattern"-Feld bei Evolution beschreibt die **generalisierte Verbesserung**, nicht den konkreten Change
- 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`