docs: правила о контексте и о токене записаны, две находки — в журнал
- в go-linters.md заведён раздел «Отмена и внешний собеседник», перечень механизированного пополнен девятью правилами и двумя шагами гейта, названы остатки: contextcheck не видит сигнатуру без контекста вовсе, шаг migrations судит только шаги, бывшие в базе диффа, rowserrcheck и sqlclosecheck профилактические — предмета в коде нет - в logging.md и security.md чистка отказа Telegram описана по факту: точка одна и лежит на границе клиента, закрыты все пять путей вместе с логгером самой библиотеки. Прежнее «*Расхождение:* вычистки нет... она не логируется» было неверным дважды - в журнал дефектов записаны две находки: отказ скачивания уносил токен бота (проскочил, жил с самого начала) и остановка сервиса хоронила конвертируемую запись в failed (поймано ревью до коммита) - вопрос темы operations про отмену переформулирован: спрашивать надо не «доходит ли контекст», а «что шаг делает с задачей, деньгами и ответом отправителю»; вопрос про таймаут оставлен с оговоркой, что проброс контекста на него не отвечает - в памятке: словарь кодов новых шагов, требование компилятора C у детектора гонок и оговорка, что «CGO не нужен» относится к сборке, а не к гейту
This commit is contained in:
@@ -24,7 +24,7 @@ Yandex SpeechKit и возвращает текст туда, откуда пр
|
||||
|
||||
## Стек
|
||||
|
||||
Go 1.26 (CGO не нужен), встроенная PocketBase — хранилище, файлы записей и
|
||||
Go 1.26 (сборке CGO не нужен; детектору гонок в гейте — нужен), встроенная PocketBase — хранилище, файлы записей и
|
||||
панель администратора, — `go-telegram-bot-api`, `aws-sdk-go-v2` для Object
|
||||
Storage, gRPC-клиент Yandex SpeechKit v3, Prometheus, `slog`. Сборка —
|
||||
Taskfile, образ — Docker, выкладка — Ansible из `pet-project-server`.
|
||||
@@ -87,7 +87,7 @@ Taskfile, образ — Docker, выкладка — Ansible из `pet-project-
|
||||
|
||||
```bash
|
||||
go build ./... # CGO не нужен
|
||||
go test ./...
|
||||
go test ./... # в гейте идёт с -race, и там нужен компилятор C
|
||||
go vet ./...
|
||||
gofmt -l .
|
||||
golangci-lint run
|
||||
@@ -117,13 +117,19 @@ task gate # весь набор проверок разом
|
||||
найден), 4 внутренний сбой. Последний своего словаря не заводит намеренно:
|
||||
четвёртый шаг с собственной семантикой сделал бы это утверждение неверным.
|
||||
Тому же словарю следуют **обёртки шагов** в `Taskfile.yml` — все, включая
|
||||
`shell`, `dockerfile` и `vulns`: недостающий инструмент — отказ окружения, код
|
||||
3. Сами чужие инструменты (`shellcheck`, `hadolint`, `govulncheck`,
|
||||
`tests`, `migrations`, `shell`, `dockerfile` и `vulns`: недостающий инструмент
|
||||
— отказ окружения, код 3. У `tests` это отсутствие CGO или компилятора C, без
|
||||
которых не работает детектор гонок — тесты он в этом случае всё равно гоняет,
|
||||
без `-race`, и краснеет уже после них. У `migrations` код 3 — неразрешимая
|
||||
база диффа, отсутствующий каталог шагов и каталог без единого шага; код 1 —
|
||||
переписанный шаг схемы. Сами чужие инструменты (`shellcheck`, `hadolint`, `govulncheck`,
|
||||
`golangci-lint`) держат свои коды, и гейту от них нужно только «ненулевой».
|
||||
Недостающий скрипт — отказ окружения, код 3. Наружу все эти коды приходят одним: сам `task` на
|
||||
любой отказ шага выходит с 201, а код шага печатает строкой
|
||||
(«exit status 3»), поэтому словарь читается по коду скрипта.
|
||||
- **Что красит безусловно и почему:** отказ сборки, тестов, `go vet`,
|
||||
гонка, найденная детектором (`go test -race`), переписанный применённый шаг
|
||||
схемы,
|
||||
неотформатированный файл, находка `golangci-lint`, расхождение объявленных
|
||||
версий Go, дрейф раскладки документов,
|
||||
дрейф каталога задач, форма `openspec/config.yaml`, достижимая из кода
|
||||
|
||||
Reference in New Issue
Block a user