OpenSpec change harness-retro: proposal, specs (harness-retro — новая capability; hook-guards — MODIFIED «Регрессионный корпус хуков»: сегменты и known), design с Decisions made without discussion. По итогам brainstorming 24.10.2026: черновик ретро, срез одного проекта, запуск из репозитория обвязки, разметка блокировок агентом в корпус, хвосты по текущему состоянию, поправки владельца по процессу, подход A. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
6.5 KiB
Proposal: /harness-retro — регулярное ретро обвязки
Issue: #29. Источники:
- ретро
docs/retro/2026-10-11.md— B12, решение владельца 3 (замер codegraph); - находки O-10, O-11 (#21), O-17 (#28);
- brainstorming 24.10.2026.
Why
Ретро 11.10 считали два одноразовых скрипта, docs/retro/scripts/retro_stats.py и retro_blocks.py. У них нет функций и тестов. В них зашиты имена репозиториев awp-ca, и они ничего не знают про .claude/worktrees/. Вывод — текст для глаз, поэтому таблицу «Цифры» собирали вручную.
Повторить такое ретро и сравнить его с прошлым нельзя, а именно сравнение показывает, помогли ли изменения обвязки: хуки 0.4.0, роли 0.3.0, allow-правила 0.5.0. Решение владельца 3 требует замерить codegraph в одном срезе, и метрика должна входить в /harness-retro.
Владелец хочет видеть в ретро места, где он поправлял агента по процессу. Сейчас они теряются в транскриптах.
Блокировки, размеченные при ретро, в регрессионный корпус хуков не попадают. Ложный блок, найденный на ретро, тестом не становится.
What Changes
-
Новый проектный skill
/harness-retro(.claude/skills/harness-retro/). Запускается в сессии в репозитории обвязки:/harness-retro <папка проекта или workspace> [--since ГГГГ-ММ-ДД]. Работа идёт по циклу фичи: issue,EnterWorktree, PR. Результат — черновикdocs/retro/<дата>.mdпо шаблону иdocs/retro/<дата>.metrics.json. Утверждение — merge владельца. -
docs/retro/scripts/retro_metrics.py— stdlib, на функциях, с тестами. Даёт метрики среза по транскриптам и памяти проекта:- сессии, промпты, инструменты, роли, сабагенты, skills, токены, компакции;
- стартовый контекст;
- блокировки хуков;
- отказы классификатора и владельца;
- codegraph против чтения кода;
- поправки владельца;
- «перечитай память»;
- размер памяти.
Выводит JSON, таблицу «Цифры» со сравнением с прошлым
*.metrics.jsonи кандидатов в поправки владельца с контекстом. -
docs/retro/scripts/retro_leftovers.pyищет хвосты чеклиста закрытия по текущему состоянию репозиториев проекта:- слитые ветки на сервере и локально, worktree на них;
.superpowers/sdd/*;- неархивные changes в
origin/main; - отставший или грязный основной checkout.
Только чтение;
--fetchпо запросу. -
hook_blocks_export.py --sinceвыгружает блокировки среза вdocs/retro/fixtures/hook-blocks-<дата>.jsonl. Агент размечает их по спекеhook-guardsвhook-labels-<дата>.json(вердикт, класс, раскладка песочницы), иhook_cases_build.pyдописывает их в корпус. -
Корпус хуков состоит из сегментов: у каждого своя шапка
{home, layout}, раннер строит песочницу на сегмент. Запись сknown: "RT-n"— известная ошибка текущих хуков, тест на ней не падает. Doctor показывает число известных ошибок. -
retro_stats.pyиretro_blocks.pyудаляются. Их заменяетretro_metrics.py. Ретро 11.10 ссылается на них как на историю. -
docs/retro/2026-10-11.metrics.jsonпереносится один раз из таблицы ретро 11.10, чтобы следующему ретро было с чем сравнивать.
Capabilities
New Capabilities
harness-retro: срез метрик обвязки по транскриптам, памяти и состоянию репозиториев проекта; кандидаты в поправки владельца; разметка блокировок в корпус; черновик ретро и сравнение с прошлым.
Modified Capabilities
hook-guards: требование «Регрессионный корпус хуков» — сегменты с собственной раскладкой и известные ошибкиknown.
Impact
- Код:
- новые
docs/retro/scripts/retro_metrics.py,retro_leftovers.py; hook_blocks_export.py(--since, id);hook_cases_build.py(разметка изhook-labels-*.json, сегменты);skills/harness-doctor/scripts/hook_corpus.py(сегменты,known);doctor.sh(строка корпуса).
- новые
- Skill:
.claude/skills/harness-retro/SKILL.mdиtemplate.md. Он проектный, поэтомуinstall.shне меняется. - Тесты:
- новые
tests/test-retro-metrics.sh,tests/test-retro-leftovers.sh; - дополнения в
test-hook-corpus.sh,test-hook-export.sh,test-doctor.sh.
- новые
- Документация:
CLAUDE.md(«Команды», «Архитектура», «Тесты»),docs/HARNESS.md(раздел «Ретро»),README.md,CHANGELOG.md0.6.0. - Вне задачи:
- сторона Gitea в хвостах закрытия: открытые issue после слитого PR, пропущенные follow-up;
- срезы по нескольким проектам сразу;
- автоматические находки по порогам;
- workspace awp-ca как полигон — первое ретро по нему делается на той машине.