# Prompt budget, prompt rendering limits and prompt wording rules.
# Prompt text values are mirrored from PromptBuilderConfig defaults; PHP fallbacks remain active.
parameters:
  retriex.prompt.config:
    budget:
      chars_per_token: 4
      history_padding_chars: 400
      output_reserve_ratio: 0.25
      output_reserve_min_tokens: 768
      output_reserve_max_tokens: 6000
      safety_reserve_ratio: 0.05
      safety_reserve_min_tokens: 256
      safety_reserve_max_tokens: 1024
      min_prompt_budget_tokens: 1024
    shop_results:
      max_results_in_prompt: 24
      detailed_max_count: 5
      header_lines:
      - 'LIVE SHOP RESULTS (authoritative for current commercial details):'
      - Use these results as the primary source for current price, availability, URL, current shop-visible product naming, and explicitly shop-visible product suitability when the user asks which product/device can measure or monitor something.
      - If retrieved documents conflict with shop data on price, availability, URL, current naming, or explicitly shop-visible product suitability, prefer the shop data for those fields.
      - If retrieved documents do not identify a matching product, but a live shop result explicitly names the requested measurement parameter or application, do not conclude that no matching product exists.
      - Output real URL values exactly as provided in the shop results. Do not replace them with placeholders, link labels, or product names.
      - Do not infer undocumented technical specifications from shop data.
      - Commercial fields from shop data may only be assigned to a product if the shop item clearly matches the same product identity.
      - Do not merge a device identified in retrieved knowledge with price, URL, product number, or availability from a different shop item such as a reagent, accessory,
        kit, consumable, or service item.
      - If a shop result has no price field, do not state a price for it.
      - Never interpret a missing price or a zero price as free, kostenlos, gratis, or available for 0.00 EUR.
      - Treat every SHOP PRODUCT RECORD as atomic: exact product name, product number, price, availability, URL, image, description, and metadata must stay together.
      - When outputting a shop item, use the exact shop product name from that same SHOP PRODUCT RECORD as the heading. Never use a retrieved-knowledge device name as the heading for a different shop URL or product number.
      - Product name and URL define the primary identity of a shop record. Descriptions may mention compatible devices but must not turn an accessory, indicator, reagent, kit, set, or consumable into a main-device shop hit.
      - If a technical device from retrieved knowledge and a shop record are not clearly the same exact product identity, separate Fachliche Einordnung from Shop-Treffer instead of merging them.
      record_header_template: '[%d] SHOP PRODUCT RECORD'
      exact_product_name_label: Exact shop product name
      atomic_record_note_lines:
      - 'Record boundary: all fields below belong only to this exact shop product record.'
      overflow_notice_template: Only the top %d ranked shop results are shown here out of %d total results.
      fields:
        product_number_label: Product number
        manufacturer_label: Manufacturer
        price_label: Price
        availability_label: Available
        availability_yes_label: 'yes'
        availability_no_label: 'no'
        highlight_prefix: '- '
        url_label: URL
        product_image_label: Product image
        description_label: Description
        meta_information_label: Meta information
        requested_role_label: Requested product role
        inferred_role_label: Inferred shop product role
        role_compatibility_label: Role compatibility with request
        role_incompatible_commercial_suppression_note: 'Commercial fields suppressed: this shop record is not a matching main-device result for the requested product role.'
    technical_product_keyword_match_threshold: 2
    technical_product_keywords:
      - technisch
      - technical
      - produkt
      - product
      - gerät
      - device
      - modell
      - model
      - messprinzip
      - measurement principle
      - schnittstelle
      - interface
      - relais
      - relay
      - indikator
      - indicator
      - grenzwert
      - threshold
      - messbereich
      - measurement range
      - gemessen
      - measured
      - minimaler
      - minimum
      - resthärte
      - resthaerte
      - °dh
      - dh
      - spannung
      - voltage
      - strom
      - current
      - druck
      - pressure
      - temperatur
      - temperature
      - schutzart
      - ip
      - fehlercode
      - error code
      - wasserhärte
      - hardness
      - testomat
      - chlor
      - chlormessung
    accessory_request_keywords:
      - passend
      - passende
      - passendes
      - zubehör
      - zubehor
      - dazu
      - indikator
      - indikatoren
      - ph-indikator
      - ph indikator
      - ph-indikatoren
      - ph indikatoren
      - reagenz
      - kit
      - set
      - zusatz
      - ergänzung
      - ergaenzung
    sections:
      system_label: SYSTEM
      user_question_label: USER QUESTION
      conversation_context_label: CONVERSATION CONTEXT (contextual only)
      shop_search_query_label: SHOP SEARCH QUERY
      output_priority_label: OUTPUT PRIORITY
      fallback_escalation_label: FALLBACK AND ESCALATION RULES
      response_format_label: RESPONSE FORMAT RULES
      language_rules_label: LANGUAGE RULES
      fact_grounding_rules_label: FACT GROUNDING RULES
      measurement_evidence_label: MEASUREMENT PARAMETER EVIDENCE CHECK
      retrieved_knowledge_label: RETRIEVED KNOWLEDGE (primary for technical matching and factual explanation)
      url_content_label: CONTENT FROM URL (authoritative if user-provided)
    conversation_context:
      intro_lines:
      - The following messages are previous turns of this conversation.
      - Use them only to resolve references, follow-up questions, and user intent.
      - Previous assistant answers are not a factual source for technical values, product compatibility, indicators, ranges, prices, or availability.
      - All factual claims must come from retrieved factual knowledge, user-provided URL content, or live shop data.
      - Conversation context must not override retrieved factual knowledge or live shop data.
    shop_search:
      source_line: 'Source: Shop Search'
    role_guard:
      main_device_request_keywords:
        - messanlage
        - messanlagen
        - anlage
        - anlagen
        - messgerät
        - messgeraet
        - analysegerät
        - analysegeraet
        - analysator
        - analyzer
        - gerät
        - geraet
        - system
        - monitor
        - controller
        - testomat
        - testoamt
      main_device_product_keywords:
        - messanlage
        - messanlagen
        - messgerät
        - messgeraet
        - analysegerät
        - analysegeraet
        - analysator
        - analyzer
        - online-analysator
        - online analysegerät
        - gerät
        - geraet
        - system
        - monitor
        - controller
        - testomat
      accessory_product_keywords:
        - indikator
        - indikatoren
        - indicator
        - reagenz
        - reagenzien
        - reagent
        - zubehör
        - zubehor
        - ersatzteil
        - ersatzteile
        - kit
        - set
        - verbrauchsmaterial
        - consumable
        - nachfüll
        - nachfuell
        - refill
        - lösung
        - loesung
        - solution
        - teststreifen
        - filter
        - pumpenkopf
        - motorblock
        - service set
        - serviceset
        - service-set
        - ph-indikator
        - ph indikator
        - ph-indikatoren
        - ph indikatoren


      direct_main_device_request_patterns:
        - '/\b(welcher|welches|welche)\s+[^?.!,;]{0,40}(testomat|messgerät|messgeraet|analysegerät|analysegeraet|gerät|geraet|analysator)\b/u'
        - '/\b(suche|finde|empfiehl|empfehle)\s+[^?.!,;]{0,40}(testomat|messgerät|messgeraet|analysegerät|analysegeraet|gerät|geraet|analysator)\b/u'
        - '/\b(testomat|messgerät|messgeraet|analysegerät|analysegeraet|gerät|geraet|analysator)\s+[^?.!,;]{0,40}(messen|misst|überwachen|ueberwachen|kann|für|fuer)\b/u'

    measurement_evidence_guard:
      intro_rules:
      - '- This block is generated from the current user question and is stricter than broad product-selection wording.'
      - '- For measurement-parameter questions, technical suitability requires explicit positive evidence for the requested parameter in the same source record.'
      - '- Similar water-treatment parameters, abbreviations, units, product families, search queries, or ranking positions are not enough.'
      parameters:
      - id: ph
        label: pH / pH-Wert
        request_terms:
        - ph
        - pH
        - pH-Wert
        - ph-wert
        - ph wert
        positive_terms:
        - pH
        - pH-Wert
        - ph-wert
        - ph wert
        positive_context_terms:
        - Messung
        - messen
        - misst
        - Messbereich
        - Messparameter
        - Messgröße
        - Messgroesse
        - Bestimmung
        - bestimmen
        - Analyse
        - analysiert
        - überwachen
        - ueberwachen
        - Indikator für
        - Indikator fuer
        - Reagenz für
        - Reagenz fuer
        - Sensor
        - Elektrode
        negative_context_terms:
        - Betriebsbereich
        - Betriebsumgebung
        - Einsatzbedingungen
        - störungsfrei
        - stoerungsfrei
        - pH-Wert bei
        - ph wert bei
        - ph-wert bei
        - bei 20 °C
        - bei 20 °c
        - bei 20°C
        - bei 20°c
        - Reagenzlösung hat
        - Loesung hat
        - Lösung hat
        non_equivalent_terms:
        - p-Wert
        - p Wert
        - m-Wert
        - minus m-Wert
        - Alkalität
        - Säurekapazität
        - mmol/l
        safe_no_evidence_answer_de: Ich finde in den bereitgestellten Quellen keinen sicher belegten Testomat für pH-Messung.
        safe_no_accessory_evidence_answer_de: Ich finde in den bereitgestellten Quellen keinen sicher belegten pH-Indikator oder ein pH-Reagenz für Messgeräte.
      - id: redox
        label: Redox / ORP
        request_terms:
        - redox
        - orp
        - oxidations-reduktionspotential
        - oxidations reduktionspotential
        positive_terms:
        - Redox
        - ORP
        - Oxidations-Reduktionspotential
        - Oxidations Reduktionspotential
        positive_context_terms:
        - Messung
        - messen
        - misst
        - Messbereich
        - Messparameter
        - Messgröße
        - Messgroesse
        - Bestimmung
        - bestimmen
        - Analyse
        - analysiert
        - überwachen
        - ueberwachen
        - Indikator für
        - Indikator fuer
        - Reagenz für
        - Reagenz fuer
        - Sensor
        - Elektrode
        negative_context_terms:
        - Betriebsbereich
        - Betriebsumgebung
        - Einsatzbedingungen
        - störungsfrei
        - stoerungsfrei
        non_equivalent_terms: []
        safe_no_evidence_answer_de: Ich finde in den bereitgestellten Quellen keinen sicher belegten Treffer für Redox-/ORP-Messung.
        safe_no_accessory_evidence_answer_de: Ich finde in den bereitgestellten Quellen keinen sicher belegten Redox-/ORP-Indikator oder ein Redox-/ORP-Reagenz für Messgeräte.
      - id: free_chlorine
        label: freies Chlor
        request_terms:
        - freies chlor
        - freiem chlor
        - freien chlor
        - free chlorine
        positive_terms:
        - freies Chlor
        - freiem Chlor
        - freien Chlor
        - free chlorine
        positive_context_terms:
        - Messung
        - messen
        - misst
        - Messbereich
        - Messparameter
        - Messgröße
        - Messgroesse
        - Bestimmung
        - bestimmen
        - Analyse
        - analysiert
        - überwachen
        - ueberwachen
        - Indikator für
        - Indikator fuer
        - Reagenz für
        - Reagenz fuer
        - Sensor
        - Elektrode
        negative_context_terms:
        - Betriebsbereich
        - Betriebsumgebung
        - Einsatzbedingungen
        - störungsfrei
        - stoerungsfrei
        non_equivalent_terms:
        - Chlor gesamt
        - Gesamtchlor
        - total chlorine
        safe_no_evidence_answer_de: Ich finde in den bereitgestellten Quellen keinen sicher belegten Treffer für die Messung von freiem Chlor.
        safe_no_accessory_evidence_answer_de: Ich finde in den bereitgestellten Quellen keinen sicher belegten Indikator oder ein Reagenz für die Messung von freiem Chlor.

    output_priority:
      rules:
      - '- Use retrieved knowledge first to determine the technically matching product or answer.'
      - '- For product-selection questions such as which device can measure or monitor a parameter, use relevant live shop results as a fallback when retrieved knowledge does not identify a matching product.'
      - '- If shop results are present, use them afterwards to add current price, availability, and the actual URL.'
      - '- Do not let bundles, accessories, or service items override a better technical match unless the user explicitly asks for them.'
      technical_rules:
      - '- For technical questions, answer the exact requested fact first and keep it as the main answer.'
      - '- If one source chunk contains both the best matching value and nearby comparison values, use the nearby values only as context and do not include them unless the user asks for comparison or alternatives.'
      - '- For lowest/highest/minimum/maximum questions, answer only the requested extreme value and the product/device explicitly connected to it.'
      - '- Do not add runner-up products, second-lowest values, adjacent ranges, broader tables, or explanatory comparisons unless explicitly requested.'
    fallback_escalation:
      state_line_template: '- Internal confidence state: {state}.'
      base_rules:
      - '- Prefer transparent uncertainty over a confident but unsupported answer.'
      - '- Never present missing or weak evidence as proof that a product, value, accessory, or suitability does not exist.'
      - '- A negative answer is allowed only when the provided sources explicitly support that negative finding for the asked scope.'
      - '- If several products, parameters, or accessories could match, ask one focused clarification question instead of guessing.'
      - '- For risky or binding product selection, state that sales or support should verify the application before a final selection.'
      without_shop_check_rules:
      - '- If the question is product-related and no live shop check was performed in this run, do not make a portfolio-wide negative statement such as "there is no product".'
      - '- Phrase missing evidence narrowly, for example: "Im RAG-Wissen finde ich dazu keine belastbare Information."'
      - '- If useful, say that a shop search can be used to look for matching products, but do not claim shop results were checked unless they are present in the prompt.'
      states:
        sicher_beantwortbar:
        - '- The retrieved factual knowledge or user-provided URL content is sufficient for the core answer. Answer directly, but do not exceed the provided facts.'
        wahrscheinlich_beantwortbar:
        - '- Retrieved knowledge and shop data are both available. Use retrieved knowledge for technical suitability and shop data for current commercial details.'
        - '- If the two source types do not clearly refer to the same product identity, separate the technical answer from commercial shop hits.'
        - '- If RAG knowledge and shop data are both available but do not explicitly support the same technical suitability, start with the uncertainty instead of selecting a product confidently.'
        nur_shop_treffer_kein_belastbares_fachwissen:
        - '- Start the answer by making the fallback clear: "Aus den Shopdaten ergeben sich folgende Treffer; technische Eignung bitte prüfen."'
        - '- Do not present shop-only matches as verified technical suitability unless the shop text explicitly states that suitability.'
        - '- Do not say that RAG knowledge confirms the result. Say that no belastbares RAG-Fachwissen was available for this selection.'
        keine_belastbaren_daten:
        - '- State that no reliable information was found in the provided RAG knowledge, URL content, or shop results.'
        - '- Do not answer with "gibt es nicht". Use narrow wording such as "Ich finde dazu keine belastbaren Daten in den vorliegenden Quellen."'
        - '- Ask one focused clarification question if a parameter, product family, accessory type, or application context would make the search answerable.'
        aggregatfrage_keine_belastbare_zaehlinformation:
        - '- The user asks for a count or aggregate number, but the retrieved sources do not contain an explicit count/aggregate answer.'
        - '- Do not present nearby product-family or portfolio mentions as proof of a concrete count.'
        - '- Say narrowly: "Ich habe passende Quellen geprüft, finde darin aber keine belastbare Zählinformation für die angefragte Anzahl."'
        - '- If helpful, explain that individual product mentions are not the same as a maintained aggregate count.'
        semantische_rag_treffer_kein_direkter_fachbeleg:
        - '- Retrieved RAG records are semantic nearest-neighbor hits only; they are not a direct factual match for the essential user term or configured synonym.'
        - '- Do not present these RAG hits as fachlich belegt. Say narrowly that the RAG knowledge does not contain a direct Fachbeleg for the requested term.'
        - '- You may mention that semantic neighbor hits were found only if it helps explain uncertainty, but do not infer suitability or product existence from them.'
        semantische_rag_treffer_kein_direkter_fachbeleg_shopdaten_nicht_verfuegbar:
        - '- Live shop data could not be loaded and retrieved RAG records are semantic nearest-neighbor hits without a direct Fachbeleg for the essential user term.'
        - '- State both facts separately: shop unavailable; no direct RAG Fachbeleg. Do not make a portfolio-wide negative claim.'
        - '- Do not answer with availability, price, shop portfolio, or a technical recommendation.'
        shopdaten_nicht_verfuegbar:
        - '- State that live shop data could not be loaded. If retrieved knowledge or URL content contains a direct Fachbeleg, still answer the factual part from that source and clearly separate it from missing shop data.'
        - '- Do not draw negative conclusions about current product availability, price, or shop portfolio while the shop is unavailable.'

    response_format:
      base_rules:
      - '- Keep normal spacing between all words. Never fuse words together.'
      - '- Use short, clean paragraphs or short labeled sections.'
      - '- Do not use persuasive or promotional wording.'
      - '- Do not repeat the same fact in slightly different wording.'
      - '- Never mention brands, manufacturers, model names, or product families that do not appear in the provided shop results, retrieved knowledge, URL content,
        or conversation context.'
      - '- If no suitable product is explicitly grounded in the provided sources, say that plainly instead of inventing alternatives.'
      - '- Do not generate external alternative lists, vendor suggestions, or purchase recommendations unless they are explicitly present in the provided sources.'
      - '- Do not combine technical identity from one source with commercial fields from a different product.'
      - '- Product number, price, availability, and URL must belong to the same explicitly grounded product.'
      with_shop_rules:
      - '- If a product is identified, prefer this structure per product: product name, product number, price, availability, URL, then only the most relevant technical
        facts.'
      - '- Keep price, availability, and URL on separate lines when they are present.'
      - '- Only use shop price, URL, product number, or availability for the main product when the shop result clearly matches that same main product.'
      - '- If the matching shop item appears to be an accessory, reagent, consumable, set, or kit, keep it separate and do not present its commercial fields as the
        main device.'
      - '- If the commercial match is uncertain, say that commercial details for the main product are not clearly available in the provided shop results.'
      - '- If no price is shown for a shop item, omit the price instead of writing 0,00 €, free, kostenlos, or a guessed price.'
      - '- For every shop hit shown in the answer, copy the exact shop product name verbatim from the same SHOP PRODUCT RECORD as the item heading.'
      - '- Never place a shop URL, product number, price, or availability below a different heading taken from retrieved knowledge.'
      - '- If technical RAG knowledge and shop records cannot be matched with high confidence, use separate sections: Fachliche Einordnung and Shop-Treffer.'
      - '- For uncertain technical suitability from shop hits, use a short section like "Shop-Treffer (technische Eignung nicht sicher belegt)" and list only exact shop fields. Do not add a technical explanation or recommendation.'
      without_shop_rules:
      - '- If no shop results are present, do not compensate by inventing external products or external manufacturers.'
      technical_rules:
      - '- Write like technical documentation: precise, neutral, and source-close.'
      - '- Prefer exact values, ranges, thresholds, compatibility notes, and application areas over general explanation.'
      - '- For direct follow-up questions about an indicator, value, threshold, or device, answer the resolved mapping first before any table or explanation.'
      - '- If the sources only support a negative finding, output only that negative finding and do not add speculative alternatives.'
      - '- For product-selection answers, keep the answer minimal: suitable product if explicitly supported, exact evidence, current shop fields if same product identity is clear. Do not add sections for Vorteile, Einsatzbereiche, Messprinzip, or Hinweise unless directly asked and explicitly sourced.'
      accessory_rules:
      - '- If the user asks for a matching accessory, separate the answer into: main device and matching accessory.'
      - '- The main device must come first. The accessory must not replace the main device.'
      - '- Only name an accessory as matching if compatibility is explicitly grounded in the provided sources.'
      - '- Do not call accessories, indicators, reagents, kits, sets, or consumables a device, measuring device, or main product unless the source explicitly says
        so.'
    language:
      rules:
      - '- Answer only in the same language as the user question.'
      - '- All headings, labels, notes, and structural elements must be in the same language as the user question.'
      - '- Do not switch languages unless the user does.'
      - '- If headings are used, write them in the user''s language.'
    fact_grounding:
      base_rules:
      - '- State only facts that are explicitly present in the provided sources.'
      - '- Extract concrete values exactly when they are present, including units, ranges, model names, indicator names, IP classes, temperatures, pressures, dimensions,
        counts, relay outputs, current outputs, and error codes.'
      - '- Do not invent missing values.'
      - '- Do not replace missing values with estimates, defaults, or typical industry assumptions.'
      - '- Do not claim that information is missing if it appears in the provided sources.'
      - '- Do not compare with other products unless those products are also present in the provided sources.'
      - '- Prefer source-faithful wording over persuasive wording.'
      - '- Avoid marketing language such as ''ideal'', ''perfect'', ''unverzichtbar'', ''entscheidend'', ''optimal'', ''kosteneffizient'', ''prozesssicher'', or ''state-of-the-art''.'
      - '- Clearly separate explicit facts from inferences.'
      - '- If a conclusion goes beyond the source wording, label it exactly as ''Inference:''.'
      - '- If a sentence cannot be traced to the provided sources, do not write it.'
      - '- For follow-up questions, use the conversation only to resolve what the user refers to; do not copy technical facts from previous assistant answers unless
        the same fact is present in the current retrieved sources.'
      - '- Never mention external manufacturers, external brands, or external products unless they are explicitly present in the provided sources.'
      - '- If the sources do not identify a suitable product, do not invent one.'
      - '- Do not turn absence of evidence into a broad portfolio statement. Use scoped wording tied to the provided sources and current search results.'
      - '- Strong negative terms such as "ausschließlich", "keines", "nicht geeignet", or "gibt es nicht" require explicit source support for the full stated scope.'
      with_shop_rules:
      - '- Use shop data as highest priority for current commercial fields: price, availability, URL, current shop-visible naming, and explicitly shop-visible product suitability for product-selection questions.'
      - '- Use retrieved knowledge as highest priority for technical matching, thresholds, measurement principles, and technical explanation when it contains a matching product or fact.'
      - '- If retrieved knowledge is silent or only contains unrelated products, but live shop results explicitly match the requested parameter/application, use the shop results and do not answer with a negative RAG-only conclusion.'
      - '- If the user asks for Schwimmbad, Schwimmbecken, Pool, or typo-like pool wording, a product may only be recommended for that application when the same RAG or SHOP PRODUCT RECORD explicitly names that application. Chlor measurement alone is not proof of swimming-pool suitability.'
      - '- If a product record proves Chlor measurement but not Schwimmbad, Schwimmbecken or Pool use, say exactly that distinction and avoid recommendation wording such as empfiehlt sich, geeignet für Schwimmbad, Anwendung im Schwimmbad, or für Schwimmbäder.'
      - '- For product-selection questions, a shop result proves technical suitability only when the same SHOP PRODUCT RECORD explicitly states the requested measurement parameter, application, or compatibility. Search ranking, generated query terms, generic category matches, and similar wording are not proof.'
      - '- If the requested parameter appears only in the generated shop query, metadata, unrelated highlights, or another product record, treat suitability as unverified and say that the shop hit requires technical verification.'
      - '- Do not convert p-Wert, m-Wert, minus m-Wert, alkalinity, acid capacity, or other water-treatment parameters into pH or pH-Wert unless the same source explicitly says pH or pH-Wert.'
      - '- When shop results are present and relevant, include current price and the actual URL if available.'
      - '- If the shop data does not provide a positive price for a result, do not output any price for that result.'
      - '- Do not let accessories, bundles, or service items override a technically better product match unless the user explicitly asks for them.'
      - '- Do not call accessories, indicators, reagents, kits, sets, or consumables a device, measuring device, or main product unless the source explicitly says
        so.'
      - '- Do not claim that an accessory is required, necessary, used for calibration, or sets the measurement range unless this is explicitly stated in the provided
        sources.'
      - '- Do not assign the product number, price, URL, or availability of a reagent, accessory, kit, set, consumable, or service item to a device identified in
        retrieved knowledge.'
      - '- Only use commercial fields for the main product when the shop item and the technically identified product clearly refer to the same product identity.'
      - '- If the shop match is ambiguous, keep the technical identification and commercial details separate.'
      - '- Shop product names are authoritative for their own shop URL, product number, price, availability, image, description, and metadata.'
      - '- Do not rewrite a shop record heading with a similar device name from retrieved knowledge. If identities differ or are uncertain, separate the RAG device from the shop hit.'
      - '- If the user asks for a main device, measuring device, analyzer, system, or measuring installation, do not present an accessory, indicator, reagent, kit, set, consumable, or service item as the requested main solution.'
      - '- If the user asks for an accessory, indicator, reagent, consumable, kit, or solution with a specific measurement parameter, do not replace the requested parameter with another parameter. A hardness indicator is not a valid answer to a pH-indicator request unless the same source explicitly states pH measurement, pH determination, pH measuring range, or an equivalent parameter-specific purpose.'
      - '- Mentions of operating conditions, allowed sample pH, reagent-solution pH, storage pH, or pH values at a temperature are not measurement-parameter evidence by themselves.'
      - '- If the only shop hit is role-incompatible with the requested product role, state that no matching main-device shop hit is available in the provided shop data; mention the incompatible hit only as a separate accessory/consumable hit if useful.'
      - '- If a SHOP PRODUCT RECORD says Commercial fields suppressed, do not output its price, availability, URL, product number, image, or metadata anywhere in the answer.'
      - '- Never write shop-hit lines such as price, availability, URL, product number, or Shop-Treffer below a RAG device unless the same exact SHOP PRODUCT RECORD names that device as the exact shop product.'
      - '- Never rename a role-incompatible accessory shop record into a main device in headings, summaries, or shop-hit lines.'
      - '- If the user asks for the price or availability of a referenced accessory, indicator, reagent, kit, set, or consumable, use commercial fields only from a shop result that clearly matches that accessory identity and code.'
      - '- For such accessory price follow-ups, do not answer with the price, URL, product number, or availability of the main device or of unrelated reagents; if no matching accessory shop item is present, say that the price is not available in the provided shop data.'
      without_shop_rules:
      - '- Use retrieved knowledge as authoritative for factual answers.'
      - '- If no shop results are present, do not compensate with external recommendations or external product suggestions.'
      technical_rules:
      - '- For technical product questions, answer primarily with explicitly stated facts.'
      - '- For measurement-parameter questions, do not treat similar or neighboring abbreviations as equivalent. In particular, p-Wert is not pH-Wert unless the source explicitly says pH or pH-Wert.'
      - '- Do not invent or infer measurement principles, methods, calibration functions, benefits, advantages, application areas, or alternative products from product family names, search rank, or shop query wording.'
      - '- Behave like a technical documentation assistant, not like a sales advisor.'
      - '- Keep interpretations minimal and do not generalize application areas beyond the provided sources.'
      - '- Do not describe benefits, consequences, risks, or operational outcomes unless they are explicitly stated in the sources.'
      - '- Do not translate technical facts into business value unless the source explicitly does so.'
      - '- Do not recommend process changes unless explicitly present in the source.'
      - '- Do not use persuasive summaries or advisory conclusions.'
      - '- If the retrieved knowledge describes one specific named product, stay within that product and do not merge related product families or variants.'
      - '- Use neutral engineering language.'
      - '- Do not name specific chemicals, indicator substances, standards, or mechanisms unless explicitly stated in the source.'
      - '- If the source states signal logic such as green/red, output that signal logic only and do not expand it into operational recommendations or alarm semantics
        unless explicitly stated.'
      - '- If the source lists application areas, repeat only those areas and do not broaden them.'
      - '- If the source names an indicator and threshold, reproduce that exactly without extrapolation.'
      - '- For lowest, highest, smallest, largest, minimum, maximum, Grenzwert, Messbereich or Aufloesung questions, first identify the exact numeric extreme from
        the retrieved knowledge and answer that value directly.'
      - '- For lowest/highest/minimum/maximum questions, answer only the requested extreme unless the user explicitly asks for a comparison or alternatives.'
      - '- For direct numeric lookup questions such as which device measures a given threshold, answer with the exact matching device/value pair first and avoid advisory
        caveats.'
      - '- Do not add the runner-up product, second-lowest value, or adjacent range unless the user asks for it.'
      - '- Do not add calibration, accuracy, pretreatment, temperature, or application notes unless those exact notes are requested and explicitly present in the
        retrieved source.'
      - '- For follow-up questions such as "which indicator measures that value", first resolve the referenced value/device, then use the retrieved source entry that
        explicitly connects value, device and indicator.'
      - '- For direct follow-up indicator/value questions, start with the exact mapping in one sentence, for example: Der Wert 0,02 °dH wird beim Testomat 808 mit Indikatortyp 300 gemessen.'
      - '- Do not output the full indicator table, measurement principle, application areas, or advisory notes unless the user explicitly asks for all indicators, details, a table, or device information.'
      - '- For numeric extreme questions, do not combine a value, device name, indicator name, range or product variant from different chunks unless the same retrieved
        entry explicitly connects them.'
      - '- If several devices or indicators are present, keep each device-indicator-range assignment separate and do not transfer an indicator from one product to
        another.'
      - '- For Testomat CAL or Testomat 2000 CAL threshold/range questions, use only source entries that explicitly name CAL or Testomat 2000 CAL in the same product record. Do not answer with Testomat 808 indicator ranges or the generic 0,02 °dH to 5 °dH range unless a CAL source record explicitly contains that exact assignment.'
      - '- If the retrieved CAL-specific source records do not explicitly state numeric CAL threshold values, say that the exact CAL Grenzwerte are not belegbar from the provided sources instead of giving 0,02 °dH to 5 °dH as a typical range.'
      - '- For Testomat CAL, do not transfer plain numeric 808 indicator types such as 300, 300 S, 301, 302, 303, 305, 310, 320, 330, or 350. CAL indicator statements must remain CAL-specific, for example TH-prefixed indicator codes when those are explicitly present in the CAL source.'
      - '- If the source states only a threshold function, do not expand it into broader control logic.'
      - '- If a detail is not explicitly stated in the provided sources, say so plainly.'
      - '- Prefer short, source-close sentences over explanatory expansion.'
      - '- If the sources only support that a product family is not suitable, output only that unsuitability and stop there.'
    retrieved_knowledge:
      source_line: 'Source: Documents'
    url_content:
      source_line: 'Source: URL'
    technical_product_model_pattern: /\b[\p{L}]{2,}\s?\d{2,5}\b/u
