# RetrieX Patch 2: Small Configs YAML-Only Scope of this patch: - `ContextServiceConfig` - `CatalogIntentConfig` - `StopWordsConfig` ## Goal Move the first small configuration areas to the new rule: > YAML is the source of truth. PHP validates and exposes configuration values, but does not provide fachliche defaults. ## Changed behavior ### Context config The previous PHP constants were removed: - `MAX_VISIBLE_REGULAR_LINES = 25` - `MAX_FULL_LINES = 500` The same values now live in `config/retriex/runtime.yaml`: ```yaml retriex.context.config: max_visible_regular_lines: 25 max_full_lines: 500 ``` `ContextService` now reads these values through `ContextServiceConfig`. ### Catalog intent config The previous PHP constants were removed from `CatalogIntentConfig`: - `MIN_SCORE = 0.72` - `AMBIGUITY_DELTA = 0.02` - `SEARCH_LIMIT = 6` - `MIN_ALLOWED_SCORE = 0.0` - `MAX_ALLOWED_SCORE = 1.0` The hidden catalog listing limit from `EntityCatalogService` was also moved out of PHP: - previous `private const SEARCH_LIMIT = 3` The values now live in `config/retriex/intent.yaml`: ```yaml retriex.intent.catalog.config: min_score: 0.72 ambiguity_delta: 0.02 intent_search_limit: 6 list_search_limit: 3 min_allowed_score: 0.0 max_allowed_score: 1.0 ``` `CatalogIntentLite` and `EntityCatalogService` now use the injected `CatalogIntentConfig`. ### Stopwords config The previous `DEFAULT_STOP_WORDS` list was removed from PHP. The complete list already exists in `config/retriex/language.yaml`: ```yaml retriex.stopwords.config: words: - mit - der ... ``` `StopWordsConfig` now requires this YAML list and throws a clear configuration error if it is missing or empty. ## Intentional non-goals This patch does not touch: - Retrieval scoring - PromptBuilder defaults - AgentRunner defaults - Commerce parser behavior - Shop matching behavior - SearchRepair behavior ## Validation performed Syntax checks: ```bash php -l src/Config/ContextServiceConfig.php php -l src/Config/CatalogIntentConfig.php php -l src/Config/StopWordsConfig.php php -l src/Context/ContextService.php php -l src/Catalog/EntityCatalogService.php php -l src/Intent/CatalogIntentLite.php php -l src/Config/RetriexEffectiveConfigProvider.php php -l src/Config/ConfigSourceAuditProvider.php ``` All checked files are syntactically valid. A standalone getter smoke test confirmed the migrated YAML values preserve the previous defaults: - context regular lines: `25` - context full lines: `500` - catalog min score: `0.72` - catalog intent search limit: `6` - catalog list search limit: `3` Full Symfony console regression tests were not executed in the ZIP workspace because `vendor/` is not included.