docs(skills): claude-subagent-playbook — эмпирика #39: суд над лечением

Зачем: два прошлых прогона оставили долг — статус вешался на находку, а
лечение проезжало без суда. В прогоне #39 долг закрыт шапками триажа и
перепроверки, и это стоит помнить вместе с ценой: ручку пришлось собирать
руками в каталоге прогона.

Что: секция от 2026-08-02 про тикет #39 — как сработала ручка соразмерности
(трижды за прогон), почему «10 FIXED, 0 REJECTED» не доказательство, зачем
проверять единственный MAJOR своим зондом при тонком логе перепроверки, и два
отказа вызова Кодекса: закрытый stdin убивает промпт, а `codex exec resume`
не принимает `-s`.

Проверка: чтением; правка только в lessons.md, поведение скилла не менялось.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dmitry DementievandClaude Opus 5 committed 2026-08-02 15:52:29 +03:00
1 parent 7377ee94c5
commit f758e1f802
1 file changed
+35
@@ -643,3 +643,38 @@ compose down`); отдельных событий эскалации в `--json`
- Цифры: ревью 68 команд, 3 находки (1 MAJOR завышен — сценарий требует - Цифры: ревью 68 команд, 3 находки (1 MAJOR завышен — сценарий требует
сознательно снять флаг у массива, 2 MINOR); перепроверка на medium — 12 сознательно снять флаг у массива, 2 MINOR); перепроверка на medium — 12
команд; батарея 17 мутантов, выживших нет. команд; батарея 17 мутантов, выживших нет.
## 2026-08-02: долг «суда над лечением» закрыт шапками (clickstream v2, тикет #39)
Штатная конфигурация: реализация — Опус-мастеровой, линия кода — Кодекс (high)
свежим тредом, линия задачи и вкуса — свежий Опус. Долг двух прошлых прогонов
закрыт руками: в шапку триажа и в шапку перепроверки дописаны абзацы про
соразмерность лечения (заготовки прогона; кандидат — перенести в
`prompts/triage-header.md` и `prompts/recheck-header.md`).
- **Ручка сработала трижды за один прогон.** Перепроверка вкусовой линии
сама оценила правку спеки на перебор (вышла за границу промпта — принята
с доводом: четыре фразы без поведения, чинят противоречие, внесённое этим
же изменением), приняла закрытие маршрутом, отличным от подсказанного
(«запрет был не той половиной, которую надо чинить»), и обосновала
соразмерность нового модуля. Без ручки всё три проехали бы молча, как в #36.
- **10 FIXED, 0 REJECTED — повод посмотреть на лечения, а не приговор.**
Перебора не нашлось, но узнал я это проверкой, а не по отсутствию отказов.
- **Пересечение линий — ноль из десяти, и каждая принесла свою дыру в
честности тестов.** CODE-1: слепок детерминизма не включал ни порядок
колонок, ни публичные швы для соседнего тикета — перестановка колонок через
вызов проходила все три сторожа. TASK-4: сторож правил нарезки ловил склейку
двух визитов, но не разрез одного. Разные тесты, разные механизмы.
- **Тонкий лог перепроверки — повод проверить MAJOR самому.** 8 команд против
58 в самом ревью; закрытие единственного MAJOR перепроверил своим зондом
(перестановка колонок, правка каждого шва, стабильность того же дня) — закрыт
честно. Цена приёма — один скрипт оркестратора.
- **Два отказа вызова Кодекса, оба от чтения правил без разбора.**
`< /dev/null` по правилу «фоновому запуску закрывай stdin» убивает промпт,
который сам идёт через stdin (`No prompt provided via stdin`), — правило не
про этот случай. И `codex exec resume` (0.145.0) не принимает `-s`: песочница
только через `-c sandbox_mode="workspace-write"`, остальные ключи (`-m`, `-c`,
`-o`, `--json`) те же, что у `exec`.
- Цифры: два ревью — 58 и 36 команд/инструментов, 10 находок (1 MAJOR,
8 MINOR, 1 NIT); триаж — 10 FIXED; перепроверки на medium — 8 и 12; тесты
297 → 353.