diff --git a/agents/.agents/skills/claude-subagent-playbook/handoffs/20260713-progon-zadachi-13-echo-i-format-indeksa.md b/agents/.agents/skills/claude-subagent-playbook/handoffs/20260713-progon-zadachi-13-echo-i-format-indeksa.md new file mode 100644 index 0000000..0a29289 --- /dev/null +++ b/agents/.agents/skills/claude-subagent-playbook/handoffs/20260713-progon-zadachi-13-echo-i-format-indeksa.md @@ -0,0 +1,47 @@ +# Handoff разработки скилла: прогон задачи 13, эхо файла задачи и формат индекса + +Дата: 2026-07-13. Контекст: третий боевой прогон конвейера (clickstream-demo, +задача 13 «глагол next-day»), первый после рефакторинга «тонкого мастера» +(коммит `f9ea5b8`) и поглощения уроков задачи 20. + +## Итог прогона для скилла + +Рефакторинг подтверждён боем: все поглощённые уроки сработали (вердикты по +одному чтению, cat-сборка промптов, английский обмен, стоп-кран диагнозов, +будильники одной строкой). Полная эмпирика и цифры — в +`references/lessons.md`, запись «Прогон 2026-07-12/13», здесь не дублируются. + +## Что изменено в скилле этим заходом + +- `references/lessons.md` — запись прогона задачи 13 (находки этапов, три + новых пожирателя контекста, цифры). +- `references/prompt-templates.md` — обёртка Клод-ревьюера дополнена + требованием однострочности индекса (boilerplate это уже требовал, но + Клод-родословная держит формат хуже Codex) + пояснение, почему дубль. + +## Открытые вопросы разработки + +1. **Эхо файла задачи** — главный непоглощённый пожиратель: когда + исполнитель правит файл, который мастер недавно писал сам, харнесс + вкатывает мастеру весь файл (в прогоне — ~190 строк, текст тикета прошёл + через мастера трижды). Варианты: резолюции исполнителя — отдельным + файлом с переносом в тикет на финале (минус: лишний шаг и двойное место + правды); писать тикет через fast-worker по списку решений (минус: список + решений ≈ сам текст); принять цену и просто зафиксировать в SKILL.md + предупреждением. Решения нет — обсудить с пользователем. +2. **Проверить в следующем прогоне**, помогло ли напоминание об + однострочности в обёртке Клод-ревьюера (если нет — думать про пример + формата прямо в обёртке). +3. **Кандидат в SKILL.md/шаблоны:** вердикты узких перепроверок Клода можно + принимать из строки task-notification без чтения файла (обёртка и так + требует финальным актом только VERDICT-строку) — в прогоне сэкономило + одно чтение. Закрепить явно? +4. **Эксперимент «worker на medium»** (память пользователя) так и не + поставлен: реализация задачи 13 сознательно шла на high. Полигон-кандидат + — маленькая задача про расписание next-day в clickstream-demo. + +## Suggested skills + +- `conventional-commits` — коммит этих правок в dotfiles. +- `claude-subagent-playbook` — следующий боевой прогон (задача про + расписание) с проверкой пункта 2. diff --git a/agents/.agents/skills/claude-subagent-playbook/references/lessons.md b/agents/.agents/skills/claude-subagent-playbook/references/lessons.md index d6482b7..8e4703f 100644 --- a/agents/.agents/skills/claude-subagent-playbook/references/lessons.md +++ b/agents/.agents/skills/claude-subagent-playbook/references/lessons.md @@ -111,3 +111,54 @@ git (`git show HEAD:path`) + повторным наложением право **Цифры:** реализация ~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. diff --git a/agents/.agents/skills/claude-subagent-playbook/references/prompt-templates.md b/agents/.agents/skills/claude-subagent-playbook/references/prompt-templates.md index 37eab72..0a03830 100644 --- a/agents/.agents/skills/claude-subagent-playbook/references/prompt-templates.md +++ b/agents/.agents/skills/claude-subagent-playbook/references/prompt-templates.md @@ -85,10 +85,16 @@ will run it before the reviews start. Read {{path to review-prompt.md}} and execute it. Working directory: {{repo root}}. Write the full findings index to {{$D/review-claude.md}} — it is outside the repo, so the mandate allows -it (via Write or a Bash heredoc, whichever you have). Final message: -ONLY the VERDICT line, severity counters and the file path. +it (via Write or a Bash heredoc, whichever you have). Keep the index +strict: ONE line per finding and per confirmation, as the boilerplate +demands — no multi-line entries. Final message: ONLY the VERDICT line, +severity counters and the file path. ``` +(Однострочность продублирована в обёртке не случайно: boilerplate это уже +требует, но Клод-родословная держит формат хуже Codex — эмпирика +2026-07-12/13, многострочные находки и развёрнутые confirmations.) + ```markdown # Code review: {{ticket NN — essence}}