- Зачем:
- ревью скилла Опус-ревьюером не состоялось: субагент дважды ушёл в
idle без отчёта и исчез; урок должен остаться в эмпирике.
- Что:
- в references/lessons.md добавлен инцидент и вывод: критичный отчёт
ревьюера писать в файл (двухканальный протокол), сообщение — указатель.
- Проверка:
- зеркало ~/.claude/skills синхронно (rsync + diff).
52 lines
4.7 KiB
Markdown
52 lines
4.7 KiB
Markdown
# Эмпирика прогонов
|
||
|
||
Датированные факты: что поймал каждый этап конвейера, казусы, цифры.
|
||
Дописывай после каждого прогона — это и есть «выжимка опыта», ради которой
|
||
скилл существует.
|
||
|
||
## 2026-07-06 — t2-ml-forecast, задача 05 «полировка витрины под демо»
|
||
|
||
Первый прогон конвейера. Задача: ~200 строк правок в ядре отчёта + ноутбук.
|
||
|
||
**Свежий взгляд на постановку (Клод, adversarial-reviewer) — окупился:**
|
||
- блокер: постановка требовала «русские названия из `report.name_ru`», а в
|
||
данных `name_ru` — английские имена из Excel-книги; исполнитель молча
|
||
сделал бы английские заголовки. Решение внесено в задачу: словарь
|
||
«статья → русское имя» как явная поставка;
|
||
- две «одностроки», прятавшие проектные решения: поворот отрицательного ряда
|
||
(правило, пересчёт коридора, единый хелпер) и согласованность
|
||
«график по модулю vs таблица со знаком»;
|
||
- процессная дыра: без явных двух шагов регенерации `.ipynb` остался бы без
|
||
выводов, и тест ноутбука его бы завернул.
|
||
|
||
**Казус форвардера:** субагент `codex:codex-rescue`, получив постановку
|
||
вместо команды, реализовал задачу сам (+1227 строк). Настоящий Codex стартовал
|
||
на уже изменённом дереве — столкновения избежали везением (форвардер успел
|
||
закончить). Урок в SKILL.md и codex-companion.md.
|
||
|
||
**Слепое двойное ревью — родословные поймали разное:**
|
||
- Клод (Опус): APPROVE; подтвердил математику поворота/коридора
|
||
(алгебраическое тождество), краевые случаи (ряд через ноль, нули),
|
||
неизменность метрик и таблиц; посмотрел картинки из `.ipynb`; один nit.
|
||
- Codex (свежий тред): needs-attention; две дыры в тестах — раздел ноутбука
|
||
не закреплён в required_snippets, нет регрессионного теста «таблица
|
||
отрицательного ряда остаётся со знаком». Оба — про то, что зелёный прогон
|
||
не докажет готовность; Клод этих дыр не нашёл.
|
||
- Пересечения находок — ноль. Слепота и разность родословных работают.
|
||
|
||
**Точечная починка:** Codex `--fresh` с промптом «добавь только два теста,
|
||
продуктовый код не трогай» — чисто, 148 → 150 passed.
|
||
|
||
**Цифры для калибровки:** ревью Клода на Фабуле (этап постановки) — ~60k
|
||
токенов; конвейер целиком — ~3 часа настенного времени, из них реализация
|
||
~20 минут; остальное — ревью и оркестрация. На мелочь такое не разворачивать.
|
||
|
||
**Смерть ревьюера (тот же день, ревью самого скилла по /claude-team-review):**
|
||
Опус-ревьюер дважды ушёл в idle без доставленного отчёта (одно напоминание
|
||
по idle-гарду — снова тишина), пользователь подтвердил: субагент исчез из
|
||
интерфейса. Спасти отчёт из транскрипта не удалось — jsonl тиммейтов не
|
||
нашлись в каталоге проекта. Урок: отчёт фонового ревьюера — скоропортящийся;
|
||
если он критичен, проси ревьюера сначала писать результат в файл
|
||
(двухканальный протокол раннера из /adversarial-review), а сообщение слать
|
||
как указатель. Ревью скилла не состоялось — отложено до боевого прогона.
|