- Инструментарий проекта спеками не нормируется: capability toolchain удалена,
норму шага сверки версий Go держат его проверки в scripts.
- Перечень capability в архитектуре и ревью сокращён до четырёх, решение
ADR-2026-08-12-spec-norms-build-toolchain помечено устаревшим.
- включены noctx, contextcheck и bodyclose (отмена доходит до внешнего вызова,
контекст приезжает сверху, тело ответа закрывается), nilerr, rowserrcheck и
sqlclosecheck (отказ не теряется молча), testifylint и nolintlint (форма
утверждения и форма подавления), плюс errcheck check-type-assertions:
непроверенное приведение типа паникует, и check-blank его не видит
- заведён шаг tests: go test -race, потому что «результат пишет только держатель
захвата» — утверждение об одновременности. Без компилятора C шаг гоняет тесты
без детектора и краснеет кодом 3 после них: гонки не повод отнимать у гейта
сами тесты
- заведён шаг migrations: у файла шага схемы допустим один статус — A. Баз диффа
две, BASE и HEAD: первая отвечает на «уже уехал» настолько, насколько свежа
origin/master, вторая ловит правку закоммиченного шага независимо от неё.
Каталог берётся из docs/.docs.json, пустой каталог роняет шаг
- единственное подавление — noctx на httptest.NewRequest в проверках: за
фикстурой запроса внешнего собеседника нет. Граница проверена мутацией —
http.Get и exec.Command из проверки правилу по-прежнему подсудны
- шаги shell (shellcheck) и dockerfile (hadolint) заведены; два правила hadolint
подавлены поимённо с причиной — DL3007 до задачи pin-runtime-image-base и
DL3018 по существу
- lefthook гоняет на затронутых файлах gofmt, golangci-lint по их каталогам,
shellcheck, hadolint и gitleaks — около секунды; полный набор в pre-commit не
переносится намеренно
- заведён мутационный тест скрипта сверки версий: 20 сценариев спеки toolchain
плюс требование сообщения называть все четыре места, независимость исхода от
установленного go и запрет звать go, docker и сеть