# RetrieX Patch 43S - Final Config Audit / Freeze Documentation

## Ziel

p43S schließt die p43 YAML-Maps-/Listen-Konsolidierungsreihe mit einem dokumentierten Freeze ab.

Der Patch setzt auf dem grün bestätigten p43R-Stand auf und nimmt bewusst **keine Runtime-Änderung** mehr vor. Ziel ist, den erreichten Zustand zu dokumentieren und die verbleibenden YAML-Listen/Maps zu klassifizieren, damit zukünftige Änderungen nicht erneut unsystematisch lokale Listen oder harte Core-Begriffe einführen.

## Änderungen

### Dokumentation ergänzt

Neu:

- `patch_history/RETRIEX_PATCH_43S_FINAL_CONFIG_AUDIT_FREEZE_README.md`
- `patch_history/RETRIEX_PATCH_43S_FINAL_YAML_LIST_MAP_INVENTORY.md`

## Keine Runtime-Dateien geändert

p43S ändert bewusst keine der folgenden Bereiche:

- kein PHP-Code
- keine fachliche Runtime-Logik
- keine Scoringänderung
- keine Retrievaländerung
- keine Prompt-Regeländerung
- keine Admin-UI
- keine neuen harten fachlichen Listen im PHP-Core
- keine YAML-Werte in produktiver Config geändert

## Bestätigte p43-Reihe im aktuellen Stand

Im aktualisierten `rag-inprogress.zip` sind die folgenden p43-Schritte enthalten:

- p43A / p43A2 - Config Reduction / Vocabulary-View-Fallbacks
- p43B - ProductRoleResolver
- p43C - ReferenceAnchorExtractor
- p43D - Prompt Role Vocabulary Consolidation
- p43E - Direct Attribute Vocabulary View
- p43F - SearchRepair Accessory Code Vocabulary View
- p43G - Measurement Evidence Context Fallback
- p43H - Rag Evidence Synonym Vocabulary Map
- p43I - Input Normalization Fuzzy Routing Vocabulary View
- p43J - Governance Protected Short Model Fallback
- p43K - Governance Required Profile Defaults
- p43L - Language Cleanup Protected Term Default
- p43M - Vocabulary Map Alias Dedup
- p43N - Language Cleanup Group Sets
- p43O - Prompt Measurement Evidence Vocabulary Maps
- p43P - Prompt Measurement Evidence Duplicate Warning Cleanup
- p43Q - Agent Term Vocabulary View Consolidation
- p43R - Prompt Measurement Context Vocabulary Views

## Audit-Ergebnis

Der aktuelle Stand hat die zuvor geplante YAML-Maps-/Listen-Optimierung weitgehend ausgeschöpft.

Die verbleibenden Listen/Maps fallen in diese Kategorien:

### Zentralisiert / View-basiert

Diese Bereiche sind jetzt über zentrale `vocabulary_views`, `vocabulary_maps`, Map-Aliase oder Language-Group-Sets geführt:

- Agent-Termlisten für Follow-up, No-LLM-Fallback, Shop-Prompt und Input-Normalisierung
- SearchRepair-Terme für Direct-Attribute-, Accessory-Code- und Candidate-Handling
- Prompt-Rollenbegriffe und Measurement-Evidence-Terme
- Shop-/Accessory-Fokus-Varianten
- RAG-Evidence-Synonyme
- Language-Cleanup-Basisgruppen über `group_sets`
- Governance-Fallbacks für bewusst gleiche Baselines

### Bewusst lokal

Diese YAML-Inhalte bleiben bewusst lokal, weil sie nicht bloß Vocabulary-Daten sind:

- Prompt-Regeltexte und Antwort-/Formatierungsregeln in `prompt.yaml`
- Regex-/Pattern-Regeln, die konkrete Guardrail-Logik ausdrücken
- parameternahe Sonderkontexte wie pH-spezifische negative Measurement-Kontextbegriffe
- Intent-/Routing-Pattern in `intent.yaml`
- Governance-/Regression-Baselines, die unabhängig auditierbar bleiben sollen
- Language-Cleanup-Profile, wo die Profilstruktur selbst Pflegeinformation ist

