From 95377f54cdecbd1d540fbb3389cf1ea9ec36f475 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Tue, 4 Aug 2026 11:19:14 +0300 Subject: [PATCH] =?UTF-8?q?review.md:=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=20=D0=BF=D1=80=D0=BE=D0=BC=D0=B0=D1=85=20=E2=80=94?= =?UTF-8?q?=20=D0=B3=D0=B5=D0=B9=D1=82=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D1=8F=D0=BB=20=D0=BF=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=B9=20=D0=B4=D0=B8=D1=84=D1=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - на master после ff-слияния база диффа равна HEAD, все go-шаги пропускаются, и вакуумный прогон выглядит зелёным - тот же прогон с явной базой нашёл красный lint --- docs/review.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/review.md b/docs/review.md index d382ec0..54ab2f9 100644 --- a/docs/review.md +++ b/docs/review.md @@ -474,3 +474,28 @@ повторился дважды; и «оракул сходимости называет свою посылку рядом с собой». Третий случай одного класса за три дня — это уже не совпадение, и в `docs/conventions/testing.md` он теперь правило, а не запись в журнале. + +## 2026-08-04 — гейт после интеграции пропустил все go-шаги и объявил себя зелёным [пойман] + +- **Где:** конвейер, а не код — `Taskfile.yml`, шаг `gate`, и правило батча + «после каждой интеграции — гейт на основной ветке» +- **Симптом:** после `git merge --ff-only` ветки задачи `task gate` без + аргументов напечатал «код не менялся — go-шаги пропускаются» и вышел с нулём. + Сборка, тесты, гонки, покрытие диффа и миграции **не гонялись вовсе**, а исход + выглядел как зелёный прогон. +- **Причина:** база диффа по умолчанию — `git merge-base HEAD master`. На самой + ветке `master` после ff-слияния это сам `HEAD`, дифф пуст, и все шаги, + привязанные к изменённым файлам, честно пропускаются. Пропуск по пустому + диффу — правильное поведение шага; неправильно то, что **правило интеграции + на него опирается**: батч вливает ветку и проверяет результат прогоном, + который в этот момент проверить ничего не может. +- **Чем воспроизведён:** `task gate` — 0, все go-шаги SKIP. `task gate + BASE=<коммит до слияния>` на том же дереве — 45 изменённых файлов, 13 шагов, + и **красный** `lint`. +- **Что изменено:** `.golangci.yml` — `./tmp` исключён из проверок + (`9f77e56`): `CLAUDE.md` велит держать черновое в `./tmp`, а линтер про это не + знал, и туда попадали и worktree батча, и диагностические программы. Краснота + по причине, не связанной с изменением, приучает не читать красноту. +- **Что осталось незакрытым:** гейт после интеграции обязан звать `BASE` + вершиной **до** слияния. Сейчас это знание живёт только в этой записи — + ни `Taskfile.yml`, ни скилл батча его не несут.