feat(skills): claude-subagent-playbook — исполнитель не берёт ревью на веру

- Зачем:
  - после разворота ролей (реализация Опусом, ревью Кодексом) ревьюер
    продавливает исполнителя формальными решениями: за прогоны #39, #40 и
    #50 около 28 находок и ноль отклонений.
- Что:
  - в triage-header добавлен блок «ревью — свидетельство, а не приказ»:
    отклонение равноправно починке, маршрут ревьюера — предложение.
  - определение NEEDS_DECISION расширено случаем, когда выбор делает сама
    починка, независимо от объёма правки.
  - в recheck-header добавлен суд над лечением: перебор — тоже дефект, а
    NOT_CLOSED требует существующего закрывающего состояния и цены
    альтернативы.
  - в lessons закрыт долг четырёх прогонов и сведена очередь на механизм.
- Проверка:
  - следующий полный прогон плейбука: в триаже должны появиться
    отклонения или закрытия своим маршрутом с доводом.
This commit is contained in:
Dmitry Dementiev committed 2026-08-03 21:38:37 +03:00
1 parent c18472e360
commit 36fc76ff90
3 files changed
+76 -9

No files matched your search

@@ -649,8 +649,7 @@ compose down`); отдельных событий эскалации в `--json`
Штатная конфигурация: реализация — Опус-мастеровой, линия кода — Кодекс (high)
свежим тредом, линия задачи и вкуса — свежий Опус. Долг двух прошлых прогонов
закрыт руками: в шапку триажа и в шапку перепроверки дописаны абзацы про
соразмерность лечения (заготовки прогона; кандидат — перенести в
`prompts/triage-header.md` и `prompts/recheck-header.md`).
соразмерность лечения (заготовки прогона; перенесены в шапки 2026-08-03).
- **Ручка сработала трижды за один прогон.** Перепроверка вкусовой линии
сама оценила правку спеки на перебор (вышла за границу промпта — принята
@@ -722,9 +721,7 @@ compose down`); отдельных событий эскалации в `--json`
ALL_CLOSED + 1 новый NIT (повтор фразы в спеке, внесённый починкой TASK-2) —
поправил сам по месту. Тесты 353 → 383.
- **Долг скилла остаётся тот же**: абзацы про соразмерность лечения третий
прогон подряд пишутся руками. Кандидат прежний — перенести в
`prompts/triage-header.md` и `prompts/recheck-header.md` (тексты этого
прогона годятся как есть).
прогон подряд пишутся руками. Закрыт 2026-08-03.
## 2026-08-02: сломанный прибор доезжает до коммита (clickstream v2, тикет #50)
@@ -778,6 +775,51 @@ compose down`); отдельных событий эскалации в `--json`
~31 мин, саморевью 3/3; слепые ревью — Опус 28 инструментов / 7 находок,
Кодекс 120 команд / 1, пересечение **ноль**; триаж 8 FIXED + второй круг
на 1 новую находку, 0 отклонённых; перепроверки 15 и 18; тесты 383 → 394.
- **Долг четвёртый прогон подряд тот же**: шапки соразмерности в
`prompts/triage-header.md` и `prompts/recheck-header.md` так и не
перенесены.
- **Долг четвёртый прогон подряд тот же**: шапки соразмерности так и не
перенесены. Закрыт 2026-08-03.
## 2026-08-03: долг соразмерности закрыт, и найдена его настоящая причина
Сессия без прогона: разбор `lessons.md` по `/writing-great-skills` и правка
шапок. Долг, висевший с #39, закрыт — правки лежат в
`prompts/triage-header.md` и `prompts/recheck-header.md`, содержание там,
здесь не дублирую.
- **Причина не в размере починки, а в весе слова** (диагноз пользователя).
Пока код писал Кодекс, а ревьюил Опус, послушный исполнитель был прав:
ревьюер сильнее как архитектор. После разворота ролей — вкусовая
реализация Опусом, ревью Кодексом — послушание стало вредным: Кодекс
очень сильный исполнитель, но слабее как мыслитель-архитектор, настойчив,
склонен к формализации без учёта высокоуровневой цели и продавливает
Опуса на свои решения. Перекос усиливает разница ступеней: Опус на medium
против Сола на high уступает ещё и по «званию».
- **Цифра под диагнозом**: #39, #40, #50 — около 28 находок, ноль
отклонений.
- **Два кандидата сняты сверкой с эмпирикой, а не по вкусу.** Требование
объявлять ослабление порога отдельной строкой — против него сам урок #50
(«объявление не заменяет проверку необходимости»), а оба случая (#40,
#50) поймала перепроверка. Пункт «оценивай довод исполнителя, а не факт
несогласия» — дубль строки, уже стоявшей в шапке.
- **Правило об арбитре в споре не писалось намеренно**: спора ни разу не
было (ноль отклонений), правило под несуществующую ситуацию есть
перерегулирование. Ждём первого отклонения — новые шапки как раз должны
его породить.
- **Разбор самого файла**: 783 строки, 22 записи; собственное правило
«поглощён урок — сожми до строки-факта» сработало один раз (07-12) и с
тех пор нет — записи после него по 30–80 строк, часть держит вторую копию
действующих правил SKILL.md. Дистилляция архива вынесена отдельным
заходом.
**Очередь на механизм** (сведена сюда, чтобы не искать по всему файлу):
блок открытых решений в промпте ревью — «какие решения ещё открыты и кем
владеются» (#36); абзац от линии Кодекса «что сделает эту правку
провальной, даже если все критерии зелёные» (#50); приёмы против сломанного
прибора оркестратора (#38 — `PYTHONDONTWRITEBYTECODE=1` и чистое дерево
крайними прогонами; #50 — арифметика чисел, попадающих в спеку, и явное
зерно; #39/#40 — тонкий лог перепроверки как повод проверить MAJOR своим
зондом; #40/#50 — один пример целиком на приёмке); мелочи по месту —
сведение вердиктов по совпадению явления, а не формулировки (этап 5), ревью
постановки не запускает команды тикета (этап 2), оговорка про `< /dev/null`
рядом с приёмом в `codex-exec.md`; старьё — ранжирование правил задачи
(07-07), эхо файла задачи (07-13), A/B на gpt-5.6-terra (07-13), пп. 1–2 и 4
одёргиваний (07-31).