# v3-system-flow-telegram-loop-2

- source_file: /Users/alex/Dev_projects_v2/ai driven app process/v2/agent/tests/pipeline_setup_v3/cases/suite_03_docs/full_chain_docs_intents_v3-3x.yaml
- runner: agent_runtime
- mode: pre_llm
- passed: True

## Query
Как работает процесс отправки уведомлений в Telegram?

## Actual
{
  "intent": "DOCUMENTATION_EXPLAIN",
  "sub_intent": "SYSTEM_FLOW_EXPLAIN",
  "graph_id": "DocsQAGraph",
  "conversation_mode": "START",
  "rag_count": 14,
  "llm_answer": "",
  "answer_mode": "answered",
  "path_scope": [],
  "doc_scope": [
    "api.control_actions_endpoint",
    "api.health_endpoint",
    "api.send_message_endpoint",
    "architecture.telegram_notify_app_overview",
    "architecture.telegram_notify_app",
    "logic.telegram_notification_loop",
    "domain.runtime_health"
  ],
  "entity_candidates": [],
  "symbol_candidates": [],
  "layers": [
    "D4_WORKFLOW_INDEX",
    "D5_RELATION_GRAPH",
    "D1_DOCUMENT_CATALOG",
    "D0_DOC_CHUNKS"
  ],
  "filters": {
    "doc_type": null
  },
  "pipeline_mode": "pre_llm_only",
  "gate_decision": "allow",
  "prompt_used": "docs_explain_answer",
  "llm_mode": "prose",
  "degraded_reason": null,
  "code_intents_stubbed": true
}

## Pipeline Steps
### input_query
```json
{
  "input": {
    "query": "Как работает процесс отправки уведомлений в Telegram?"
  },
  "output": {
    "query": "Как работает процесс отправки уведомлений в Telegram?"
  }
}
```

### router
```json
{
  "input": {
    "query": "Как работает процесс отправки уведомлений в Telegram?"
  },
  "output": {
    "intent": "DOCUMENTATION_EXPLAIN",
    "sub_intent": "SYSTEM_FLOW_EXPLAIN",
    "graph_id": "DocsQAGraph",
    "conversation_mode": "START"
  }
}
```

### docs_pipeline
```json
{
  "input": {
    "query": "Как работает процесс отправки уведомлений в Telegram?"
  },
  "output": {
    "answer_mode": "ready",
    "prompt_name": "docs_explain_answer",
    "llm_request": {
      "prompt_name": "docs_explain_answer",
      "log_context": "graph.project_qa.docs.answer",
      "prompt_stats": {
        "system_chars": 393,
        "user_chars": 14240,
        "tokens_in_estimate": 3659
      }
    },
    "degraded_reason": ""
  }
}
```

