Files
dotfiles/agents/.agents/skills/claude-subagent-playbook/references/lessons.md
T
ddadminandClaude Fable 5 a4985b365d docs(skill): уроки прогона задачи 13 — эхо файла задачи и формат индекса
- Зачем:
  - третий боевой прогон подтвердил рефакторинг «тонкого мастера»;
    новые пожиратели контекста и слабое место Клод-ревьюера должны
    остаться в эмпирике скилла.
- Что:
  - lessons.md: запись прогона 2026-07-12/13 (находки этапов, три новых
    пожирателя, цифры конвейера).
  - prompt-templates.md: обёртка Клод-ревьюера требует однострочность
    индекса (Клод-родословная держит формат хуже Codex).
  - handoffs/: handoff разработки с открытыми вопросами (эхо файла
    задачи, приём вердикта из уведомления, эксперимент medium).
- Проверка:
  - вычитка; факты сверены с транскриптом прогона задачи 13.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 00:09:24 +03:00

165 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Эмпирика прогонов
Датированные факты: что поймал каждый этап конвейера, казусы, цифры.
Дописывай после каждого прогона — это и есть «выжимка опыта», ради которой
скилл существует. Журнал накопительный, поэтому дистиллируй: когда урок
поглощён SKILL.md или references, сжимай его запись здесь до строки-факта
(дата, что случилось, куда поглощено) — иначе файл растёт бесконечно.
## 2026-07-06 — t2-ml-forecast, задача 05 (первый прогон; дистиллировано 2026-07-12)
- Свежий взгляд на постановку окупился: блокер name_ru (в данных — английский),
две «одностроки» с проектными решениями, дыра регенерации `.ipynb`.
Поглощено: SKILL.md этап 2.
- Казус форвардера: субагент, получив постановку вместо команды, реализовал
задачу сам (+1227 строк). Поглощено: SKILL.md этап 3, codex-exec (раннер).
- Слепое двойное ревью: пересечение находок — ноль; Клод подтвердил математику
и артефакты, Codex нашёл две дыры в тестах. Поглощено: SKILL.md (роли).
- Смерть фонового ревьюера без доставленного отчёта; транскрипт не спас.
Поглощено: SKILL.md этап 4 (вердикт — файлом, сообщение — указателем).
- Цифры: ревью постановки ~60k токенов; конвейер ~3 часа, реализация ~20 мин.
## 2026-07-07 — наглядность витрины (полный конвейер; дистиллировано 2026-07-12)
- Idle-уведомление ≠ отчёт; голый поллер вне run_in_background умирает при
смене хода; статус job — не истина (зомби «running» после смерти воркера:
истина — mtime артефакта + лог + pgrep). Поглощено: SKILL.md
(«Пользователь в петле»), codex-exec (фоновый запуск, раннер).
- Безадресный resume подхватывает чужой тред. Поглощено: codex-exec.
- Доводы отклонений — в файл задачи (свежий тред продолжает без контекста
предшественника). Поглощено: prompts/triage-header.md.
- Не поглощено (держать в уме при постановке): правила задачи ранжировать
явно («правило A главнее буквы E») — внутренние противоречия всплывают
после починки.
- Цифры: реализация 18 мин; триаж ~8 мин; тесты 147 -> 154.
## 2026-07-09 — local-transcriber, SendTo (первый под Windows; дистиллировано 2026-07-12)
- Git Bash-стек работает целиком; классификатор режет companion `--write`,
прямой `codex exec` проходит. Поглощено: codex-exec.
- Свежий взгляд: 2 major (OEM-кодировка `.cmd` на кириллическом профиле,
протухание пути venv) + load-bearing порядок проверок. Поглощено: этап 2.
- Отписка: вердикт одной строкой, проверка по JSONL подтвердила работу.
Поглощено: SKILL.md этап 4, codex-exec.
- Эмпирический ревьюер (воспроизведение краевых случаев вне репо) — вердикт
твёрже. Поглощено: SKILL.md этап 4, boilerplate шаблонов.
- Цифры: ревью постановки ~57k, кода ~48k, перепроверка ~45k токенов.
## 2026-07-10 — четыре записи (дистиллировано 2026-07-12)
- Ревьюер Codex без read-only: мандат промптом надёжен, песочница не режется.
Поглощено: codex-exec (ветка ревьюера).
- Sandbox-инцидент CLI 0.144.1 (bwrap+userns vs AppArmor) и ловушка memfd
(профиль на путь bwrap не цепляется — вешать на бинарь codex). Поглощено:
codex-exec + codex-sandbox-apparmor.md.
- Постановка через `/to-tickets` ложится в конвейер без трения; двойное
слепое ревью постановки окупилось (Клод — механика кода, Codex — уровень
требований; пересечение 2 из ~15). Поглощено: SKILL.md этапы 1–2.
- Ретро расхода контекста (3 цикла): находки проходили через оркестратора
до шести раз; review-промпт дублировался; ~7 пустых ходов на idle-пингах.
Поглощено: SKILL.md (роль оркестратора: индекс, cat, файлы), шаблоны.
## Прогон 2026-07-12: clickstream-demo, задача 20 — флаки runtime-гейта
Полный конвейер + три захода стендовой приёмки. Главный урок прогона:
**ревью по чтению кода не заменяет сквозный прогон** — два класса дефектов
вскрылись только на стенде.
**Что поймал каждый этап:**
- Ревью постановки (Opus): настоящий корень — отсутствие SIGTERM-хендлера
(python PID 1, SIGKILL после grace); один из двух вариантов фикса в
постановке гонку не закрывал. Плюс критерий «красный сценарий всё ещё
ловится» и запрет вероятностных смягчений.
- Слепые ревью: Codex — grace-период 10с и обходимость precheck (пара из
старой backfill-строки); Клод — подтвердил структурный довод, на узкой
перепроверке принёс НОВУЮ находку (тест биндил порт 9109 — флаки 1/13).
Пересечение — 2 темы из ~8 (grace, слабый контракт-тест): не «стабильно
ноль», но малое; обе родословные оправдались.
- Стендовая приёмка (3 захода): (1) гейт годами жил на побочном эффекте
бага — пересекающие визиты давала «нелегальная переработка» генератора
после игнорируемого SIGTERM; честный фикс оставил проверку без сырья;
(2) таймзона: наивные метки STG (UTC) против границы с `+00:00` на
сервере Europe/Moscow — precheck был зелёным вакуумно; та же ошибка — в
приёмочном скрипте координатора (наивная конвенция DDS). Урок: сравнение
времени в SQL — только с явным поясом с обеих сторон.
**Ретро контекста оркестратора** (главный пожиратель — внеплановые циклы):
диагнозы падений приёмки велись мастером инлайн (~15 вызовов); boilerplate
промптов переписывался трижды; обменные файлы шли кириллицей (×1,5–2);
правки задачи-файла — тремя крупными Edit (old+new = двойной текст);
промпты будильников пересказывали план. Поглощено 2026-07-12: SKILL.md
(принцип «мастер решает — субагенты выясняют», стоп-кран «сам — максимум
один заход», механика — fast-worker'у, обменные файлы на английском,
будильник одной строкой, сквозная проверка до ревью, фолбэк ревьюера
deep-reasoner — обкатан этим прогоном), prompt-templates + prompts/
(готовые boilerplate-файлы, английские скелеты), codex-exec (модель
gpt-5.6-sol, medium для узких починок, ловушка `&`). Слепое Fable-ревью
самого скилла (по глоссарию writing-great-skills): восстановление после
rm -rf подтверждено без потерь, 9 MINOR + 5 NIT согласованности — все
закрыты тем же днём.
**Прочее:** казус двойного фона (`&` при run_in_background) — спасён
ожидателем `kill -0`; принятие остаточного риска (публикация не ограничена
по времени) зафиксировано доводом в задаче — паттерн «риск принят + после
фикса такой отказ падает громко и честно» работает как аргумент приёмки.
Отдельный казус координатора: `rm -rf` «зеркала» скилла прошёл сквозь
симлинк `~/.claude/skills -> dotfiles` и снёс оригинал; восстановлено из
git (`git show HEAD:path`) + повторным наложением правок из контекста.
Урок: перед rm — `ls -la` цели и родителя, симлинк-родитель = чужая
территория.
**Цифры:** реализация ~25 мин; ревью постановки 75k токенов субагента,
ревью кода 65k, перепроверка 80k (с новой находкой); приёмка — 4 прогона
гейта по ~1,5 мин + красный сценарий; тесты 190 -> 192 + 21.
## Прогон 2026-07-12/13: clickstream-demo, задача 13 — глагол next-day
Первый прогон после поглощения уроков задачи 20 — они сработали: вердикты
читались по одному разу, boilerplate не переписывался (cat из prompts/),
обмен на английском, ноль инлайн-диагнозов мастера (стоп-кран держит),
будильники одной строкой (9 взводов, ни один не сработал впустую — все
сняты по уведомлениям).
**Что поймал каждый этап:**
- Двойное ревью постановки: пересечение 5 тем из ~15 (guard, идемпотентность,
атомарность, формат цепочки, проверки). Уникальное: Клод — «next-day =
новый режим запуска, постановка прячет основную работу за словом
„переиспользует"»; Codex — «расписание запустит дефолтный backfill»
(скоуп-решение: расписание вынесено отдельной задачей).
- Слепые ревью кода: пересечение 1 тема из ~12 (нулевой стык). Codex —
дефекты нового скрипта (хвост за границей, TZ), Клод — архитектура
(retention Kafka против пересборки счётчиков — блокер будущей задачи,
скрытая связка наборов настроек). Родословные разошлись почти полностью.
- Эмпирика исполнителя: требование обоих ревью («громкий отказ на нулевом
стыке») покраснело на честном стенде — ночной провал трафика, снова класс
«артефакт верификатора». Диагноз по данным делегирован исполнителю тем же
тредом (state на границе: 0 активных визитов — restore ни при чём).
Урок: требование ревьюеров сверяй с критериями приёмки и реальным
распределением данных, прежде чем принять его в код.
- Узкая перепроверка Codex снова принесла новый MAJOR (микросекунды в
UTC-нормализации) — второй прогон подряд, считать штатным режимом.
**Новые пожиратели контекста мастера, по убыванию:**
1. Эхо файла задачи: исполнитель дописал резолюции в тикет, который мастер
сам писал на этапе 2, — харнесс вкатил в контекст все ~190 строк; итого
текст тикета прошёл через мастера трижды (Write + эхо + финальное
чтение). Не поглощено; митигация неочевидна — резолюции проекту нужны
именно в тикете. Держать в уме при выборе, кто пишет файл задачи.
2. Клод-ревьюер держит формат индекса хуже Codex: многострочные находки и
развёрнутые confirmations при жёстком boilerplate («one-phrase essence»).
Поглощено: обёртка Клод-ревьюера в prompt-templates дополнена
напоминанием об однострочности.
3. Авторство решений этапа 2 — у мастера по определению (110 строк
кириллицы в тикет после двойного ревью постановки): это цена этапа, на
мелких задачах конвейер не разворачивать (правило уже в SKILL.md,
теперь с ценником).
Дешёвый приём: вердикт перепроверки Клода взят из строки task-notification
(обёртка требует финальным актом только VERDICT-строку) — файл не читался.
**Цифры:** конвейер ~2 часа от ревью постановки до приёмки; реализация
~30 мин; Клод-субагенты: ревью постановки 94k, кода 108k, перепроверка
126k токенов; Codex-ревью: 42/36 команд; 2 круга триажа + узкий диагноз;
тесты 192 -> 204 + 21 -> 31; учебный цикл: DM 322 -> 10 026 -> 19 196 за
два next-day.