docs(skill): Mehrrunden-Rückfragen + verständlicher Laien-Changelog

- Mehrrundiger Dialog (Open→NeedsInfo→Answered→…→Resolved): jede weitere Antwort
  bringt das Ticket wieder in Bearbeitung. Kontext-Träger ist das TICKET (voller
  Verlauf + Triage-Eintrag), nicht der Subagent (sitzungsgebunden) — ein
  wiederaufgreifender Agent rekonstruiert denselben Kontext; echte Agent-
  Fortsetzung nur innerhalb einer Session via SendMessage. Datenmodell:
  Frage/Antwort als Thread (mehrere Runden), nicht nur ein Paar.
- fixNote-Changelog: harte Regel „nur für die Züchterin, kein Technik-Geschwafel"
  + Gut/Schlecht-Beispiele (Tiernamen statt IDs, keine Datei-/Feldnamen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 21:13:51 +02:00
parent 5edd84046d
commit 8bfa2a7911

View File

@@ -104,10 +104,20 @@ ab — aber erst **nachdem der Fix verifiziert und (bei Daten-/Import-Fixes) liv
eingespielt ist** (Schritt 5), damit „erledigt" auch stimmt:
`PUT /feedback/{id}` mit `{"status": "Resolved", "fixNote": "<verständliche
Erklärung, was korrigiert wurde>"}`.
Die `fixNote` ist ein **Changelog für die Züchterin**: einfache, freundliche
Sprache, keine Code-/Fachbegriffe, sagt was korrigiert wurde und ggf. was sie tun
soll. Beispiel: „Die Mutter von Yuki wurde auf Izumi korrigiert (vorher fälschlich
Benjiro). Bitte den Stammbaum neu laden."
**Die `fixNote` ist ein Changelog AUSSCHLIESSLICH für die Züchterin (Laiin) —
kein technisches Geschwafel.** Harte Regel:
- Schreib, **was sich für SIE sichtbar geändert hat**, in Alltagssprache; 13 Sätze.
- KEINE Dateinamen, Funktionen, Feldnamen, IDs, Status-Codes, „Resolver/Migration/
Genotyp-Parser/isResident/conflict-decisions" o. Ä. Nenne Tiere/Würfe bei ihrem
**Namen**, nicht per ID.
- Sag ggf., was sie tun soll (z. B. „Seite neu laden").
Gut: „Die Mutter von **Yuki** war falsch — sie ist jetzt **Izumi** (vorher stand
da Benjiro). Bitte den Stammbaum neu laden."
Gut: „**Hagrid** wird nicht mehr als dein eigenes Tier geführt, sondern nur noch
als Vorfahre — seine Würfe und der Charakter-Bereich werden nicht mehr angezeigt."
Schlecht (NICHT so): „assign_parent_roles korrigiert, motherId via
conflict-decisions.json gesetzt, re-ingest." / „isResident=false gesetzt."
### Abschluss-Regel (wichtig)
**Kein bearbeitetes Ticket bleibt offen liegen.** Jedes `Open`/`Answered`-Ticket
@@ -117,6 +127,29 @@ endet nach einem Lauf in genau einem Endzustand:
Kann ein Ticket weder gefixt noch sinnvoll erfragt werden, stelle trotzdem eine
klärende Rückfrage (NeedsInfo) statt es offen zu lassen.
## Mehrrundige Rückfragen & Kontext-Kontinuität
Der Dialog kann mehrere Runden haben: `Open → (Rückfrage) NeedsInfo → (Antwort)
Answered → (KI prüft) ggf. neue Rückfrage NeedsInfo → Answered → … → Resolved`.
Jede **weitere Antwort** der Züchterin bringt das Ticket wieder auf `Answered` und
damit erneut in die Bearbeitung (Schritt 1 filtert `Answered` immer mit ein).
**Kontext-Träger ist das Ticket, nicht der Subagent.** Subagenten sind
sitzungsgebunden — antwortet die Züchterin später (neue Session), existiert der
ursprüngliche Agent nicht mehr. Daher MUSS der gesamte Verlauf am Ticket hängen
(Frage/Antwort je Runde) + der Triage-Eintrag in `docs/ticket-triage.md`. Beim
Wiederaufgreifen eines `Answered`-Tickets lädt der Subagent diesen vollständigen
Verlauf + die frühere Triage und macht **mit demselben Kontext** weiter (statt bei
null neu zu untersuchen) — praktisch „derselbe Vorgang, fortgesetzt".
**Innerhalb derselben Session** kann man stattdessen denselben Subagenten direkt
fortsetzen (SendMessage an seine Agent-ID, Kontext bleibt erhalten) — nur dann ist
echte Agent-Kontinuität möglich.
Das Datenmodell unterstützt Mehrrunden über einen **Verlauf/Thread** am Ticket
(mehrere Frage/Antwort-Einträge mit Autor + Zeit), nicht nur ein einzelnes
Frage/Antwort-Paar — so geht bei weiteren Antworten nichts verloren.
## Verifikation vor „fertig"
- Code-Fixes: `npx tsc --noEmit`, `npx vitest run`, betroffene `npx playwright test`,
`dotnet build`/`dotnet test`, Python-`test_*.py` — grün.