Skip to content

Native Language Engine - bekannte Sprachgrenzen

Stand: 11.10.2026. Jede Grenze ist eine sichere Grenze: die Engine weicht dann auf eine schlichtere, immer grammatische Formulierung oder auf eine ehrliche Absage aus - nie auf ein Modell und nie auf eine geratene Aussage.

# Grenze Verhalten an der Grenze Wo es sich zeigt / wie gemessen
1 Lexikonabdeckung. Das Lexikon fuehrt (Stand dieses Repositorys, am 11.10. nachgezaehlt) 1.755 Nomen, 272 Verben, 429 Adjektive, dazu 902 geerntete Wiktionary-Genusangaben. Ein Nomen ohne Eintrag, ohne geerntetes Genus und ohne sichere Endungs-/Kompositaregel hat kein sicheres Genus. Es wird nicht geraten: das Nomen steht in Anfuehrungszeichen und ohne Artikel ("entsteht „Nässe“ durch „Leck“ und einen Regen"). Grammatisch und semantisch korrekt, stilistisch hoelzern. Realized.degraded, Gate NG8; in der Produktion zeigt der Shadow-Bericht den Anteil. Abhilfe ueber DATA_GAP (Lexikoneintrag) im Selbstverbesserungskreis. Haeufigster Fall im Produktions-Shadow: offene Verben der Relationen (z. B. „verstecken“, „empfinden“, „dokumentieren“, „erweitern“) stehen nicht im Lexikon - der Claim wird dann als schlichte, grammatische Beleg-Zeile gesagt („Dazu ist belegt: - „Hund“ – „Empfinden“ – „Schmerz““), nie geraten; im Produktions-Shadow 5 von 356 Antworten (1,4 %), im Klon-Beweis 5 von 199 (2,5 %), in den Echtdaten-Proben 0,3 bis 0,9 %.
2 Der Router entscheidet den Inhalt. Die Engine formuliert nur die Claims, die der bestehende Router auswaehlt. Waehlt der Router nichts aus, sagt die Engine ehrlich, dass sie nichts Belegtes sagen kann ("Dazu kann ich nichts Belegtes sagen."). Sie ergaenzt nie eine Aussage. NG1/NG2 (Treue, keine Halluzination), Goldset-Familie UNK.
3 Keine Live-Quelle fuer Konflikte. Der gewichtete Speicher schliesst widerspruechliche Eintraege vor der Antwort aus; kein bestehender Antwortweg meldet einen Widerspruch. Die Engine kann Konflikte darstellen (Frame mit Konflikt, Goldset-Familie KNF 12/12, E2E-Test ueber legacy_capture.melde_konflikt), aber im laufenden Betrieb loest bisher nur die Schnittstelle sie aus, nicht der Router. Behauptung "Konflikt im Betrieb beobachtet" ist deshalb NICHT belegt - nur "die Sprache kann es". tests/test_native_e2e_antworttypen.py::E_N5_Konflikt; Watcher-Pruefung "Konflikt" prueft die Engine mit synthetischen Frames.
4 Legacy-Schichten mit Widerspruchshinweisen (persoenliches Gedaechtnis / Firmenwissen mit "Zu klaeren:"-Teilen) lassen sich nicht als Saetze fassen. Der deterministische Altwortlaut bleibt stehen (ohne Modell), gezaehlt als kein_frame:schichten. Gesetztes Wissen faellt nie still weg. /health -> native_language Zaehler kein_frame:*.
5 Nicht erfasste Altwege. Der Mitschreiber umhuellt 20 Wortlautfunktionen des Routers und hat drei ausdrueckliche Schnittstellen (Konflikt, Aussage, Aufgabe). Ein Weg ohne Mitschrieb liefert keinen Frame. Der Altwortlaut (deterministisch, ohne Modell, llm_calls=0) bleibt stehen; kein_frame wird je Quelle gezaehlt. Haeufige Quellen werden als Erfassung nachgeruestet (DATA/CODE ueber den Kreis). In der Echtdaten-Probe am Endstand (1.500 echte Fragen, Datenstand g75) blieb eine Antwort ohne Frame (0,07 %: ein gewichteter Weg ohne Mitschrieb); ueber den Chat-Weg waren 400 von 400 Antworten nativ, bei den Aussagen und Aufgaben 268 von 269 (die eine Ausnahme ist eine Diagnose-Eingabe, text_observation). no_frame_sources in /health und im Shadow-Bericht; docs/native_language/realdaten/zusammenfassung.json. Im Produktions-Shadow (11.10.) zeigte sich eine bekannte Quelle: die Absage der Warum-Frage ohne Inferenzpfad (why_structural_surface: "Zu „A“ und „B“ finde ich aktuell keinen ausreichend gestuetzten Inferenzpfad") - 1 von 1.500 echten Fragen im natuerlichen Verkehr, im geschichteten Probenverkehr 3 von 120; sie bleibt deterministischer Altwortlaut.
6 Sprachumfang. Realisiert werden Haupt-/Nebensatz, Relativsatz, Modalverb, Perfekt/Praeteritum (aus dem Claim-Tempus), Negation, Aufzaehlung, Genitivattribut, Kontraktionen. Passiv, Konjunktiv, Futur und Ironie/Redewendungen sind nicht Teil der Konstruktionen. Die Aussage wird in einer vorhandenen Konstruktion gesagt (Aktiv, Indikativ). Goldset-Familien TMP, MOD, NEG.
7 Nur Deutsch. -- --
8 Bewertung der Natuerlichkeit. Der LLM-like-Vergleich (200 Prompts) wurde von einem unabhaengigen Modell blind und nach vorab festgelegten Kriterien bewertet (mit Kontrollpaaren und vertauschten Wiederholungen), nicht von Menschen - gegen den bisherigen Verbalizer (qwen2.5:7b, vorab festgelegt, massgeblich) und zusaetzlich gegen einen staerkeren (Claude Sonnet). Es gibt keine menschliche Stichprobe. Status BELEGT_EXTERN_BEWERTET. Eine menschliche Stichprobe bleibt ein offener Punkt; ein Bogen dafuer liegt bereit, sobald sie gewuenscht ist. docs/native_language/QUALITAETSKRITERIEN.md, vergleich/ergebnis_ollama.json, vergleich/ergebnis_claude.json.
9 Stil ist begrenzt variabel. Sechs Stilprofile und fuenf Laengenstufen aendern Satzlaenge, Fachwortdichte, Tiefe und Absaetze; sie koennen keine freie Tonalitaet erzeugen. Der gewaehlte Stil aendert nie einen Fakt. style.py, Goldset-Familie STL.
10 Lange Antworten (>= 10 Claims) sind aufgezaehlt und aggregiert, nicht erzaehlend gegliedert. Fluessig und ohne Wiederholung, aber ohne eigenen Spannungsbogen. E_N8_Langantwort.
11 Aussagen und Aufgaben des Nutzers (rund 14 % des echten Verkehrs; fast jeder Satz ohne Fragezeichen zaehlt als Aussage, auch "Danke") bekommen eine Abgleich-Reaktion, kein Gespraech: Lenny sagt, ob die Aussage sich mit seinem Wissen deckt, ob die Angabe neu ist, ob ihm der Begriff unbelegt ist oder dass er keine belastbare Grundlage fuer eine Reaktion hat. Erkannt wird die Struktur nur fuer "X ist ein Y", "X ist " und was der Aussageparser des Routers als Faktenbehauptung liest. Ein Widerspruch zu bekanntem Wissen wird nicht erkannt ("Begriff bekannt, Angabe neu" - wie im Altweg). Die Reaktion wiederholt den Inhalt der Aussage nie und urteilt nie ueber ihre Wahrheit ("stimmt", "falsch"); sie nennt nur die eigenen belegten Fakten und behandelt die Aussage hoechstens als Kandidaten. Alles andere (Smalltalk, erste Person, unstrukturierte Saetze): "Zu dieser Aussage liegt mir keine belastbare Reaktion vor." Eine Aufgabe ohne passende Handlung: "... keine passende Handlung und keinen passenden Befehl." Persoenliches Gedaechtnis und Firmenwissen laufen unveraendert ueber ihren eigenen Weg. Goldset-Familie AUS (30 Faelle), AussageReaktion (E2E), tests/test_aussage_reaction.py, Echtdaten-Probe --arten aussagen.
12 Die modellgestuetzte aktive Rueckfrage (_active_inquiry_temporary_surface_answer, eine vorlaeufige Antwortflaeche, die ein Modell lieferte) ist im Modus native gesperrt (zentrale LLM-Sperre). Der Router antwortet aus dem naechsten Weg oder mit der ehrlichen Absage; die Kreativ-Assoziation haengt wie bisher an einer Absage an. Das ist die gewollte Folge der LLM-Freiheit, kein Mangel der Engine. Die Betriebsprozesse des Hosts (Cron-Jobs gemma_enrich, gemma_close, think_pass, open_predicates, brain_pop per docker exec) rufen Ollama weiter selbst: sie laufen in eigenen Prozessen ausserhalb des API-Prozesses und formulieren keine Antworten (Anreicherung des Wissens), die Firewall des API-Prozesses beruehrt sie nicht. ask_lenny._llm_verbalizer_gesperrt, tests/test_native_llm_pfad.py.
13 Systemzugaenge (selfimprove, traverse-field) bekommen standardmaessig den deterministischen Altwortlaut, damit die Messwerkzeuge des Selbstverbesserungskreises an ihren Wortmarken nichts verfaelschen (Kopf X-Lenny-Sprache: aktuell schaltet auf den aktuellen Modus). Kein Modell, llm_calls=0; nur nicht aus der Engine formuliert. Alle anderen Zugaenge sprechen den Modus. api_server._native_systemzugang, tests/test_native_api.py.
14 Der Talk-Bot-Weg (/v1/talk/webhook -> api_server._bot_answer, Schalter LENNY_ENABLE_TALK_BOT) ruft den Router direkt und nicht ueber den Chat-Weg: er hat keinen Mitschreiber und keinen Native-Haken. Der Altwortlaut (deterministisch, ausdruecklich "Kein LLM" im Quelltext, kein Modellaufruf) bleibt dort stehen. Im Produktionslog der letzten 72 Stunden steht kein Talk-Verkehr. Die Anbindung waere ein kleiner, eigener Schritt (begin/finish um _bot_answer). api_server._bot_answer; tests/test_native_llm_pfad.py (kein Modellpfad).
15 Die Diagnose-Eingabe ollama_generate_smoke (Werkzeug-Beobachtung des Routers) versucht einen generativen Aufruf und steht jedem angemeldeten Zugang offen. Im Modus native stoppt die Firewall den Versuch und zaehlt ihn; waehrend der 24-h-Probation wertet der Watcher einen gezaehlten Versuch als Hard-Fail und rollt auf den vorherigen Sprachmodus zurueck (gewollt: so wird der automatische Rollback am echten System bewiesen, tools/native_rollback_drill.py). Wer diese Eingabe sendet, kann also eine laufende Probation beenden - mehr nicht; kein Modell sieht je einen Aufruf. tests/test_native_rollback_ausloeser.py, ops/selfimprove/watcher.py::pruefe_sprache.

Was die Engine nicht tut, ist Absicht: kein Raten von Genus/Plural, keine Pronomen bei mehrdeutigem Bezug, keine Verallgemeinerung ueber einen Claim hinaus, keine Zusammenfassung ueber Widersprueche hinweg, keine Konfliktentscheidung durch die Sprache, kein Creative-Satz ohne Hypothesenmarke, keine Wiederholung des Inhalts einer Nutzer-Aussage, kein Urteil ueber ihre Wahrheit.