- шаги 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 и сеть
- шаг vulns гоняет govulncheck последним: ему одному нужна сеть, и он самый
долгий; отсутствие инструмента даёт код окружения, а не пропуск
- закрыты обе достижимые находки — grpc до 1.82.1, aws-sdk-go-v2/service/s3 до
1.97.3 с eventstream 1.7.8; прогон на реальных ключах Yandex не делался
- место шага названо в семантике гейта: он судит достижимость из кода, и
недостижимая GO-2026-5932 в golang.org/x/crypto/openpgp его не роняет
- недостающий скрипт у всех четырёх обёрток в Taskfile.yml даёт 3, как обещает
словарь: прежний 1 значил «дрейф» и отправлял искать разъехавшееся там, где
просто неполно дерево
- в словарь кодов CLAUDE.md добавлены сами обёртки и оговорка про 201: этим
кодом task отдаёт наружу любой отказ шага, а код шага печатает строкой
- шаг go-version в task gate сверяет объявленную версию в go.mod, Dockerfile,
CLAUDE.md и README.md; судит по репозиторию, go не зовёт, docker и сети не
требует
- заведена capability toolchain: до сих пор спеки нормировали только поведение
сервиса, теперь и инструмент сборки. Причина и цена — в двух ADR
- закрыт дефект 2026-08-12: образ на golang:1.24-alpine разошёлся с go.mod и
перестал собираться, а восемь шагов гейта и шесть проходов ревью были зелёными
docs/ по канону 12: паспорт с целью проекта, архитектура сегодняшнего
устройства, схема хранилища, модель угроз, конвенции кода, журнал ревью.
Конвенции перенесены из jellybit; места, где код им не следует, помечены
строкой «Расхождение» как объявленный долг.
tasks/ с роадмапом: две достигнутые цели, две запланированные (веб и
многопользовательский режим), два направления (все форматы, долгие
записи) и пять задач в беклоге.
openspec/config.yaml — маршрутизатор с адресами документов, спек пока нет.
CLAUDE.md переписан по форме канона: инварианты с severity, семантика
гейта, запреты с путями. Taskfile получил task gate.
- Taskfile сведён к таску `image` с тегом из $BUILD_ID; старый `deploy`
(пуш в cr.yandex, правка и коммит тега в pet-project-server) удалён
- деплой целиком переехал в `inv pl -- transcriber`