2
0

refactor(router): apply quality-checklist HIGH fixes

Close 4 HIGH-priority gaps from router-quality-checklist audit
(agentbrain/memory/templates/router-quality-checklist.md):

1. Quick-Start-Trace (section 3): three end-to-end dialog examples
   added before the Routing Pattern section.
   - Beispiel A: Happy path (new idea, no file yet)
   - Beispiel B: Precondition-Gap (Persona triggered without PS)
   - Beispiel C: No-Match (Marketing-Funnel request)
   Each example shows phase-by-phase trace + hand-off wording incl.
   confirmation question.

2. Phase 1b — No-Match-Handling (section 9): new phase between
   intent recognition and precondition check. Explicit out-of-scope
   wording, scope-statement, anchor question, and rules against
   semantic-fallback routing or hallucinated capabilities.

3. Tiebreaker-Regeln (section 8): added to routing-table.md.
   Four-rule hierarchy (Explicit > Semantic; Earlier-pipeline >
   Later; Sub-Skill > Router; review-iterate beats any artifact
   verb when iteration is explicit). One-question-max with two
   options for true ambiguity; otherwise fall through to Phase 1b.
   Includes a worked-example table.

4. Guardrails section (section 10): consolidated 8-item "Never X"
   block at the end of SKILL.md. Covers no-self-execute, no-silent-
   routing-on-missing-precondition, no menu-dump > 8, no halluci-
   nated capabilities, no untied tiebreaker routing, no skipped
   file-state read, no bypassed user context, no iterated
   clarification.

MEDIUM gaps (sections 5/6/7 — bucket grouping, required/optional
precondition split, good/bad output examples) remain open as a
polish pass after step 10b. EVAL strategy (section 11) is a
separate workstream tracked in a future plan.

Files: 117 insertions, 1 deletion across SKILL.md + routing-table.md.
This commit is contained in:
Philipp Sieder
2026-05-19 01:23:35 +02:00
parent fc4c2d71a8
commit 127bba5af3
2 changed files with 117 additions and 1 deletions
@@ -75,3 +75,37 @@ Schritt 8 (`review-iterate`) lebt im Router und kann **zu jedem Zeitpunkt** aufg
Falls der Nutzer eine Trigger-Phrase aus Spalte 2 **ohne Router-Aktivierung** sagt (z.B. direkt "Persona erstellen"), aktiviert sich der jeweilige Sub-Skill von selbst per eigener `description:`. Der Router bleibt aus. Das ist by design.
Falls Trigger zweifelhaft (z.B. "Idee strukturieren" matcht Router-Pfad 1 UND koennte als Sub-Skill-Trigger gelesen werden): Router gewinnt, Sub-Skill bleibt aus. Trigger-Specificity ist in der `description:` jedes Skills entsprechend kalibriert.
## Tiebreaker-Regeln
Wenn ein Nutzer-Input plausibel **zwei** Routing-Pfade trifft, wird in dieser Reihenfolge entschieden:
1. **Explicit > Semantic.** Eine woertliche Trigger-Phrase aus Spalte 2 schlaegt eine semantische Naehe. Beispiel: "Persona erstellen" -> Pfad 3 (explicit), nicht Pfad 1 (auch wenn der Nutzer noch keine idea2self-Datei hat — die fehlende Vorbedingung wird in Phase 2 abgefangen).
2. **Earlier pipeline position > later.** Wenn zwei Pfade gleichermassen explizit getriggert sind, gewinnt der **frueher in der Sequenz** stehende. Begruendung: die spaeteren Workflows brauchen die frueheren als Vorbedingung; den frueheren zuerst zu bedienen ist immer ein Quick Win.
3. **Specific Sub-Skill > Router.** Wenn ein Sub-Skill-Trigger UND ein Router-Trigger gleichzeitig matchen: Sub-Skill gewinnt. Der Router aktiviert sich nur, wenn KEIN spezifischer Sub-Skill-Trigger im Input vorkommt.
4. **review-iterate (Pfad 8) gewinnt bei expliziten Iterations-Verben.** "Ueberarbeiten", "iterieren", "Konsistenz-Check" schlaegt jeden anderen Pfad — auch wenn der Nutzer im selben Satz "Persona" oder "Action-Plan" erwaehnt. Begruendung: das Update-Intent ist staerker als der Artefakt-Begriff.
### Klaerungsfrage bei echter Mehrdeutigkeit
Wenn nach den 4 Regeln immer noch zwei Pfade gleichwertig sind: **eine** Klaerungsfrage mit **maximal zwei** Optionen.
Format:
```
Zwei Pfade matchen deine Anfrage:
A) [Sub-Skill 1] — [1-Satz-Zweck]
B) [Sub-Skill 2] — [1-Satz-Zweck]
Welcher passt besser?
```
**Nie** drei oder mehr Optionen in einer Klaerungsfrage. **Nie** mehrere Klaerungs-Runden — wenn die Antwort weiter unklar bleibt, in Phase 1b (No-Match) wechseln.
### Beispiel — angewendete Tiebreaker
| Input | Match-Kandidaten | Anwendung | Resultat |
|-------|------------------|-----------|----------|
| "Persona ueberarbeiten" | Pfad 3 (Persona) + Pfad 8 (review-iterate) | Regel 4: Iterations-Verb gewinnt | Pfad 8 (review-iterate, Persona-Sektion) |
| "Discovery starten" | Pfad 1 (Discovery) + Router (Entry) | Regel 3: Sub-Skill gewinnt | `i2s-discovery` direkt, Router bleibt aus |
| "Validierung planen" | Pfad 4 (Recherche, semantisch) + Pfad 5 (Experiment, semantisch) | Regel 2: frueherer Pfad | Pfad 4 (`i2s-recherche`) |
| "ich brauche Klarheit zur Persona" | Pfad 3 (Persona, semantisch) + Router (Klarheit-Trigger) | Regel 1 + 3: Sub-Skill explicit gewinnt | `i2s-persona` |