ревью: гейт, прогнанный до ревью, засчитывается по отпечатку дерева
Повтор той же команды на неизменившемся дереве снят: ступень автотестов засчитывает прогон, сделанный шагом opsx:apply или шагом гейта обслуживания. Признак — отпечаток рабочего дерева, снятый дважды; любое расхождение ведёт к честному прогону. Журнал — тема 73.
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# 73. Гейт, прогнанный до ревью, не гоняется второй раз (2026-08-23)
|
||||
|
||||
## Что было
|
||||
|
||||
Гейт проекта прогонялся дважды на одном и том же дереве. Сценарий решения
|
||||
доводит его до зелёного шагом `opsx:apply`, сценарий обслуживания — своим шагом
|
||||
гейта; следом ступень автотестов конвейера запускала ту же команду заново.
|
||||
|
||||
Замер по прогонам в проекте transcriber 23 августа: ступень автотестов заняла 5
|
||||
минут 51 секунду при ревью кода в 62 минуты. Дерево между двумя прогонами не
|
||||
менялось ни разу — код писал агент, возвращал зелёный гейт, и до ревью его никто
|
||||
не трогал.
|
||||
|
||||
Повтор держался не на доводе, а на умолчании: проход запускает команду, потому
|
||||
что так написано в его уставе, и никто не спрашивал, откуда взялось дерево, на
|
||||
котором он её запускает.
|
||||
|
||||
## Решено
|
||||
|
||||
**Р274. Гейт, прогнанный до ревью, второй раз не гоняется.** Переиспользуется
|
||||
**команда, а не проход**: тема `autotests` закрывается целиком — логи шагов
|
||||
проход читает сам, находки об отсутствующей верификации выдаёт как обычно. Дом
|
||||
правила — ступень 1 конвейера, `av-dev:code-review`.
|
||||
|
||||
**Р275. Признак — отпечаток рабочего дерева, и он проверяемый.** Отпечаток
|
||||
снимают дважды: тот, кто прогнал гейт, — сразу после прогона, проход — перед
|
||||
началом работы. Совпали — прогон засчитан, разошлись — проход гонит гейт сам.
|
||||
Команда живёт домом в ступени 1 и помеченной копией в уставе `review-autotests`;
|
||||
дословность держит `copies.py`, а не обещание.
|
||||
|
||||
**Р276. Это не отмена правила «возврату на слово не верят»
|
||||
([тема 72](72-writing-delegated-to-agents.md), Р270), и вот почему.** На слово
|
||||
здесь не верят никому: гейт — вывод инструмента, а не проза агента, логи шагов
|
||||
проход открывает сам, и отпечаток отвечает ровно на тот вопрос, который делает
|
||||
чужой прогон доказательством, — **относится ли этот вывод к этому дереву**.
|
||||
Правило Р270 запрещает верить пересказу; засчитывается же не пересказ, а
|
||||
воспроизводимый артефакт с проверенной привязкой.
|
||||
|
||||
**Р277. Отказ безопасен по построению.** Любое расхождение — отпечатки не
|
||||
совпали, отпечатка в задании нет, логи недоступны — ведёт к полному прогону, и
|
||||
проход не спрашивает разрешения. Лишний прогон стоит минут, засчитанный чужой —
|
||||
красноты, которой никто не увидел; асимметрия цены и задаёт направление отказа.
|
||||
|
||||
**Р278. Временный каталог из отпечатка выпадает сам.** `--exclude-standard`
|
||||
отбрасывает игнорируемое, а логи шагов гейт пишет туда же. Проект, держащий
|
||||
временный каталог под git, отпечатками не совпадёт никогда — и получит честный
|
||||
прогон вместо тихого засчитывания. Настройки у этого нет намеренно: выключатель
|
||||
здесь стал бы способом засчитать прогон, который засчитывать нельзя.
|
||||
|
||||
**Р279. Переиспользование объявляется строкой** — в сводке прохода и в границах
|
||||
покрытия: чем гейт прогнан, когда и на каком отпечатке. Молчащее
|
||||
переиспользование неотличимо от собственного прогона, а разница между ними в том,
|
||||
кто видел вывод своими глазами.
|
||||
|
||||
## Следствия
|
||||
|
||||
**С254. Возврат агента письма пополнился отпечатком.** К исходу гейта и тому, чем
|
||||
он прогнан ([тема 72](72-writing-delegated-to-agents.md), Р269), добавились путь к
|
||||
логам шагов и отпечаток дерева. Возврат от этого не удлинился на экран: обе вещи
|
||||
— строки, а не содержимое.
|
||||
|
||||
**С255. Оркестратор передаёт исход гейта в ревью.** Шаг 7 решения и шаг 4
|
||||
обслуживания несут его вместе с планом, базой диффа и режимом. Не передал —
|
||||
конвейер прогонит гейт сам, и это стоит минут, а не корректности.
|
||||
|
||||
**С256. Экономия названа замером, а не обещанием.** Снятый повтор — минуты одного
|
||||
прогона из шестидесяти двух; остальное время ревью держат проход враждебных
|
||||
постановок, цепочка за машину и триаж, и они разбираются отдельно.
|
||||
Reference in New Issue
Block a user