tasks: обновление Go и сверка версии собраны в одну задачу
- go-1-26-upgrade вобрал критерии gate-go-version-sync: версия правится и сверяется одним заходом - gate-go-version-sync ушла в REJECTED с причиной
This commit is contained in:
+1
-2
@@ -53,9 +53,8 @@
|
|||||||
- [🧹 Разобрать мелочи http-транспорта](items/http-transport-nits.md) — Маршруты зарегистрированы дважды, и переименование пути в main.go проходит проверки зелёным; обработчик пишет в журнал через стандартный log и дублирует запись, уже сделанную сервисом.
|
- [🧹 Разобрать мелочи http-транспорта](items/http-transport-nits.md) — Маршруты зарегистрированы дважды, и переименование пути в main.go проходит проверки зелёным; обработчик пишет в журнал через стандартный log и дублирует запись, уже сделанную сервисом.
|
||||||
- [🧹 Переименовать образец конфига в config.example.toml](items/config-example-toml.md) — Конвенция называет config.dist.toml объявленным расхождением, но тут же пишет это имя как правило — документ противоречит сам себе, а образец расходится с конвенцией.
|
- [🧹 Переименовать образец конфига в config.example.toml](items/config-example-toml.md) — Конвенция называет config.dist.toml объявленным расхождением, но тут же пишет это имя как правило — документ противоречит сам себе, а образец расходится с конвенцией.
|
||||||
- [🔬 Стоит ли брать OpenTelemetry вместо голого Prometheus](items/opentelemetry-fit.md) — Метрик одиннадцать штук на пять счётчиков, трассировки нет вовсе: путь одной записи по конвейеру собирается только чтением логов глазами.
|
- [🔬 Стоит ли брать OpenTelemetry вместо голого Prometheus](items/opentelemetry-fit.md) — Метрик одиннадцать штук на пять счётчиков, трассировки нет вовсе: путь одной записи по конвейеру собирается только чтением логов глазами.
|
||||||
- [🧹 Обновить Go до 1.26 в модуле и в образе](items/go-1-26-upgrade.md) — Модуль объявляет go 1.25.0, образ собирается на golang:1.25-alpine, а на машине разработки стоит 1.26.5: три места расходятся, и проверки идут не на той версии, что уезжает на сервер.
|
- [🧹 Обновить Go до 1.26 и сверять версию шагом гейта](items/go-1-26-upgrade.md) — Модуль объявляет go 1.25.0, образ собирается на golang:1.25-alpine, на машине разработки стоит 1.26.5, и расхождение этих чисел не ловит ни один шаг гейта: разъехавшийся Dockerfile прошёл весь конвейер зелёным.
|
||||||
- [🧹 Ловить уязвимости в зависимостях шагом гейта](items/gate-dependency-vulnerabilities.md) — govulncheck находит две достижимые уязвимости в клиентах Yandex, а ни гейт, ни список «чего в гейте нет» о нём не знают: узнать о третьей будет неоткуда.
|
- [🧹 Ловить уязвимости в зависимостях шагом гейта](items/gate-dependency-vulnerabilities.md) — govulncheck находит две достижимые уязвимости в клиентах Yandex, а ни гейт, ни список «чего в гейте нет» о нём не знают: узнать о третьей будет неоткуда.
|
||||||
- [🧹 Сверять версию Go в образе с директивой go.mod](items/gate-go-version-sync.md) — Образ гейт не собирает, и расхождение версий прошло весь конвейер молча: task image упал бы уже на сервере.
|
|
||||||
- [🧹 Считать покрытие изменённых строк шагом гейта](items/gate-changed-lines-coverage.md) — Свойство «изменённое место покрыто хоть одним тестом» записано в docs/review.md, но не механизировано: за две задачи подряд непокрытые шаги ловили руками.
|
- [🧹 Считать покрытие изменённых строк шагом гейта](items/gate-changed-lines-coverage.md) — Свойство «изменённое место покрыто хоть одним тестом» записано в docs/review.md, но не механизировано: за две задачи подряд непокрытые шаги ловили руками.
|
||||||
- [🧹 Прервать шаг конвейера отменой контекста](items/context-cancel-in-pipeline.md) — Воркер читает ctx только между итерациями: остановка контейнера ждёт конца шага, а на занятом писателе один запрос к хранилищу держится до 9,5 секунды при мягком таймауте в 5.
|
- [🧹 Прервать шаг конвейера отменой контекста](items/context-cancel-in-pipeline.md) — Воркер читает ctx только между итерациями: остановка контейнера ждёт конца шага, а на занятом писателе один запрос к хранилищу держится до 9,5 секунды при мягком таймауте в 5.
|
||||||
- [🧹 Разобрать мелочи слоя хранилища](items/storage-layer-nits.md) — Три мелочи ниже потолка триажа: цикл воркера пишет потерю захвата уровнем ERROR и считает её отказом, тип ошибки заведён там, где конвенция просит sentinel, а FileName несёт два разных смысла.
|
- [🧹 Разобрать мелочи слоя хранилища](items/storage-layer-nits.md) — Три мелочи ниже потолка триажа: цикл воркера пишет потерю захвата уровнем ERROR и считает её отказом, тип ошибки заведён там, где конвенция просит sentinel, а FileName несёт два разных смысла.
|
||||||
|
|||||||
@@ -5,3 +5,4 @@
|
|||||||
есть коммит. Это первое место, куда смотрит дедупликация при заведении.
|
есть коммит. Это первое место, куда смотрит дедупликация при заведении.
|
||||||
|
|
||||||
<!-- - ГГГГ-ММ-ДД `slug` — Заголовок. Причина: … Была секция: … -->
|
<!-- - ГГГГ-ММ-ДД `slug` — Заголовок. Причина: … Была секция: … -->
|
||||||
|
- 2026-08-12 `gate-go-version-sync` — 🧹 Сверять версию Go в образе с директивой go.mod. Причина: слита в go-1-26-upgrade 2026-08-12: сверка версии и само обновление правят одни и те же строки go.mod и Dockerfile, и порознь заводят расхождение заново. Была секция: Очередь.
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
# 🧹 Сверять версию Go в образе с директивой go.mod
|
|
||||||
|
|
||||||
- **Тип:** chore
|
|
||||||
- **Категория:** Очередь
|
|
||||||
- **Зачем:** Образ гейт не собирает, и расхождение версий прошло весь конвейер молча: task image упал бы уже на сервере.
|
|
||||||
|
|
||||||
Случай записан журналом дефектов `docs/review.md` за 2026-08-12: `go mod tidy`
|
|
||||||
поднял директиву до 1.25, `Dockerfile` остался на `golang:1.24-alpine` с
|
|
||||||
`GOTOOLCHAIN=local`, и шесть проходов ревью вместе с восемью шагами гейта
|
|
||||||
показали зелёное. Нашлось случайным свойством прогона, а не устройством
|
|
||||||
проверок.
|
|
||||||
|
|
||||||
Сборку образа в гейт не заводим — она дорога. Дешёвая замена: сравнение двух
|
|
||||||
строк.
|
|
||||||
|
|
||||||
## Затрагивает
|
|
||||||
|
|
||||||
- набор шагов `task gate` в `Taskfile.yml`;
|
|
||||||
- директива `go` в `go.mod` и сборочный слой `Dockerfile` как источники
|
|
||||||
сравнения;
|
|
||||||
- семантика гейта в `CLAUDE.md`, раздел «Гейт».
|
|
||||||
|
|
||||||
## Критерии приёмки
|
|
||||||
|
|
||||||
- Расхождение версий роняет гейт. Оракул — прогон `task gate` на дереве, где
|
|
||||||
версия в `Dockerfile` понижена на минор: шаг краснеет и называет оба числа.
|
|
||||||
- Совпадение гейт не роняет. Оракул — `task gate` на неизменённом дереве.
|
|
||||||
- Шаг не требует docker и работает без сети. Оракул — прогон с
|
|
||||||
`DOCKER_HOST=/dev/null`.
|
|
||||||
|
|
||||||
## Рамки
|
|
||||||
|
|
||||||
Сравнение строковое: `Dockerfile` называет `golang:<major>.<minor>-alpine`, а
|
|
||||||
`go.mod` — `<major>.<minor>.<patch>`. Сверяются мажор и минор; патч сборочного
|
|
||||||
образа своей жизнью живёт законно.
|
|
||||||
@@ -1,30 +1,53 @@
|
|||||||
# 🧹 Обновить Go до 1.26 в модуле и в образе
|
# 🧹 Обновить Go до 1.26 и сверять версию шагом гейта
|
||||||
|
|
||||||
- **Тип:** chore
|
- **Тип:** chore
|
||||||
- **Категория:** Очередь
|
- **Категория:** Очередь
|
||||||
- **Зачем:** Модуль объявляет go 1.25.0, образ собирается на golang:1.25-alpine, а на машине разработки стоит 1.26.5: три места расходятся, и проверки идут не на той версии, что уезжает на сервер.
|
- **Зачем:** Модуль объявляет go 1.25.0, образ собирается на golang:1.25-alpine, на машине разработки стоит 1.26.5, и расхождение этих чисел не ловит ни один шаг гейта: разъехавшийся Dockerfile прошёл весь конвейер зелёным.
|
||||||
|
|
||||||
Заметка владельца от 2026-08-12. Версия 1.25 в модуле появилась не выбором, а
|
Задача собрана из двух: заметки владельца от 2026-08-12 про обновление и находки
|
||||||
требованием PocketBase: `go mod tidy` поднял директиву сам, а образ подтянули
|
ревью `pocketbase-storage` про несверяемые версии. Собраны вместе, потому что
|
||||||
следом. То есть сегодняшнее число никем не назначено, и повторится это на
|
правятся одним заходом: поднимать число в трёх местах и не заводить сверку
|
||||||
следующей же зависимости.
|
значит завести то же расхождение заново на следующей зависимости.
|
||||||
|
|
||||||
|
Версия 1.25 в модуле появилась не выбором, а требованием PocketBase: `go mod
|
||||||
|
tidy` поднял директиву сам, а образ подтянули следом. То есть сегодняшнее число
|
||||||
|
никем не назначено.
|
||||||
|
|
||||||
|
Случай расхождения записан журналом дефектов `docs/review.md` за 2026-08-12:
|
||||||
|
`go mod tidy` поднял директиву до 1.25, `Dockerfile` остался на
|
||||||
|
`golang:1.24-alpine` с `GOTOOLCHAIN=local`, и шесть проходов ревью вместе с
|
||||||
|
восемью шагами гейта показали зелёное. Нашлось случайным свойством прогона, а не
|
||||||
|
устройством проверок.
|
||||||
|
|
||||||
|
Сборку образа в гейт не заводим — она дорога. Дешёвая замена: сравнение двух
|
||||||
|
строк.
|
||||||
|
|
||||||
## Затрагивает
|
## Затрагивает
|
||||||
|
|
||||||
- директива `go` в `go.mod`;
|
- директива `go` в `go.mod`;
|
||||||
- сборочный слой `Dockerfile`;
|
- сборочный слой `Dockerfile`;
|
||||||
- строка стека в `CLAUDE.md` и в `README.md`.
|
- строка стека в `CLAUDE.md` и в `README.md`;
|
||||||
|
- набор шагов `task gate` в `Taskfile.yml`;
|
||||||
|
- семантика гейта в `CLAUDE.md`, раздел «Гейт».
|
||||||
|
|
||||||
## Критерии приёмки
|
## Критерии приёмки
|
||||||
|
|
||||||
- Модуль, образ и документы называют одну версию Go. Оракул — `grep` по
|
- Модуль, образ и документы называют одну версию Go. Оракул — `grep` по четырём
|
||||||
четырём местам: `go.mod`, `Dockerfile`, `CLAUDE.md`, `README.md`; все дают
|
местам: `go.mod`, `Dockerfile`, `CLAUDE.md`, `README.md`; все дают одно число.
|
||||||
одно число.
|
|
||||||
- Сборка на объявленной версии проходит. Оракул — `task image` и
|
- Сборка на объявленной версии проходит. Оракул — `task image` и
|
||||||
`CGO_ENABLED=0 go build ./...` на чистом дереве.
|
`CGO_ENABLED=0 go build ./...` на чистом дереве.
|
||||||
|
- Расхождение версий роняет гейт. Оракул — прогон `task gate` на дереве, где
|
||||||
|
версия в `Dockerfile` понижена на минор: шаг краснеет и называет оба числа.
|
||||||
|
- Совпадение гейт не роняет, а сам шаг не требует docker и работает без сети.
|
||||||
|
Оракул — `task gate` на неизменённом дереве и прогон с
|
||||||
|
`DOCKER_HOST=/dev/null`.
|
||||||
- Гейт зелёный целиком. Оракул — `task gate`.
|
- Гейт зелёный целиком. Оракул — `task gate`.
|
||||||
|
|
||||||
## Рамки
|
## Рамки
|
||||||
|
|
||||||
Версию выбирает человек: обновление до неподдерживаемой ещё зависимостями версии
|
Версию выбирает человек: обновление до неподдерживаемой ещё зависимостями версии
|
||||||
ломает сборку молча. Выкладку не запускаем.
|
ломает сборку молча. Выкладку не запускаем.
|
||||||
|
|
||||||
|
Сравнение строковое: `Dockerfile` называет `golang:<major>.<minor>-alpine`, а
|
||||||
|
`go.mod` — `<major>.<minor>.<patch>`. Сверяются мажор и минор; патч сборочного
|
||||||
|
образа своей жизнью живёт законно.
|
||||||
|
|||||||
Reference in New Issue
Block a user