# RetrieX Patch p55 - Single-Genre Config Values ## Ziel Dieser Patch ist der erste Schritt nach p54, um RetrieX fuer eine **eine Installation = ein Genre**-Konfiguration vorzubereiten. p54 war die Landkarte (`adaptation_surface`). p55 fuegt nun in `config/retriex/genre.yaml` eine erste zentrale Werteflaeche hinzu: ```yaml retriex.genre.config: configuration_values: product_roles: product_attributes: brands_and_canonical_terms: intent_and_routing: context_resolution: shop_query_runtime: result_identity_and_answer_policy: search_repair: retrieval_and_language: shop_data_mapping: governance_and_regression: ``` Die Werte sind aus dem aktuellen stabilen Wasseranalyse-/Messgeraete-Genre uebernommen. Dadurch ist erstmals an einer zentralen Stelle sichtbar, welche konkreten fachlichen Werte bei einer spaeteren Umwidmung, z. B. auf Fashion, Moebel, Ersatzteile oder Elektronik, ersetzt werden muessten. ## Bewusste Nicht-Ziele - Keine Multi-Genre-Loesung - Keine Tenant-Logik - Keine Runtime-Umschaltung pro Request - Keine SaaS-/Host-/API-Key-Auswahl - Keine fachliche Logikaenderung - Keine neuen fachlichen Tokenlisten im PHP-Core - Keine Ranking-, Retrieval- oder Shopware-Kriterienaenderung - Keine LLM-Verhaltensaenderung - Keine Entfernung alter Config-Pfade - Kein p56-Wiring Die Runtime liest nach diesem Patch weiterhin die bisherigen Config-Dateien und Pfade. `configuration_values` ist die neue zentrale Pflege-/Migrationsflaeche, aber noch nicht die fuehrende Runtime-Quelle. ## Geaenderte Dateien ```text config/retriex/genre.yaml src/Config/GenreConfig.php src/Config/RetriexEffectiveConfigProvider.php RETRIEX_PATCH_55_SINGLE_GENRE_CONFIG_VALUES_README.md ``` ## Wichtigste Aenderungen ### `config/retriex/genre.yaml` Neu ist der Block: ```yaml configuration_values: ... ``` Er enthaelt die aktuellen genreabhaengigen Werte gruppiert nach denselben Bereichen wie `adaptation_surface`: - Produktrollen und Shop-/Prompt-Views - Produktattribute und numerische Constraints - Marken, Canonical Terms und Query-Enrichment - Intent- und Routing-Signale - Follow-up-/Kontextanker - Shopquery-Runtime - Result-Identity und Antwort-/Grounding-Regeln - Search Repair - Retrieval-/Language-Begriffe - Shopdaten-Mapping - Governance-/Regression-Guardrails Jeder Unterbereich enthaelt `source_paths`, damit nachvollziehbar bleibt, aus welchen bestehenden Runtime-Pfaden die Werte stammen. ### `GenreConfig` Neue Zugriffsmethoden: ```php getConfigurationValues(): array getConfigurationValueGroup(string $group): array ``` Diese Methoden stellen die neue Werteflaeche bereit, ohne die Runtime bereits darauf umzustellen. ### `RetriexEffectiveConfigProvider` Die Config-Validierung prueft nun zusaetzlich: - `genre.configuration_values` ist eine nicht-leere Map - jede Werte-Gruppe ist eine nicht-leere Map - fuer jede `adaptation_surface`-Gruppe existiert eine passende `configuration_values`-Gruppe Fehlende Value-Gruppen wuerden als Warnung sichtbar; strukturell falsche Value-Gruppen als Fehler. ## Warum p55 noch kein Wiring macht p55 soll bewusst risikoarm bleiben. Die alten Pfade bleiben fuehrend, damit bestehende Regressionen und Shop-/RAG-Verhalten unveraendert bleiben. Der naechste Schritt waere ein separater Patch: ```text p56 Single-Genre Config Wiring ``` Dort koennen ausgewaehlte Getter oder ein zentraler Effective-Provider bevorzugt aus `genre.configuration_values` lesen und bei fehlenden Werten auf die alten Pfade zurueckfallen. ## Lokale Pruefungen Ausgefuehrt im entpackten Patch-Arbeitsstand: ```bash php -l src/Config/GenreConfig.php php -l src/Config/RetriexEffectiveConfigProvider.php ``` Ergebnis: beide PHP-Lints gruen. Zusaetzlich wurden alle YAML-Dateien unter `config/retriex/*.yaml` per Python/YAML-Parser geprueft. Ergebnis: YAML-Parsing gruen. Zusaetzlich wurde geprueft: - `adaptation_surface` hat 11 Gruppen - `configuration_values` hat dieselben 11 Gruppen - keine `adaptation_surface`-Gruppe ohne entsprechende Werte-Gruppe ## Nicht lokal ausfuehrbar `bin/console` konnte lokal nicht ausgefuehrt werden, weil im ZIP kein `vendor/` enthalten ist: ```text Dependencies are missing. Try running "composer install". ``` ## Empfohlene Projektchecks nach dem Einspielen ```bash bin/console cache:clear 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 ```