## Diagnostics
{
  "intent": "DOCUMENTATION_EXPLAIN",
  "sub_intent": "SYSTEM_FLOW_EXPLAIN",
  "layers_used": [
    "D4_WORKFLOW_INDEX",
    "D5_RELATION_GRAPH",
    "D1_DOCUMENT_CATALOG",
    "D0_DOC_CHUNKS"
  ],
  "documents_found": 1,
  "facts_found": 0,
  "relations_found": 2,
  "openapi_fields_extracted": 0,
  "missing_required_fields": [],
  "openapi_status": {
    "has_path": false,
    "has_method": false,
    "has_request": false,
    "has_response": false
  },
  "prompt_used": "docs_explain_answer",
  "llm_mode": "prose",
  "output_valid": true,
  "matched_intent_source": "deterministic",
  "matched_anchor_type": "workflow",
  "matched_anchor_value": "отправки",
  "exact_anchor_match": false,
  "docs_layers_requested": [
    "D4_WORKFLOW_INDEX",
    "D5_RELATION_GRAPH",
    "D1_DOCUMENT_CATALOG",
    "D0_DOC_CHUNKS"
  ],
  "docs_layers_with_hits": [
    "D4_WORKFLOW_INDEX",
    "D5_RELATION_GRAPH",
    "D1_DOCUMENT_CATALOG",
    "D0_DOC_CHUNKS"
  ],
  "planned_layers": [
    "D4_WORKFLOW_INDEX",
    "D5_RELATION_GRAPH",
    "D1_DOCUMENT_CATALOG",
    "D0_DOC_CHUNKS"
  ],
  "executed_layers": [
    "D4_WORKFLOW_INDEX",
    "D5_RELATION_GRAPH",
    "D1_DOCUMENT_CATALOG",
    "D0_DOC_CHUNKS"
  ],
  "non_empty_layers": [
    "D4_WORKFLOW_INDEX",
    "D5_RELATION_GRAPH",
    "D1_DOCUMENT_CATALOG",
    "D0_DOC_CHUNKS"
  ],
  "layer_diagnostics": {
    "D4_WORKFLOW_INDEX": {
      "hits": 3,
      "top_ids": [
        "api.control_actions_endpoint",
        "api.health_endpoint",
        "api.send_message_endpoint"
      ],
      "top_sections": [
        "Scenario"
      ]
    },
    "D5_RELATION_GRAPH": {
      "hits": 8,
      "top_ids": [
        "305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94",
        "7bd0428d23e9b20f7d65202cc269e45b3d1e7aed7b5df4a35581fd88677be29b",
        "0eb7f73fcda8556439e06f5eeb5ce064ae32b6cd3129353f5b1b4eb3db626d88",
        "ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
        "145ccbb861a8fb621286ec9c888ce69677168d35c7871c70537e888ce3a5b910"
      ],
      "top_sections": [
        "architecture.telegram_notify_app:child",
        "architecture.telegram_notify_app:related_api"
      ]
    },
    "D1_DOCUMENT_CATALOG": {
      "hits": 4,
      "top_ids": [
        "architecture.telegram_notify_app",
        "logic.telegram_notification_loop",
        "api.send_message_endpoint",
        "domain.runtime_health"
      ],
      "top_sections": [
        "Архитектура Telegram Notify App",
        "Цикл отправки уведомлений в Telegram",
        "HTTP API /send",
        "Сущность runtime health"
      ]
    },
    "D0_DOC_CHUNKS": {
      "hits": 4,
      "top_ids": [
        "architecture.telegram_notify_app",
        "logic.telegram_notification_loop"
      ],
      "top_sections": [
        "architecture.telegram_notify_app:Details",
        "logic.telegram_notification_loop:Summary",
        "architecture.telegram_notify_app:Summary",
        "logic.telegram_notification_loop:Details"
      ]
    }
  },
  "query_entity_candidates": [],
  "resolved_entity_candidates": [],
  "query_anchor_candidates": [],
  "resolved_anchor_candidates": [
    "api.control_actions_endpoint",
    "docs/documentation/api/control-actions-endpoint.md",
    "api.health_endpoint",
    "docs/documentation/api/health-endpoint.md",
    "api.send_message_endpoint",
    "docs/documentation/api/send-message-endpoint.md",
    "docs/documentation/architecture/telegram-notify-app-overview.md",
    "architecture.telegram_notify_app",
    "logic.telegram_notification_loop",
    "docs/documentation/logic/telegram-notification-loop.md",
    "domain.runtime_health",
    "docs/documentation/domain/runtime-health-entity.md"
  ],
  "anchor_candidates": [],
  "selected_anchor": null,
  "anchor_selection_reason": "",
  "anchor_match_type": "",
  "doc_ids": [
    "api.control_actions_endpoint",
    "api.health_endpoint",
    "api.send_message_endpoint",
    "architecture.telegram_notify_app_overview",
    "architecture.telegram_notify_app",
    "logic.telegram_notification_loop",
    "domain.runtime_health"
  ],
  "doc_paths": [
    "docs/documentation/api/control-actions-endpoint.md",
    "docs/documentation/api/health-endpoint.md",
    "docs/documentation/api/send-message-endpoint.md",
    "docs/documentation/architecture/telegram-notify-app-overview.md",
    "docs/documentation/logic/telegram-notification-loop.md",
    "docs/documentation/domain/runtime-health-entity.md"
  ],
  "doc_titles": [
    "Scenario",
    "architecture.telegram_notify_app:child",
    "architecture.telegram_notify_app:related_api",
    "architecture.telegram_notify_app:parent",
    "Архитектура Telegram Notify App",
    "Цикл отправки уведомлений в Telegram",
    "HTTP API /send",
    "Сущность runtime health",
    "architecture.telegram_notify_app:Details",
    "logic.telegram_notification_loop:Summary",
    "architecture.telegram_notify_app:Summary",
    "logic.telegram_notification_loop:Details"
  ],
  "relation_hits_count": 2,
  "relation_targets": [
    "architecture.telegram_notify_app:child",
    "architecture.telegram_notify_app:related_api"
  ],
  "selected_doc_ids": [
    "architecture.telegram_notify_app",
    "api.control_actions_endpoint",
    "api.health_endpoint"
  ],
  "selected_fact_ids": [],
  "selected_relation_ids": [
    "305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94",
    "7bd0428d23e9b20f7d65202cc269e45b3d1e7aed7b5df4a35581fd88677be29b"
  ],
  "selected_chunk_ids": [
    "architecture.telegram_notify_app"
  ],
  "selected_entity_ids": [],
  "selected_workflow_ids": [
    "f78b822d4366b10322fd4a35e347deae59d55ff4132951201f4df3d1653aec61",
    "83a9287bd9ac1f709258078d0e16d326615b4af1b7d77b323ff050dfb97a3e41"
  ],
  "fallback_doc_hits_count": 3,
  "fallback_used": false,
  "fact_hits": 0,
  "entity_hits": 0,
  "evidence_summary": {
    "documents": 1,
    "facts": 0,
    "entities": 0,
    "workflows": 2,
    "relations": 2,
    "chunks": 2,
    "selected_doc_ids": [
      "architecture.telegram_notify_app",
      "api.control_actions_endpoint",
      "api.health_endpoint"
    ],
    "selected_fact_ids": [],
    "selected_relation_ids": [
      "305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94",
      "7bd0428d23e9b20f7d65202cc269e45b3d1e7aed7b5df4a35581fd88677be29b"
    ],
    "selected_chunk_ids": [
      "architecture.telegram_notify_app"
    ],
    "entity_hits": 0,
    "openapi_signals": {
      "path_found": false,
      "method_found": false,
      "operation_semantics_found": false,
      "request_payload_found": false,
      "request_schema": false,
      "request_fields_found": false,
      "response_payload_found": false,
      "response_schema": false,
      "response_fields_found": false,
      "status_codes": false,
      "content_type_found": false,
      "examples_found": false,
      "payload_description": false
    }
  },
  "gate_decision": "allow",
  "gate_decision_reason": "evidence_sufficient",
  "gate_missing_requirements": [],
  "gate_satisfied_requirements": [
    "retrieval_non_empty"
  ],
  "openapi_evidence": {
    "path_found": false,
    "method_found": false,
    "operation_semantics_found": false,
    "request_payload_found": false,
    "request_schema": false,
    "request_fields_found": false,
    "response_payload_found": false,
    "response_schema": false,
    "response_fields_found": false,
    "status_codes": false,
    "content_type_found": false,
    "examples_found": false,
    "payload_description": false
  },
  "requested_fragment_type": null,
  "fragment_evidence_found": [],
  "fragment_missing_requirements": [],
  "answer_mode": "ready",
  "degrade_reason": null,
  "degraded_reason": null,
  "code_intents_stubbed": false
}

