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

9.2 KiB
Raw Permalink Blame History

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 файлов не нужно.

Конкретное изменение в коде:

# 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.