Shadow-Phase der Native Language Engine – Kriterien (NLG-027, NLG-042), vor jeder Auswertung festgelegt¶
Stand: 06.10.2026, 08:18 MESZ (06:18 UTC). Diese Datei wird vor dem ersten Shadow-Bericht committet; tools/native_shadow_bericht.py liest die Schwellen aus
docs/native_language/shadow/kriterien.json. Schwellen werden nach Sicht der Ergebnisse nicht verändert.
Was der Shadow-Modus ist¶
LENNY_LANGUAGE_MODE=shadow: der Nutzer bekommt den Legacy-Text, die Native Engine läuft nebenher (eigener Thread, begrenzte Warteschlange) auf demselben Router-Ergebnis und schreibt ihr
Ergebnis nur in das Messprotokoll shadow.jsonl (Zustandsverzeichnis tmp_native_language). Kein Nutzer sieht Native-Text. Die Dienstkonten des Kreises (selfimprove, traverse-field) werden
nicht gemessen (sie bekommen Legacy und schreiben nichts ins Protokoll), außer sie senden X-Lenny-Sprache: aktuell.
Zwei Messungen¶
- Entwicklungs-Shadow (NLG-027) – vor dem Produktions-Deploy: ein fester Benchmark (die 200 Prompts des Qualitätsvergleichs) durch den echten Router im Modus shadow; Legacy- und Native-Text je Antwort verglichen nach Semantik, Grammatik, Lesbarkeit, Länge, Wiederholung, Intent.
- Produktions-Shadow (NLG-042) – nach dem Shadow-Deploy: die echten Nutzerfragen der Produktion über mindestens 24 Stunden und mindestens 300 Antworten; zusätzlich der Gesundheits-Stand
(
/health.native_language) für Fehlerquote, ungeklärte Frames, Realizer-Fails, Fallbacks, LLM-Aufrufe und Firewall-Sperren.
Schwellen (beide Messungen, soweit die Größe gemessen werden kann)¶
| Kriterium | Schwelle |
|---|---|
| genug Daten | Entwicklung ≥ 200 Antworten; Produktion ≥ 300 Antworten und ≥ 24 h Zeitraum |
| LLM-Aufrufe | 0 (Zähler llm_calls), 0 von der Firewall gestoppte Versuche |
| Hard-Fail-Quote (Realizer-Fails, ehrliche Notantwort) | ≤ 2 % der Native-Antworten |
| Semantische Vollständigkeit | ≥ 99 % der Antworten drücken alle verlangten Claims aus (ausgedrueckt ≥ must) |
| Grammatik (unabhängiger Oberflächenprüfer, Artikel/Nomen/Kasus) | ≥ 98 % der Native-Texte ohne Befund |
| Fehlerquote (Ausnahmen im Sprachpfad) | ≤ 0,5 % der Antworten |
| Fallback-Quote (Sprachfallback ab Stufe 1) | ≤ 10 % |
| Latenz der Sprachgenerierung | p95 < 250 ms |
ungeklärte Frames (kein_frame, bleibt deterministischer Legacy-Text) |
≤ 30 % der Router-Antworten; jede Quelle mit ≥ 5 % Anteil wird im Bericht mit Grund genannt |
| Kritische Schwächen | 0 (je ein Eintrag für: Hard-Fail-Antwort, fehlender Pflicht-Claim, gescheitertes Hard-Gate NG1/NG2/NG3/NG5/NG6/NG10 in der Endantwort, Native-Text mit Artikel-/Kasusfehler, LLM-Aufruf) |
kritische_schwaechen = 0 und bewertung = bestanden sind die Bedingungen, die die Freigabe der Umschaltung (controller erkenne-native-umschaltung) prüft.
Die Aussage „ungeklärter Frame“ heißt: der Router hat einen Antwortweg benutzt, den der Mitschrieb nicht kennt; es steht deterministischer Legacy-Text (kein Modell). Das ist ehrlich, aber nicht „Native hat formuliert“ – der Bericht weist den Anteil deshalb getrennt aus, und er ist eine Grenze der Abdeckung (Sprachgrenzen im Abschlussbericht).