- пришедшего называет заголовок Remote-User от прокси, и верят ему только с
адреса из перечня trusted_proxies; своего входа у сервиса не осталось — ни
корня /auth, ни кук, ни срока сессии, ни секрета клиента в конфиге и в базе
- учётная запись заводится первым обращением: EnsureUser в пакете хранилища,
шаг схемы 202608220001 с колонкой provider_login и снятыми правилами users
- cmd/oidcstub заменён на cmd/devtools с подкомандой proxy; заодно закрыт
унаследованный DL3066 — пользователь образа назван числом
- убраны клиент бота, транспорт обновлений, отправитель сообщений, сборка
входа при старте, секция настроек и зависимость go-telegram-bot-api; из
конвейера ушла доставка ответа отправителю — исход виден опросом готовности.
Колонки адресата и значение источника остались в схеме: применённые шаги не
переписываются
- шаг 202608140003 запрещает пустого владельца у аудиозаписи и у файла;
существующие строки он не проверяет, и это принято сознательно — искать их
надо запросом до выкладки
- ревью нашло два пред-существующих дефекта, оба закрыты: пустой второй ответ
распознавателя стирал сохранённую расшифровку, а пустая расшифровка перестала
быть заметной вместе с убранной доставкой. Попутно поднят golang.org/x/image
до v0.45.0 — красный шаг vulns, воспроизводился и на чистом master
- audiorecords вместо transcribe_jobs: приложения (texts, structures,
recognitions, record_events, topics) живут своими коллекциями, ссылки на
исходник и на приведённую копию перестали переставляться
- рубеж называет достигнутое, отказ стал признаком остановки с причиной, а
сторожей стало двое: число отказов и время в рубеже
- воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг
выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
- директива `go` в go.mod — единственное место, где назван патч: шаг гейта
сверяет мажор и минор, поэтому `golang:1.26-alpine` в Dockerfile и «Go 1.26»
в CLAUDE.md и README.md остались верными
- директива toolchain не заведена: она стала бы пятым местом с версией и
уронила бы сверку
- достижимых из кода уязвимостей у govulncheck больше нет; недостижимая
GO-2026-5932 в golang.org/x/crypto/openpgp остаётся объявленной
- в секции [telegram] заведён обязательный ключ enabled: умолчания у него нет,
файл без него негоден; bot_token стал только ключом доступа и при
enabled = false не читается вовсе, а пустой при enabled = true роняет старт
- выключенный вход даёт подъём одним входом без единого обращения к Telegram и
записью INFO вместо прежнего WARN: это выбор владельца, а не отклонение
- отказ разбора файла настроек больше не пересказывает toml — её ParseError
несёт в тексте разбираемое значение, и оборванная строка секретного ключа
уносила его в журнал; теперь называются путь, строка, столбец и последний ключ
- шаг 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 его не роняет
- шаг 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 и
перестал собираться, а восемь шагов гейта и шесть проходов ревью были зелёными
- записи, метаданные и файлы съехались под один каталог данных; появилась
панель владельца, а gin, goqu, goose и требование CGO ушли
- захват задачи стал одним запросом с RETURNING; заведены число попыток,
состояние dead и нарастающая пауза вместо признака is_error
- имя файла в хранилище задаёт сервис и в журнал не идёт: вместе с
идентификатором записи оно собирало бы ссылку на скачивание