# RetrieX Patch p43M – Vocabulary Map Alias Dedup

## Ziel

Weitere Reduktion doppelter YAML-Maps/Listen ohne fachliche Runtime-Änderung. Der Patch bündelt mehrfach identische Vocabulary-Map-Werte über Alias-Definitionen.

## Änderungen

- `DomainVocabularyConfig::map()` unterstützt zusätzlich zum bestehenden einfachen `key: [values]`-Format ein kompaktes Alias-Format:
  - `values`: benannte Wertelisten
  - `aliases`: Ausgabe-Schlüssel auf benannte Wertelisten
- Bestehendes einfaches Map-Format bleibt vollständig kompatibel.
- `vocabulary.yaml` nutzt das Alias-Format für:
  - `maps.agent.rag_evidence_guard.synonyms`
  - `maps.shop.accessory_focus_variants`
- Doppelte Listen für Salinität-, Redox-, Indikator-, Reagenz-, Ersatzteil- und Service-Set-Aliase wurden entfernt.

## Nicht geändert

- Keine neue Fachlogik
- Keine Scoringänderung
- Keine Prompt-Regeländerung
- Keine Retrievaländerung
- Keine Admin-UI
- Keine neuen fachlichen Listen im PHP-Core

## Kompatibilität

Lokale oder bestehende einfache Vocabulary-Maps funktionieren weiterhin. Das Alias-Format wird nur verwendet, wenn sowohl `values` als auch `aliases` vorhanden sind. Andernfalls fällt `DomainVocabularyConfig` auf das bisherige einfache String-List-Map-Format zurück.

## Lokale Prüfungen

Ausgeführt:

```bash
php -l src/Config/DomainVocabularyConfig.php
php -l src/Config/AgentRunnerConfig.php
php -l src/Config/ShopServiceConfig.php
php -l src/Config/SearchRepairConfig.php
php -l src/Config/PromptBuilderConfig.php
php -l src/Config/GovernanceConfig.php
python3 YAML parse check for config/retriex/*.yaml
python3 effective p43L-vs-p43M vocabulary map comparison
```

Ergebnis der lokalen Prüfungen: grün.

Die effektiven Maps blieben gegenüber p43L identisch:

- `agent.rag_evidence_guard.synonyms`: 7 Schlüssel
- `shop.accessory_focus_variants`: 9 Schlüssel

Zusätzlich geprüft: `DomainVocabularyConfig::map()` löst beide neuen Alias-Maps in PHP korrekt auf.

## Hinweis zu Symfony-Checks

Die `bin/console`-Checks konnten in der lokalen Patch-Erstellungsumgebung nicht ausgeführt werden, weil der ZIP-Stand kein `vendor/` enthält und `bin/console` mit fehlenden Dependencies abbricht. Bitte im Projekt mit installierten Composer-Abhängigkeiten prüfen:

```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
```
