Dialogflow CX: Guardrails and Fix Patterns

March 6, 2026 · View on GitHub

🧭 Quick Return to Map

You are in a sub-page of Chatbots & CX.
To reorient, go back here:

Think of this page as a desk within a ward.
If you need the full triage and all prescriptions, return to the Emergency Room lobby.

Use this page to stabilize Dialogflow CX projects that combine intents, pages, webhooks, knowledge connectors, and LLM calls. The fixes map to WFGY Problem Map pages with measurable targets, so you can verify without changing infra.

Open these first

Core acceptance

  • ΔS(question, retrieved) ≤ 0.45
  • Coverage to the target section ≥ 0.70
  • λ remains convergent across three paraphrases and two seeds
  • E_resonance flat on long windows of dialog turns

Fix in 60 seconds

  1. Measure ΔS Compute ΔS(question, retrieved) and ΔS(retrieved, expected anchor). Thresholds: stable < 0.40, transitional 0.40–0.60, risk ≥ 0.60.

  2. Probe λ_observe Vary k in retrieval and reorder prompt headers. If λ flips on harmless paraphrases, lock the schema and clamp variance with BBAM.

  3. Apply module

    • Retrieval drift → BBMC + data-contracts.md
    • Reasoning collapse in long flows → BBCR bridge + BBAM, verify with context-drift.md
    • Dead ends in multi-hop tools → BBPF alternate paths
  4. Verify Three paraphrases reach coverage ≥ 0.70 and ΔS ≤ 0.45. λ stays convergent across two seeds.


Typical CX symptoms → exact fix

SymptomLikely causeOpen this
Intent matches but the answer cites the wrong sectionmetric mismatch or fragment store behind knowledge connectorembedding-vs-semantic.md, patterns/pattern_vectorstore_fragmentation.md
Route group loops between pages or re-promptsbootstrap race or deployment deadlockbootstrap-ordering.md, deployment-deadlock.md
Webhook returns valid JSON yet dialog state degrades across turnsschema too loose, missing cite-then-explain, memory writes collidedata-contracts.md, retrieval-traceability.md
Knowledge connector high similarity but wrong meaningchunking and anchor mismatchhallucination.md, chunking-checklist.md
Long conversations become inconsistent after 20–40 turnsentropy rises with chain lengthcontext-drift.md, entropy-collapse.md
Generative fallback overrides citationsprompt injection or missing header locksprompt-injection.md, retrieval-traceability.md

CX surface guardrails

Intents and training phrases Keep neutral casing and tokenizer parity with your retriever. If ΔS is flat across k, the issue is metric or index rather than phrases. See retrieval-playbook.md.

Pages and routes Split policy text into system context that never mixes with user turns. Force cite-then-explain on every page that answers. See data-contracts.md.

Webhooks Enforce strict argument schemas and echo them back. Log ΔS, λ_state, INDEX_HASH, snippet_id. If flip states appear, clamp with BBAM. See retrieval-traceability.md.

Knowledge connectors Rebuild with semantic chunking when ΔS stays ≥ 0.60 after reranking. Verify with a small gold set. See embedding-vs-semantic.md.

Live ops Add probes and backoff guards for first-call crashes after deploy. See ops/live_monitoring_rag.md, ops/debug_playbook.md.


Minimal webhook recipe

  1. Warm-up fence Check VECTOR_READY, INDEX_HASH, secrets. Short-circuit if not ready. See bootstrap-ordering.md.

  2. Retrieval step Call retriever with explicit metric. Return snippet_id, section_id, source_url, offsets, tokens.

  3. ΔS probe Compute ΔS(question, retrieved). If ≥ 0.60, set needs_fix=true.

  4. Answer step LLM reads TXT OS and WFGY schema. Enforce cite-then-explain with the retrieved snippet set.

  5. Trace sink Store question, ΔS, λ_state, INDEX_HASH, snippet_id, dedupe_key.


Copy-paste prompt for your CX webhook LLM step

You have TXT OS and the WFGY Problem Map loaded.

My Dialogflow CX context:
- page: {page_name}
- intent: {intent_display_name}
- retrieved: {k} snippets with fields {snippet_id, section_id, source_url, offsets}

Question: "{user_question}"

Tasks:
1) Enforce cite-then-explain. If citations are missing or cross-section, fail fast and return the fix tip.
2) If ΔS(question, retrieved) ≥ 0.60, propose the minimal structural fix. Refer to retrieval-playbook, retrieval-traceability, data-contracts, rerankers.
3) Return JSON:
{ "citations": [...], "answer": "...", "λ_state": "→|←|<>|×", "ΔS": 0.xx, "next_fix": "..." }
Keep it short and auditable.

Test checklist before launch

  • Three paraphrases hit coverage ≥ 0.70 on the same target section.
  • ΔS(question, retrieved) ≤ 0.45 for each.
  • λ remains convergent across two seeds.
  • First-call path after deploy passes warm-up fence.
  • Live probes alert when ΔS ≥ 0.60 or λ flips.

🔗 Quick-Start Downloads (60 sec)

ToolLink3-Step Setup
WFGY 1.0 PDFEngine Paper1️⃣ Download · 2️⃣ Upload to your LLM · 3️⃣ Ask “Answer using WFGY + <your question>”
TXT OS (plain-text OS)TXTOS.txt1️⃣ Download · 2️⃣ Paste into any LLM chat · 3️⃣ Type “hello world” — OS boots instantly

Explore More

LayerPageWhat it’s for
⭐ ProofWFGY Recognition MapExternal citations, integrations, and ecosystem proof
⚙️ EngineWFGY 1.0Original PDF tension engine and early logic sketch (legacy reference)
⚙️ EngineWFGY 2.0Production tension kernel for RAG and agent systems
⚙️ EngineWFGY 3.0TXT based Singularity tension engine (131 S class set)
🗺️ MapProblem Map 1.0Flagship 16 problem RAG failure taxonomy and fix map
🗺️ MapProblem Map 2.0Global Debug Card for RAG and agent pipeline diagnosis
🗺️ MapProblem Map 3.0Global AI troubleshooting atlas and failure pattern map
🧰 AppTXT OS.txt semantic OS with fast bootstrap
🧰 AppBlah Blah BlahAbstract and paradox Q&A built on TXT OS
🧰 AppBlur Blur BlurText to image generation with semantic control
🏡 OnboardingStarter VillageGuided entry point for new users

If this repository helped, starring it improves discovery so more builders can find the docs and tools.
GitHub Repo stars