docs(skill): claude-subagent-playbook — уроки боевого прогона 2026-07-07

- Зачем:
  - первый полный боевой прогон конвейера (наглядность витрины t2-ml-forecast)
    дал систематические уроки по ожиданию фоновых job и resume Codex-тредов.
- Что:
  - в references/lessons.md добавлен разбор прогона: idle-уведомление ≠ отчёт,
    bash-поллер умирает на смене хода (нужен persistent Monitor), зомби-job
    со статусом «running» у мёртвого воркера и его диагностика.
  - урок про resume уточнён по опыту пользователя из /adversarial-review:
    resume — только по явному id треда; безадресный resumeLast подхватывает
    чужой тред; запасной путь — свежий write-тред с контекстом из файла задачи.
  - зафиксировано: ранжировать правила постановки (что главнее) и требовать
    вписывать доводы отклонений в файл задачи; цифры прогона (18 мин
    реализация, тесты 147 → 154, ноль пересечений находок двух ревью).
- Проверка:
  - вычитка references/lessons.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Dmitry DementievandClaude Fable 5 committed 2026-07-07 19:03:41 +03:00
1 parent 145ac75a09
commit ba587293c9
1 file changed
+39
@@ -49,3 +49,42 @@
если он критичен, проси ревьюера сначала писать результат в файл если он критичен, проси ревьюера сначала писать результат в файл
(двухканальный протокол раннера из /adversarial-review), а сообщение слать (двухканальный протокол раннера из /adversarial-review), а сообщение слать
как указатель. Ревью скилла не состоялось — отложено до боевого прогона. как указатель. Ревью скилла не состоялось — отложено до боевого прогона.
## Прогон 2026-07-07: наглядность витрины (боевой, полный конвейер)
Задача: витрина понятна финансисту без голоса (5 блоков, 5 файлов). Конвейер
отработал целиком: исследование двумя головами → постановка → свежий взгляд
(1 блокер + 9 находок, в т.ч. повторно поймана ловушка name_ru) → Codex 18 мин
→ два слепых ревью → триаж у исполнителя → две точечные правки → приёмка.
Пересечение находок ревьюеров — снова ~ноль (Клод смотрел артефакты глазами и
принял; Codex дал 4 «поправить» по букве задачи). Их прямое противоречие
(ослаблен ли тест) рассудил исполнитель по контракту — механизм работает.
**Ожидание фоновых job:**
- Idle-уведомление субагента ≠ отчёт: почти каждый субагент уходил в idle ДО
доставки отчёта. Лечится немедленным явным «пришли отчёт на main».
- Фоновый bash-поллер (`until…sleep`) у раннера умирает при смене хода.
Надёжно: persistent Monitor без таймаута.
- Статус job — не истина: воркер финальной правки умер после успешных проверок,
статус завис «running» навсегда (зомби). Диагностика оркестратором: mtime
артефакта (showcase-check.ipynb дописан) + лог job (все проверки зелёные) +
pgrep (воркера нет) → забрать финал себе, раннера распустить.
**Codex companion:**
- Безадресный `--resume`/resumeLast резолвится в «последний тред сессии» — при
параллельных тредах подхватывает чужой read-only ревью-тред. С ЯВНЫМ id тред
подхватывается свой (сэндбокс привязан к треду: у write-треда останется write) —
это же проходили в /adversarial-review. Правило: resume — только по id; если id
не сохранился, свежий write-тред дочитает контекст из файла задачи (решения
вписаны туда).
**Постановка:**
- Правила задачи стоит ранжировать явно («правило A главнее буквы E»):
внутреннее противоречие (де-жаргон vs «заголовки не трогать») всплыло только
после починки по ревью и потребовало отдельной правки решением оркестратора.
- Требовать от исполнителя вписывать доводы отклонений в файл задачи — окупилось:
свежий write-тред продолжил работу без контекста предшественника.
**Цифры:** реализация 18 мин; триаж-починка ~8 мин; финальная правка ~3 мин
работы + ~20 мин зомби-ожидания. Тесты 147 → 154. Панель конвенций дала демо
аргумент: 10 из 13 против 6 из 13 в зависимости от прочтения порога.