# RetrieX Patch p20o – Standalone Shop Query Isolation Fix

## Ziel

Dieser Patch korrigiert die Fehlleitung neuer Standalone-Shopfragen wie:

```text
zeige mir Anschlusskabel für pH/Redox
```

Diese Anfrage durfte nicht aus altem Chatverlauf zu einer Shop-Suchquery wie `testomat 808 indikator` werden.

## Ursache

Der bisherige Schutz war zu indirekt. Sobald der Shop-Query-Pfad einen Verlaufskontext zuließ, konnte der LLM-Shop-Query-Optimizer oder der nachgelagerte Commerce-Parser ältere Kontextanker wieder in eine neue Suchfrage übernehmen.

Zusätzlich enthielt der Shop-Optimizer-Prompt konkrete Beispiele wie `Indikator 300`, `Testomat 808` und `Testomat 2000`. Diese Beispiele konnten den Optimizer in genau die falsche Richtung biasen.

Außerdem konnte der Input-Normalizer den Platzhaltertext `normalized user input` wörtlich zurückgeben. Dieser Patch schützt dagegen ebenfalls.

## Änderungen

### `src/Agent/AgentRunner.php`

- Neue Standalone-Shopfragen werden jetzt explizit von History/Optimizer-Kontext isoliert.
- Die Entscheidung wird aus dem Originalprompt getroffen, nicht aus dem normalisierten Routing-Prompt.
- Nicht-referenzielle Shopfragen verwenden deterministische Query-Erzeugung über den aktuellen Prompt.
- Referenzielle Follow-ups wie `die tabelle mit preisen`, `suche im shop` oder `was kostet der indikator` dürfen weiterhin Verlauf nutzen.
- Placeholder-Ausgaben des Normalizers wie `normalized user input` werden verworfen und auf den Originalprompt zurückgesetzt.

### `config/retriex/agent.yaml`

- Der Normalizer-Prompt enthält keinen `<normalized user input>`-Platzhalter mehr.
- Die Normalizer-Regel verbietet, den Platzhaltertext wörtlich auszugeben.
- Konkrete Shop-Optimizer-Beispiele `Indikator 300`, `Testomat 808`, `Testomat 2000` wurden aus dem Prompt entfernt.

## Erwartete manuelle Tests

```text
zeige mir Anschlusskabel für pH/Redox
```

Erwartung: Suchquery sinngemäß `anschlusskabel ph redox`, nicht `testomat 808 indikator`.

```text
shop testomat 808
```

Erwartung: Suchquery `testomat 808`, nicht `testomat 808 indikator`.

```text
welche grenzwerte kann der testomat 808 messen

die tabelle mit preisen
```

Erwartung: referenzieller Follow-up darf weiter Verlauf nutzen, sinngemäß `testomat 808 indikator`.

```text
was kpstet der indikator
```

Erwartung: Tippfehler-Normalisierung/Fuzzy-Routing bleibt aktiv und darf den vorherigen Indikator-Kontext nutzen.

## Pflichtchecks

```bash
bin/console cache:clear
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
```

Bei OPcache/PHP-FPM bitte PHP-FPM bzw. Container neu laden.
