tasks: закрыта задача gate-extra-linters
- shellcheck, hadolint и мутационный тест скрипта сверки версий заведены, набор предкоммитных проверок назван в памятке
This commit is contained in:
@@ -91,7 +91,6 @@
|
||||
- [🔬 Уведомление SpeechKit о готовности вместо опроса](items/speechkit-callback-fit.md) — Шаг проверки дёргает операцию раз в 5 секунд всё время распознавания: часовая запись даёт порядка 720 обращений к платному сервису вместо одного ответа.
|
||||
- [✨ Считать объём, минуты и расход по каждому пользователю](items/usage-accounting.md) — Ни объём, ни длительность, ни обращения к платным сервисам никуда не записываются: восстановить расход задним числом не из чего.
|
||||
- [✨ Сделать страницу статистики для владельца](items/admin-stats-screen.md) — Собранный учёт читается только запросом к базе руками: ни страницы, ни признака владельца в приложении нет.
|
||||
- [🧹 Завести недостающие проверки: shellcheck, hadolint и тест скрипта сверки версий](items/gate-extra-linters.md) — Скрипты оболочки и Dockerfile машина не проверяет: shellcheck и hadolint не заведены, lefthook смотрит только gitleaks, а единственный исполняемый скрипт проекта на shell — scripts/check-go-version.sh — разбирали на ревью глазами построчно, потому что машине его показать нечем.
|
||||
- [🧹 Закрепить версию рантайм-базы образа](items/pin-runtime-image-base.md) — Финальный слой Dockerfile собирается на alpine:latest, а task image идёт с --pull, поэтому два образа из одного коммита с разницей в неделю несут разный ffmpeg — регрессия конвертации после такой пересборки выглядит как задачи в failed при пустом диффе репозитория, и откат на прежний коммит её не чинит.
|
||||
- [🧹 Настроить конвейер ревью по итогам прогона go-1-26-upgrade](items/review-config-from-go-upgrade.md) — Прогон вскрыл две прорехи настройки: «Типовые узлы» знают только рантайм и не знают рода «проверочный шаг набора проверок», а «Триггеры метки» не видят оси «изменение трогает канон» — и именно она дала обе блокирующие находки.
|
||||
- [🐞 Починить срок сессии, который ставит откат шага входа](items/rollback-restores-wrong-session-duration.md) — Константа defaultAuthTokenDuration в шаге 202608120001 названа умолчанием библиотеки, но 1209600 — это 14 суток, а умолчание PocketBase 432000, пять суток: откат объявляет возврат к умолчанию и ставит срок вдвое больше выбранных владельцем семи.
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
# 🧹 Завести недостающие проверки: shellcheck, hadolint и тест скрипта сверки версий
|
||||
|
||||
- **Тип:** chore
|
||||
- **Категория:** Очередь — Инструмент: shellcheck и hadolint не ловят ничего из перечисленного выше и потому ждут.
|
||||
- **Зачем:** Скрипты оболочки и Dockerfile машина не проверяет: shellcheck и hadolint не заведены, lefthook смотрит только gitleaks, а единственный исполняемый скрипт проекта на shell — scripts/check-go-version.sh — разбирали на ревью глазами построчно, потому что машине его показать нечем.
|
||||
|
||||
Собрана из двух источников: заметки владельца от 2026-08-12 про lefthook и
|
||||
находки N-1 ревью `go-1-26-upgrade` про непроверенный скрипт сверки версий.
|
||||
Собраны вместе, потому что правятся одним заходом: и то и другое — недостающие
|
||||
проверки на файлы, которых сегодняшний гейт не видит.
|
||||
|
||||
Цена shellcheck замерена на прогоне 2026-08-12: shell-файлов в репозитории два,
|
||||
в гейте из них один, единственное замечание — ложный `SC1007` на идиому
|
||||
`CDPATH= cd`, и оно уже подавлено в скрипте директивой. То есть шаг стоит одной
|
||||
строки.
|
||||
|
||||
Отдельная половина — **скрипт сверки версий не проверен ничем.** Его норма
|
||||
(`openspec/specs/toolchain/spec.md`) описывает девятнадцать сценариев, а гейт
|
||||
гоняет скрипт ровно на согласованном дереве, то есть проверяет один из них — тот,
|
||||
где всё сошлось. Остальные восемнадцать подтверждены разовыми ручными прогонами
|
||||
2026-08-12 и после первой же правки образца перестанут выполняться молча.
|
||||
|
||||
Проверки go (`go vet`, `gofmt`) в гейте уже есть; в заметке речь о том, чтобы
|
||||
часть из них ловил и pre-commit, не дожидаясь полного прогона.
|
||||
|
||||
## Затрагивает
|
||||
|
||||
- `lefthook.yml` — набор предкоммитных проверок;
|
||||
- набор шагов `task gate` в `Taskfile.yml`;
|
||||
- новый тест-скрипт для `scripts/check-go-version.sh`;
|
||||
- `Dockerfile` — как объект проверки hadolint, не правкой содержимого;
|
||||
- семантика гейта в `CLAUDE.md`, раздел «Гейт», подраздел «чего в гейте
|
||||
намеренно нет»;
|
||||
- таблица «Механизировано» в `docs/conventions/README.md`.
|
||||
|
||||
## Критерии приёмки
|
||||
|
||||
- `shellcheck` краснеет на негодном скрипте оболочки. Оракул — внести в
|
||||
`scripts/check-go-version.sh` неэкранированную переменную и прогнать шаг: он
|
||||
краснеет; вернуть — зеленеет.
|
||||
- `hadolint` краснеет на негодном `Dockerfile`. Оракул — тот же приём: снять
|
||||
закрепление версии базового образа и прогнать шаг.
|
||||
- Каждый сценарий нормы `toolchain` проверяется машиной, а не памятью. Оракул —
|
||||
тест-скрипт мутирует дерево по одному сценарию за прогон; снять любую проверку
|
||||
из `check-go-version.sh` — тест краснеет и называет сценарий.
|
||||
- Предкоммитные проверки не дублируют гейт молча. Оракул — `CLAUDE.md`, раздел
|
||||
«Гейт», называет, что именно ловит pre-commit и что остаётся только гейту.
|
||||
- Гейт зелёный целиком. Оракул — `task gate`.
|
||||
|
||||
## Рамки
|
||||
|
||||
Мутационный тест работает на временной копии дерева: `t.TempDir()`-подход, в
|
||||
`data/` не писать, рабочее дерево после прогона обязано остаться нетронутым.
|
||||
|
||||
Заметка владельца называет проверки go в lefthook, но полный набор `task gate` в
|
||||
pre-commit не переносится: он идёт минуты, а pre-commit обязан быть быстрым.
|
||||
Что именно из него дублировать — решение этой задачи, и его надо назвать.
|
||||
Reference in New Issue
Block a user