### Bewusst nicht weiter konsolidiert

Folgende identische oder ähnliche Listen wurden im Audit gesehen, aber nicht weiter verschoben:

1. `governance.regression_baseline.protected_short_model_tokens` und `vocabulary.views.retrieval.important_short_model_tokens`
   - bleiben getrennt, weil die Governance-Regression eine unabhängige Guardrail-Baseline sein soll.

2. `vocabulary.maps.prompt.measurement_evidence_guard.request_terms.redox` und `vocabulary.maps.agent.rag_evidence_guard.synonyms.values.redox_terms`
   - bleiben getrennt, weil Prompt-Measurement-Request-Terme und RAG-Evidence-Synonyme unterschiedliche Domänenverwendungen haben, auch wenn die aktuelle Wertemenge identisch ist.

3. `vocabulary.maps.prompt.measurement_evidence_guard.request_terms.ph` und `vocabulary.maps.agent.rag_evidence_guard.synonyms.values.ph_terms`
   - bleiben getrennt aus demselben Grund: unterschiedliche semantische Domänen, keine Cross-Map-Abhängigkeit erzwingen.

4. `governance.regression_baseline.protected_accessory_prompt_keywords` und `governance.regression_baseline.protected_retrieval_reagent_words`
   - bleiben getrennt, weil sie verschiedene Guardrail-Baselines absichern.

## Freeze-Regeln für zukünftige Änderungen

Nach p43S gelten für weitere YAML-/Listen-Arbeiten:

1. Neue fachliche, sprachliche, UI-nahe, Prompt-, Retrieval-, Shop-, Intent- oder Guardrail-Listen nicht im PHP-Core hart codieren.
2. Neue Begriffslisten bevorzugt in `vocabulary.yaml`, `language.yaml` oder der passenden Domain-YAML pflegen.
3. Lokale Listen nur dann verwenden, wenn sie echte lokale Semantik ausdrücken, z. B. Prompt-Regel, Regression-Baseline, Profilstruktur oder Domain-spezifische Override-Fläche.
4. Bei weiterer Konsolidierung immer effektive Werte vor/nach Patch vergleichen.
5. Governance-Baselines nicht aus denselben Views ableiten, die sie absichern sollen.
6. Prompt-Regeltexte nicht in Vocabulary-Views verschieben; Vocabulary ist für Begriffe/Listen/Maps, nicht für Prompt-Verhalten.
7. Keine Cross-Domain-Map-Aliase erzwingen, wenn zwei aktuell identische Listen unterschiedliche fachliche Bedeutungen haben.

## Empfohlener Abschlussstatus

Mit p43S ist die aktuelle Optimierungsreihe abgeschlossen.

Weitere Arbeiten sollten nur gestartet werden, wenn ein konkretes neues Ziel vorliegt, z. B.:

- neue Accuracy-/Regression-Anforderung
- konkrete Audit-Warnung
- konkret duplizierte Liste mit gleicher Domänenbedeutung
- Performance-/Stabilitätsproblem
- Admin-/Pflegeoberflächen-Thema

Ohne neues Ziel sollte die p43 YAML-Maps-/Listen-Optimierungsserie hier eingefroren werden.

## Lokale Prüfungen

Ausgeführt:

```bash
php -l src/Config/AgentRunnerConfig.php
php -l src/Config/PromptBuilderConfig.php
php -l src/Config/SearchRepairConfig.php
php -l src/Config/DomainVocabularyConfig.php
php -l src/Config/LanguageCleanupConfig.php
php -l src/Config/GovernanceConfig.php
python3 YAML parse check for config/retriex/*.yaml
python3 p43 patch-history presence check
python3 duplicate-list audit for remaining intentional duplicates
zip -T retriex_p43s_final_config_audit_freeze_patch_only.zip
```

Alle lokal ausführbaren Prüfungen waren grün.

Nicht lokal ausführbar:

```bash
bin/console c:cl
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
```

Grund: Der ZIP-Stand enthält lokal kein `vendor/`; `bin/console` bricht in der Artefaktumgebung mit fehlenden Dependencies ab.
