ревью: гейт, прогнанный до ревью, засчитывается по отпечатку дерева
Повтор той же команды на неизменившемся дереве снят: ступень автотестов засчитывает прогон, сделанный шагом opsx:apply или шагом гейта обслуживания. Признак — отпечаток рабочего дерева, снятый дважды; любое расхождение ведёт к честному прогону. Журнал — тема 73.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: review-autotests
|
||||
description: "Тема `autotests` — проверено ли машиной и хватает ли проверок. Запускает команду гейта проекта (сборка/vet/линт/формат/тесты/флаки/гонки/покрытие изменённых строк/миграции/секреты/уязвимости) и интерпретирует вывод. Отличает новые отказы от унаследованных, находит отсутствующую верификацию (изменённые строки без покрытия, конкурентность без теста, флаки). Пока гейт красный, проходы с мнением не запускаются. Первый проход ревью кода и источник его графа, обязателен при любой метке."
|
||||
description: "Тема `autotests` — проверено ли машиной и хватает ли проверок. Гонит команду гейта проекта (сборка/vet/линт/формат/тесты/флаки/гонки/покрытие изменённых строк/миграции/секреты/уязвимости) и интерпретирует вывод; прогон, сделанный до ревью, засчитывает по отпечатку рабочего дерева вместо повтора. Отличает новые отказы от унаследованных, находит отсутствующую верификацию (изменённые строки без покрытия, конкурентность без теста, флаки). Пока гейт красный, проходы с мнением не запускаются. Первый проход ревью кода и источник его графа, обязателен при любой метке."
|
||||
tools: Bash, Read, Grep, Glob
|
||||
model: sonnet
|
||||
color: green
|
||||
@@ -40,15 +40,42 @@ color: green
|
||||
`CLAUDE.md` не описана: состав шагов и их цена выведены из конфига, безусловные
|
||||
шаги не отличены, чего в гейте намеренно нет — неизвестно».
|
||||
|
||||
## Прогнан ли гейт уже
|
||||
|
||||
**Задача приходит на ревью с зелёным гейтом:** сценарий, приведший её сюда,
|
||||
довёл его до зелёного сам. Второй прогон на неизменившемся дереве вернёт тот же
|
||||
вывод, а стоит он минут — правило и его причина в SKILL.md конвейера, ступень 1.
|
||||
|
||||
Задание несёт сводку прошлого прогона, путь к логам шагов и **отпечаток дерева**,
|
||||
снятый сразу после него. Сними отпечаток сам и сверь:
|
||||
|
||||
<!-- копия: отпечаток-дерева из av-dev/skills/code-review/SKILL.md -->
|
||||
|
||||
```sh
|
||||
{ git rev-parse HEAD; git status --porcelain -uall; git diff HEAD;
|
||||
git ls-files -o --exclude-standard -z | xargs -0 -r git hash-object; } | sha1sum
|
||||
```
|
||||
|
||||
<!-- /копия: отпечаток-дерева -->
|
||||
|
||||
**Совпал** — команду не запускай: читай готовую сводку и логи шагов, а тему
|
||||
закрывай целиком, как обычно. **Разошёлся, отпечатка в задании нет, логи
|
||||
недоступны** — гони гейт сам и ни у кого не спрашивай.
|
||||
|
||||
Переиспользованный прогон объявляется строкой сводки и строкой границ покрытия:
|
||||
чем гейт прогнан, когда и на каком отпечатке.
|
||||
|
||||
## Что делаешь
|
||||
|
||||
1. Определи базу диффа: из задания, иначе `git merge-base HEAD <основная ветка>`
|
||||
(на основной ветке — `HEAD~1`).
|
||||
2. Запусти команду гейта, передав ей базу. Она гонит все шаги до конца и печатает
|
||||
2. Сверь отпечаток дерева — раздел «Прогнан ли гейт уже» выше. Совпал —
|
||||
переходи к пункту 4 и работай по готовой сводке и логам.
|
||||
3. Запусти команду гейта, передав ей базу. Она гонит все шаги до конца и печатает
|
||||
сводку; подробности — в логах шагов.
|
||||
3. По каждому отказу открой лог и прочитай **реальную** причину. Не пересказывай
|
||||
4. По каждому отказу открой лог и прочитай **реальную** причину. Не пересказывай
|
||||
строку «FAIL» — назови упавший тест, файл и утверждение.
|
||||
4. **Отдели новое от унаследованного.** Если отказ выглядит не связанным с
|
||||
5. **Отдели новое от унаследованного.** Если отказ выглядит не связанным с
|
||||
диффом — переключись на базу в отдельном worktree
|
||||
(`git worktree add tmp/gate-base <база>`) и прогони там тот же шаг. Отказ,
|
||||
воспроизводящийся на базе, — не блокер этого change: выводи его `minor` с
|
||||
@@ -117,10 +144,13 @@ color: green
|
||||
## Формат вывода
|
||||
|
||||
Сперва одной строкой: `ГЕЙТ: зелёный | красный` и таблица-сводка команды как
|
||||
есть. Затем находки по контракту. В конце — обязательный блок:
|
||||
есть. **Прогон переиспользован — скажи это той же строкой:** чем гейт прогнан,
|
||||
когда и на каком отпечатке. Затем находки по контракту. В конце — обязательный
|
||||
блок:
|
||||
|
||||
```
|
||||
## Coverage of this pass
|
||||
- гейт: <прогнан здесь | переиспользован: чем, когда, отпечаток>
|
||||
- проверено: <перечисли выполненные команды>
|
||||
- не проверялось и почему: <шаги SKIP с причинами; проверки вне гейта>
|
||||
- принципиально недоступно этому проходу: замысел, форма решения, архитектура
|
||||
|
||||
Reference in New Issue
Block a user