# RetrieX Patch 43R - Prompt Measurement Context Vocabulary Views

## Ziel

p43R konsolidiert weitere Measurement-Evidence-Termlisten aus `prompt.yaml` in zentrale Vocabulary-Views, ohne fachliche Runtime-Logik, Scoring, Retrieval oder Prompt-Regeln zu ändern.

Der Patch setzt auf dem grün bestätigten p43Q-Stand auf.

## Änderungen

### `config/retriex/prompt.yaml`

Die lokalen Listen wurden aus `measurement_evidence_guard` entfernt und durch Vocabulary-View-Referenzen ersetzt:

- `generic_positive_context_terms`
- `generic_negative_context_terms`

Neu referenziert über:

```yaml
measurement_evidence_guard:
  vocabulary_views:
    generic_positive_context_terms: prompt.measurement_evidence_guard.generic_positive_context_terms
    generic_negative_context_terms: prompt.measurement_evidence_guard.generic_negative_context_terms
```

Lokale Overrides bleiben weiterhin möglich: Wenn die Listen direkt im `prompt.yaml` gesetzt werden, werden diese lokalen Werte bevorzugt.

### `config/retriex/vocabulary.yaml`

Neue zentrale Views:

- `views.prompt.measurement_evidence_guard.generic_positive_context_terms`
- `views.prompt.measurement_evidence_guard.generic_negative_context_terms`

Die Werte wurden aus dem p43Q-Stand 1:1 übernommen.

### `src/Config/PromptBuilderConfig.php`

Die Accessor-Methoden nutzen nun die vorhandene Fallback-Logik:

- `getMeasurementEvidenceGenericPositiveContextTerms()`
- `getMeasurementEvidenceGenericNegativeContextTerms()`

Beide Methoden lösen jetzt auf:

1. lokale Liste im `prompt.yaml`, falls vorhanden
2. sonst zentrale Vocabulary-View

## Bewusst nicht geändert

Die pH-spezifischen `negative_context_terms` bleiben lokal im jeweiligen Parameterblock. Grund: Diese Liste enthält bewusst mehrere Schreib-/Case-Varianten für Prompt-/Matching-Kontext. Würde sie in `vocabulary.yaml` verschoben, könnte die zentrale Config-Validation sie als Duplicate-Warnung melden. Deshalb wird sie nicht im Rahmen dieses reinen Warning-freien Konsolidierungspatches verschoben.

## Effektive Werte

Die effektiven Measurement-Evidence-Kontextlisten bleiben gegenüber p43Q identisch:

- `generic_positive_context_terms`: 19 / identisch
- `generic_negative_context_terms`: 5 / identisch
- `ph.positive_context_terms`: 19 / identisch
- `ph.negative_context_terms`: 15 / identisch
- `redox.positive_context_terms`: 19 / identisch
- `redox.negative_context_terms`: 5 / identisch
- `free_chlorine.positive_context_terms`: 19 / identisch
- `free_chlorine.negative_context_terms`: 5 / identisch

## Nicht geändert

- 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

## Lokale Prüfungen

Ausgeführt:

```bash
php -l src/Config/PromptBuilderConfig.php
php -l src/Config/DomainVocabularyConfig.php
php -l src/Config/AgentRunnerConfig.php
php -l src/Config/SearchRepairConfig.php
php -l src/Config/GovernanceConfig.php
php -l src/Config/LanguageCleanupConfig.php
python3 YAML parse check for config/retriex/*.yaml
python3 effective p43Q-vs-p43R measurement evidence context comparison
python3 duplicate check for new vocabulary views
zip -T retriex_p43r_prompt_measurement_context_vocabulary_views_patch_only.zip
```

Alle lokalen Prüfungen waren grün.

Nicht lokal ausführbar:

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

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