review.md: записан промах — гейт после интеграции проверял пустой дифф
- на master после ff-слияния база диффа равна HEAD, все go-шаги пропускаются, и вакуумный прогон выглядит зелёным - тот же прогон с явной базой нашёл красный lint
This commit is contained in:
@@ -474,3 +474,28 @@
|
|||||||
повторился дважды; и «оракул сходимости называет свою посылку рядом с собой».
|
повторился дважды; и «оракул сходимости называет свою посылку рядом с собой».
|
||||||
Третий случай одного класса за три дня — это уже не совпадение, и в
|
Третий случай одного класса за три дня — это уже не совпадение, и в
|
||||||
`docs/conventions/testing.md` он теперь правило, а не запись в журнале.
|
`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`, ни скилл батча его не несут.
|
||||||
|
|||||||
Reference in New Issue
Block a user