удалил тестовые данные

This commit is contained in:
2026-04-07 21:41:20 +03:00
parent 6b74d410cd
commit bc29d51a29
1529 changed files with 0 additions and 289245 deletions
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "docs-v2-api-health-endpoint",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 2,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Объясни что делает endpoint /health"
},
"output": {
"query": "Объясни что делает endpoint /health"
}
},
{
"step": "router",
"input": {
"query": "Объясни что делает endpoint /health"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Объясни что делает endpoint /health"
},
"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": 2265,
"tokens_in_estimate": 665
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,368 +0,0 @@
# docs-v2-api-health-endpoint
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Объясни что делает endpoint /health
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 2,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Объясни что делает endpoint /health"
},
"output": {
"query": "Объясни что делает endpoint /health"
}
}
```
### router
```json
{
"input": {
"query": "Объясни что делает endpoint /health"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Объясни что делает endpoint /health"
},
"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": 2265,
"tokens_in_estimate": 665
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 0,
"relations_found": 0,
"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": "endpoint",
"matched_anchor_value": "/health",
"exact_anchor_match": true,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"a8a325e0815b3a2a870ba2825f3afb3f41056b4c091df4c3bb3418ffd20891dd",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/health"
],
"resolved_anchor_candidates": [
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.health_endpoint"
],
"doc_paths": [
"docs/documentation/api/health-endpoint.md"
],
"doc_titles": [
"HTTP API /health",
"Scenario"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 1,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 0,
"relations": 0,
"chunks": 0,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "evidence_sufficient",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 2265,
"tokens_in_estimate": 665
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Объясни что делает endpoint /health",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Объясни что делает endpoint /health
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 1 | samples: HTTP API /health
- facts: 0
- relations: 0
## Mismatches
- none
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "docs-v2-api-send-endpoint",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 2,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Как работает endpoint /send?"
},
"output": {
"query": "Как работает endpoint /send?"
}
},
{
"step": "router",
"input": {
"query": "Как работает endpoint /send?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как работает endpoint /send?"
},
"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": 2309,
"tokens_in_estimate": 676
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,367 +0,0 @@
# docs-v2-api-send-endpoint
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Как работает endpoint /send?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 2,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Как работает endpoint /send?"
},
"output": {
"query": "Как работает endpoint /send?"
}
}
```
### router
```json
{
"input": {
"query": "Как работает endpoint /send?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как работает endpoint /send?"
},
"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": 2309,
"tokens_in_estimate": 676
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 0,
"relations_found": 0,
"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": "endpoint",
"matched_anchor_value": "/send",
"exact_anchor_match": true,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"docs/README.md"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/send"
],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /send",
"Scenario"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 1,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 0,
"relations": 0,
"chunks": 0,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "evidence_sufficient",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 2309,
"tokens_in_estimate": 676
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как работает endpoint /send?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Как работает endpoint /send?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 1 | samples: HTTP API /send
- facts: 0
- relations: 0
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "docs-v2-component-control-channel",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"TelegramControlChannel"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Объясни как работает компонент TelegramControlChannel"
},
"output": {
"query": "Объясни как работает компонент TelegramControlChannel"
}
},
{
"step": "router",
"input": {
"query": "Объясни как работает компонент TelegramControlChannel"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Объясни как работает компонент TelegramControlChannel"
},
"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": 21517,
"tokens_in_estimate": 5478
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,900 +0,0 @@
# docs-v2-component-control-channel
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Объясни как работает компонент TelegramControlChannel
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"TelegramControlChannel"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Объясни как работает компонент TelegramControlChannel"
},
"output": {
"query": "Объясни как работает компонент TelegramControlChannel"
}
}
```
### router
```json
{
"input": {
"query": "Объясни как работает компонент TelegramControlChannel"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Объясни как работает компонент TelegramControlChannel"
},
"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": 21517,
"tokens_in_estimate": 5478
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 6,
"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": "component",
"matched_anchor_value": "TelegramControlChannel",
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint",
"architecture.telegram_notify_app",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"TelegramControlChannel"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"TelegramControlChannel"
],
"resolved_anchor_candidates": [
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 21517,
"tokens_in_estimate": 5478
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Объясни как работает компонент TelegramControlChannel",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step HTTP control plane запущен.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "HTTP control plane запущен.",
"fact_id": "b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "02530527e6e1d1e23316c9d25d0b30658d6c70063eb6e1d732d55c5ba29c9795",
"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
}
}
]
}
```
### User Prompt Overview
- question: Объясни как работает компонент TelegramControlChannel
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: HTTP API /actions/{action}, Архитектура Telegram Notify App, Readme
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 6 | samples: api.control_actions_endpoint:parent, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "docs-v2-component-runtime-manager",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"RuntimeManager"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Какую роль в системе играет RuntimeManager?"
},
"output": {
"query": "Какую роль в системе играет RuntimeManager?"
}
},
{
"step": "router",
"input": {
"query": "Какую роль в системе играет RuntimeManager?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Какую роль в системе играет RuntimeManager?"
},
"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": 21507,
"tokens_in_estimate": 5475
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,900 +0,0 @@
# docs-v2-component-runtime-manager
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Какую роль в системе играет RuntimeManager?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"RuntimeManager"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Какую роль в системе играет RuntimeManager?"
},
"output": {
"query": "Какую роль в системе играет RuntimeManager?"
}
}
```
### router
```json
{
"input": {
"query": "Какую роль в системе играет RuntimeManager?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Какую роль в системе играет RuntimeManager?"
},
"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": 21507,
"tokens_in_estimate": 5475
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint",
"architecture.telegram_notify_app",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"RuntimeManager"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"RuntimeManager"
],
"resolved_anchor_candidates": [
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 21507,
"tokens_in_estimate": 5475
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Какую роль в системе играет RuntimeManager?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step HTTP control plane запущен.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "HTTP control plane запущен.",
"fact_id": "b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "02530527e6e1d1e23316c9d25d0b30658d6c70063eb6e1d732d55c5ba29c9795",
"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
}
}
]
}
```
### User Prompt Overview
- question: Какую роль в системе играет RuntimeManager?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: HTTP API /actions/{action}, Архитектура Telegram Notify App, Readme
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 6 | samples: api.control_actions_endpoint:parent, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "docs-v2-entity-runtime-health",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 26,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [
"runtime health"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Что такое runtime health?"
},
"output": {
"query": "Что такое runtime health?"
}
},
{
"step": "router",
"input": {
"query": "Что такое runtime health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что такое runtime health?"
},
"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": 20267,
"tokens_in_estimate": 5165
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,865 +0,0 @@
# docs-v2-entity-runtime-health
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Что такое runtime health?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 26,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [
"runtime health"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": "Что такое runtime health?"
},
"output": {
"query": "Что такое runtime health?"
}
}
```
### router
```json
{
"input": {
"query": "Что такое runtime health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что такое runtime health?"
},
"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": 20267,
"tokens_in_estimate": 5165
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"layers_used": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D3_ENTITY_CATALOG": {
"hits": 8,
"top_ids": [
"api.health_endpoint",
"architecture.telegram_notify_app",
"domain.runtime_health"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"architecture.telegram_notify_app"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"79bdb0a74713df6064008179ca8c5c186dc23e4e1c5e2c9607b0bdddeba50f93",
"af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.health_endpoint"
]
}
},
"query_entity_candidates": [
"runtime health"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/health-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"RuntimeManager",
"WorkerStatus",
"TelegramNotifyWorker",
"TelegramControlChannel",
"WorkerHealth",
"Сущность runtime health",
"HTTP API /health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"HTTP API /send",
"domain.runtime_health:parent",
"domain.runtime_health:part_of",
"api.health_endpoint:depends_on",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"domain.runtime_health:used_by",
"api.health_endpoint:Сценарий",
"api.health_endpoint:Нефункциональные требования",
"api.health_endpoint:Summary",
"api.health_endpoint:Описание",
"api.health_endpoint:Функциональные требования",
"api.health_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"domain.runtime_health:parent",
"domain.runtime_health:part_of",
"api.health_endpoint:depends_on",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"domain.runtime_health:used_by"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 20267,
"tokens_in_estimate": 5165
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что такое runtime health?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:parent",
"content": "domain.runtime_health parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "79bdb0a74713df6064008179ca8c5c186dc23e4e1c5e2c9607b0bdddeba50f93",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:part_of",
"content": "domain.runtime_health part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:used_by",
"content": "domain.runtime_health used_by api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "801650f8bcbfbfbefd35c14447bfef7b3c3827313db790efa7faf47db860f8c4",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "used_by",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Что такое runtime health?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: ENTITY_EXPLAIN
- documents: 6 | samples: Сущность runtime health, HTTP API /health, Цикл отправки уведомлений в Telegram
- facts: 0
- relations: 6 | samples: domain.runtime_health:parent, domain.runtime_health:part_of, api.health_endpoint:depends_on
## Mismatches
- none
@@ -1,86 +0,0 @@
{
"meta": {
"case_id": "docs-v2-entity-worker-status",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 4,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"logic.telegram_notification_loop"
],
"entity_candidates": [
"WorkerStatus"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Объясни сущность WorkerStatus"
},
"output": {
"query": "Объясни сущность WorkerStatus"
}
},
{
"step": "router",
"input": {
"query": "Объясни сущность WorkerStatus"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Объясни сущность WorkerStatus"
},
"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": 2555,
"tokens_in_estimate": 737
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,384 +0,0 @@
# docs-v2-entity-worker-status
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Объясни сущность WorkerStatus
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 4,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"logic.telegram_notification_loop"
],
"entity_candidates": [
"WorkerStatus"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": "Объясни сущность WorkerStatus"
},
"output": {
"query": "Объясни сущность WorkerStatus"
}
}
```
### router
```json
{
"input": {
"query": "Объясни сущность WorkerStatus"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Объясни сущность WorkerStatus"
},
"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": 2555,
"tokens_in_estimate": 737
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"layers_used": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 0,
"relations_found": 0,
"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": "entity",
"matched_anchor_value": "WorkerStatus",
"exact_anchor_match": true,
"docs_layers_requested": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D3_ENTITY_CATALOG": {
"hits": 8,
"top_ids": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.health_endpoint"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"logic.telegram_notification_loop",
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"WorkerStatus"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"WorkerStatus"
],
"resolved_anchor_candidates": [
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"domain.runtime_health",
"logic.telegram_notification_loop"
],
"doc_paths": [
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md"
],
"doc_titles": [
"WorkerStatus",
"logic.telegram_notification_loop:Details",
"Сущность runtime health"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 2,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 0,
"relations": 0,
"chunks": 1,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "evidence_sufficient",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 2555,
"tokens_in_estimate": 737
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Объясни сущность WorkerStatus",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Объясни сущность WorkerStatus
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: ENTITY_EXPLAIN
- documents: 1 | samples: Сущность runtime health
- facts: 0
- relations: 0
## Mismatches
- none
@@ -1,85 +0,0 @@
{
"meta": {
"case_id": "docs-v2-general-overview",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Что вообще описано в документации по этому сервису?"
},
"output": {
"query": "Что вообще описано в документации по этому сервису?"
}
},
{
"step": "router",
"input": {
"query": "Что вообще описано в документации по этому сервису?"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что вообще описано в документации по этому сервису?"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 7589,
"tokens_in_estimate": 1984
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,493 +0,0 @@
# docs-v2-general-overview
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Что вообще описано в документации по этому сервису?
## Actual
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Что вообще описано в документации по этому сервису?"
},
"output": {
"query": "Что вообще описано в документации по этому сервису?"
}
}
```
### router
```json
{
"input": {
"query": "Что вообще описано в документации по этому сервису?"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что вообще описано в документации по этому сервису?"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 7589,
"tokens_in_estimate": 1984
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 4,
"facts_found": 0,
"relations_found": 0,
"openapi_fields_extracted": 0,
"missing_required_fields": [],
"openapi_status": {
"has_path": false,
"has_method": false,
"has_request": false,
"has_response": false
},
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 4,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 8,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/README.md",
"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"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/README.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"Readme",
"HTTP API /actions/{action}",
"HTTP API /health",
"HTTP API /send",
"docs/README.md:Структура",
"docs/README.md:Навигация",
"docs/README.md:Правила и шаблоны",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Функциональные требования",
"docs/README.md:Project Docs"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 4,
"facts": 0,
"relations": 0,
"chunks": 8,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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_general_answer
- log_context: graph.project_qa.docs.answer
### Prompt Stats
```json
{
"system_chars": 345,
"user_chars": 7589,
"tokens_in_estimate": 1984
}
```
### System Prompt
```text
Ты отвечаешь на общий вопрос по документации проекта.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные документы и факты
- Не додумывай отсутствующие детали
- Если данных недостаточно, скажи это прямо
- Дай короткий понятный ответ без лишней структуры
```
### User Prompt
```json
{
"question": "Что вообще описано в документации по этому сервису?",
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Что вообще описано в документации по этому сервису?
- intent: GENERAL_QA
- sub_intent: GENERIC_QA
- documents: 4 | samples: Readme, HTTP API /actions/{action}, HTTP API /health
- facts: 0
- relations: 0
## Mismatches
- none
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "docs-v2-negative-missing-entity",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 0,
"llm_answer": "",
"answer_mode": "degraded",
"path_scope": [],
"doc_scope": [],
"entity_candidates": [
"PaymentTransaction"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "reject",
"prompt_used": "docs_explain_answer",
"llm_mode": "prose",
"degraded_reason": "not_found_exact_anchor",
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Что такое сущность PaymentTransaction?"
},
"output": {
"query": "Что такое сущность PaymentTransaction?"
}
},
{
"step": "router",
"input": {
"query": "Что такое сущность PaymentTransaction?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что такое сущность PaymentTransaction?"
},
"output": {
"answer_mode": "degraded",
"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": 182,
"tokens_in_estimate": 144
}
},
"degraded_reason": "not_found_exact_anchor"
}
}
]
}
@@ -1,307 +0,0 @@
# docs-v2-negative-missing-entity
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Что такое сущность PaymentTransaction?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 0,
"llm_answer": "",
"answer_mode": "degraded",
"path_scope": [],
"doc_scope": [],
"entity_candidates": [
"PaymentTransaction"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "reject",
"prompt_used": "docs_explain_answer",
"llm_mode": "prose",
"degraded_reason": "not_found_exact_anchor",
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Что такое сущность PaymentTransaction?"
},
"output": {
"query": "Что такое сущность PaymentTransaction?"
}
}
```
### router
```json
{
"input": {
"query": "Что такое сущность PaymentTransaction?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что такое сущность PaymentTransaction?"
},
"output": {
"answer_mode": "degraded",
"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": 182,
"tokens_in_estimate": 144
}
},
"degraded_reason": "not_found_exact_anchor"
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"layers_used": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 0,
"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": false,
"matched_intent_source": "deterministic",
"matched_anchor_type": "entity",
"matched_anchor_value": "PaymentTransaction",
"exact_anchor_match": false,
"docs_layers_requested": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D3_ENTITY_CATALOG": {
"hits": 8,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"PaymentTransaction"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"PaymentTransaction"
],
"resolved_anchor_candidates": [],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [],
"doc_paths": [],
"doc_titles": [],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 0,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 0,
"chunks": 0,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "reject",
"gate_decision_reason": "not_found_exact_anchor",
"gate_missing_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"gate_satisfied_requirements": [],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
},
"requested_fragment_type": null,
"fragment_evidence_found": [],
"fragment_missing_requirements": [],
"answer_mode": "degraded",
"degrade_reason": "not_found_exact_anchor",
"degraded_reason": "not_found_exact_anchor",
"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": 182,
"tokens_in_estimate": 144
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что такое сущность PaymentTransaction?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"documents": [],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Что такое сущность PaymentTransaction?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: ENTITY_EXPLAIN
- documents: 0
- facts: 0
- relations: 0
## Mismatches
- none
@@ -1,82 +0,0 @@
{
"meta": {
"case_id": "docs-v2-openapi-fragment-send-request",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_FRAGMENT_GENERATE",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 1,
"llm_answer": "",
"answer_mode": "structured_spec",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "partial",
"prompt_used": "docs_openapi_fragment_answer",
"llm_mode": "yaml",
"degraded_reason": "fragment_payload_only",
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Сгенерируй request schema для endpoint /send"
},
"output": {
"query": "Сгенерируй request schema для endpoint /send"
}
},
{
"step": "router",
"input": {
"query": "Сгенерируй request schema для endpoint /send"
},
"output": {
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_FRAGMENT_GENERATE",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Сгенерируй request schema для endpoint /send"
},
"output": {
"answer_mode": "ready_partial",
"prompt_name": "docs_openapi_fragment_answer",
"llm_request": {
"prompt_name": "docs_openapi_fragment_answer",
"log_context": "graph.project_qa.docs.openapi",
"prompt_stats": {
"system_chars": 319,
"user_chars": 2748,
"tokens_in_estimate": 767
}
},
"degraded_reason": "fragment_payload_only"
}
}
]
}
@@ -1,383 +0,0 @@
# docs-v2-openapi-fragment-send-request
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Сгенерируй request schema для endpoint /send
## Actual
{
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_FRAGMENT_GENERATE",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 1,
"llm_answer": "",
"answer_mode": "structured_spec",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "partial",
"prompt_used": "docs_openapi_fragment_answer",
"llm_mode": "yaml",
"degraded_reason": "fragment_payload_only",
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Сгенерируй request schema для endpoint /send"
},
"output": {
"query": "Сгенерируй request schema для endpoint /send"
}
}
```
### router
```json
{
"input": {
"query": "Сгенерируй request schema для endpoint /send"
},
"output": {
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_FRAGMENT_GENERATE",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Сгенерируй request schema для endpoint /send"
},
"output": {
"answer_mode": "ready_partial",
"prompt_name": "docs_openapi_fragment_answer",
"llm_request": {
"prompt_name": "docs_openapi_fragment_answer",
"log_context": "graph.project_qa.docs.openapi",
"prompt_stats": {
"system_chars": 319,
"user_chars": 2748,
"tokens_in_estimate": 767
}
},
"degraded_reason": "fragment_payload_only"
}
}
```
## Diagnostics
{
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_FRAGMENT_GENERATE",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 0,
"relations_found": 0,
"openapi_fields_extracted": 0,
"missing_required_fields": [
"method",
"schema_fragment"
],
"openapi_status": {
"has_path": true,
"has_method": false,
"has_request": false,
"has_response": false
},
"prompt_used": "docs_openapi_fragment_answer",
"llm_mode": "yaml",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "endpoint",
"matched_anchor_value": "/send",
"exact_anchor_match": true,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 7,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"docs/README.md"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/send"
],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /send"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 1,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 0,
"relations": 0,
"chunks": 0,
"entity_hits": 0,
"openapi_signals": {
"path_found": true,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": true
}
},
"gate_decision": "partial",
"gate_decision_reason": "fragment_payload_only",
"gate_missing_requirements": [
"http_method_found",
"contract_fields_found",
"status_codes_found"
],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match",
"path_found",
"payload_description_found",
"api_method_filter"
],
"openapi_evidence": {
"path_found": true,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": true
},
"requested_fragment_type": "request_schema",
"fragment_evidence_found": [
"path",
"payload_description"
],
"fragment_missing_requirements": [],
"answer_mode": "ready_partial",
"degrade_reason": "fragment_payload_only",
"degraded_reason": "fragment_payload_only",
"code_intents_stubbed": false
}
## LLM Request
- prompt_name: docs_openapi_fragment_answer
- log_context: graph.project_qa.docs.openapi
### Prompt Stats
```json
{
"system_chars": 319,
"user_chars": 2748,
"tokens_in_estimate": 767
}
```
### System Prompt
```text
Ты генерируешь часть OpenAPI schema по документации API.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
- api_contract
Правила:
- Только schema
- Без полного OpenAPI документа
- Используй только данные из payload
- Не придумывай поля
- Верни ТОЛЬКО YAML без пояснений
```
### User Prompt
```json
{
"question": "Сгенерируй request schema для endpoint /send",
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_FRAGMENT_GENERATE",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [],
"api_contract": {
"path": "/send",
"method": "",
"request_schema": null,
"response_schema": null,
"diagnostics": {
"has_path": true,
"has_method": false,
"has_request": false,
"has_response": false,
"status_codes_found": false,
"payload_description_found": true,
"missing_required_fields": [
"method",
"schema_fragment"
]
}
}
}
```
### User Prompt Overview
- question: Сгенерируй request schema для endpoint /send
- intent: OPENAPI_GENERATION
- sub_intent: OPENAPI_FRAGMENT_GENERATE
- documents: 1 | samples: HTTP API /send
- facts: 0
- relations: 0
- api_contract:
path: /send
method: —
has_request_schema: False
has_response_schema: False
## Mismatches
- none
@@ -1,84 +0,0 @@
{
"meta": {
"case_id": "docs-v2-openapi-health",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_METHOD_GENERATE",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 1,
"llm_answer": "",
"answer_mode": "structured_spec",
"path_scope": [],
"doc_scope": [
"api.health_endpoint"
],
"entity_candidates": [
"OpenAPI"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "partial",
"prompt_used": "docs_openapi_answer",
"llm_mode": "yaml",
"degraded_reason": "answered_with_gaps",
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Сгенерируй OpenAPI для endpoint /health по документации"
},
"output": {
"query": "Сгенерируй OpenAPI для endpoint /health по документации"
}
},
{
"step": "router",
"input": {
"query": "Сгенерируй OpenAPI для endpoint /health по документации"
},
"output": {
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_METHOD_GENERATE",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Сгенерируй OpenAPI для endpoint /health по документации"
},
"output": {
"answer_mode": "ready_partial",
"prompt_name": "docs_openapi_answer",
"llm_request": {
"prompt_name": "docs_openapi_answer",
"log_context": "graph.project_qa.docs.openapi",
"prompt_stats": {
"system_chars": 399,
"user_chars": 2733,
"tokens_in_estimate": 783
}
},
"degraded_reason": "answered_with_gaps"
}
}
]
}
@@ -1,395 +0,0 @@
# docs-v2-openapi-health
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Сгенерируй OpenAPI для endpoint /health по документации
## Actual
{
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_METHOD_GENERATE",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 1,
"llm_answer": "",
"answer_mode": "structured_spec",
"path_scope": [],
"doc_scope": [
"api.health_endpoint"
],
"entity_candidates": [
"OpenAPI"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "partial",
"prompt_used": "docs_openapi_answer",
"llm_mode": "yaml",
"degraded_reason": "answered_with_gaps",
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Сгенерируй OpenAPI для endpoint /health по документации"
},
"output": {
"query": "Сгенерируй OpenAPI для endpoint /health по документации"
}
}
```
### router
```json
{
"input": {
"query": "Сгенерируй OpenAPI для endpoint /health по документации"
},
"output": {
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_METHOD_GENERATE",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Сгенерируй OpenAPI для endpoint /health по документации"
},
"output": {
"answer_mode": "ready_partial",
"prompt_name": "docs_openapi_answer",
"llm_request": {
"prompt_name": "docs_openapi_answer",
"log_context": "graph.project_qa.docs.openapi",
"prompt_stats": {
"system_chars": 399,
"user_chars": 2733,
"tokens_in_estimate": 783
}
},
"degraded_reason": "answered_with_gaps"
}
}
```
## Diagnostics
{
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_METHOD_GENERATE",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 0,
"relations_found": 0,
"openapi_fields_extracted": 0,
"missing_required_fields": [
"method",
"request_schema",
"response_schema"
],
"openapi_status": {
"has_path": true,
"has_method": false,
"has_request": false,
"has_response": false
},
"prompt_used": "docs_openapi_answer",
"llm_mode": "yaml",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "endpoint",
"matched_anchor_value": "/health",
"exact_anchor_match": true,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 7,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"a8a325e0815b3a2a870ba2825f3afb3f41056b4c091df4c3bb3418ffd20891dd",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"OpenAPI"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/health",
"OpenAPI"
],
"resolved_anchor_candidates": [
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.health_endpoint"
],
"doc_paths": [
"docs/documentation/api/health-endpoint.md"
],
"doc_titles": [
"HTTP API /health"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 1,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 0,
"relations": 0,
"chunks": 0,
"entity_hits": 0,
"openapi_signals": {
"path_found": true,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": true,
"payload_description": true
}
},
"gate_decision": "partial",
"gate_decision_reason": "answered_with_gaps",
"gate_missing_requirements": [
"http_method_found",
"contract_fields_found"
],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match",
"path_found",
"status_codes_found",
"payload_description_found",
"api_method_filter"
],
"openapi_evidence": {
"path_found": true,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": true,
"payload_description": true
},
"requested_fragment_type": null,
"fragment_evidence_found": [],
"fragment_missing_requirements": [],
"answer_mode": "ready_partial",
"degrade_reason": "answered_with_gaps",
"degraded_reason": "answered_with_gaps",
"code_intents_stubbed": false
}
## LLM Request
- prompt_name: docs_openapi_answer
- log_context: graph.project_qa.docs.openapi
### Prompt Stats
```json
{
"system_chars": 399,
"user_chars": 2733,
"tokens_in_estimate": 783
}
```
### System Prompt
```text
Ты генерируешь OpenAPI спецификацию по документации API.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
- api_contract
Правила:
- Используй только данные из документации
- Не придумывай поля
- Если данных нет, не заполняй
- Верни ТОЛЬКО YAML без пояснений
Формат:
paths:
/path:
method:
summary: ...
requestBody:
responses:
```
### User Prompt
```json
{
"question": "Сгенерируй OpenAPI для endpoint /health по документации",
"intent": "OPENAPI_GENERATION",
"sub_intent": "OPENAPI_METHOD_GENERATE",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [],
"api_contract": {
"path": "/health",
"method": "",
"request_schema": null,
"response_schema": null,
"diagnostics": {
"has_path": true,
"has_method": false,
"has_request": false,
"has_response": false,
"status_codes_found": true,
"payload_description_found": true,
"missing_required_fields": [
"method",
"request_schema",
"response_schema"
]
}
}
}
```
### User Prompt Overview
- question: Сгенерируй OpenAPI для endpoint /health по документации
- intent: OPENAPI_GENERATION
- sub_intent: OPENAPI_METHOD_GENERATE
- documents: 1 | samples: HTTP API /health
- facts: 0
- relations: 0
- api_contract:
path: /health
method: —
has_request_schema: False
has_response_schema: False
## Mismatches
- none
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "docs-v2-related-docs-architecture-overview",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 5,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"architecture.telegram_notify_app_overview",
"architecture.telegram_notify_app"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Какие дочерние документы есть у overview архитектуры сервиса?"
},
"output": {
"query": "Какие дочерние документы есть у overview архитектуры сервиса?"
}
},
{
"step": "router",
"input": {
"query": "Какие дочерние документы есть у overview архитектуры сервиса?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Какие дочерние документы есть у overview архитектуры сервиса?"
},
"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": 3236,
"tokens_in_estimate": 908
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,372 +0,0 @@
# docs-v2-related-docs-architecture-overview
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Какие дочерние документы есть у overview архитектуры сервиса?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 5,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"architecture.telegram_notify_app_overview",
"architecture.telegram_notify_app"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Какие дочерние документы есть у overview архитектуры сервиса?"
},
"output": {
"query": "Какие дочерние документы есть у overview архитектуры сервиса?"
}
}
```
### router
```json
{
"input": {
"query": "Какие дочерние документы есть у overview архитектуры сервиса?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Какие дочерние документы есть у overview архитектуры сервиса?"
},
"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": 3236,
"tokens_in_estimate": 908
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"layers_used": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 3,
"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": "graph_summary",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "workflow",
"matched_anchor_value": "архитектуры",
"exact_anchor_match": false,
"docs_layers_requested": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D5_RELATION_GRAPH"
],
"planned_layers": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D5_RELATION_GRAPH"
],
"non_empty_layers": [
"D5_RELATION_GRAPH"
],
"layer_diagnostics": {
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94",
"7bd0428d23e9b20f7d65202cc269e45b3d1e7aed7b5df4a35581fd88677be29b",
"0eb7f73fcda8556439e06f5eeb5ce064ae32b6cd3129353f5b1b4eb3db626d88",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"145ccbb861a8fb621286ec9c888ce69677168d35c7871c70537e888ce3a5b910"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 0,
"top_ids": [],
"skipped": true,
"reason": "relation_primary_sufficient"
},
"D0_DOC_CHUNKS": {
"hits": 2,
"top_ids": [
"architecture.telegram_notify_app"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/documentation/architecture/telegram-notify-app-overview.md",
"architecture.telegram_notify_app"
],
"anchor_candidates": [
"architecture.telegram_notify_app_overview",
"architecture.telegram_notify_app"
],
"selected_anchor": "architecture.telegram_notify_app_overview",
"anchor_selection_reason": "relation_neighbor",
"anchor_match_type": "semantic_fallback",
"doc_ids": [
"architecture.telegram_notify_app_overview",
"architecture.telegram_notify_app"
],
"doc_paths": [
"docs/documentation/architecture/telegram-notify-app-overview.md"
],
"doc_titles": [
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:parent",
"architecture.telegram_notify_app:Summary",
"architecture.telegram_notify_app:Details"
],
"relation_hits_count": 3,
"relation_targets": [
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:parent"
],
"fallback_doc_hits_count": 2,
"fallback_used": true,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 3,
"chunks": 2,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "relation_evidence_available",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 3236,
"tokens_in_estimate": 908
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Какие дочерние документы есть у overview архитектуры сервиса?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"documents": [],
"facts": [],
"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
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"title": "architecture.telegram_notify_app:parent",
"content": "architecture.telegram_notify_app parent docs_root",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
"source_id": "architecture.telegram_notify_app",
"target_id": "docs_root",
"doc_version": null,
"relation_id": "e01922b36e3cc60d9349f89e43fcd4a92c6a01394b0028d6b6d56801b258645d",
"source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Какие дочерние документы есть у overview архитектуры сервиса?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: RELATED_DOCS_EXPLAIN
- documents: 0
- facts: 0
- relations: 3 | samples: architecture.telegram_notify_app:child, architecture.telegram_notify_app:related_api, architecture.telegram_notify_app:parent
## Mismatches
- none
@@ -1,84 +0,0 @@
{
"meta": {
"case_id": "docs-v2-related-docs-health",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 14,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint",
"api.control_actions_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Какие документы связаны с endpoint /health?"
},
"output": {
"query": "Какие документы связаны с endpoint /health?"
}
},
{
"step": "router",
"input": {
"query": "Какие документы связаны с endpoint /health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Какие документы связаны с endpoint /health?"
},
"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": 7998,
"tokens_in_estimate": 2098
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,516 +0,0 @@
# docs-v2-related-docs-health
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Какие документы связаны с endpoint /health?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 14,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint",
"api.control_actions_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Какие документы связаны с endpoint /health?"
},
"output": {
"query": "Какие документы связаны с endpoint /health?"
}
}
```
### router
```json
{
"input": {
"query": "Какие документы связаны с endpoint /health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Какие документы связаны с endpoint /health?"
},
"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": 7998,
"tokens_in_estimate": 2098
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"layers_used": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 8,
"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": "graph_summary",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "endpoint",
"matched_anchor_value": "/health",
"exact_anchor_match": false,
"docs_layers_requested": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D5_RELATION_GRAPH"
],
"planned_layers": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D5_RELATION_GRAPH"
],
"non_empty_layers": [
"D5_RELATION_GRAPH"
],
"layer_diagnostics": {
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 0,
"top_ids": [],
"skipped": true,
"reason": "relation_primary_sufficient"
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/health"
],
"resolved_anchor_candidates": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint"
],
"anchor_candidates": [
"api.health_endpoint",
"api.control_actions_endpoint",
"api.send_message_endpoint"
],
"selected_anchor": "api.health_endpoint",
"anchor_selection_reason": "doc_id matches requested endpoint slug",
"anchor_match_type": "exact_path",
"doc_ids": [
"api.health_endpoint",
"api.control_actions_endpoint",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"api.send_message_endpoint:parent",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 8,
"relation_targets": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"api.send_message_endpoint:parent",
"api.control_actions_endpoint:parent"
],
"fallback_doc_hits_count": 6,
"fallback_used": true,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 8,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "relation_evidence_available",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 7998,
"tokens_in_estimate": 2098
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Какие документы связаны с endpoint /health?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"documents": [],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:parent",
"content": "api.send_message_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"source_id": "api.send_message_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "33eb0aa97f06d0afcaa4c230b5f5b73fa2fbfa5861ea9367b6c92f8a6fe0c054",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Какие документы связаны с endpoint /health?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: RELATED_DOCS_EXPLAIN
- documents: 0
- facts: 0
- relations: 8 | samples: api.control_actions_endpoint:part_of, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "docs-v2-system-flow-health-check",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 23,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Как происходит получение health состояния runtime?"
},
"output": {
"query": "Как происходит получение health состояния runtime?"
}
},
{
"step": "router",
"input": {
"query": "Как происходит получение health состояния runtime?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как происходит получение health состояния runtime?"
},
"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": 22272,
"tokens_in_estimate": 5667
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,909 +0,0 @@
# docs-v2-system-flow-health-check
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Как происходит получение health состояния runtime?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 23,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": "Как происходит получение health состояния runtime?"
},
"output": {
"query": "Как происходит получение health состояния runtime?"
}
}
```
### router
```json
{
"input": {
"query": "Как происходит получение health состояния runtime?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как происходит получение health состояния runtime?"
},
"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": 22272,
"tokens_in_estimate": 5667
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 8,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"architecture.telegram_notify_app"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.health_endpoint",
"api.control_actions_endpoint",
"api.send_message_endpoint"
]
},
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"801650f8bcbfbfbefd35c14447bfef7b3c3827313db790efa7faf47db860f8c4",
"8595d7b82fecdb7ef579fa8961cda6799bb21970061e5bc221d4dd7a3d53fd04",
"af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.health_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"Сущность runtime health",
"HTTP API /health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"HTTP API /send",
"Scenario",
"domain.runtime_health:used_by",
"domain.runtime_health:related_logic",
"domain.runtime_health:part_of",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"domain.runtime_health:parent",
"api.control_actions_endpoint:related_api",
"api.health_endpoint:Сценарий",
"api.health_endpoint:Нефункциональные требования",
"api.health_endpoint:Summary",
"api.health_endpoint:Описание",
"api.health_endpoint:Функциональные требования",
"api.health_endpoint:Входные параметры"
],
"relation_hits_count": 8,
"relation_targets": [
"domain.runtime_health:used_by",
"domain.runtime_health:related_logic",
"domain.runtime_health:part_of",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"domain.runtime_health:parent",
"api.control_actions_endpoint:related_api"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 8,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 22272,
"tokens_in_estimate": 5667
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как происходит получение health состояния runtime?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:used_by",
"content": "domain.runtime_health used_by api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "801650f8bcbfbfbefd35c14447bfef7b3c3827313db790efa7faf47db860f8c4",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "used_by",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:related_logic",
"content": "domain.runtime_health related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "8595d7b82fecdb7ef579fa8961cda6799bb21970061e5bc221d4dd7a3d53fd04",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:part_of",
"content": "domain.runtime_health part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:parent",
"content": "domain.runtime_health parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "79bdb0a74713df6064008179ca8c5c186dc23e4e1c5e2c9607b0bdddeba50f93",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Как происходит получение health состояния runtime?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: SYSTEM_FLOW_EXPLAIN
- documents: 6 | samples: Сущность runtime health, HTTP API /health, Цикл отправки уведомлений в Telegram
- facts: 0
- relations: 8 | samples: domain.runtime_health:used_by, domain.runtime_health:related_logic, domain.runtime_health:part_of
## Mismatches
- none
@@ -1,91 +0,0 @@
{
"meta": {
"case_id": "docs-v2-system-flow-telegram-loop",
"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_v2.yaml",
"runner": "agent_runtime",
"mode": "full_chain",
"passed": true,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 18,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Объясни как работает цикл отправки уведомлений в Telegram"
},
"output": {
"query": "Объясни как работает цикл отправки уведомлений в Telegram"
}
},
{
"step": "router",
"input": {
"query": "Объясни как работает цикл отправки уведомлений в Telegram"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"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": 17592,
"tokens_in_estimate": 4497
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,785 +0,0 @@
# docs-v2-system-flow-telegram-loop
- 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_v2.yaml
- runner: agent_runtime
- mode: full_chain
- passed: True
## Query
Объясни как работает цикл отправки уведомлений в Telegram
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 18,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": 17592,
"tokens_in_estimate": 4497
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 3,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"architecture.telegram_notify_app",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94",
"7bd0428d23e9b20f7d65202cc269e45b3d1e7aed7b5df4a35581fd88677be29b",
"0eb7f73fcda8556439e06f5eeb5ce064ae32b6cd3129353f5b1b4eb3db626d88",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"145ccbb861a8fb621286ec9c888ce69677168d35c7871c70537e888ce3a5b910"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"logic.telegram_notification_loop",
"architecture.telegram_notify_app",
"docs/README.md"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"docs/README.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"doc_paths": [
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/README.md"
],
"doc_titles": [
"Архитектура Telegram Notify App",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"Сущность runtime health",
"HTTP API /health",
"HTTP API /actions/{action}",
"Scenario",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:parent",
"logic.telegram_notification_loop:Summary",
"logic.telegram_notification_loop:Details",
"architecture.telegram_notify_app:Summary",
"architecture.telegram_notify_app:Details",
"docs/README.md:Навигация",
"api.health_endpoint:Функциональные требования"
],
"relation_hits_count": 3,
"relation_targets": [
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:parent"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 3,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 17592,
"tokens_in_estimate": 4497
}
```
### 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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"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
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"title": "architecture.telegram_notify_app:parent",
"content": "architecture.telegram_notify_app parent docs_root",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
"source_id": "architecture.telegram_notify_app",
"target_id": "docs_root",
"doc_version": null,
"relation_id": "e01922b36e3cc60d9349f89e43fcd4a92c6a01394b0028d6b6d56801b258645d",
"source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Объясни как работает цикл отправки уведомлений в Telegram
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: SYSTEM_FLOW_EXPLAIN
- documents: 6 | samples: Архитектура Telegram Notify App, Цикл отправки уведомлений в Telegram, HTTP API /send
- facts: 0
- relations: 3 | samples: architecture.telegram_notify_app:child, architecture.telegram_notify_app:related_api, architecture.telegram_notify_app:parent
## Mismatches
- none
@@ -1,20 +0,0 @@
# pipeline_setup_v3 summary
Passed: 14/14
| File | Case | Mode | Query | Actual sub-intent | RAG layers | Tokens | Pass |
|------|------|------|-------|-------------------|------------|--------|------|
| full_chain_docs_intents_v2.yaml | docs-v2-system-flow-telegram-loop | full_chain | Объясни как работает цикл отправки уведомлений в Telegram | SYSTEM_FLOW_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D4_WORKFLOW_INDEX:3, D5_RELATION_GRAPH:3 | 4497 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-system-flow-health-check | full_chain | Как происходит получение health состояния runtime? | SYSTEM_FLOW_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D4_WORKFLOW_INDEX:3, D5_RELATION_GRAPH:8 | 5667 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-component-control-channel | full_chain | Объясни как работает компонент TelegramControlChannel | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D5_RELATION_GRAPH:6 | 5478 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-component-runtime-manager | full_chain | Какую роль в системе играет RuntimeManager? | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D5_RELATION_GRAPH:6 | 5475 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-api-health-endpoint | full_chain | Объясни что делает endpoint /health | API_METHOD_EXPLAIN | D1_DOCUMENT_CATALOG:1, D4_WORKFLOW_INDEX:1 | 665 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-api-send-endpoint | full_chain | Как работает endpoint /send? | API_METHOD_EXPLAIN | D1_DOCUMENT_CATALOG:1, D4_WORKFLOW_INDEX:1 | 676 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-entity-runtime-health | full_chain | Что такое runtime health? | ENTITY_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D3_ENTITY_CATALOG:8, D5_RELATION_GRAPH:6 | 5165 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-entity-worker-status | full_chain | Объясни сущность WorkerStatus | ENTITY_EXPLAIN | D0_DOC_CHUNKS:1, D1_DOCUMENT_CATALOG:1, D3_ENTITY_CATALOG:2 | 737 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-related-docs-health | full_chain | Какие документы связаны с endpoint /health? | RELATED_DOCS_EXPLAIN | D0_DOC_CHUNKS:6, D5_RELATION_GRAPH:8 | 2098 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-related-docs-architecture-overview | full_chain | Какие дочерние документы есть у overview архитектуры сервиса? | RELATED_DOCS_EXPLAIN | D0_DOC_CHUNKS:2, D5_RELATION_GRAPH:3 | 908 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-openapi-health | full_chain | Сгенерируй OpenAPI для endpoint /health по документации | OPENAPI_METHOD_GENERATE | D1_DOCUMENT_CATALOG:1 | 783 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-openapi-fragment-send-request | full_chain | Сгенерируй request schema для endpoint /send | OPENAPI_FRAGMENT_GENERATE | D1_DOCUMENT_CATALOG:1 | 767 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-general-overview | full_chain | Что вообще описано в документации по этому сервису? | GENERIC_QA | D0_DOC_CHUNKS:8, D1_DOCUMENT_CATALOG:4 | 1984 | ✓ |
| full_chain_docs_intents_v2.yaml | docs-v2-negative-missing-entity | full_chain | Что такое сущность PaymentTransaction? | ENTITY_EXPLAIN | — | 144 | ✓ |
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "v3-api-health-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 10,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Что делает /health?"
},
"output": {
"query": "Что делает /health?"
}
},
{
"step": "router",
"input": {
"query": "Что делает /health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что делает /health?"
},
"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": 4201,
"tokens_in_estimate": 1149
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,429 +0,0 @@
# v3-api-health-1
- 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
Что делает /health?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 10,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Что делает /health?"
},
"output": {
"query": "Что делает /health?"
}
}
```
### router
```json
{
"input": {
"query": "Что делает /health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что делает /health?"
},
"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": 4201,
"tokens_in_estimate": 1149
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 2,
"relations_found": 0,
"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": "endpoint",
"matched_anchor_value": "/health",
"exact_anchor_match": true,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"domain.runtime_health",
"api.health_endpoint",
"docs/README.md",
"architecture.telegram_notify_app",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"1cff54331a52b7a92946e7afabe7e45d7e3ec693b59546f9666e494396593bc3",
"0d923b02d15cef527d51740b7a09378a7dc74fb58db27cd059a8658ad11601a5",
"3d3b6fcc21144cb68657be099291db0ae36d61d32d6d72fd5b7c3cb81f379877",
"0b70cbff38a527cecfb53d3f72d573e9da1826cc75bd4cb92357e1de10988204",
"ce6d44c30418b0b171433a144f78d4bbf53b7a060d9b7cd42b9feecc8ca3044e"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.health_endpoint",
"api.control_actions_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.health_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/health"
],
"resolved_anchor_candidates": [
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.health_endpoint"
],
"doc_paths": [
"docs/documentation/api/health-endpoint.md"
],
"doc_titles": [
"HTTP API /health",
"Scenario",
"api.health_endpoint:Сценарий",
"api.health_endpoint:workflow_step",
"api.health_endpoint:mentions_entity",
"api.health_endpoint:Нефункциональные требования",
"api.health_endpoint:Summary",
"api.health_endpoint:Описание",
"api.health_endpoint:Функциональные требования",
"api.health_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 7,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "evidence_sufficient",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 4201,
"tokens_in_estimate": 1149
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что делает /health?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:workflow_step",
"content": "api.health_endpoint workflow_step Предусловия:**",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Предусловия:**",
"fact_id": "1cff54331a52b7a92946e7afabe7e45d7e3ec693b59546f9666e494396593bc3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.health_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:mentions_entity",
"content": "api.health_endpoint mentions_entity TelegramControlChannel",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "TelegramControlChannel",
"fact_id": "3d3b6fcc21144cb68657be099291db0ae36d61d32d6d72fd5b7c3cb81f379877",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.health_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Что делает /health?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 1 | samples: HTTP API /health
- facts: 2 | samples: api.health_endpoint:workflow_step, api.health_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "v3-api-health-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Как работает health endpoint?"
},
"output": {
"query": "Как работает health endpoint?"
}
},
{
"step": "router",
"input": {
"query": "Как работает health endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как работает health endpoint?"
},
"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": 16622,
"tokens_in_estimate": 4254
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,754 +0,0 @@
# v3-api-health-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
Как работает health endpoint?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Как работает health endpoint?"
},
"output": {
"query": "Как работает health endpoint?"
}
}
```
### router
```json
{
"input": {
"query": "Как работает health endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как работает health endpoint?"
},
"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": 16622,
"tokens_in_estimate": 4254
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 0,
"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": "topic",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"a8a325e0815b3a2a870ba2825f3afb3f41056b4c091df4c3bb3418ffd20891dd",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md"
],
"doc_titles": [
"HTTP API /send",
"HTTP API /actions/{action}",
"HTTP API /health",
"Сущность runtime health",
"Архитектура Telegram Notify App",
"Цикл отправки уведомлений в Telegram",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"Scenario",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 16622,
"tokens_in_estimate": 4254
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как работает health endpoint?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step Название:** Выполнение control action runtime",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Название:** Выполнение control action runtime",
"fact_id": "f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity JSONResponse",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "JSONResponse",
"fact_id": "b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Как работает health endpoint?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 6 | samples: HTTP API /send, HTTP API /actions/{action}, HTTP API /health
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "v3-api-health-3",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Опиши endpoint health"
},
"output": {
"query": "Опиши endpoint health"
}
},
{
"step": "router",
"input": {
"query": "Опиши endpoint health"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Опиши endpoint health"
},
"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": 16614,
"tokens_in_estimate": 4252
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,754 +0,0 @@
# v3-api-health-3
- 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
Опиши endpoint health
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Опиши endpoint health"
},
"output": {
"query": "Опиши endpoint health"
}
}
```
### router
```json
{
"input": {
"query": "Опиши endpoint health"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Опиши endpoint health"
},
"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": 16614,
"tokens_in_estimate": 4252
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 0,
"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": "topic",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"a8a325e0815b3a2a870ba2825f3afb3f41056b4c091df4c3bb3418ffd20891dd",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md"
],
"doc_titles": [
"HTTP API /send",
"HTTP API /actions/{action}",
"HTTP API /health",
"Сущность runtime health",
"Архитектура Telegram Notify App",
"Цикл отправки уведомлений в Telegram",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"Scenario",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 16614,
"tokens_in_estimate": 4252
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Опиши endpoint health",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step Название:** Выполнение control action runtime",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Название:** Выполнение control action runtime",
"fact_id": "f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity JSONResponse",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "JSONResponse",
"fact_id": "b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Опиши endpoint health
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 6 | samples: HTTP API /send, HTTP API /actions/{action}, HTTP API /health
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "v3-api-send-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 10,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Что делает /send?"
},
"output": {
"query": "Что делает /send?"
}
},
{
"step": "router",
"input": {
"query": "Что делает /send?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что делает /send?"
},
"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": 4384,
"tokens_in_estimate": 1195
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,428 +0,0 @@
# v3-api-send-1
- 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
Что делает /send?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 10,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Что делает /send?"
},
"output": {
"query": "Что делает /send?"
}
}
```
### router
```json
{
"input": {
"query": "Что делает /send?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что делает /send?"
},
"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": 4384,
"tokens_in_estimate": 1195
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 2,
"relations_found": 0,
"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": "endpoint",
"matched_anchor_value": "/send",
"exact_anchor_match": true,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"api.control_actions_endpoint",
"api.health_endpoint",
"docs/README.md"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"6bf0a662808009874a108d0c97f7cca7fc4ff7a3a3d66e0947b31bf813cfdf4d",
"dc979c31d511a14d3af89f5f5c493fcfc0c9f2090dc16fb20ff874f4b3566221",
"149c4e0d3d34b3faba055b1495d54818fadc882af633da70035b82190c1bd327",
"480d85819e9298d4078f8a3bd6cfccb9c0fe2a03695b87f65f82f9aa8e2097b0",
"7aefee9ff6110088aad1891da66fc9085eb3f77d832605a3da565deecb96e850"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/send"
],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /send",
"Scenario",
"api.send_message_endpoint:Сценарий",
"api.send_message_endpoint:workflow_step",
"api.send_message_endpoint:mentions_entity",
"api.send_message_endpoint:Нефункциональные требования",
"api.send_message_endpoint:Summary",
"api.send_message_endpoint:Описание",
"api.send_message_endpoint:Функциональные требования",
"api.send_message_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 7,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "evidence_sufficient",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 4384,
"tokens_in_estimate": 1195
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что делает /send?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:workflow_step",
"content": "api.send_message_endpoint workflow_step Telegram credentials доступны в переменных окружения.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Telegram credentials доступны в переменных окружения.",
"fact_id": "6bf0a662808009874a108d0c97f7cca7fc4ff7a3a3d66e0947b31bf813cfdf4d",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.send_message_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:mentions_entity",
"content": "api.send_message_endpoint mentions_entity TelegramNotifyWorker",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "TelegramNotifyWorker",
"fact_id": "149c4e0d3d34b3faba055b1495d54818fadc882af633da70035b82190c1bd327",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.send_message_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Что делает /send?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 1 | samples: HTTP API /send
- facts: 2 | samples: api.send_message_endpoint:workflow_step, api.send_message_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "v3-api-send-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Как работает send endpoint?"
},
"output": {
"query": "Как работает send endpoint?"
}
},
{
"step": "router",
"input": {
"query": "Как работает send endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как работает send endpoint?"
},
"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": 14988,
"tokens_in_estimate": 3846
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,726 +0,0 @@
# v3-api-send-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
Как работает send endpoint?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Как работает send endpoint?"
},
"output": {
"query": "Как работает send endpoint?"
}
}
```
### router
```json
{
"input": {
"query": "Как работает send endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как работает send endpoint?"
},
"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": 14988,
"tokens_in_estimate": 3846
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 0,
"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": "topic",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"docs/README.md"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.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.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md"
],
"doc_titles": [
"HTTP API /send",
"HTTP API /actions/{action}",
"HTTP API /health",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"Scenario",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 14988,
"tokens_in_estimate": 3846
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как работает send endpoint?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step Название:** Выполнение control action runtime",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Название:** Выполнение control action runtime",
"fact_id": "f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Как работает send endpoint?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 6 | samples: HTTP API /send, HTTP API /actions/{action}, HTTP API /health
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "v3-api-send-3",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"docs/README.md",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Опиши endpoint отправки сообщений"
},
"output": {
"query": "Опиши endpoint отправки сообщений"
}
},
{
"step": "router",
"input": {
"query": "Опиши endpoint отправки сообщений"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Опиши endpoint отправки сообщений"
},
"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": 14994,
"tokens_in_estimate": 3847
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,726 +0,0 @@
# v3-api-send-3
- 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
Опиши endpoint отправки сообщений
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"docs/README.md",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Опиши endpoint отправки сообщений"
},
"output": {
"query": "Опиши endpoint отправки сообщений"
}
}
```
### router
```json
{
"input": {
"query": "Опиши endpoint отправки сообщений"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Опиши endpoint отправки сообщений"
},
"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": 14994,
"tokens_in_estimate": 3847
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 0,
"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": "topic",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"docs/README.md",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"docs/README.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.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.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"docs/README.md",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/README.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/domain/runtime-health-entity.md"
],
"doc_titles": [
"HTTP API /send",
"HTTP API /actions/{action}",
"HTTP API /health",
"Readme",
"Архитектура Telegram Notify App",
"Сущность runtime health",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"Scenario",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 14994,
"tokens_in_estimate": 3847
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Опиши endpoint отправки сообщений",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step Название:** Выполнение control action runtime",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Название:** Выполнение control action runtime",
"fact_id": "f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Опиши endpoint отправки сообщений
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 6 | samples: HTTP API /send, HTTP API /actions/{action}, HTTP API /health
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-component-control-channel-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"TelegramControlChannel"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Как работает TelegramControlChannel?"
},
"output": {
"query": "Как работает TelegramControlChannel?"
}
},
{
"step": "router",
"input": {
"query": "Как работает TelegramControlChannel?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как работает TelegramControlChannel?"
},
"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": 21500,
"tokens_in_estimate": 5474
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,900 +0,0 @@
# v3-component-control-channel-1
- 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
Как работает TelegramControlChannel?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"TelegramControlChannel"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Как работает TelegramControlChannel?"
},
"output": {
"query": "Как работает TelegramControlChannel?"
}
}
```
### router
```json
{
"input": {
"query": "Как работает TelegramControlChannel?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как работает TelegramControlChannel?"
},
"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": 21500,
"tokens_in_estimate": 5474
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint",
"architecture.telegram_notify_app",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"TelegramControlChannel"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"TelegramControlChannel"
],
"resolved_anchor_candidates": [
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 21500,
"tokens_in_estimate": 5474
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как работает TelegramControlChannel?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step HTTP control plane запущен.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "HTTP control plane запущен.",
"fact_id": "b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "02530527e6e1d1e23316c9d25d0b30658d6c70063eb6e1d732d55c5ba29c9795",
"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
}
}
]
}
```
### User Prompt Overview
- question: Как работает TelegramControlChannel?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: HTTP API /actions/{action}, Архитектура Telegram Notify App, Readme
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 6 | samples: api.control_actions_endpoint:parent, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-component-control-channel-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"TelegramControlChannel"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Роль TelegramControlChannel в системе"
},
"output": {
"query": "Роль TelegramControlChannel в системе"
}
},
{
"step": "router",
"input": {
"query": "Роль TelegramControlChannel в системе"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Роль TelegramControlChannel в системе"
},
"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": 21501,
"tokens_in_estimate": 5474
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,900 +0,0 @@
# v3-component-control-channel-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
Роль TelegramControlChannel в системе
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"TelegramControlChannel"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Роль TelegramControlChannel в системе"
},
"output": {
"query": "Роль TelegramControlChannel в системе"
}
}
```
### router
```json
{
"input": {
"query": "Роль TelegramControlChannel в системе"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Роль TelegramControlChannel в системе"
},
"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": 21501,
"tokens_in_estimate": 5474
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint",
"architecture.telegram_notify_app",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"TelegramControlChannel"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"TelegramControlChannel"
],
"resolved_anchor_candidates": [
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 21501,
"tokens_in_estimate": 5474
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Роль TelegramControlChannel в системе",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step HTTP control plane запущен.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "HTTP control plane запущен.",
"fact_id": "b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "02530527e6e1d1e23316c9d25d0b30658d6c70063eb6e1d732d55c5ba29c9795",
"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
}
}
]
}
```
### User Prompt Overview
- question: Роль TelegramControlChannel в системе
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: HTTP API /actions/{action}, Архитектура Telegram Notify App, Readme
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 6 | samples: api.control_actions_endpoint:parent, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-component-runtime-manager-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"RuntimeManager"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Что делает RuntimeManager?"
},
"output": {
"query": "Что делает RuntimeManager?"
}
},
{
"step": "router",
"input": {
"query": "Что делает RuntimeManager?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что делает RuntimeManager?"
},
"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": 21490,
"tokens_in_estimate": 5471
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,900 +0,0 @@
# v3-component-runtime-manager-1
- 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
Что делает RuntimeManager?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"RuntimeManager"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Что делает RuntimeManager?"
},
"output": {
"query": "Что делает RuntimeManager?"
}
}
```
### router
```json
{
"input": {
"query": "Что делает RuntimeManager?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что делает RuntimeManager?"
},
"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": 21490,
"tokens_in_estimate": 5471
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint",
"architecture.telegram_notify_app",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"RuntimeManager"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"RuntimeManager"
],
"resolved_anchor_candidates": [
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 21490,
"tokens_in_estimate": 5471
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что делает RuntimeManager?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step HTTP control plane запущен.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "HTTP control plane запущен.",
"fact_id": "b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "02530527e6e1d1e23316c9d25d0b30658d6c70063eb6e1d732d55c5ba29c9795",
"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
}
}
]
}
```
### User Prompt Overview
- question: Что делает RuntimeManager?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: HTTP API /actions/{action}, Архитектура Telegram Notify App, Readme
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 6 | samples: api.control_actions_endpoint:parent, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-component-runtime-manager-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"RuntimeManager"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Как устроен RuntimeManager?"
},
"output": {
"query": "Как устроен RuntimeManager?"
}
},
{
"step": "router",
"input": {
"query": "Как устроен RuntimeManager?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как устроен RuntimeManager?"
},
"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": 21491,
"tokens_in_estimate": 5471
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,900 +0,0 @@
# v3-component-runtime-manager-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
Как устроен RuntimeManager?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"RuntimeManager"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Как устроен RuntimeManager?"
},
"output": {
"query": "Как устроен RuntimeManager?"
}
}
```
### router
```json
{
"input": {
"query": "Как устроен RuntimeManager?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как устроен RuntimeManager?"
},
"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": 21491,
"tokens_in_estimate": 5471
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint",
"architecture.telegram_notify_app",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"RuntimeManager"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"RuntimeManager"
],
"resolved_anchor_candidates": [
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 21491,
"tokens_in_estimate": 5471
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как устроен RuntimeManager?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step HTTP control plane запущен.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "HTTP control plane запущен.",
"fact_id": "b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "02530527e6e1d1e23316c9d25d0b30658d6c70063eb6e1d732d55c5ba29c9795",
"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
}
}
]
}
```
### User Prompt Overview
- question: Как устроен RuntimeManager?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: HTTP API /actions/{action}, Архитектура Telegram Notify App, Readme
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 6 | samples: api.control_actions_endpoint:parent, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-component-runtime-manager-3",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"RuntimeManager"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Опиши компонент RuntimeManager"
},
"output": {
"query": "Опиши компонент RuntimeManager"
}
},
{
"step": "router",
"input": {
"query": "Опиши компонент RuntimeManager"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Опиши компонент RuntimeManager"
},
"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": 21494,
"tokens_in_estimate": 5472
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,900 +0,0 @@
# v3-component-runtime-manager-3
- 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
Опиши компонент RuntimeManager
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 20,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"entity_candidates": [
"RuntimeManager"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Опиши компонент RuntimeManager"
},
"output": {
"query": "Опиши компонент RuntimeManager"
}
}
```
### router
```json
{
"input": {
"query": "Опиши компонент RuntimeManager"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Опиши компонент RuntimeManager"
},
"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": 21494,
"tokens_in_estimate": 5472
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 6,
"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": "component",
"matched_anchor_value": "RuntimeManager",
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint",
"architecture.telegram_notify_app",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"RuntimeManager"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"RuntimeManager"
],
"resolved_anchor_candidates": [
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.control_actions_endpoint:part_of",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 21494,
"tokens_in_estimate": 5472
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Опиши компонент RuntimeManager",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step HTTP control plane запущен.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "HTTP control plane запущен.",
"fact_id": "b480201013a7e5231146f665773ebc54af37c28135f407c6b758304c74561645",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"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.control_actions_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.control_actions_endpoint",
"doc_version": null,
"relation_id": "02530527e6e1d1e23316c9d25d0b30658d6c70063eb6e1d732d55c5ba29c9795",
"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
}
}
]
}
```
### User Prompt Overview
- question: Опиши компонент RuntimeManager
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: HTTP API /actions/{action}, Архитектура Telegram Notify App, Readme
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 6 | samples: api.control_actions_endpoint:parent, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-entity-runtime-health-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 26,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [
"runtime health"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Что такое runtime health?"
},
"output": {
"query": "Что такое runtime health?"
}
},
{
"step": "router",
"input": {
"query": "Что такое runtime health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что такое runtime health?"
},
"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": 20267,
"tokens_in_estimate": 5165
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,865 +0,0 @@
# v3-entity-runtime-health-1
- 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
Что такое runtime health?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 26,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [
"runtime health"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": "Что такое runtime health?"
},
"output": {
"query": "Что такое runtime health?"
}
}
```
### router
```json
{
"input": {
"query": "Что такое runtime health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что такое runtime health?"
},
"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": 20267,
"tokens_in_estimate": 5165
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"layers_used": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D3_ENTITY_CATALOG": {
"hits": 8,
"top_ids": [
"api.health_endpoint",
"architecture.telegram_notify_app",
"domain.runtime_health"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"architecture.telegram_notify_app"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"79bdb0a74713df6064008179ca8c5c186dc23e4e1c5e2c9607b0bdddeba50f93",
"af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.health_endpoint"
]
}
},
"query_entity_candidates": [
"runtime health"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/health-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"RuntimeManager",
"WorkerStatus",
"TelegramNotifyWorker",
"TelegramControlChannel",
"WorkerHealth",
"Сущность runtime health",
"HTTP API /health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"HTTP API /send",
"domain.runtime_health:parent",
"domain.runtime_health:part_of",
"api.health_endpoint:depends_on",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"domain.runtime_health:used_by",
"api.health_endpoint:Сценарий",
"api.health_endpoint:Нефункциональные требования",
"api.health_endpoint:Summary",
"api.health_endpoint:Описание",
"api.health_endpoint:Функциональные требования",
"api.health_endpoint:Входные параметры"
],
"relation_hits_count": 6,
"relation_targets": [
"domain.runtime_health:parent",
"domain.runtime_health:part_of",
"api.health_endpoint:depends_on",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"domain.runtime_health:used_by"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 20267,
"tokens_in_estimate": 5165
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что такое runtime health?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:parent",
"content": "domain.runtime_health parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "79bdb0a74713df6064008179ca8c5c186dc23e4e1c5e2c9607b0bdddeba50f93",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:part_of",
"content": "domain.runtime_health part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:used_by",
"content": "domain.runtime_health used_by api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "801650f8bcbfbfbefd35c14447bfef7b3c3827313db790efa7faf47db860f8c4",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "used_by",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Что такое runtime health?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: ENTITY_EXPLAIN
- documents: 6 | samples: Сущность runtime health, HTTP API /health, Цикл отправки уведомлений в Telegram
- facts: 0
- relations: 6 | samples: domain.runtime_health:parent, domain.runtime_health:part_of, api.health_endpoint:depends_on
## Mismatches
- none
@@ -1,89 +0,0 @@
{
"meta": {
"case_id": "v3-entity-runtime-health-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": false,
"mismatches": [
"sub_intent: expected ENTITY_EXPLAIN, got GENERIC_QA"
],
"actual": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint"
],
"entity_candidates": [
"runtime health"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Объясни runtime health"
},
"output": {
"query": "Объясни runtime health"
}
},
{
"step": "router",
"input": {
"query": "Объясни runtime health"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Объясни runtime health"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 9449,
"tokens_in_estimate": 2449
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,528 +0,0 @@
# v3-entity-runtime-health-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: False
## Query
Объясни runtime health
## Actual
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint"
],
"entity_candidates": [
"runtime health"
],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Объясни runtime health"
},
"output": {
"query": "Объясни runtime health"
}
}
```
### router
```json
{
"input": {
"query": "Объясни runtime health"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Объясни runtime health"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 9449,
"tokens_in_estimate": 2449
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 4,
"facts_found": 0,
"relations_found": 0,
"openapi_fields_extracted": 0,
"missing_required_fields": [],
"openapi_status": {
"has_path": false,
"has_method": false,
"has_request": false,
"has_response": false
},
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 4,
"top_ids": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 8,
"top_ids": [
"api.health_endpoint"
]
}
},
"query_entity_candidates": [
"runtime health"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint"
],
"doc_paths": [
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/control-actions-endpoint.md"
],
"doc_titles": [
"Сущность runtime health",
"HTTP API /health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /actions/{action}",
"api.health_endpoint:Функциональные требования",
"api.health_endpoint:Выходные параметры",
"api.health_endpoint:Описание",
"api.health_endpoint:Сценарий",
"api.health_endpoint:Нефункциональные требования",
"api.health_endpoint:Входные параметры",
"api.health_endpoint:Summary",
"api.health_endpoint:Пример ответа"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 4,
"facts": 0,
"relations": 0,
"chunks": 8,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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_general_answer
- log_context: graph.project_qa.docs.answer
### Prompt Stats
```json
{
"system_chars": 345,
"user_chars": 9449,
"tokens_in_estimate": 2449
}
```
### System Prompt
```text
Ты отвечаешь на общий вопрос по документации проекта.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные документы и факты
- Не додумывай отсутствующие детали
- Если данных недостаточно, скажи это прямо
- Дай короткий понятный ответ без лишней структуры
```
### User Prompt
```json
{
"question": "Объясни runtime health",
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Объясни runtime health
- intent: GENERAL_QA
- sub_intent: GENERIC_QA
- documents: 4 | samples: Сущность runtime health, HTTP API /health, Цикл отправки уведомлений в Telegram
- facts: 0
- relations: 0
## Mismatches
- sub_intent: expected ENTITY_EXPLAIN, got GENERIC_QA
@@ -1,93 +0,0 @@
{
"meta": {
"case_id": "v3-entity-worker-status-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 26,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"docs/README.md",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview"
],
"entity_candidates": [
"WorkerStatus"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Что такое WorkerStatus?"
},
"output": {
"query": "Что такое WorkerStatus?"
}
},
{
"step": "router",
"input": {
"query": "Что такое WorkerStatus?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что такое WorkerStatus?"
},
"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": 18776,
"tokens_in_estimate": 4793
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,849 +0,0 @@
# v3-entity-worker-status-1
- 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
Что такое WorkerStatus?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 26,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"docs/README.md",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview"
],
"entity_candidates": [
"WorkerStatus"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": "Что такое WorkerStatus?"
},
"output": {
"query": "Что такое WorkerStatus?"
}
}
```
### router
```json
{
"input": {
"query": "Что такое WorkerStatus?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что такое WorkerStatus?"
},
"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": 18776,
"tokens_in_estimate": 4793
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"layers_used": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D3_ENTITY_CATALOG": {
"hits": 8,
"top_ids": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.health_endpoint"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"logic.telegram_notification_loop",
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"WorkerStatus"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"WorkerStatus"
],
"resolved_anchor_candidates": [
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"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/README.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"docs/README.md",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview"
],
"doc_paths": [
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md",
"docs/README.md",
"docs/documentation/architecture/telegram-notify-app-overview.md"
],
"doc_titles": [
"WorkerStatus",
"JSONResponse",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth",
"TelegramControlAppFactory",
"TelegramControlChannel",
"Readme",
"HTTP API /actions/{action}",
"HTTP API /health",
"HTTP API /send",
"Архитектура Telegram Notify App",
"Сущность runtime health",
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.control_actions_endpoint:parent",
"logic.telegram_notification_loop:Details",
"docs/README.md:Навигация",
"docs/README.md:Правила и шаблоны",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"docs/README.md:Структура"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.control_actions_endpoint:parent"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 18776,
"tokens_in_estimate": 4793
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что такое WorkerStatus?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Что такое WorkerStatus?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: ENTITY_EXPLAIN
- documents: 6 | samples: Readme, HTTP API /actions/{action}, HTTP API /health
- facts: 0
- relations: 6 | samples: api.control_actions_endpoint:part_of, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,87 +0,0 @@
{
"meta": {
"case_id": "v3-entity-worker-status-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": false,
"mismatches": [
"sub_intent: expected ENTITY_EXPLAIN, got GENERIC_QA"
],
"actual": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Опиши статус воркера"
},
"output": {
"query": "Опиши статус воркера"
}
},
{
"step": "router",
"input": {
"query": "Опиши статус воркера"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Опиши статус воркера"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 7558,
"tokens_in_estimate": 1976
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,493 +0,0 @@
# v3-entity-worker-status-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: False
## Query
Опиши статус воркера
## Actual
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Опиши статус воркера"
},
"output": {
"query": "Опиши статус воркера"
}
}
```
### router
```json
{
"input": {
"query": "Опиши статус воркера"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Опиши статус воркера"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 7558,
"tokens_in_estimate": 1976
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 4,
"facts_found": 0,
"relations_found": 0,
"openapi_fields_extracted": 0,
"missing_required_fields": [],
"openapi_status": {
"has_path": false,
"has_method": false,
"has_request": false,
"has_response": false
},
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 4,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 8,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/README.md",
"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"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/README.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"Readme",
"HTTP API /actions/{action}",
"HTTP API /health",
"HTTP API /send",
"docs/README.md:Структура",
"docs/README.md:Навигация",
"docs/README.md:Правила и шаблоны",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Функциональные требования",
"docs/README.md:Project Docs"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 4,
"facts": 0,
"relations": 0,
"chunks": 8,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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_general_answer
- log_context: graph.project_qa.docs.answer
### Prompt Stats
```json
{
"system_chars": 345,
"user_chars": 7558,
"tokens_in_estimate": 1976
}
```
### System Prompt
```text
Ты отвечаешь на общий вопрос по документации проекта.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные документы и факты
- Не додумывай отсутствующие детали
- Если данных недостаточно, скажи это прямо
- Дай короткий понятный ответ без лишней структуры
```
### User Prompt
```json
{
"question": "Опиши статус воркера",
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Опиши статус воркера
- intent: GENERAL_QA
- sub_intent: GENERIC_QA
- documents: 4 | samples: Readme, HTTP API /actions/{action}, HTTP API /health
- facts: 0
- relations: 0
## Mismatches
- sub_intent: expected ENTITY_EXPLAIN, got GENERIC_QA
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-general-1",
"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": false,
"mismatches": [
"sub_intent: expected GENERIC_QA, got COMPONENT_EXPLAIN"
],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 19,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Что есть в документации?"
},
"output": {
"query": "Что есть в документации?"
}
},
{
"step": "router",
"input": {
"query": "Что есть в документации?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что есть в документации?"
},
"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": 19762,
"tokens_in_estimate": 5039
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,859 +0,0 @@
# v3-general-1
- 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: False
## Query
Что есть в документации?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 19,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Что есть в документации?"
},
"output": {
"query": "Что есть в документации?"
}
}
```
### router
```json
{
"input": {
"query": "Что есть в документации?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что есть в документации?"
},
"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": 19762,
"tokens_in_estimate": 5039
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 1,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"2f539384881f5f776bf4cef22c00669e53e0fd0761b3d62fa53593254a272f5a",
"5a27c821aa4efea9f2a7c883b57d1f53ec3af31348abd220bc09f47fbca73e93",
"0102eac8e4f8b452b0351a4aa8dca63e4774beadac71eba483708d7a90ff1cc0",
"43fc2c29bf6f353fa55f1b8a05c903dbd1a0e8067b026b9455043669ceca37d9",
"a31bbca2eb31ffb6655bcec7ff07b8cf2b6c7416610cf58dfc1e0c737df12fe1"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/README.md",
"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",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"doc_paths": [
"docs/README.md",
"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/domain/runtime-health-entity.md"
],
"doc_titles": [
"Readme",
"HTTP API /actions/{action}",
"HTTP API /health",
"HTTP API /send",
"Архитектура Telegram Notify App",
"Сущность runtime health",
"docs/README.md:doc_list_item",
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.control_actions_endpoint:parent",
"docs/README.md:Структура",
"docs/README.md:Навигация",
"docs/README.md:Правила и шаблоны",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"docs/README.md:Project Docs"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.control_actions_endpoint:parent"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 1,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 1,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 19762,
"tokens_in_estimate": 5039
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что есть в документации?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/README.md",
"title": "docs/README.md:doc_list_item",
"content": "docs/README.md doc_list_item `documentation/api/` — документация HTTP API control plane.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Структура",
"doc_id": null,
"object": "`documentation/api/` — документация HTTP API control plane.",
"fact_id": "2f539384881f5f776bf4cef22c00669e53e0fd0761b3d62fa53593254a272f5a",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"predicate": "doc_list_item",
"object_ref": null,
"subject_id": "docs/README.md",
"doc_version": null,
"source_path": "docs/README.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Что есть в документации?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: Readme, HTTP API /actions/{action}, HTTP API /health
- facts: 1 | samples: docs/README.md:doc_list_item
- relations: 6 | samples: api.control_actions_endpoint:part_of, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- sub_intent: expected GENERIC_QA, got COMPONENT_EXPLAIN
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-general-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": false,
"mismatches": [
"sub_intent: expected GENERIC_QA, got COMPONENT_EXPLAIN"
],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 19,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Какая структура документации?"
},
"output": {
"query": "Какая структура документации?"
}
},
{
"step": "router",
"input": {
"query": "Какая структура документации?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Какая структура документации?"
},
"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": 19767,
"tokens_in_estimate": 5040
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,859 +0,0 @@
# v3-general-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: False
## Query
Какая структура документации?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 19,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"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": "Какая структура документации?"
},
"output": {
"query": "Какая структура документации?"
}
}
```
### router
```json
{
"input": {
"query": "Какая структура документации?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Какая структура документации?"
},
"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": 19767,
"tokens_in_estimate": 5040
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 1,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"2f539384881f5f776bf4cef22c00669e53e0fd0761b3d62fa53593254a272f5a",
"5a27c821aa4efea9f2a7c883b57d1f53ec3af31348abd220bc09f47fbca73e93",
"0102eac8e4f8b452b0351a4aa8dca63e4774beadac71eba483708d7a90ff1cc0",
"43fc2c29bf6f353fa55f1b8a05c903dbd1a0e8067b026b9455043669ceca37d9",
"a31bbca2eb31ffb6655bcec7ff07b8cf2b6c7416610cf58dfc1e0c737df12fe1"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/README.md",
"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",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"doc_paths": [
"docs/README.md",
"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/domain/runtime-health-entity.md"
],
"doc_titles": [
"Readme",
"HTTP API /actions/{action}",
"HTTP API /health",
"HTTP API /send",
"Архитектура Telegram Notify App",
"Сущность runtime health",
"docs/README.md:doc_list_item",
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.control_actions_endpoint:parent",
"docs/README.md:Структура",
"docs/README.md:Навигация",
"docs/README.md:Правила и шаблоны",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"docs/README.md:Project Docs"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.control_actions_endpoint:parent"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 1,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 1,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 19767,
"tokens_in_estimate": 5040
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Какая структура документации?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "COMPONENT_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/README.md",
"title": "docs/README.md:doc_list_item",
"content": "docs/README.md doc_list_item `documentation/api/` — документация HTTP API control plane.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Структура",
"doc_id": null,
"object": "`documentation/api/` — документация HTTP API control plane.",
"fact_id": "2f539384881f5f776bf4cef22c00669e53e0fd0761b3d62fa53593254a272f5a",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"predicate": "doc_list_item",
"object_ref": null,
"subject_id": "docs/README.md",
"doc_version": null,
"source_path": "docs/README.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Какая структура документации?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: COMPONENT_EXPLAIN
- documents: 6 | samples: Readme, HTTP API /actions/{action}, HTTP API /health
- facts: 1 | samples: docs/README.md:doc_list_item
- relations: 6 | samples: api.control_actions_endpoint:part_of, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- sub_intent: expected GENERIC_QA, got COMPONENT_EXPLAIN
@@ -1,85 +0,0 @@
{
"meta": {
"case_id": "v3-general-3",
"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,
"mismatches": [],
"actual": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "С чего начать читать документацию?"
},
"output": {
"query": "С чего начать читать документацию?"
}
},
{
"step": "router",
"input": {
"query": "С чего начать читать документацию?"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "С чего начать читать документацию?"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 7572,
"tokens_in_estimate": 1980
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,493 +0,0 @@
# v3-general-3
- 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
С чего начать читать документацию?
## Actual
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "С чего начать читать документацию?"
},
"output": {
"query": "С чего начать читать документацию?"
}
}
```
### router
```json
{
"input": {
"query": "С чего начать читать документацию?"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "С чего начать читать документацию?"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 7572,
"tokens_in_estimate": 1980
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 4,
"facts_found": 0,
"relations_found": 0,
"openapi_fields_extracted": 0,
"missing_required_fields": [],
"openapi_status": {
"has_path": false,
"has_method": false,
"has_request": false,
"has_response": false
},
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 4,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 8,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/README.md",
"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"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/README.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"Readme",
"HTTP API /actions/{action}",
"HTTP API /health",
"HTTP API /send",
"docs/README.md:Структура",
"docs/README.md:Навигация",
"docs/README.md:Правила и шаблоны",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Функциональные требования",
"docs/README.md:Project Docs"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 4,
"facts": 0,
"relations": 0,
"chunks": 8,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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_general_answer
- log_context: graph.project_qa.docs.answer
### Prompt Stats
```json
{
"system_chars": 345,
"user_chars": 7572,
"tokens_in_estimate": 1980
}
```
### System Prompt
```text
Ты отвечаешь на общий вопрос по документации проекта.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные документы и факты
- Не додумывай отсутствующие детали
- Если данных недостаточно, скажи это прямо
- Дай короткий понятный ответ без лишней структуры
```
### User Prompt
```json
{
"question": "С чего начать читать документацию?",
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: С чего начать читать документацию?
- intent: GENERAL_QA
- sub_intent: GENERIC_QA
- documents: 4 | samples: Readme, HTTP API /actions/{action}, HTTP API /health
- facts: 0
- relations: 0
## Mismatches
- none
@@ -1,92 +0,0 @@
{
"meta": {
"case_id": "v3-negative-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 26,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"docs/README.md",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [
"PaymentTransaction"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Что такое PaymentTransaction?"
},
"output": {
"query": "Что такое PaymentTransaction?"
}
},
{
"step": "router",
"input": {
"query": "Что такое PaymentTransaction?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что такое PaymentTransaction?"
},
"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": 18782,
"tokens_in_estimate": 4794
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,841 +0,0 @@
# v3-negative-1
- 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
Что такое PaymentTransaction?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 26,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"docs/README.md",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [
"PaymentTransaction"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"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": "Что такое PaymentTransaction?"
},
"output": {
"query": "Что такое PaymentTransaction?"
}
}
```
### router
```json
{
"input": {
"query": "Что такое PaymentTransaction?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что такое PaymentTransaction?"
},
"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": 18782,
"tokens_in_estimate": 4794
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"layers_used": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 6,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D3_ENTITY_CATALOG": {
"hits": 8,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"PaymentTransaction"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"PaymentTransaction"
],
"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/README.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.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",
"docs/README.md",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"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/README.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/domain/runtime-health-entity.md"
],
"doc_titles": [
"ControlActionSet",
"JSONResponse",
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth",
"TelegramControlAppFactory",
"Readme",
"HTTP API /actions/{action}",
"HTTP API /health",
"HTTP API /send",
"Архитектура Telegram Notify App",
"Сущность runtime health",
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.control_actions_endpoint:parent",
"docs/README.md:Структура",
"docs/README.md:Навигация",
"docs/README.md:Правила и шаблоны",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"docs/README.md:Project Docs"
],
"relation_hits_count": 6,
"relation_targets": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.control_actions_endpoint:parent"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 6,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 18782,
"tokens_in_estimate": 4794
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что такое PaymentTransaction?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Что такое PaymentTransaction?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: ENTITY_EXPLAIN
- documents: 6 | samples: Readme, HTTP API /actions/{action}, HTTP API /health
- facts: 0
- relations: 6 | samples: api.control_actions_endpoint:part_of, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "v3-negative-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 0,
"llm_answer": "",
"answer_mode": "degraded",
"path_scope": [],
"doc_scope": [],
"entity_candidates": [
"UnknownEntity"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "reject",
"prompt_used": "docs_explain_answer",
"llm_mode": "prose",
"degraded_reason": "not_found_exact_anchor",
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Объясни сущность UnknownEntity"
},
"output": {
"query": "Объясни сущность UnknownEntity"
}
},
{
"step": "router",
"input": {
"query": "Объясни сущность UnknownEntity"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Объясни сущность UnknownEntity"
},
"output": {
"answer_mode": "degraded",
"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": 174,
"tokens_in_estimate": 142
}
},
"degraded_reason": "not_found_exact_anchor"
}
}
]
}
@@ -1,307 +0,0 @@
# v3-negative-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
Объясни сущность UnknownEntity
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 0,
"llm_answer": "",
"answer_mode": "degraded",
"path_scope": [],
"doc_scope": [],
"entity_candidates": [
"UnknownEntity"
],
"symbol_candidates": [],
"layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "reject",
"prompt_used": "docs_explain_answer",
"llm_mode": "prose",
"degraded_reason": "not_found_exact_anchor",
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Объясни сущность UnknownEntity"
},
"output": {
"query": "Объясни сущность UnknownEntity"
}
}
```
### router
```json
{
"input": {
"query": "Объясни сущность UnknownEntity"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Объясни сущность UnknownEntity"
},
"output": {
"answer_mode": "degraded",
"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": 174,
"tokens_in_estimate": 142
}
},
"degraded_reason": "not_found_exact_anchor"
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"layers_used": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 0,
"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": false,
"matched_intent_source": "deterministic",
"matched_anchor_type": "entity",
"matched_anchor_value": "UnknownEntity",
"exact_anchor_match": false,
"docs_layers_requested": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D3_ENTITY_CATALOG",
"D1_DOCUMENT_CATALOG",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D3_ENTITY_CATALOG": {
"hits": 8,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app"
]
},
"D5_RELATION_GRAPH": {
"hits": 6,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [
"UnknownEntity"
],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"UnknownEntity"
],
"resolved_anchor_candidates": [],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [],
"doc_paths": [],
"doc_titles": [],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 0,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 0,
"chunks": 0,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "reject",
"gate_decision_reason": "not_found_exact_anchor",
"gate_missing_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"gate_satisfied_requirements": [],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
},
"requested_fragment_type": null,
"fragment_evidence_found": [],
"fragment_missing_requirements": [],
"answer_mode": "degraded",
"degrade_reason": "not_found_exact_anchor",
"degraded_reason": "not_found_exact_anchor",
"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": 174,
"tokens_in_estimate": 142
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Объясни сущность UnknownEntity",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "ENTITY_EXPLAIN",
"documents": [],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Объясни сущность UnknownEntity
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: ENTITY_EXPLAIN
- documents: 0
- facts: 0
- relations: 0
## Mismatches
- none
@@ -1,81 +0,0 @@
{
"meta": {
"case_id": "v3-negative-3",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 0,
"llm_answer": "",
"answer_mode": "degraded",
"path_scope": [],
"doc_scope": [],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "reject",
"prompt_used": "docs_explain_answer",
"llm_mode": "prose",
"degraded_reason": "not_found_exact_anchor",
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Что делает endpoint /unknown?"
},
"output": {
"query": "Что делает endpoint /unknown?"
}
},
{
"step": "router",
"input": {
"query": "Что делает endpoint /unknown?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что делает endpoint /unknown?"
},
"output": {
"answer_mode": "degraded",
"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": 177,
"tokens_in_estimate": 143
}
},
"degraded_reason": "not_found_exact_anchor"
}
}
]
}
@@ -1,303 +0,0 @@
# v3-negative-3
- 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
Что делает endpoint /unknown?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 0,
"llm_answer": "",
"answer_mode": "degraded",
"path_scope": [],
"doc_scope": [],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "reject",
"prompt_used": "docs_explain_answer",
"llm_mode": "prose",
"degraded_reason": "not_found_exact_anchor",
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Что делает endpoint /unknown?"
},
"output": {
"query": "Что делает endpoint /unknown?"
}
}
```
### router
```json
{
"input": {
"query": "Что делает endpoint /unknown?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что делает endpoint /unknown?"
},
"output": {
"answer_mode": "degraded",
"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": 177,
"tokens_in_estimate": 143
}
},
"degraded_reason": "not_found_exact_anchor"
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 0,
"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": false,
"matched_intent_source": "deterministic",
"matched_anchor_type": "endpoint",
"matched_anchor_value": "/unknown",
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"docs/README.md",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/unknown"
],
"resolved_anchor_candidates": [],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [],
"doc_paths": [],
"doc_titles": [],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 0,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 0,
"chunks": 0,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "reject",
"gate_decision_reason": "not_found_exact_anchor",
"gate_missing_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"gate_satisfied_requirements": [],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
},
"requested_fragment_type": null,
"fragment_evidence_found": [],
"fragment_missing_requirements": [],
"answer_mode": "degraded",
"degrade_reason": "not_found_exact_anchor",
"degraded_reason": "not_found_exact_anchor",
"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": 177,
"tokens_in_estimate": 143
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что делает endpoint /unknown?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Что делает endpoint /unknown?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 0
- facts: 0
- relations: 0
## Mismatches
- none
@@ -1,84 +0,0 @@
{
"meta": {
"case_id": "v3-related-architecture-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_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"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Какие документы связаны с архитектурой?"
},
"output": {
"query": "Какие документы связаны с архитектурой?"
}
},
{
"step": "router",
"input": {
"query": "Какие документы связаны с архитектурой?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Какие документы связаны с архитектурой?"
},
"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": 7994,
"tokens_in_estimate": 2097
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,513 +0,0 @@
# v3-related-architecture-1
- 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
Какие документы связаны с архитектурой?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_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"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Какие документы связаны с архитектурой?"
},
"output": {
"query": "Какие документы связаны с архитектурой?"
}
}
```
### router
```json
{
"input": {
"query": "Какие документы связаны с архитектурой?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Какие документы связаны с архитектурой?"
},
"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": 7994,
"tokens_in_estimate": 2097
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"layers_used": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 8,
"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": "graph_summary",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D5_RELATION_GRAPH"
],
"planned_layers": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D5_RELATION_GRAPH"
],
"non_empty_layers": [
"D5_RELATION_GRAPH"
],
"layer_diagnostics": {
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 0,
"top_ids": [],
"skipped": true,
"reason": "relation_primary_sufficient"
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint"
],
"anchor_candidates": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"selected_anchor": "api.control_actions_endpoint",
"anchor_selection_reason": "relation_neighbor",
"anchor_match_type": "semantic_fallback",
"doc_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"api.send_message_endpoint:parent",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 8,
"relation_targets": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"api.send_message_endpoint:parent",
"api.control_actions_endpoint:parent"
],
"fallback_doc_hits_count": 6,
"fallback_used": true,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 8,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "relation_evidence_available",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 7994,
"tokens_in_estimate": 2097
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Какие документы связаны с архитектурой?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"documents": [],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:parent",
"content": "api.send_message_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"source_id": "api.send_message_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "33eb0aa97f06d0afcaa4c230b5f5b73fa2fbfa5861ea9367b6c92f8a6fe0c054",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Какие документы связаны с архитектурой?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: RELATED_DOCS_EXPLAIN
- documents: 0
- facts: 0
- relations: 8 | samples: api.control_actions_endpoint:part_of, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,84 +0,0 @@
{
"meta": {
"case_id": "v3-related-health-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 14,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint",
"domain.runtime_health",
"api.control_actions_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Что связано с /health?"
},
"output": {
"query": "Что связано с /health?"
}
},
{
"step": "router",
"input": {
"query": "Что связано с /health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что связано с /health?"
},
"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": 7884,
"tokens_in_estimate": 2070
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,516 +0,0 @@
# v3-related-health-1
- 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
Что связано с /health?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 14,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint",
"domain.runtime_health",
"api.control_actions_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Что связано с /health?"
},
"output": {
"query": "Что связано с /health?"
}
}
```
### router
```json
{
"input": {
"query": "Что связано с /health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что связано с /health?"
},
"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": 7884,
"tokens_in_estimate": 2070
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"layers_used": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 8,
"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": "graph_summary",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "endpoint",
"matched_anchor_value": "/health",
"exact_anchor_match": false,
"docs_layers_requested": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D5_RELATION_GRAPH"
],
"planned_layers": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D5_RELATION_GRAPH"
],
"non_empty_layers": [
"D5_RELATION_GRAPH"
],
"layer_diagnostics": {
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"801650f8bcbfbfbefd35c14447bfef7b3c3827313db790efa7faf47db860f8c4",
"8595d7b82fecdb7ef579fa8961cda6799bb21970061e5bc221d4dd7a3d53fd04",
"af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 0,
"top_ids": [],
"skipped": true,
"reason": "relation_primary_sufficient"
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/health"
],
"resolved_anchor_candidates": [
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"api.control_actions_endpoint"
],
"anchor_candidates": [
"api.health_endpoint",
"domain.runtime_health",
"api.control_actions_endpoint"
],
"selected_anchor": "api.health_endpoint",
"anchor_selection_reason": "doc_id matches requested endpoint slug",
"anchor_match_type": "exact_path",
"doc_ids": [
"api.health_endpoint",
"domain.runtime_health",
"api.control_actions_endpoint"
],
"doc_paths": [
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md"
],
"doc_titles": [
"domain.runtime_health:used_by",
"domain.runtime_health:related_logic",
"domain.runtime_health:part_of",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"domain.runtime_health:parent",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 8,
"relation_targets": [
"domain.runtime_health:used_by",
"domain.runtime_health:related_logic",
"domain.runtime_health:part_of",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"domain.runtime_health:parent",
"api.control_actions_endpoint:related_api"
],
"fallback_doc_hits_count": 6,
"fallback_used": true,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 8,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "relation_evidence_available",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 7884,
"tokens_in_estimate": 2070
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что связано с /health?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"documents": [],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:used_by",
"content": "domain.runtime_health used_by api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "801650f8bcbfbfbefd35c14447bfef7b3c3827313db790efa7faf47db860f8c4",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "used_by",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:related_logic",
"content": "domain.runtime_health related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "8595d7b82fecdb7ef579fa8961cda6799bb21970061e5bc221d4dd7a3d53fd04",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:part_of",
"content": "domain.runtime_health part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:parent",
"content": "domain.runtime_health parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "79bdb0a74713df6064008179ca8c5c186dc23e4e1c5e2c9607b0bdddeba50f93",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Что связано с /health?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: RELATED_DOCS_EXPLAIN
- documents: 0
- facts: 0
- relations: 8 | samples: domain.runtime_health:used_by, domain.runtime_health:related_logic, domain.runtime_health:part_of
## Mismatches
- none
@@ -1,84 +0,0 @@
{
"meta": {
"case_id": "v3-related-health-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_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"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Какие документы относятся к health endpoint?"
},
"output": {
"query": "Какие документы относятся к health endpoint?"
}
},
{
"step": "router",
"input": {
"query": "Какие документы относятся к health endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Какие документы относятся к health endpoint?"
},
"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": 7999,
"tokens_in_estimate": 2098
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,513 +0,0 @@
# v3-related-health-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
Какие документы относятся к health endpoint?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_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"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Какие документы относятся к health endpoint?"
},
"output": {
"query": "Какие документы относятся к health endpoint?"
}
}
```
### router
```json
{
"input": {
"query": "Какие документы относятся к health endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Какие документы относятся к health endpoint?"
},
"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": 7999,
"tokens_in_estimate": 2098
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"layers_used": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 8,
"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": "graph_summary",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "topic",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D5_RELATION_GRAPH"
],
"planned_layers": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D5_RELATION_GRAPH"
],
"non_empty_layers": [
"D5_RELATION_GRAPH"
],
"layer_diagnostics": {
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 0,
"top_ids": [],
"skipped": true,
"reason": "relation_primary_sufficient"
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint"
],
"anchor_candidates": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"selected_anchor": "api.control_actions_endpoint",
"anchor_selection_reason": "relation_neighbor",
"anchor_match_type": "semantic_fallback",
"doc_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"api.send_message_endpoint:parent",
"api.control_actions_endpoint:parent",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 8,
"relation_targets": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"api.send_message_endpoint:parent",
"api.control_actions_endpoint:parent"
],
"fallback_doc_hits_count": 6,
"fallback_used": true,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 8,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "relation_evidence_available",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 7999,
"tokens_in_estimate": 2098
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Какие документы относятся к health endpoint?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"documents": [],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:parent",
"content": "api.send_message_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"source_id": "api.send_message_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "33eb0aa97f06d0afcaa4c230b5f5b73fa2fbfa5861ea9367b6c92f8a6fe0c054",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Какие документы относятся к health endpoint?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: RELATED_DOCS_EXPLAIN
- documents: 0
- facts: 0
- relations: 8 | samples: api.control_actions_endpoint:part_of, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,85 +0,0 @@
{
"meta": {
"case_id": "v3-related-send-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 14,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.health_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Какие документы связаны с /send?"
},
"output": {
"query": "Какие документы связаны с /send?"
}
},
{
"step": "router",
"input": {
"query": "Какие документы связаны с /send?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Какие документы связаны с /send?"
},
"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": 8086,
"tokens_in_estimate": 2120
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,521 +0,0 @@
# v3-related-send-1
- 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
Какие документы связаны с /send?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 14,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.health_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"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": "graph_summary",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Какие документы связаны с /send?"
},
"output": {
"query": "Какие документы связаны с /send?"
}
}
```
### router
```json
{
"input": {
"query": "Какие документы связаны с /send?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Какие документы связаны с /send?"
},
"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": 8086,
"tokens_in_estimate": 2120
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"layers_used": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 0,
"facts_found": 0,
"relations_found": 8,
"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": "graph_summary",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "endpoint",
"matched_anchor_value": "/send",
"exact_anchor_match": false,
"docs_layers_requested": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D5_RELATION_GRAPH"
],
"planned_layers": [
"D5_RELATION_GRAPH",
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D5_RELATION_GRAPH"
],
"non_empty_layers": [
"D5_RELATION_GRAPH"
],
"layer_diagnostics": {
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"33eb0aa97f06d0afcaa4c230b5f5b73fa2fbfa5861ea9367b6c92f8a6fe0c054",
"53dbf99d1ed72fb30e988fa7080e6ec3d0028d2a1e896e4e818f2492cc161bf5",
"a5c452b6685216d12fc857cd5b10a19b347655b1f1fd9f59d64fd413e93e36a5",
"d3d3ce25ca6434582c9bbb8f94ab89c7a2a497f46f1124f7e335c217281d42d9",
"305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94"
]
},
"D1_DOCUMENT_CATALOG": {
"hits": 0,
"top_ids": [],
"skipped": true,
"reason": "relation_primary_sufficient"
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.health_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/send"
],
"resolved_anchor_candidates": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/health-endpoint.md",
"api.health_endpoint"
],
"anchor_candidates": [
"api.send_message_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"selected_anchor": "api.send_message_endpoint",
"anchor_selection_reason": "doc_id matches requested endpoint slug",
"anchor_match_type": "exact_path",
"doc_ids": [
"api.send_message_endpoint",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.health_endpoint"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/health-endpoint.md"
],
"doc_titles": [
"api.send_message_endpoint:parent",
"api.send_message_endpoint:depends_on",
"api.send_message_endpoint:part_of",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:child",
"logic.telegram_notification_loop:related_api",
"api.health_endpoint:depends_on",
"api.health_endpoint:part_of",
"api.health_endpoint:Summary",
"api.health_endpoint:Описание",
"api.health_endpoint:Сценарий",
"api.health_endpoint:Функциональные требования",
"api.health_endpoint:Нефункциональные требования",
"api.health_endpoint:Входные параметры"
],
"relation_hits_count": 8,
"relation_targets": [
"api.send_message_endpoint:parent",
"api.send_message_endpoint:depends_on",
"api.send_message_endpoint:part_of",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:child",
"logic.telegram_notification_loop:related_api",
"api.health_endpoint:depends_on",
"api.health_endpoint:part_of"
],
"fallback_doc_hits_count": 6,
"fallback_used": true,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 0,
"facts": 0,
"relations": 8,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "relation_evidence_available",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 8086,
"tokens_in_estimate": 2120
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Какие документы связаны с /send?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "RELATED_DOCS_EXPLAIN",
"documents": [],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:parent",
"content": "api.send_message_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"source_id": "api.send_message_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "33eb0aa97f06d0afcaa4c230b5f5b73fa2fbfa5861ea9367b6c92f8a6fe0c054",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:depends_on",
"content": "api.send_message_endpoint depends_on logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"source_id": "api.send_message_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "53dbf99d1ed72fb30e988fa7080e6ec3d0028d2a1e896e4e818f2492cc161bf5",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:part_of",
"content": "api.send_message_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"source_id": "api.send_message_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "a5c452b6685216d12fc857cd5b10a19b347655b1f1fd9f59d64fd413e93e36a5",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"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.send_message_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.send_message_endpoint",
"doc_version": null,
"relation_id": "d3d3ce25ca6434582c9bbb8f94ab89c7a2a497f46f1124f7e335c217281d42d9",
"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
}
},
{
"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/logic/telegram-notification-loop.md",
"title": "logic.telegram_notification_loop:related_api",
"content": "logic.telegram_notification_loop related_api api.send_message_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"source_id": "logic.telegram_notification_loop",
"target_id": "api.send_message_endpoint",
"doc_version": null,
"relation_id": "6b692f308b472d540c199a26362f4ec8d35e1e6859c1141518e0d6667148e981",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Какие документы связаны с /send?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: RELATED_DOCS_EXPLAIN
- documents: 0
- facts: 0
- relations: 8 | samples: api.send_message_endpoint:parent, api.send_message_endpoint:depends_on, api.send_message_endpoint:part_of
## Mismatches
- none
@@ -1,87 +0,0 @@
{
"meta": {
"case_id": "v3-system-flow-health-1",
"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": false,
"mismatches": [
"sub_intent: expected SYSTEM_FLOW_EXPLAIN, got GENERIC_QA"
],
"actual": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
},
"pipeline_steps": [
{
"step": "input_query",
"input": {
"query": "Как работает health check runtime?"
},
"output": {
"query": "Как работает health check runtime?"
}
},
{
"step": "router",
"input": {
"query": "Как работает health check runtime?"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как работает health check runtime?"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 9461,
"tokens_in_estimate": 2452
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,524 +0,0 @@
# v3-system-flow-health-1
- 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: False
## Query
Как работает health check runtime?
## Actual
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 12,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": null
},
"pipeline_mode": "pre_llm_only",
"gate_decision": "allow",
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"degraded_reason": null,
"code_intents_stubbed": true
}
## Pipeline Steps
### input_query
```json
{
"input": {
"query": "Как работает health check runtime?"
},
"output": {
"query": "Как работает health check runtime?"
}
}
```
### router
```json
{
"input": {
"query": "Как работает health check runtime?"
},
"output": {
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как работает health check runtime?"
},
"output": {
"answer_mode": "ready",
"prompt_name": "docs_general_answer",
"llm_request": {
"prompt_name": "docs_general_answer",
"log_context": "graph.project_qa.docs.answer",
"prompt_stats": {
"system_chars": 345,
"user_chars": 9461,
"tokens_in_estimate": 2452
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"documents_found": 4,
"facts_found": 0,
"relations_found": 0,
"openapi_fields_extracted": 0,
"missing_required_fields": [],
"openapi_status": {
"has_path": false,
"has_method": false,
"has_request": false,
"has_response": false
},
"prompt_used": "docs_general_answer",
"llm_mode": "prose",
"output_valid": true,
"matched_intent_source": "deterministic",
"matched_anchor_type": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 4,
"top_ids": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 8,
"top_ids": [
"api.health_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"domain.runtime_health",
"api.health_endpoint",
"logic.telegram_notification_loop",
"api.control_actions_endpoint",
"api.actions_endpoint"
],
"doc_paths": [
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/control-actions-endpoint.md"
],
"doc_titles": [
"Сущность runtime health",
"HTTP API /health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /actions/{action}",
"api.health_endpoint:Функциональные требования",
"api.health_endpoint:Выходные параметры",
"api.health_endpoint:Описание",
"api.health_endpoint:Сценарий",
"api.health_endpoint:Нефункциональные требования",
"api.health_endpoint:Входные параметры",
"api.health_endpoint:Summary",
"api.health_endpoint:Пример ответа"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 4,
"facts": 0,
"relations": 0,
"chunks": 8,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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_general_answer
- log_context: graph.project_qa.docs.answer
### Prompt Stats
```json
{
"system_chars": 345,
"user_chars": 9461,
"tokens_in_estimate": 2452
}
```
### System Prompt
```text
Ты отвечаешь на общий вопрос по документации проекта.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные документы и факты
- Не додумывай отсутствующие детали
- Если данных недостаточно, скажи это прямо
- Дай короткий понятный ответ без лишней структуры
```
### User Prompt
```json
{
"question": "Как работает health check runtime?",
"intent": "GENERAL_QA",
"sub_intent": "GENERIC_QA",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": []
}
```
### User Prompt Overview
- question: Как работает health check runtime?
- intent: GENERAL_QA
- sub_intent: GENERIC_QA
- documents: 4 | samples: Сущность runtime health, HTTP API /health, Цикл отправки уведомлений в Telegram
- facts: 0
- relations: 0
## Mismatches
- sub_intent: expected SYSTEM_FLOW_EXPLAIN, got GENERIC_QA
@@ -1,91 +0,0 @@
{
"meta": {
"case_id": "v3-system-flow-health-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 23,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"api.send_message_endpoint",
"docs/README.md"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Как происходит проверка состояния runtime?"
},
"output": {
"query": "Как происходит проверка состояния runtime?"
}
},
{
"step": "router",
"input": {
"query": "Как происходит проверка состояния runtime?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как происходит проверка состояния runtime?"
},
"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": 22363,
"tokens_in_estimate": 5689
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,915 +0,0 @@
# v3-system-flow-health-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
Как происходит проверка состояния runtime?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 23,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"api.send_message_endpoint",
"docs/README.md"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": "Как происходит проверка состояния runtime?"
},
"output": {
"query": "Как происходит проверка состояния runtime?"
}
}
```
### router
```json
{
"input": {
"query": "Как происходит проверка состояния runtime?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как происходит проверка состояния runtime?"
},
"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": 22363,
"tokens_in_estimate": 5689
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 8,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.health_endpoint",
"api.control_actions_endpoint",
"architecture.telegram_notify_app"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.health_endpoint",
"api.control_actions_endpoint",
"api.send_message_endpoint"
]
},
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"8595d7b82fecdb7ef579fa8961cda6799bb21970061e5bc221d4dd7a3d53fd04",
"801650f8bcbfbfbefd35c14447bfef7b3c3827313db790efa7faf47db860f8c4",
"af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"79bdb0a74713df6064008179ca8c5c186dc23e4e1c5e2c9607b0bdddeba50f93",
"77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"domain.runtime_health",
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"docs/README.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"domain.runtime_health",
"logic.telegram_notification_loop",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"api.send_message_endpoint",
"docs/README.md"
],
"doc_paths": [
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/api/send-message-endpoint.md",
"docs/README.md"
],
"doc_titles": [
"Сущность runtime health",
"Цикл отправки уведомлений в Telegram",
"HTTP API /health",
"HTTP API /actions/{action}",
"Архитектура Telegram Notify App",
"HTTP API /send",
"Scenario",
"domain.runtime_health:related_logic",
"domain.runtime_health:used_by",
"domain.runtime_health:part_of",
"domain.runtime_health:parent",
"api.health_endpoint:depends_on",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:depends_on",
"api.health_endpoint:part_of",
"domain.runtime_health:Details",
"domain.runtime_health:Summary",
"docs/README.md:Навигация",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Сценарий"
],
"relation_hits_count": 8,
"relation_targets": [
"domain.runtime_health:related_logic",
"domain.runtime_health:used_by",
"domain.runtime_health:part_of",
"domain.runtime_health:parent",
"api.health_endpoint:depends_on",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:depends_on",
"api.health_endpoint:part_of"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 8,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 22363,
"tokens_in_estimate": 5689
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как происходит проверка состояния runtime?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:related_logic",
"content": "domain.runtime_health related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "8595d7b82fecdb7ef579fa8961cda6799bb21970061e5bc221d4dd7a3d53fd04",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:used_by",
"content": "domain.runtime_health used_by api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "801650f8bcbfbfbefd35c14447bfef7b3c3827313db790efa7faf47db860f8c4",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "used_by",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:part_of",
"content": "domain.runtime_health part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "af2a4f7c1b677b908410ba720915405e10dbd0870e30a3c6e3aa2468550ddf0e",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "domain.runtime_health:parent",
"content": "domain.runtime_health parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"source_id": "domain.runtime_health",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "79bdb0a74713df6064008179ca8c5c186dc23e4e1c5e2c9607b0bdddeba50f93",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"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 domain.runtime_health",
"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": "domain.runtime_health",
"doc_version": null,
"relation_id": "4e0bbeb8e97e25091a30412d8631b1d9f6bb58b5694d8b7cc632af69a9262ea8",
"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:depends_on",
"content": "architecture.telegram_notify_app depends_on domain.runtime_health",
"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": "domain.runtime_health",
"doc_version": null,
"relation_id": "228d9012df1811fd2ef79178ff79c3cbc85271cf2755b15a627ea320e8f442a5",
"source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Как происходит проверка состояния runtime?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: SYSTEM_FLOW_EXPLAIN
- documents: 6 | samples: Сущность runtime health, Цикл отправки уведомлений в Telegram, HTTP API /health
- facts: 0
- relations: 8 | samples: domain.runtime_health:related_logic, domain.runtime_health:used_by, domain.runtime_health:part_of
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "v3-system-flow-telegram-loop-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 23,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Объясни цикл отправки уведомлений"
},
"output": {
"query": "Объясни цикл отправки уведомлений"
}
},
{
"step": "router",
"input": {
"query": "Объясни цикл отправки уведомлений"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Объясни цикл отправки уведомлений"
},
"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": 20708,
"tokens_in_estimate": 5276
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,882 +0,0 @@
# v3-system-flow-telegram-loop-1
- 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
Объясни цикл отправки уведомлений
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 23,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": "Объясни цикл отправки уведомлений"
},
"output": {
"query": "Объясни цикл отправки уведомлений"
}
}
```
### router
```json
{
"input": {
"query": "Объясни цикл отправки уведомлений"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Объясни цикл отправки уведомлений"
},
"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": 20708,
"tokens_in_estimate": 5276
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 8,
"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": "none",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"docs/README.md",
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"docs/README.md",
"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",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"docs/README.md",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"domain.runtime_health"
],
"doc_paths": [
"docs/README.md",
"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/domain/runtime-health-entity.md"
],
"doc_titles": [
"Readme",
"HTTP API /actions/{action}",
"HTTP API /health",
"HTTP API /send",
"Архитектура Telegram Notify App",
"Сущность runtime health",
"Scenario",
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"api.send_message_endpoint:parent",
"api.control_actions_endpoint:parent",
"docs/README.md:Структура",
"docs/README.md:Навигация",
"docs/README.md:Правила и шаблоны",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"docs/README.md:Project Docs"
],
"relation_hits_count": 8,
"relation_targets": [
"api.control_actions_endpoint:part_of",
"api.control_actions_endpoint:related_api",
"api.control_actions_endpoint:related_logic",
"api.health_endpoint:parent",
"api.health_endpoint:part_of",
"api.health_endpoint:depends_on",
"api.send_message_endpoint:parent",
"api.control_actions_endpoint:parent"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 8,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 20708,
"tokens_in_estimate": 5276
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Объясни цикл отправки уведомлений",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"relations": [
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:part_of",
"content": "api.control_actions_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "5f4909bde905cd3d294ad307074a05e4ae4deefcafe6272cd2d0436e73acb8dd",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_api",
"content": "api.control_actions_endpoint related_api api.health_endpoint",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "api.health_endpoint",
"doc_version": null,
"relation_id": "711fb2edb82dd222deaba3c91768b18cbbd453009235823282813c6e867dc2c1",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_api",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:related_logic",
"content": "api.control_actions_endpoint related_logic logic.telegram_notification_loop",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "logic.telegram_notification_loop",
"doc_version": null,
"relation_id": "eec79f7a02b804337e791ef231784862ae26e0599eb20224790e9d4f085fa9c0",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "related_logic",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:parent",
"content": "api.health_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "c718b1939621233295ccaf6e8203e7fd94f3dd1bfb88f10c51bc5e33d53a24aa",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:part_of",
"content": "api.health_endpoint part_of architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "616f5cbf25da83cb51d8d0741a7fc351620c9ca2c6513fa2094b4aa476f0912a",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "part_of",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:depends_on",
"content": "api.health_endpoint depends_on domain.runtime_health",
"metadata": {
"owner": null,
"anchor": "frontmatter.links",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"source_id": "api.health_endpoint",
"target_id": "domain.runtime_health",
"doc_version": null,
"relation_id": "77f5d358ab85b3d92018b6b51da7c39773148dfd346686e8832a45370c841160",
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "depends_on",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:parent",
"content": "api.send_message_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"source_id": "api.send_message_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "33eb0aa97f06d0afcaa4c230b5f5b73fa2fbfa5861ea9367b6c92f8a6fe0c054",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:parent",
"content": "api.control_actions_endpoint parent architecture.telegram_notify_app",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"source_id": "api.control_actions_endpoint",
"target_id": "architecture.telegram_notify_app",
"doc_version": null,
"relation_id": "afec31fd062e392dcd9699a92c7ab61fd4b1273c1a2b16702b23d55d8d0c47ac",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Объясни цикл отправки уведомлений
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: SYSTEM_FLOW_EXPLAIN
- documents: 6 | samples: Readme, HTTP API /actions/{action}, HTTP API /health
- facts: 0
- relations: 8 | samples: api.control_actions_endpoint:part_of, api.control_actions_endpoint:related_api, api.control_actions_endpoint:related_logic
## Mismatches
- none
@@ -1,91 +0,0 @@
{
"meta": {
"case_id": "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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 18,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Как работает процесс отправки уведомлений в Telegram?"
},
"output": {
"query": "Как работает процесс отправки уведомлений в Telegram?"
}
},
{
"step": "router",
"input": {
"query": "Как работает процесс отправки уведомлений в Telegram?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"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": 17588,
"tokens_in_estimate": 4496
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,785 +0,0 @@
# 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": 18,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": 17588,
"tokens_in_estimate": 4496
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 3,
"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": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"architecture.telegram_notify_app",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94",
"7bd0428d23e9b20f7d65202cc269e45b3d1e7aed7b5df4a35581fd88677be29b",
"0eb7f73fcda8556439e06f5eeb5ce064ae32b6cd3129353f5b1b4eb3db626d88",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"145ccbb861a8fb621286ec9c888ce69677168d35c7871c70537e888ce3a5b910"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"logic.telegram_notification_loop",
"architecture.telegram_notify_app",
"docs/README.md"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"docs/README.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"doc_paths": [
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/README.md"
],
"doc_titles": [
"Архитектура Telegram Notify App",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"Сущность runtime health",
"HTTP API /health",
"HTTP API /actions/{action}",
"Scenario",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:parent",
"logic.telegram_notification_loop:Summary",
"logic.telegram_notification_loop:Details",
"architecture.telegram_notify_app:Summary",
"architecture.telegram_notify_app:Details",
"docs/README.md:Навигация",
"api.health_endpoint:Функциональные требования"
],
"relation_hits_count": 3,
"relation_targets": [
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:parent"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 3,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 17588,
"tokens_in_estimate": 4496
}
```
### 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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"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
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"title": "architecture.telegram_notify_app:parent",
"content": "architecture.telegram_notify_app parent docs_root",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
"source_id": "architecture.telegram_notify_app",
"target_id": "docs_root",
"doc_version": null,
"relation_id": "e01922b36e3cc60d9349f89e43fcd4a92c6a01394b0028d6b6d56801b258645d",
"source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Как работает процесс отправки уведомлений в Telegram?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: SYSTEM_FLOW_EXPLAIN
- documents: 6 | samples: Архитектура Telegram Notify App, Цикл отправки уведомлений в Telegram, HTTP API /send
- facts: 0
- relations: 3 | samples: architecture.telegram_notify_app:child, architecture.telegram_notify_app:related_api, architecture.telegram_notify_app:parent
## Mismatches
- none
@@ -1,91 +0,0 @@
{
"meta": {
"case_id": "v3-system-flow-telegram-loop-3",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 18,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": [
{
"step": "input_query",
"input": {
"query": "Опиши workflow Telegram уведомлений"
},
"output": {
"query": "Опиши workflow Telegram уведомлений"
}
},
{
"step": "router",
"input": {
"query": "Опиши workflow Telegram уведомлений"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Опиши workflow 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": 17570,
"tokens_in_estimate": 4491
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,785 +0,0 @@
# v3-system-flow-telegram-loop-3
- 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
Опиши workflow Telegram уведомлений
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 18,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"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": "Опиши workflow Telegram уведомлений"
},
"output": {
"query": "Опиши workflow Telegram уведомлений"
}
}
```
### router
```json
{
"input": {
"query": "Опиши workflow Telegram уведомлений"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Опиши workflow 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": 17570,
"tokens_in_estimate": 4491
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "SYSTEM_FLOW_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 0,
"relations_found": 3,
"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": "Telegram",
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D4_WORKFLOW_INDEX",
"D5_RELATION_GRAPH",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"architecture.telegram_notify_app",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D5_RELATION_GRAPH": {
"hits": 8,
"top_ids": [
"305bab0c6567d93a2b453a9d70b676f9ecd8de083ef36f5cf3398747c25ebf94",
"7bd0428d23e9b20f7d65202cc269e45b3d1e7aed7b5df4a35581fd88677be29b",
"0eb7f73fcda8556439e06f5eeb5ce064ae32b6cd3129353f5b1b4eb3db626d88",
"ae34fe4b3cd2b47632b13b1e32303e842b57948aa21160abe8d9b478995e1d74",
"145ccbb861a8fb621286ec9c888ce69677168d35c7871c70537e888ce3a5b910"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"logic.telegram_notification_loop",
"architecture.telegram_notify_app",
"docs/README.md"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md",
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"docs/README.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop",
"api.send_message_endpoint",
"domain.runtime_health",
"api.health_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"docs/README.md"
],
"doc_paths": [
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md",
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/README.md"
],
"doc_titles": [
"Архитектура Telegram Notify App",
"Цикл отправки уведомлений в Telegram",
"HTTP API /send",
"Сущность runtime health",
"HTTP API /health",
"HTTP API /actions/{action}",
"Scenario",
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:parent",
"logic.telegram_notification_loop:Summary",
"logic.telegram_notification_loop:Details",
"architecture.telegram_notify_app:Summary",
"architecture.telegram_notify_app:Details",
"docs/README.md:Навигация",
"api.health_endpoint:Сценарий"
],
"relation_hits_count": 3,
"relation_targets": [
"architecture.telegram_notify_app:child",
"architecture.telegram_notify_app:related_api",
"architecture.telegram_notify_app:parent"
],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 0,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 0,
"relations": 3,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 17570,
"tokens_in_estimate": 4491
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Опиши workflow 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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [],
"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
}
},
{
"layer": "D5_RELATION_GRAPH",
"path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"title": "architecture.telegram_notify_app:parent",
"content": "architecture.telegram_notify_app parent docs_root",
"metadata": {
"owner": null,
"anchor": "frontmatter.parent",
"doc_id": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b1cc9f823e55bddbc825466d10a0fdb4ca4354ac02d91f9e2aef7b7d2ec8256",
"source_id": "architecture.telegram_notify_app",
"target_id": "docs_root",
"doc_version": null,
"relation_id": "e01922b36e3cc60d9349f89e43fcd4a92c6a01394b0028d6b6d56801b258645d",
"source_path": "docs/documentation/architecture/telegram-notify-app-overview.md",
"artifact_type": null,
"last_modified": null,
"relation_type": "parent",
"staleness_score": null,
"system_component": null
}
}
]
}
```
### User Prompt Overview
- question: Опиши workflow Telegram уведомлений
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: SYSTEM_FLOW_EXPLAIN
- documents: 6 | samples: Архитектура Telegram Notify App, Цикл отправки уведомлений в Telegram, HTTP API /send
- facts: 0
- relations: 3 | samples: architecture.telegram_notify_app:child, architecture.telegram_notify_app:related_api, architecture.telegram_notify_app:parent
## Mismatches
- none
@@ -1,43 +0,0 @@
# pipeline_setup_v3 summary
Passed: 25/30
| File | Case | Mode | Query | Actual sub-intent | RAG layers | Tokens | Pass |
|------|------|------|-------|-------------------|------------|--------|------|
| full_chain_docs_intents_v3-3x.yaml | v3-system-flow-telegram-loop-1 | pre_llm | Объясни цикл отправки уведомлений | SYSTEM_FLOW_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D4_WORKFLOW_INDEX:3, D5_RELATION_GRAPH:8 | 5276 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-system-flow-telegram-loop-2 | pre_llm | Как работает процесс отправки уведомлений в Telegram? | SYSTEM_FLOW_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D4_WORKFLOW_INDEX:3, D5_RELATION_GRAPH:3 | 4496 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-system-flow-telegram-loop-3 | pre_llm | Опиши workflow Telegram уведомлений | SYSTEM_FLOW_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D4_WORKFLOW_INDEX:3, D5_RELATION_GRAPH:3 | 4491 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-system-flow-health-1 | pre_llm | Как работает health check runtime? | GENERIC_QA | D0_DOC_CHUNKS:8, D1_DOCUMENT_CATALOG:4 | 2452 | ✗ |
| full_chain_docs_intents_v3-3x.yaml | v3-system-flow-health-2 | pre_llm | Как происходит проверка состояния runtime? | SYSTEM_FLOW_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D4_WORKFLOW_INDEX:3, D5_RELATION_GRAPH:8 | 5689 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-component-runtime-manager-1 | pre_llm | Что делает RuntimeManager? | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D5_RELATION_GRAPH:6 | 5471 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-component-runtime-manager-2 | pre_llm | Как устроен RuntimeManager? | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D5_RELATION_GRAPH:6 | 5471 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-component-runtime-manager-3 | pre_llm | Опиши компонент RuntimeManager | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D5_RELATION_GRAPH:6 | 5472 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-component-control-channel-1 | pre_llm | Как работает TelegramControlChannel? | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D5_RELATION_GRAPH:6 | 5474 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-component-control-channel-2 | pre_llm | Роль TelegramControlChannel в системе | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D5_RELATION_GRAPH:6 | 5474 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-api-health-1 | pre_llm | Что делает /health? | API_METHOD_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:1, D2_FACT_INDEX:2, D4_WORKFLOW_INDEX:1 | 1149 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-api-health-2 | pre_llm | Как работает health endpoint? | API_METHOD_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D4_WORKFLOW_INDEX:3 | 4254 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-api-health-3 | pre_llm | Опиши endpoint health | API_METHOD_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D4_WORKFLOW_INDEX:3 | 4252 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-api-send-1 | pre_llm | Что делает /send? | API_METHOD_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:1, D2_FACT_INDEX:2, D4_WORKFLOW_INDEX:1 | 1195 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-api-send-2 | pre_llm | Как работает send endpoint? | API_METHOD_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D4_WORKFLOW_INDEX:3 | 3846 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-api-send-3 | pre_llm | Опиши endpoint отправки сообщений | API_METHOD_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:2, D4_WORKFLOW_INDEX:3 | 3847 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-entity-runtime-health-1 | pre_llm | Что такое runtime health? | ENTITY_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D3_ENTITY_CATALOG:8, D5_RELATION_GRAPH:6 | 5165 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-entity-runtime-health-2 | pre_llm | Объясни runtime health | GENERIC_QA | D0_DOC_CHUNKS:8, D1_DOCUMENT_CATALOG:4 | 2449 | ✗ |
| full_chain_docs_intents_v3-3x.yaml | v3-entity-worker-status-1 | pre_llm | Что такое WorkerStatus? | ENTITY_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D3_ENTITY_CATALOG:8, D5_RELATION_GRAPH:6 | 4793 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-entity-worker-status-2 | pre_llm | Опиши статус воркера | GENERIC_QA | D0_DOC_CHUNKS:8, D1_DOCUMENT_CATALOG:4 | 1976 | ✗ |
| full_chain_docs_intents_v3-3x.yaml | v3-related-health-1 | pre_llm | Что связано с /health? | RELATED_DOCS_EXPLAIN | D0_DOC_CHUNKS:6, D5_RELATION_GRAPH:8 | 2070 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-related-health-2 | pre_llm | Какие документы относятся к health endpoint? | RELATED_DOCS_EXPLAIN | D0_DOC_CHUNKS:6, D5_RELATION_GRAPH:8 | 2098 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-related-send-1 | pre_llm | Какие документы связаны с /send? | RELATED_DOCS_EXPLAIN | D0_DOC_CHUNKS:6, D5_RELATION_GRAPH:8 | 2120 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-related-architecture-1 | pre_llm | Какие документы связаны с архитектурой? | RELATED_DOCS_EXPLAIN | D0_DOC_CHUNKS:6, D5_RELATION_GRAPH:8 | 2097 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-general-1 | pre_llm | Что есть в документации? | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:1, D5_RELATION_GRAPH:6 | 5039 | ✗ |
| full_chain_docs_intents_v3-3x.yaml | v3-general-2 | pre_llm | Какая структура документации? | COMPONENT_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D2_FACT_INDEX:1, D5_RELATION_GRAPH:6 | 5040 | ✗ |
| full_chain_docs_intents_v3-3x.yaml | v3-general-3 | pre_llm | С чего начать читать документацию? | GENERIC_QA | D0_DOC_CHUNKS:8, D1_DOCUMENT_CATALOG:4 | 1980 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-negative-1 | pre_llm | Что такое PaymentTransaction? | ENTITY_EXPLAIN | D0_DOC_CHUNKS:6, D1_DOCUMENT_CATALOG:6, D3_ENTITY_CATALOG:8, D5_RELATION_GRAPH:6 | 4794 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-negative-2 | pre_llm | Объясни сущность UnknownEntity | ENTITY_EXPLAIN | — | 142 | ✓ |
| full_chain_docs_intents_v3-3x.yaml | v3-negative-3 | pre_llm | Что делает endpoint /unknown? | API_METHOD_EXPLAIN | — | 143 | ✓ |
## Failures
- **v3-system-flow-health-1**: sub_intent: expected SYSTEM_FLOW_EXPLAIN, got GENERIC_QA
- **v3-entity-runtime-health-2**: sub_intent: expected ENTITY_EXPLAIN, got GENERIC_QA
- **v3-entity-worker-status-2**: sub_intent: expected ENTITY_EXPLAIN, got GENERIC_QA
- **v3-general-1**: sub_intent: expected GENERIC_QA, got COMPONENT_EXPLAIN
- **v3-general-2**: sub_intent: expected GENERIC_QA, got COMPONENT_EXPLAIN
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "v3-api-health-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 10,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Что делает /health?"
},
"output": {
"query": "Что делает /health?"
}
},
{
"step": "router",
"input": {
"query": "Что делает /health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что делает /health?"
},
"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": 4201,
"tokens_in_estimate": 1149
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,429 +0,0 @@
# v3-api-health-1
- 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
Что делает /health?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 10,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.health_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Что делает /health?"
},
"output": {
"query": "Что делает /health?"
}
}
```
### router
```json
{
"input": {
"query": "Что делает /health?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что делает /health?"
},
"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": 4201,
"tokens_in_estimate": 1149
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 2,
"relations_found": 0,
"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": "endpoint",
"matched_anchor_value": "/health",
"exact_anchor_match": true,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"domain.runtime_health",
"api.health_endpoint",
"docs/README.md",
"architecture.telegram_notify_app",
"logic.telegram_notification_loop"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"1cff54331a52b7a92946e7afabe7e45d7e3ec693b59546f9666e494396593bc3",
"0d923b02d15cef527d51740b7a09378a7dc74fb58db27cd059a8658ad11601a5",
"3d3b6fcc21144cb68657be099291db0ae36d61d32d6d72fd5b7c3cb81f379877",
"0b70cbff38a527cecfb53d3f72d573e9da1826cc75bd4cb92357e1de10988204",
"ce6d44c30418b0b171433a144f78d4bbf53b7a060d9b7cd42b9feecc8ca3044e"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.health_endpoint",
"api.control_actions_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.health_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/health"
],
"resolved_anchor_candidates": [
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.health_endpoint"
],
"doc_paths": [
"docs/documentation/api/health-endpoint.md"
],
"doc_titles": [
"HTTP API /health",
"Scenario",
"api.health_endpoint:Сценарий",
"api.health_endpoint:workflow_step",
"api.health_endpoint:mentions_entity",
"api.health_endpoint:Нефункциональные требования",
"api.health_endpoint:Summary",
"api.health_endpoint:Описание",
"api.health_endpoint:Функциональные требования",
"api.health_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 7,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "evidence_sufficient",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 4201,
"tokens_in_estimate": 1149
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что делает /health?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:workflow_step",
"content": "api.health_endpoint workflow_step Предусловия:**",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Предусловия:**",
"fact_id": "1cff54331a52b7a92946e7afabe7e45d7e3ec693b59546f9666e494396593bc3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.health_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/health-endpoint.md",
"title": "api.health_endpoint:mentions_entity",
"content": "api.health_endpoint mentions_entity TelegramControlChannel",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "TelegramControlChannel",
"fact_id": "3d3b6fcc21144cb68657be099291db0ae36d61d32d6d72fd5b7c3cb81f379877",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.health_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/health-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Что делает /health?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 1 | samples: HTTP API /health
- facts: 2 | samples: api.health_endpoint:workflow_step, api.health_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "v3-api-health-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Как работает health endpoint?"
},
"output": {
"query": "Как работает health endpoint?"
}
},
{
"step": "router",
"input": {
"query": "Как работает health endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как работает health endpoint?"
},
"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": 16622,
"tokens_in_estimate": 4254
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,754 +0,0 @@
# v3-api-health-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
Как работает health endpoint?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Как работает health endpoint?"
},
"output": {
"query": "Как работает health endpoint?"
}
}
```
### router
```json
{
"input": {
"query": "Как работает health endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как работает health endpoint?"
},
"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": 16622,
"tokens_in_estimate": 4254
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 0,
"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": "topic",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"a8a325e0815b3a2a870ba2825f3afb3f41056b4c091df4c3bb3418ffd20891dd",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md"
],
"doc_titles": [
"HTTP API /send",
"HTTP API /actions/{action}",
"HTTP API /health",
"Сущность runtime health",
"Архитектура Telegram Notify App",
"Цикл отправки уведомлений в Telegram",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"Scenario",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 16622,
"tokens_in_estimate": 4254
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как работает health endpoint?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step Название:** Выполнение control action runtime",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Название:** Выполнение control action runtime",
"fact_id": "f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity JSONResponse",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "JSONResponse",
"fact_id": "b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Как работает health endpoint?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 6 | samples: HTTP API /send, HTTP API /actions/{action}, HTTP API /health
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "v3-api-health-3",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Опиши endpoint health"
},
"output": {
"query": "Опиши endpoint health"
}
},
{
"step": "router",
"input": {
"query": "Опиши endpoint health"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Опиши endpoint health"
},
"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": 16614,
"tokens_in_estimate": 4252
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,754 +0,0 @@
# v3-api-health-3
- 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
Опиши endpoint health
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Опиши endpoint health"
},
"output": {
"query": "Опиши endpoint health"
}
}
```
### router
```json
{
"input": {
"query": "Опиши endpoint health"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Опиши endpoint health"
},
"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": 16614,
"tokens_in_estimate": 4252
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 0,
"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": "topic",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"a8a325e0815b3a2a870ba2825f3afb3f41056b4c091df4c3bb3418ffd20891dd",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"domain.runtime_health",
"docs/documentation/domain/runtime-health-entity.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"logic.telegram_notification_loop",
"docs/documentation/logic/telegram-notification-loop.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"domain.runtime_health",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"logic.telegram_notification_loop"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/domain/runtime-health-entity.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/documentation/logic/telegram-notification-loop.md"
],
"doc_titles": [
"HTTP API /send",
"HTTP API /actions/{action}",
"HTTP API /health",
"Сущность runtime health",
"Архитектура Telegram Notify App",
"Цикл отправки уведомлений в Telegram",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"Scenario",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 16614,
"tokens_in_estimate": 4252
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Опиши endpoint health",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/logic/telegram-notification-loop.md",
"title": "Цикл отправки уведомлений в Telegram",
"content": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"metadata": {
"name": "telegram_notification_loop",
"tags": [
"logic",
"telegram",
"worker",
"scheduling"
],
"type": "logic_block",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.send_message_endpoint"
},
{
"type": "related_api",
"target": "api.control_actions_endpoint"
},
{
"type": "related_api",
"target": "api.health_endpoint"
}
],
"owner": null,
"title": "Цикл отправки уведомлений в Telegram",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "0f62f9b4dab261ca4ca34575ff5d84411a22c90b780c52eda388782b94f08470",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramNotifyWorker",
"TelegramSendService",
"WorkerHealth",
"WorkerStatus"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "logic.telegram_notification_loop",
"source_path": "docs/documentation/logic/telegram-notification-loop.md",
"summary_text": "`TelegramNotifyWorker` после старта runtime запускает отдельный поток, сразу делает первую попытку отправки сообщения и затем повторяет отправку через заданный интервал. При ошибках доставки или отсутствии credentials worker не останавливает сервис, а переводит собственное состояние в `degraded`. Этот workflow определяет основной полезный цикл приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step Название:** Выполнение control action runtime",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Название:** Выполнение control action runtime",
"fact_id": "f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity JSONResponse",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "JSONResponse",
"fact_id": "b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Опиши endpoint health
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 6 | samples: HTTP API /send, HTTP API /actions/{action}, HTTP API /health
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,83 +0,0 @@
{
"meta": {
"case_id": "v3-api-send-1",
"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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 10,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Что делает /send?"
},
"output": {
"query": "Что делает /send?"
}
},
{
"step": "router",
"input": {
"query": "Что делает /send?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Что делает /send?"
},
"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": 4384,
"tokens_in_estimate": 1195
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,428 +0,0 @@
# v3-api-send-1
- 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
Что делает /send?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 10,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Что делает /send?"
},
"output": {
"query": "Что делает /send?"
}
}
```
### router
```json
{
"input": {
"query": "Что делает /send?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Что делает /send?"
},
"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": 4384,
"tokens_in_estimate": 1195
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 1,
"facts_found": 2,
"relations_found": 0,
"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": "endpoint",
"matched_anchor_value": "/send",
"exact_anchor_match": true,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"architecture.telegram_notify_app",
"api.control_actions_endpoint",
"api.health_endpoint",
"docs/README.md"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"6bf0a662808009874a108d0c97f7cca7fc4ff7a3a3d66e0947b31bf813cfdf4d",
"dc979c31d511a14d3af89f5f5c493fcfc0c9f2090dc16fb20ff874f4b3566221",
"149c4e0d3d34b3faba055b1495d54818fadc882af633da70035b82190c1bd327",
"480d85819e9298d4078f8a3bd6cfccb9c0fe2a03695b87f65f82f9aa8e2097b0",
"7aefee9ff6110088aad1891da66fc9085eb3f77d832605a3da565deecb96e850"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [
"/send"
],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md"
],
"anchor_candidates": [],
"selected_anchor": null,
"anchor_selection_reason": "",
"anchor_match_type": "",
"doc_ids": [
"api.send_message_endpoint"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md"
],
"doc_titles": [
"HTTP API /send",
"Scenario",
"api.send_message_endpoint:Сценарий",
"api.send_message_endpoint:workflow_step",
"api.send_message_endpoint:mentions_entity",
"api.send_message_endpoint:Нефункциональные требования",
"api.send_message_endpoint:Summary",
"api.send_message_endpoint:Описание",
"api.send_message_endpoint:Функциональные требования",
"api.send_message_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 7,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 1,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": false,
"payload_description": false
}
},
"gate_decision": "allow",
"gate_decision_reason": "evidence_sufficient",
"gate_missing_requirements": [],
"gate_satisfied_requirements": [
"retrieval_non_empty",
"exact_anchor_match"
],
"openapi_evidence": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 4384,
"tokens_in_estimate": 1195
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Что делает /send?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:workflow_step",
"content": "api.send_message_endpoint workflow_step Telegram credentials доступны в переменных окружения.",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Telegram credentials доступны в переменных окружения.",
"fact_id": "6bf0a662808009874a108d0c97f7cca7fc4ff7a3a3d66e0947b31bf813cfdf4d",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.send_message_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "api.send_message_endpoint:mentions_entity",
"content": "api.send_message_endpoint mentions_entity TelegramNotifyWorker",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "TelegramNotifyWorker",
"fact_id": "149c4e0d3d34b3faba055b1495d54818fadc882af633da70035b82190c1bd327",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.send_message_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/send-message-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Что делает /send?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 1 | samples: HTTP API /send
- facts: 2 | samples: api.send_message_endpoint:workflow_step, api.send_message_endpoint:mentions_entity
- relations: 0
## Mismatches
- none
@@ -1,90 +0,0 @@
{
"meta": {
"case_id": "v3-api-send-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,
"mismatches": [],
"actual": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": [
{
"step": "input_query",
"input": {
"query": "Как работает send endpoint?"
},
"output": {
"query": "Как работает send endpoint?"
}
},
{
"step": "router",
"input": {
"query": "Как работает send endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
},
{
"step": "docs_pipeline",
"input": {
"query": "Как работает send endpoint?"
},
"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": 14988,
"tokens_in_estimate": 3846
}
},
"degraded_reason": ""
}
}
]
}
@@ -1,726 +0,0 @@
# v3-api-send-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
Как работает send endpoint?
## Actual
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START",
"rag_count": 17,
"llm_answer": "",
"answer_mode": "answered",
"path_scope": [],
"doc_scope": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health"
],
"entity_candidates": [],
"symbol_candidates": [],
"layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"filters": {
"doc_type": "api_method"
},
"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": "Как работает send endpoint?"
},
"output": {
"query": "Как работает send endpoint?"
}
}
```
### router
```json
{
"input": {
"query": "Как работает send endpoint?"
},
"output": {
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"graph_id": "DocsQAGraph",
"conversation_mode": "START"
}
}
```
### docs_pipeline
```json
{
"input": {
"query": "Как работает send endpoint?"
},
"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": 14988,
"tokens_in_estimate": 3846
}
},
"degraded_reason": ""
}
}
```
## Diagnostics
{
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"layers_used": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"documents_found": 6,
"facts_found": 2,
"relations_found": 0,
"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": "topic",
"matched_anchor_value": null,
"exact_anchor_match": false,
"docs_layers_requested": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"docs_layers_with_hits": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"planned_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"executed_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"non_empty_layers": [
"D1_DOCUMENT_CATALOG",
"D2_FACT_INDEX",
"D4_WORKFLOW_INDEX",
"D0_DOC_CHUNKS"
],
"layer_diagnostics": {
"D1_DOCUMENT_CATALOG": {
"hits": 6,
"top_ids": [
"api.send_message_endpoint",
"api.control_actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"docs/README.md"
]
},
"D2_FACT_INDEX": {
"hits": 8,
"top_ids": [
"f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"b8e44c3adb74aaa6c91ae8815fa091289e58dd3990a3a1b63e850c62075aea75",
"bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"54bbcbac242f1c85ec3280236ed5841998a8a3a548ff16cbf0b5acafbff469e3",
"b6bfad59b3bf00f199b5ef90c1208af19664de700413e7354468a93a4abaaa2f"
]
},
"D4_WORKFLOW_INDEX": {
"hits": 3,
"top_ids": [
"api.control_actions_endpoint",
"api.health_endpoint",
"api.send_message_endpoint"
]
},
"D0_DOC_CHUNKS": {
"hits": 6,
"top_ids": [
"api.control_actions_endpoint"
]
}
},
"query_entity_candidates": [],
"resolved_entity_candidates": [],
"query_anchor_candidates": [],
"resolved_anchor_candidates": [
"api.send_message_endpoint",
"docs/documentation/api/send-message-endpoint.md",
"api.control_actions_endpoint",
"docs/documentation/api/control-actions-endpoint.md",
"api.health_endpoint",
"docs/documentation/api/health-endpoint.md",
"architecture.telegram_notify_app",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.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.send_message_endpoint",
"api.control_actions_endpoint",
"api.actions_endpoint",
"api.health_endpoint",
"architecture.telegram_notify_app",
"architecture.telegram_notify_app_overview",
"docs/README.md",
"domain.runtime_health"
],
"doc_paths": [
"docs/documentation/api/send-message-endpoint.md",
"docs/documentation/api/control-actions-endpoint.md",
"docs/documentation/api/health-endpoint.md",
"docs/documentation/architecture/telegram-notify-app-overview.md",
"docs/README.md",
"docs/documentation/domain/runtime-health-entity.md"
],
"doc_titles": [
"HTTP API /send",
"HTTP API /actions/{action}",
"HTTP API /health",
"Архитектура Telegram Notify App",
"Readme",
"Сущность runtime health",
"api.control_actions_endpoint:workflow_step",
"api.control_actions_endpoint:mentions_entity",
"Scenario",
"api.control_actions_endpoint:Функциональные требования",
"api.control_actions_endpoint:Нефункциональные требования",
"api.control_actions_endpoint:Сценарий",
"api.control_actions_endpoint:Summary",
"api.control_actions_endpoint:Описание",
"api.control_actions_endpoint:Входные параметры"
],
"relation_hits_count": 0,
"relation_targets": [],
"fallback_doc_hits_count": 12,
"fallback_used": false,
"fact_hits": 2,
"entity_hits": 0,
"evidence_summary": {
"documents": 6,
"facts": 2,
"relations": 0,
"chunks": 6,
"entity_hits": 0,
"openapi_signals": {
"path_found": false,
"method_found": false,
"request_schema": false,
"response_schema": false,
"status_codes": 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,
"request_schema": false,
"response_schema": false,
"status_codes": 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": 14988,
"tokens_in_estimate": 3846
}
```
### System Prompt
```text
Ты объясняешь документацию системы.
На вход приходит JSON с полями:
- question
- intent
- sub_intent
- documents
- facts
- relations
Правила:
- Используй только предоставленные факты
- Не додумывай
- Если данных недостаточно, скажи это явно
- Объясняй структурировано
Формат ответа:
1. Краткое описание
2. Основные элементы
3. Как это работает
4. Связи с другими частями системы (если есть)
```
### User Prompt
```json
{
"question": "Как работает send endpoint?",
"intent": "DOCUMENTATION_EXPLAIN",
"sub_intent": "API_METHOD_EXPLAIN",
"documents": [
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/send-message-endpoint.md",
"title": "HTTP API /send",
"content": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"metadata": {
"name": "send_message_endpoint",
"tags": [
"api",
"telegram",
"manual-send"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /send",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "5fbf2e33510b0676a3a53b957a4569bd3c2c31fb7719546602c573421ccaa32d",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlAppFactory",
"TelegramSendService",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.send_message_endpoint",
"source_path": "docs/documentation/api/send-message-endpoint.md",
"summary_text": "Endpoint `/send` выполняет ручную отправку сообщения в Telegram через `TelegramSendService`. Он используется для операторской проверки доставки и для отправки уведомлений вне периодического worker loop. Endpoint работает поверх тех же credentials и того же delivery path, что и фоновая отправка.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "HTTP API /actions/{action}",
"content": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"metadata": {
"name": "control_actions_endpoint",
"tags": [
"api",
"control-plane",
"lifecycle"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "related_api",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "HTTP API /actions/{action}",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"ControlActionSet",
"JSONResponse"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.control_actions_endpoint",
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"summary_text": "Endpoint `/actions/{action}` управляет control actions runtime и поддерживает `start`, `stop` и `status`. Для долгих операций `start` и `stop` допускается ответ HTTP 202, если действие еще выполняется. Endpoint используется для operator-driven управления жизненным циклом worker'а через HTTP API.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/api/health-endpoint.md",
"title": "HTTP API /health",
"content": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"metadata": {
"name": "health_endpoint",
"tags": [
"api",
"health",
"control-plane"
],
"type": "api_method",
"layer": "application",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "depends_on",
"target": "domain.runtime_health"
}
],
"owner": null,
"title": "HTTP API /health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "8b5a533a8076e2e9d36995eee29aeade260080bdca2ec8e21fe28f08574b983f",
"children": [],
"doc_kind": "misc",
"entities": [
"TelegramControlChannel",
"TelegramNotifyWorker",
"RuntimeManager",
"WorkerHealth"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "api.health_endpoint",
"source_path": "docs/documentation/api/health-endpoint.md",
"summary_text": "Endpoint `/health` возвращает агрегированный health payload runtime. Если общий статус равен `ok`, API отвечает с HTTP 200; для состояний деградации или неготовности возвращается HTTP 503 с тем же payload. Endpoint служит основной точкой внешней проверки состояния приложения.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"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
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/README.md",
"title": "Readme",
"content": "Readme",
"metadata": {
"name": "",
"tags": [],
"type": "",
"layer": "",
"links": [],
"owner": null,
"title": "Readme",
"doc_id": null,
"module": "",
"parent": null,
"status": null,
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "81d952f1a6ea85b76f75e0e57f33b8fa4b2bf3cb7db11b91b90171aeedd655a6",
"children": [],
"doc_kind": "readme",
"entities": [],
"updated_at": null,
"doc_version": null,
"document_id": "docs/README.md",
"source_path": "docs/README.md",
"summary_text": "",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D1_DOCUMENT_CATALOG",
"path": "docs/documentation/domain/runtime-health-entity.md",
"title": "Сущность runtime health",
"content": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"metadata": {
"name": "runtime_health",
"tags": [
"domain",
"health",
"observability"
],
"type": "domain_entity",
"layer": "domain",
"links": [
{
"type": "part_of",
"target": "architecture.telegram_notify_app"
},
{
"type": "used_by",
"target": "api.health_endpoint"
},
{
"type": "related_logic",
"target": "logic.telegram_notification_loop"
}
],
"owner": null,
"title": "Сущность runtime health",
"doc_id": null,
"module": "telegram_notify_app",
"parent": "architecture.telegram_notify_app",
"status": "draft",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "37d4dcf470ea3de95d59e44786006e369a3ea11bf5dbf4c88877696e9183ee87",
"children": [],
"doc_kind": "misc",
"entities": [
"WorkerHealth",
"WorkerStatus",
"TelegramNotifyWorker"
],
"updated_at": "2026-03-20",
"doc_version": null,
"document_id": "domain.runtime_health",
"source_path": "docs/documentation/domain/runtime-health-entity.md",
"summary_text": "`runtime health` — доменная модель наблюдаемости сервиса, которая описывает общее состояние runtime и состояние отдельных компонентов. Для `test_echo_app` главным объектом наблюдения является компонент `telegram_notify`, у которого важны статус, время старта и количество успешных отправок. Эта модель используется для внешнего health-monitoring и внутренней диагностики.",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"facts": [
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:workflow_step",
"content": "api.control_actions_endpoint workflow_step Название:** Выполнение control action runtime",
"metadata": {
"tags": [],
"owner": null,
"anchor": "Сценарий",
"doc_id": null,
"object": "Название:** Выполнение control action runtime",
"fact_id": "f85d982c272a2ee6baeadc433221a20e684cd8ef01cb4788d6f76d05ca56d6d0",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "workflow_step",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
},
{
"layer": "D2_FACT_INDEX",
"path": "docs/documentation/api/control-actions-endpoint.md",
"title": "api.control_actions_endpoint:mentions_entity",
"content": "api.control_actions_endpoint mentions_entity ControlActionSet",
"metadata": {
"tags": [],
"owner": null,
"anchor": "frontmatter.entities",
"doc_id": null,
"object": "ControlActionSet",
"fact_id": "bafb867ffed41c9db637df98d6cd5f6722d7747bbebc6c03e6f0d0caf3b7f9f3",
"repo_id": "test_echo_app",
"section": null,
"blob_sha": "a251c550a23249ef1a74389c93aaccd4c5ae88ef621efad2aa018fcd132cce7e",
"predicate": "mentions_entity",
"object_ref": null,
"subject_id": "api.control_actions_endpoint",
"doc_version": null,
"source_path": "docs/documentation/api/control-actions-endpoint.md",
"artifact_type": null,
"last_modified": null,
"staleness_score": null,
"system_component": null
}
}
],
"relations": []
}
```
### User Prompt Overview
- question: Как работает send endpoint?
- intent: DOCUMENTATION_EXPLAIN
- sub_intent: API_METHOD_EXPLAIN
- documents: 6 | samples: HTTP API /send, HTTP API /actions/{action}, HTTP API /health
- facts: 2 | samples: api.control_actions_endpoint:workflow_step, api.control_actions_endpoint:mentions_entity
- relations: 0
## Mismatches
- none

Some files were not shown because too many files have changed in this diff Show More