# RetrieX Patch p38 - YAML Externalization Hardening ## Ziel Dieser Patch schliesst die nach p37 verbliebenen sinnvollen YAML-Externalization-Luecken im PHP-Core. Fokus ist nicht technische Infrastruktur, sondern fachliche, sprachliche und UI-nahe Listen, Tokens, Vergleichswerte, Prompt-Regeln und Normalisierungsregeln. Die Leitlinie bleibt: - keine neuen Token-/Stringlisten im PHP-Core - fachliche, sprachliche und UI-nahe Werte ueber YAML - bestehende 1.5.3-Logik nicht fachlich veraendern - keine neuen Spezialfaelle fuer konkrete Produkte ## Geaenderte Dateien - `config/retriex/agent.yaml` - `config/retriex/language.yaml` - `config/retriex/prompt.yaml` - `src/Config/AgentRunnerConfig.php` - `src/Config/LanguageCleanupConfig.php` - `src/Config/PromptBuilderConfig.php` - `src/Agent/AgentRunner.php` - `src/Agent/PromptBuilder.php` - `src/Knowledge/Retrieval/QueryCleaner.php` - `src/Knowledge/Retrieval/NdjsonLexicalIndexBuilder.php` - `src/Knowledge/Retrieval/NdjsonKeywordRetriever.php` - `src/Knowledge/Retrieval/NdjsonChunkLookup.php` - `src/Knowledge/Retrieval/NdjsonHybridRetriever.php` ## Inhalt ### AgentRunner Externalisiert wurden insbesondere: - Placeholder-Ausgaben der Query-/Input-Normalisierung - Shop-Repair-/Shop-Query-Heartbeat-Meldungen - No-LLM-Produktfeldtexte und Produktzeilen-Templates - Follow-up-Kontextlabels - Production-UI-Stage-Labels - Production-UI-Confidence-Labels - Production-UI-Texte, Templates und Shop-Meta-Labels - Follow-up-Action-Chips fuer Commerce und Knowledge Zusaetzlich nutzt der Runner vorhandene Language-Cleanup-Konfiguration fuer ASCII-Transliteration, Separator-Normalisierung und Dash-Normalisierung. ### Language Cleanup `language.yaml` enthaelt nun zusaetzlich zentrale Normalisierungsregeln fuer: - Wortseparatoren (`-`, `/`, `_`) - Unicode-Dash-Aequivalente `LanguageCleanupConfig` stellt dafuer zentrale Methoden bereit: - `replaceWordSeparatorsWithSpace()` - `normalizeDashEquivalents()` ### PromptBuilder Externalisiert wurden verbliebene Prompt-/Policy-Regeln rund um: - Fallback-Escalation bei vorhandenen Shop-Ergebnissen - Measurement-Evidence-Guard-Templates - finale Measurement-Evidence-Regeln - Parameter-Split-Pattern - Parameter-Trim-Zeichen Die Unicode-Dash-Normalisierung nutzt nun ebenfalls `LanguageCleanupConfig`. ### Retrieval-Normalisierung Wiederholte Separatorlisten in Retrieval-Klassen wurden durch die zentrale Language-Cleanup-Methode ersetzt. Betroffen: - `QueryCleaner` - `NdjsonLexicalIndexBuilder` - `NdjsonKeywordRetriever` - `NdjsonChunkLookup` - `NdjsonHybridRetriever` ## Bewusst nicht externalisiert Nicht Ziel dieses Patches waren rein technische Infrastrukturwerte, z. B.: - Boolean-Parser-Werte wie `true`, `false`, `yes`, `no`, `on`, `off` - technische Statuscodes und interne State-Keys - DTO-/Array-Schluessel - Log-/HTTP-/Encoding-Infrastruktur - Zeilenumbruch-Normalisierung Diese Werte sind keine fachlichen oder sprachlichen Matching-/Prompt-/UI-Listen. ## Lokale Validierung Da im ZIP kein `vendor/` enthalten ist, konnten Symfony-Console-Checks nicht direkt ausgefuehrt werden. Durchgefuehrt wurden: - `php -l` fuer alle geaenderten PHP-Dateien: OK - YAML-Parse fuer geaenderte YAML-Dateien: OK - statische Greps auf die zuvor identifizierten Reststellen: OK Gepruefte ehemalige Problemklassen: - keine PHP-Funde mehr fuer `normalized user input` / `corrected user input` - keine PHP-Funde mehr fuer die harten Measurement-Evidence-Regeltexte - keine PHP-Funde mehr fuer die alten Separatorlisten `['-', '/', '_']` - keine PHP-Funde mehr fuer die alten Unicode-Dash-Listen - keine PHP-Funde mehr fuer die AgentRunner-UI-Labels wie `RetrieX-Status`, `Datenbasis`, `Folgeaktionen`, `Artikelnummer`, `Preis`, `Verfuegbarkeit`, `Relevanz` ## Empfohlene Checks nach Einspielen Bitte im echten Projekt mit installiertem `vendor/` ausfuehren: ```bash bin/console mto:agent:config:validate bin/console mto:agent:regression:test bin/console mto:agent:config:audit-source --details bin/console mto:agent:config:audit-patterns --details ```