kin/tasks/kin-docs-002-analysis.md
2026-03-19 15:58:39 +02:00

141 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# KIN-DOCS-002: Аудит промптов агентов — Аналитический отчёт
**Дата:** 2026-03-19
**Исполнитель:** tech_researcher
**Статус:** Исследование завершено
---
## 1. Структурный аудит всех 25 промпт-файлов
**Вывод: ВСЕ 25 файлов содержат все 5 обязательных секций.**
| № | Файл | Working Mode | Focus On | Quality Checks | Return Format | Constraints |
|---|------|:---:|:---:|:---:|:---:|:---:|
| 1 | analyst.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 2 | architect.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 3 | backend_dev.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 4 | backlog_audit.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 5 | business_analyst.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 6 | constitution.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 7 | constitutional_validator.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 8 | debugger.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 9 | department_head.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 10 | followup.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 11 | frontend_dev.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 12 | learner.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 13 | legal_researcher.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 14 | market_researcher.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 15 | marketer.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 16 | pm.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 17 | reviewer.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 18 | security.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 19 | smoke_tester.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 20 | spec.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 21 | sysadmin.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 22 | task_decomposer.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 23 | tech_researcher.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 24 | tester.md | ✅ | ✅ | ✅ | ✅ | ✅ |
| 25 | ux_designer.md | ✅ | ✅ | ✅ | ✅ | ✅ |
---
## 2. Конфликт-анализ 9 файлов из EXCLUDED_FROM_STRUCTURE_CHECK
| Файл | 5 секций | Тест(ы), ссылающиеся на файл | Тип проверки | Реальный конфликт | Рекомендация |
|------|:---:|------|------|:---:|------|
| analyst.md | ✅ | test_kin_128_regression.py (analyst injection, revise_count), test_kin_arch_023_regression.py (pending_steps), test_context_builder.py (context assembly) | Структурная (pipeline logic) + Output-контентная (root_problem) | ❌ НЕТ | YELLOW → убрать из exclusion |
| backend_dev.md | ✅ | test_kin_128_regression.py (proof fields: what_was_done, how_verified, verification_result), test_context_builder.py (context assembly) | Output-контентная | ❌ НЕТ | YELLOW → убрать из exclusion |
| constitutional_validator.md | ✅ | test_kin_docs_001_regression.py (gate=true, output_schema, route position), test_kin_091_regression.py (маршруты) | Структурная (yaml config + routes), НЕ .md структура | ❌ НЕТ | YELLOW → убрать из exclusion |
| debugger.md | ✅ | test_KIN-117_regression.py (worktree logic), test_context_builder.py (context), test_kin_128_regression.py (proof: what_was_fixed, how_verified, verification_result) | Output-контентная | ❌ НЕТ | YELLOW → убрать из exclusion |
| frontend_dev.md | ✅ | test_context_builder.py (decision selectors), test_kin_128_regression.py (proof field), test_kin_091_regression.py (маршруты) | Output-контентная | ❌ НЕТ | YELLOW → убрать из exclusion |
| pm.md | ✅ | test_context_builder.py (context + specialists assembly), test_kin_091_regression.py (маршруты) | Output-контентная (context assembly) | ❌ НЕТ | YELLOW → убрать из exclusion |
| reviewer.md | ✅ | test_context_builder.py (decision selectors), test_kin_100_regression.py (## Verdict, ## Details), test_kin_133_gate_cannot_close.py (gate logic: approved/changes_requested/revise) | Output-контентная | ❌ НЕТ | YELLOW → убрать из exclusion |
| smoke_tester.md | ✅ | test_kin_128_regression.py (confirmed/cannot_confirm → pipeline status) | Output-контентная (status processing) | ❌ НЕТ | YELLOW → убрать из exclusion |
| tester.md | ✅ | test_context_builder.py (minimal context), test_auto_mode.py (auto_complete logic), test_kin_100_regression.py (## Verdict, ## Details) | Output-контентная | ❌ НЕТ | YELLOW → убрать из exclusion |
### Ключевой вывод по конфликтам
**По decision #922**: output-контентный тест (проверяет наличие конкретных слов/полей в тексте промпта) **не конфликтует** со структурным тестом (проверяет наличие 5 заголовков `##`).
- Ни один из 9 excluded файлов не имеет **реального структурного конфликта** с тестом `TestAllPromptsContainStandardStructure`
- Все тесты, ссылающиеся на excluded файлы, проверяют либо: (a) pipeline-логику в Python-коде, либо (b) содержимое поля `proof`/`verdict` в тексте промпта
- Заголовки `## Verdict`, `## Details` (reviewer, tester) — это **дополнительные** секции поверх стандартных 5, не конфликтуют
---
## 3. Классификация GREEN / YELLOW / RED
### 🟢 GREEN (16 файлов) — уже в активной зоне проверки, всё ок
architect.md, backlog_audit.md, business_analyst.md, constitution.md, department_head.md, followup.md, learner.md, legal_researcher.md, market_researcher.md, marketer.md, security.md, spec.md, sysadmin.md, task_decomposer.md, tech_researcher.md, ux_designer.md
### 🟡 YELLOW (9 файлов) — в exclusion без реального конфликта, нужно убрать
analyst.md, backend_dev.md, constitutional_validator.md, debugger.md, frontend_dev.md, pm.md, reviewer.md, smoke_tester.md, tester.md
### 🔴 RED — нет ни одного файла с реальным конфликтом
---
## 4. Рекомендации для backend_head
**Что делать:** Убрать все 9 файлов из `EXCLUDED_FROM_STRUCTURE_CHECK` в `tests/test_kin_docs_002_regression.py`
**Что НЕ делать:** Промпт-файлы уже стандартизированы. Менять содержимое *.md файлов не нужно.
**Конкретное изменение в коде:**
```python
# tests/test_kin_docs_002_regression.py, строки 29-39
# БЫЛО:
EXCLUDED_FROM_STRUCTURE_CHECK = [
"reviewer.md",
"tester.md",
"constitutional_validator.md",
"pm.md",
"backend_dev.md",
"debugger.md",
"frontend_dev.md",
"analyst.md",
"smoke_tester.md",
]
# СТАЛО:
EXCLUDED_FROM_STRUCTURE_CHECK = []
```
**Эффект:** 9 ранее незащищённых файлов получат регрессионную защиту (decision #921). Тест `TestAllPromptsContainStandardStructure` начнёт покрывать все 25 файлов.
**Риск:** НУЛЕВОЙ — все 9 файлов уже содержат все 5 секций.
---
## 5. Рекомендации для qa_head
**Тесты для прогона после изменений:**
1. `pytest tests/test_kin_docs_002_regression.py -v` — основной структурный тест (должен пройти)
2. `pytest tests/test_kin_128_regression.py -v` — proof block + smoke_tester (не должен сломаться)
3. `pytest tests/test_context_builder.py -v` — context assembly (не должен сломаться)
4. `pytest tests/test_kin_100_regression.py -v` — reviewer/tester verdict (не должен сломаться)
5. `pytest tests/test_kin_docs_001_regression.py -v` — constitutional_validator в yaml (не должен сломаться)
**На что обратить внимание:**
- После удаления из exclusion, `_ACTIVE_PROMPT_NAMES` вырастет с 16 до 25 файлов
- `TestAllPromptsContainStandardStructure` будет генерировать 25×5=125 параметризованных тестов вместо 16×5=80
- Тест `TestPromptCount` ожидает ровно 25 файлов — это инвариант, не трогать
**Регрессионный риск:** Минимальный. Изменение в exclusion-списке — безопасная операция, все файлы уже соответствуют стандарту.
---
## 6. Итог
| Метрика | Значение |
|---------|---------|
| Файлов проверено | 25 |
| Файлов с полной структурой (5 секций) | **25 / 25 (100%)** |
| Файлов в exclusion-списке | 9 |
| Файлов с реальным конфликтом | **0** |
| Файлов для удаления из exclusion | **9** |
| Изменений в промпт-файлах | **0** |
**Вся работа сосредоточена в одном файле:** `tests/test_kin_docs_002_regression.py`, строки 29-39.