# RetrieX Patch 18 – Evidence State / Aggregate Consistency Fix ## Zweck Dieser Patch behebt die Status-/Antwort-Konsistenz für Aggregat- und Zählfragen wie: `wieviele testomat geräte haben wir` Bisher konnte RetrieX bei solchen Fragen semantisch passende RAG-Treffer finden und die Beleglage trotzdem als `fachlich belegt` anzeigen, obwohl die Antwort selbst keine belastbare Zählinformation nennen konnte. ## Fachliche Entscheidung `fachlich belegt` wird nicht pauschal abgewertet. Stattdessen wird ein eigener Zwischenzustand eingeführt: `aggregate_missing` Dieser Zustand bedeutet: - Es wurden Quellen geprüft. - Es gibt semantisch passende Quellen. - Die Quellen enthalten aber keine explizite Aggregat-/Zählinformation für die angefragte Anzahl. Die Nutzeranzeige wird dadurch präziser: `Beleglage: geprüfte Quellen, keine passende Zählinformation` ## Änderungen ### `src/Agent/AgentRunner.php` - Erkennt Aggregatfragen weiterhin über YAML-konfigurierte Patterns. - Prüft bei Aggregatfragen zusätzlich auf explizite Aggregat-Antwortbelege. - Gibt bei fehlender Zählinformation den neuen Evidence-State `aggregate_missing` zurück. - Zeigt für diesen Zustand eine präzisere Beleglage an. - Übergibt den Evidence-State auch an die finale Production-UI-Confidence-Logik. ### `src/Agent/PromptBuilder.php` - Behandelt `aggregate_missing` als eigenen Reliability-State. - Gibt dem LLM explizite Regeln, keine Produktfamilien-/Portfolio-Nennungen als konkrete Anzahl zu verkaufen. ### `src/Config/AgentRunnerConfig.php` - Neuer YAML-backed Getter: `getRagEvidenceAggregateAnswerEvidencePatterns()` ### `src/Config/RetriexEffectiveConfigProvider.php` - Neuer Config-Pfad wird im Effective Config Output sichtbar. - Neuer Config-Pfad wird als Regex-Liste validiert. ### `config/retriex/agent.yaml` - Neuer YAML-Pfad: `rag_evidence_guard.aggregate_answer_evidence_patterns` Diese Patterns beschreiben explizite Zähl-/Aggregatbelege, z. B. `Anzahl ... 12`, `insgesamt ... 12`, oder `Sortiment umfasst ... 12`. ### `config/retriex/prompt.yaml` - Neuer Reliability-State: `aggregatfrage_keine_belastbare_zaehlinformation` ## Nicht geändert - Keine Shop-Follow-up-Logik. - Keine Produktrollen-Logik. - Kein allgemeines Retrieval-/Scoring-Tuning. - Keine harte neue PHP-Keywordliste im Core. - Keine Strict-YAML-Validation. ## Lokale Prüfung in dieser Umgebung Durchgeführt: ```bash php -l src/Agent/AgentRunner.php php -l src/Agent/PromptBuilder.php php -l src/Config/AgentRunnerConfig.php php -l src/Config/RetriexEffectiveConfigProvider.php ``` Zusätzlich: - YAML-Parse für `config/retriex/agent.yaml` erfolgreich. - YAML-Parse für `config/retriex/prompt.yaml` erfolgreich. - Regex-Smoke-Test für die neuen Aggregat-Antwortpatterns erfolgreich. Nicht vollständig ausführbar in dieser Umgebung: ```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: Die ZIP enthält keine installierten Composer-Dependencies; `composer install` kann hier wegen fehlender PHP-Extensions und fehlendem Netzwerkzugriff nicht vollständig abgeschlossen werden. ## Pflichtprüfung nach Einspielen Bitte nach dem Einspielen im Projekt ausführen: ```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 ```