From 0977cec65128d3574bf73948991143c1cf55b53c Mon Sep 17 00:00:00 2001 From: team 1 Date: Thu, 7 May 2026 17:13:55 +0200 Subject: [PATCH] p59g --- config/retriex/agent.yaml | 4 -- config/retriex/genre.yaml | 11 +---- config/retriex/governance.yaml | 2 - ...ENRE_NO_LLM_ROLE_FALLBACK_REWIRE_README.md | 49 +++++++++++++++++++ src/Config/AgentRunnerConfig.php | 10 ++++ 5 files changed, 61 insertions(+), 15 deletions(-) create mode 100644 patch_history/RETRIEX_PATCH_59G_GENRE_NO_LLM_ROLE_FALLBACK_REWIRE_README.md diff --git a/config/retriex/agent.yaml b/config/retriex/agent.yaml index 7cef824..9520371 100644 --- a/config/retriex/agent.yaml +++ b/config/retriex/agent.yaml @@ -366,10 +366,6 @@ parameters: separator: ' | ' unavailable_reason_template: '{message} Ursache: {reason}' - product_roles: - vocabulary_views: - main_device_request_keywords: agent.no_llm_fallback.product_roles.main_device_request_keywords - accessory_product_keywords: agent.no_llm_fallback.product_roles.accessory_product_keywords production_ui: diff --git a/config/retriex/genre.yaml b/config/retriex/genre.yaml index 52e76a0..5b34c63 100644 --- a/config/retriex/genre.yaml +++ b/config/retriex/genre.yaml @@ -14,6 +14,8 @@ # the value surface stays native and maintenance-focused. # p59F adds machine-readable review-group metadata so the remaining # compatibility paths can be removed or kept deliberately by category. +# p59G rewires the no-LLM product-role fallback directly to genre values +# and removes its obsolete legacy compatibility view declarations. parameters: retriex.genre.config: id: water_analysis @@ -30,15 +32,6 @@ parameters: - configuration_values.product_roles.shop_views - configuration_values.product_roles.prompt_views - configuration_values.product_roles.no_llm_fallback_terms - review_path_groups: - frozen_compatibility_views: - description: Legacy no-LLM product-role vocabulary views. Keep frozen until the fallback reads only from genre.configuration_values.product_roles. - classification: legacy_compatibility_view - source_state: legacy_frozen_non_empty - cleanup_action: rewire_to_genre_value_and_remove_legacy_view - paths: - - agent.no_llm_fallback.product_roles.vocabulary_views.main_device_request_keywords - - agent.no_llm_fallback.product_roles.vocabulary_views.accessory_product_keywords product_attributes: description: Genre-specific attributes and constraints, for example measurement values now or size/color/material later. value_paths: diff --git a/config/retriex/governance.yaml b/config/retriex/governance.yaml index 5838812..a996e17 100644 --- a/config/retriex/governance.yaml +++ b/config/retriex/governance.yaml @@ -31,8 +31,6 @@ parameters: agent.follow_up_context.commercial_table_follow_up.query_template_with_model: '5e4c77d6b9d13a753d14ca8eea3c942df3d9e8276bc2c208b4002e9464bee4e8' agent.follow_up_context.commercial_table_follow_up.query_template_without_model: '2b5a25507a162c3b2181001ec832022e3461da3c89229fd9dd9b06ce9d686eab' agent.input_normalization.fuzzy_routing.vocabulary_views.terms: '430f9da9d2d8d20b1367c875000f941e0b7b56f74a23fbfc8cd29aa11cd59716' - agent.no_llm_fallback.product_roles.vocabulary_views.accessory_product_keywords: '13623043e91858bf30831a28e0df23556bebe036d09eedc8fdca316d585a471f' - agent.no_llm_fallback.product_roles.vocabulary_views.main_device_request_keywords: 'ab49470c75a011355dd827381e881ed8553273cd87090fea162035eaae5f1c6e' agent.shop_runtime.answer_constraints.length_filter: '66363cc7bf0dfe75c3991cefc70f1dfaf2f3150ab2f4f59f30f54b52d1c4d7af' agent.shop_runtime.answer_constraints.length_sort: '1207b32e691996ca643f5bfd9b31467b70a11289ce56af356bd7f4fe78826c75' agent.shop_runtime.attribute_cleanup.vocabulary_views.product_type_terms: '76060cf458b95b104bf3755b9c20997b7ec9b356c30bae093cb504e07434c152' diff --git a/patch_history/RETRIEX_PATCH_59G_GENRE_NO_LLM_ROLE_FALLBACK_REWIRE_README.md b/patch_history/RETRIEX_PATCH_59G_GENRE_NO_LLM_ROLE_FALLBACK_REWIRE_README.md new file mode 100644 index 0000000..7ffd3b0 --- /dev/null +++ b/patch_history/RETRIEX_PATCH_59G_GENRE_NO_LLM_ROLE_FALLBACK_REWIRE_README.md @@ -0,0 +1,49 @@ +# RetrieX Patch p59G - Genre no-LLM role fallback rewire + +## Ziel + +p59G ist der erste kleine echte Rewire-Schritt nach der p59A-p59F Metadatenbereinigung. Der no-LLM Produktrollen-Fallback liest die Rollenbegriffe jetzt direkt aus `genre.yaml`, statt über die alte Agent-`vocabulary_views`-Kompatibilitätsschicht zu gehen. + +## Änderungen + +- `AgentRunnerConfig::getNoLlmMainDeviceRequestRoleKeywords()` liest bevorzugt aus `genre.configuration_values.product_roles.no_llm_fallback_terms.main_device_request_keywords`. +- `AgentRunnerConfig::getNoLlmAccessoryProductRoleKeywords()` liest bevorzugt aus `genre.configuration_values.product_roles.no_llm_fallback_terms.accessory_product_keywords`. +- Die alten Agent-View-Pfade unter `agent.no_llm_fallback.product_roles.vocabulary_views.*` wurden aus `agent.yaml` entfernt. +- Die Review-Gruppe `adaptation_surface.product_roles.review_path_groups.frozen_compatibility_views` wurde aus `genre.yaml` entfernt. +- Die zugehörigen frozen Hashes wurden aus `governance.genre_source_of_truth.frozen_non_empty_legacy_source_hashes` entfernt. + +## Nicht geändert + +- Keine Prompt-, Retrieval-, Shop-, Query-, SearchRepair-, Intent- oder Scoring-Logik wurde geändert. +- Die fachlichen no-LLM Rollenwerte bleiben unverändert in `genre.yaml`. +- Die Fallback-Methoden behalten den technischen Legacy-Fallback im Code, falls in einem alten Setup keine GenreConfig verfügbar ist; im aktuellen Single-Genre-Setup greift aber der Genre-Wert. + +## Erwartete Audit-Auswirkung + +- `genre_review_path_groups_with_source_paths`: 14 -> 13 +- `genre_declared_source_paths`: 39 -> 37 +- `genre_source_of_truth_frozen_non_empty`: 37 -> 35 +- `genre_source_of_truth_violations`: bleibt 0 + +## Lokale Prüfung ohne vendor/ + +- YAML parsebar für `genre.yaml`, `agent.yaml`, `governance.yaml`, `vocabulary.yaml` +- PHP-Lint grün für `src/Config/AgentRunnerConfig.php` +- Lokale Source-of-Truth-Simulation: + - 13 Review-Gruppen + - 37 deklarierte Review-Source-Pfade + - 35 frozen non-empty Pfade + - 2 runtime-resolved Pfade + - 0 leere Legacy-Fallbacks + - 0 fehlende Pfade + - 0 undeclared frozen hashes + - 0 Hash-Mismatches + +## Projektchecks nach Einspielen + +```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 +``` diff --git a/src/Config/AgentRunnerConfig.php b/src/Config/AgentRunnerConfig.php index ab845b4..c0eab5e 100644 --- a/src/Config/AgentRunnerConfig.php +++ b/src/Config/AgentRunnerConfig.php @@ -962,6 +962,11 @@ final class AgentRunnerConfig */ public function getNoLlmMainDeviceRequestRoleKeywords(): array { + $terms = $this->genreStringList('product_roles.no_llm_fallback_terms.main_device_request_keywords'); + if ($terms !== []) { + return $terms; + } + return $this->getConfiguredStringListOrVocabularyView( 'no_llm_fallback.product_roles.main_device_request_keywords', 'no_llm_fallback.product_roles.vocabulary_views.main_device_request_keywords' @@ -973,6 +978,11 @@ final class AgentRunnerConfig */ public function getNoLlmAccessoryProductRoleKeywords(): array { + $terms = $this->genreStringList('product_roles.no_llm_fallback_terms.accessory_product_keywords'); + if ($terms !== []) { + return $terms; + } + return $this->getConfiguredStringListOrVocabularyView( 'no_llm_fallback.product_roles.accessory_product_keywords', 'no_llm_fallback.product_roles.vocabulary_views.accessory_product_keywords'