## LLM Request
- prompt_name: docs_explain_answer
- log_context: graph.project_qa.docs.answer

### Prompt Stats
```json
{
  "system_chars": 393,
  "user_chars": 14240,
  "tokens_in_estimate": 3659
}
```

### System Prompt
```text
Ты объясняешь документацию системы.

На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations

Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано

Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```

### User Prompt
```json
{
  "question": "Как работает процесс отправки уведомлений в Telegram?",
  "intent": "DOCUMENTATION_EXPLAIN",
  "sub_intent": "SYSTEM_FLOW_EXPLAIN",
  "documents": [
    {
      "layer": "D1_DOCUMENT_CATALOG",
      "path": "docs/documentation/architecture/telegram-notify-app-overview.md",
      "title": "Архитектура Telegram Notify App",
      "content": "`test_echo_app` — сервис на базе PLBA runtime, который поднимает HTTP control plane и запускает фоновый воркер для периодической отправки уведомлений в Telegram. Приложение использует YAML-конфиг для runtime-настроек и переменные окружения для Telegram credentials. Основной контур системы состоит из runtime manager, control channel, send service и worker loop.",
      "metadata": {
        "name": "telegram_notify_app_overview",
        "tags": [
          "architecture",
          "telegram",
          "plba",
          "runtime"
        ],
        "type": "architecture_overview",
        "layer": "system",
        "links": [
          {
            "type": "related_api",
            "target": "api.health_endpoint"
          },
          {
            "type": "related_api",
            "target": "api.control_actions_endpoint"
          },
          {
            "type": "related_api",
            "target": "api.send_message_endpoint"
          },
          {
            "type": "depends_on",
            "target": "logic.telegram_notification_loop"
          },
          {
            "type": "depends_on",
            "target": "domain.runtime_health"
          }
        ],
        "owner": null,
        "title": "Архитектура Telegram Notify App",
        "doc_id": null,
        "module": "telegram_notify_app",
        "parent": "docs_root",
        "status": "draft",
        "repo_id": "test_echo_app",
        "section": null,
        "blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
        "children": [
          "api.health_endpoint",
          "api.control_actions_endpoint",
          "api.send_message_endpoint",
          "logic.telegram_notification_loop",
          "domain.runtime_health"
        ],
        "doc_kind": "spec",
        "entities": [
          "TelegramNotifyModule",
          "TelegramNotifyWorker",
          "TelegramControlChannel",
          "TelegramSendService",
          "RuntimeManager"
        ],
        "updated_at": "2026-03-20",
        "doc_version": null,
        "document_id": "architecture.telegram_notify_app",
        "source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
        "summary_text": "`test_echo_app` — сервис на базе PLBA runtime, который поднимает HTTP control plane и запускает фоновый воркер для периодической отправки уведомлений в Telegram. Приложение использует YAML-конфиг для runtime-настроек и переменные окружения для Telegram credentials. Основной контур системы состоит из runtime manager, control channel, send service и worker loop.",
        "artifact_type": null,
        "last_modified": null,
        "staleness_score": null,
        "system_component": null
      }
    }
  ],
  "facts": [],
  "entities": [],
  "workflows": [
    {
      "layer": "D4_WORKFLOW_INDEX",
      "path": "docs/documentation/api/control-actions-endpoint.md",
      "title": "Scenario",
      "content": "Scenario\nHTTP control plane запущен.\n`ControlActionSet` сконфигурирован в `TelegramControlChannel`.\nВ path передано одно из поддерживаемых действий: `start`, `stop`, `status`.\nКлиент отправляет `GET` или `POST` на `/actions/{action}`.\n1. Endpoint принимает запрос и извлекает path parameter `action`.\n2. API определяет источник клиента через `X-Client-Source` или `User-Agent`.\n3. Для `start` и `stop` запрос логируется как control action.\n4. Канал сопоставляет `action` с callback из `ControlActionSet`.\n5. API ожидает завершения callback в пределах допустимого timeout.\n6. При успешном завершении API возвращает JSON со статусом `ok`.\n1. Если `start` или `stop` не успевают завершиться в timeout, API возвращает `202 accepted` и сообщает, что операция еще выполняется.",
      "metadata": {
        "owner": null,
        "doc_id": null,
        "repo_id": "test_echo_app",
        "section": null,
        "trigger": [
          "Клиент отправляет `GET` или `POST` на `/actions/{action}`."
        ],
        "blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
        "main_flow": [
          "1. Endpoint принимает запрос и извлекает path parameter `action`.",
          "2. API определяет источник клиента через `X-Client-Source` или `User-Agent`.",
          "3. Для `start` и `stop` запрос логируется как control action.",
          "4. Канал сопоставляет `action` с callback из `ControlActionSet`.",
          "5. API ожидает завершения callback в пределах допустимого timeout.",
          "6. При успешном завершении API возвращает JSON со статусом `ok`."
        ],
        "doc_version": null,
        "document_id": "api.control_actions_endpoint",
        "source_path": "docs/documentation/api/control-actions-endpoint.md",
        "workflow_id": "f78b822d4366b10322fd4a35e347deae59d55ff4132951201f4df3d1653aec61",
        "artifact_type": null,
        "last_modified": null,
        "preconditions": [
          "HTTP control plane запущен.",
          "`ControlActionSet` сконфигурирован в `TelegramControlChannel`.",
          "В path передано одно из поддерживаемых действий: `start`, `stop`, `status`."
        ],
        "workflow_name": "Scenario",
        "error_handling": [
          "1. Если actions не сконфигурированы, API возвращает `404`.",
          "2. Если передано неподдерживаемое действие, API возвращает `404`.",
          "3. Если callback завершился исключением, API возвращает `500`."
        ],
        "postconditions": [
          "Клиент получает результат выполнения control action или признак, что операция еще продолжается."
        ],
        "staleness_score": null,
        "alternative_flow": [
          "1. Если `start` или `stop` не успевают завершиться в timeout, API возвращает `202 accepted` и сообщает, что операция еще выполняется."
        ],
        "system_component": null
      }
    },
    {
      "layer": "D4_WORKFLOW_INDEX",
      "path": "docs/documentation/api/health-endpoint.md",
      "title": "Scenario",
      "content": "Scenario\nHTTP control plane запущен.\n`TelegramControlChannel` зарегистрирован в runtime.\nКлиент отправляет `GET /health`.\n1. Endpoint принимает HTTP-запрос `GET /health`.\n2. API вызывает `health_provider` через `TelegramControlChannel`.\n3. Канал получает health payload от runtime.\n4. Endpoint определяет HTTP status code по полю `status` в payload.\n5. Endpoint возвращает payload клиенту в формате JSON.\n1. Если runtime вернул статус, отличный от `ok`, endpoint возвращает тот же payload c HTTP 503.",
      "metadata": {
        "owner": null,
        "doc_id": null,
        "repo_id": "test_echo_app",
        "section": null,
        "trigger": [
          "Клиент отправляет `GET /health`."
        ],
        "blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
        "main_flow": [
          "1. Endpoint принимает HTTP-запрос `GET /health`.",
          "2. API вызывает `health_provider` через `TelegramControlChannel`.",
          "3. Канал получает health payload от runtime.",
          "4. Endpoint определяет HTTP status code по полю `status` в payload.",
          "5. Endpoint возвращает payload клиенту в формате JSON."
        ],
        "doc_version": null,
        "document_id": "api.health_endpoint",
        "source_path": "docs/documentation/api/health-endpoint.md",
        "workflow_id": "83a9287bd9ac1f709258078d0e16d326615b4af1b7d77b323ff050dfb97a3e41",
        "artifact_type": null,
        "last_modified": null,
        "preconditions": [
          "HTTP control plane запущен.",
          "`TelegramControlChannel` зарегистрирован в runtime."
        ],
        "workflow_name": "Scenario",
        "error_handling": [
          "1. Если provider завершился исключением, запрос завершается server-side ошибкой."
        ],
        "postconditions": [
          "Клиент получает актуальный health payload runtime."
        ],
        "staleness_score": null,
        "alternative_flow": [
          "1. Если runtime вернул статус, отличный от `ok`, endpoint возвращает тот же payload c HTTP 503."
        ],
        "system_component": null
      }
    }
  ],
  "relations": [
    {
      "layer": "D5_RELATION_GRAPH",
      "path": "docs/documentation/architecture/telegram-notify-app-overview.md",
      "title": "architecture.telegram_notify_app:child",
      "content": "architecture.telegram_notify_app child api.send_message_endpoint",
      "metadata": {
        "owner": null,
        "anchor": "frontmatter.children",
        "doc_id": null,
        "repo_id": "test_echo_app",
        "section": null,
        "blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
        "source_id": "architecture.telegram_notify_app",
        "target_id": "api.send_message_endpoint",
        "doc_version": null,
        "relation_id": "305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94",
        "source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
        "artifact_type": null,
        "last_modified": null,
        "relation_type": "child",
        "staleness_score": null,
        "system_component": null
      }
    },
    {
      "layer": "D5_RELATION_GRAPH",
      "path": "docs/documentation/architecture/telegram-notify-app-overview.md",
      "title": "architecture.telegram_notify_app:related_api",
      "content": "architecture.telegram_notify_app related_api api.health_endpoint",
      "metadata": {
        "owner": null,
        "anchor": "frontmatter.links",
        "doc_id": null,
        "repo_id": "test_echo_app",
        "section": null,
        "blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
        "source_id": "architecture.telegram_notify_app",
        "target_id": "api.health_endpoint",
        "doc_version": null,
        "relation_id": "7bd0428d23e9b20f7d65202cc269e45b3d1e7aed7b5df4a35581fd88677be29b",
        "source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
        "artifact_type": null,
        "last_modified": null,
        "relation_type": "related_api",
        "staleness_score": null,
        "system_component": null
      }
    }
  ],
  "chunks": [
    {
      "layer": "D0_DOC_CHUNKS",
      "path": "docs/documentation/architecture/telegram-notify-app-overview.md",
      "title": "architecture.telegram_notify_app:Details",
      "content": "Сервис стартует из `telegram_notify_app.main`, загружает `config/config.yaml` или путь из `CONFIG_PATH`, извлекает настройки control plane и интервал отправки, затем собирает runtime через `RuntimeManager`. В runtime регистрируются `TelegramControlChannel` и `TelegramNotifyModule`, который добавляет `TelegramNotifyWorker` и `TelegramSendService`.\n\n`TelegramControlChannel` поднимает FastAPI-приложение control plane и публикует endpoints `/health`, `/actions/{action}` и `/send`. Через эти endpoints внешний клиент получает состояние runtime, управляет lifecycle worker'а и инициирует ручную отправку сообщений.\n\n`TelegramNotifyWorker` работает в отдельном daemon thread. После старта он сразу делает первую попытку отправки сообщения, затем повторяет отправку через интервал `telegram.interval_seconds`. Если credentials отсутствуют или Telegram API возвращает ошибку, worker не переводит runtime в fatal state, а остается в рабочем цикле с деградированным статусом.\n\nHealth-модель сервиса строится вокруг компонента `telegram_notify`. Во внешнем health payload отражаются общее состояние runtime, время старта worker'а и количество успешных отправок. Детали HTTP API и worker workflow вынесены в дочерние документы.",
      "metadata": {
        "tags": [
          "architecture",
          "telegram",
          "plba",
          "runtime"
        ],
        "type": "architecture_overview",
        "order": 2,
        "owner": null,
        "doc_id": null,
        "module": "telegram_notify_app",
        "repo_id": "test_echo_app",
        "section": null,
        "blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
        "doc_kind": "spec",
        "doc_version": null,
        "document_id": "architecture.telegram_notify_app",
        "source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
        "section_path": "Details",
        "artifact_type": null,
        "last_modified": null,
        "section_title": "Details",
        "staleness_score": null,
        "system_component": null
      }
    },
    {
      "layer": "D0_DOC_CHUNKS",
      "path": "docs/documentation/architecture/telegram-notify-app-overview.md",
      "title": "architecture.telegram_notify_app:Summary",
      "content": "`test_echo_app` — сервис на базе PLBA runtime, который поднимает HTTP control plane и запускает фоновый воркер для периодической отправки уведомлений в Telegram. Приложение использует YAML-конфиг для runtime-настроек и переменные окружения для Telegram credentials. Основной контур системы состоит из runtime manager, control channel, send service и worker loop.",
      "metadata": {
        "tags": [
          "architecture",
          "telegram",
          "plba",
          "runtime"
        ],
        "type": "architecture_overview",
        "order": 1,
        "owner": null,
        "doc_id": null,
        "module": "telegram_notify_app",
        "repo_id": "test_echo_app",
        "section": null,
        "blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
        "doc_kind": "spec",
        "doc_version": null,
        "document_id": "architecture.telegram_notify_app",
        "source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
        "section_path": "Summary",
        "artifact_type": null,
        "last_modified": null,
        "section_title": "Summary",
        "staleness_score": null,
        "system_component": null
      }
    }
  ]
}
```

### User Prompt Overview
- question: Как работает процесс отправки уведомлений в Telegram?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: SYSTEM_FLOW_EXPLAIN
- documents: 1 | samples: Архитектура Telegram Notify App
- facts: 0
- relations: 2 | samples: architecture.telegram_notify_app:child, architecture.telegram_notify_app:related_api

## Mismatches
- none