diff --git a/tasks/kin-docs-002-analysis.md b/tasks/kin-docs-002-analysis.md new file mode 100644 index 0000000..8a142d4 --- /dev/null +++ b/tasks/kin-docs-002-analysis.md @@ -0,0 +1,141 @@ +# 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.