# RetrieX Patch 4: Query Enrichment and Search Repair YAML-only

This patch continues the YAML-as-source-of-truth migration.

## Scope

Changed areas only:

- `src/Config/QueryEnricherConfig.php`
- `src/Config/SearchRepairConfig.php`
- `config/retriex/query_enrichment.yaml`
- `config/retriex/search_repair.yaml`
- `config/retriex/vocabulary.yaml`
- `config/services.yaml`

No retrieval scoring, PromptBuilder, ShopService matching, AgentRunner, SSE, or answer-generation behavior was intentionally changed.

## QueryEnricherConfig

Removed the PHP fallback mapping `DEFAULT_ENRICH_QUERY_LIST`.

The existing values are now required in:

```yaml
config/retriex/query_enrichment.yaml
parameters:
  retriex.query_enrichment.config:
    max_expansions: 4
    rules: ...
```

Missing, invalid, or empty YAML now fails closed via `InvalidArgumentException` instead of silently falling back to PHP defaults.

## SearchRepairConfig

Removed PHP fallback constants and hardcoded fallback values for:

- generic candidate tokens
- accessory candidate terms
- accessory/bundle terms
- specificity boost terms
- requested accessory-code behavior
- model-candidate patterns
- search-repair scoring values
- normalization patterns
- trim character set
- product-key separator
- top-product log limit

The active search-repair settings now live in:

```yaml
config/retriex/search_repair.yaml
```

Vocabulary-backed search-repair term views remain in:

```yaml
config/retriex/vocabulary.yaml
parameters:
  retriex.vocabulary.config:
    views:
      search_repair: ...
```

`SearchRepairConfig` now resolves term lists from explicit per-service YAML keys first, otherwise from the configured vocabulary view. If neither exists, it fails closed.

## Validation performed in the artifact workspace

PHP syntax checks passed for:

```bash
php -l src/Config/QueryEnricherConfig.php
php -l src/Config/SearchRepairConfig.php
php -l src/Config/RetriexEffectiveConfigProvider.php
```

Full Symfony commands were not executed in this ZIP workspace because `vendor/` is not included.

Recommended runtime checks after applying the patch:

```bash
php bin/console mto:agent:config:validate
php bin/console mto:agent:config:dump-effective --json
php bin/console mto:agent:config:audit-source --details
php bin/console mto:agent:regression:test
```

Regression focus:

- Testomat 808 / 0,02 °dH
- Indikatortyp 300 follow-up
- Indikator price follow-up
- `welcher pockettester ist für Redox messung gut` → `suche im shop`
- product-selection shop fallback for free chlorine
- SSE completion watchdog behavior
