- storage-without-pocketbase закрыта как реализованная: приёмка сошлась по всем
пяти критериям записи и по двенадцати приёмочным свойствам рубрики ревью
дизайна, работа лежит коммитом c9b7765
- урожай триажа ревью развёрнут в одиннадцать записей с тегом партии
review-2026-08-23 и расставлен по зависимости, а не в конец списка
- находка про признак живости воркера слита в stalled-pipeline-metric: у неё та
же причина — вставший конвейер неотличим от простоя
3.3 KiB
🧹 Проверять ответ обработчика на отказ репозитория
- Тип: chore
- Категория: Очередь — Подставной репозиторий заводится там же, где тесты конвейера: одна сборка теста на два слоя
- Зачем: Тесты обработчиков идут по настоящему sqlite без управляемых отказов: класс «база недоступна во время запроса» не проверен нигде.
- Теги: review-2026-08-23
Тесты обработчиков ходят по настоящему sqlite во временном каталоге. Управляемых отказов у него нет, поэтому весь класс «база недоступна во время запроса» не проверен нигде: что отвечает обработчик, когда репозиторий отказал, известно только чтением кода.
Проверять надо не отказ базы, а ответ на него: код, тело единой формы и то, что причина не попала в ответ пользователю. Для этого репозиторию нужна подставная реализация, отказывающая по требованию.
Гипотеза прохода review-autotests (A4) ревью change
2026-08-23-storage-without-pocketbase, понижённая триажем до наблюдения:
оракула у неё нет ровно потому, что управляемых отказов не существует. Сам пробел
проверен — grep по тестам пакета пуст.
Затрагивает
- тесты
internal/controller/http— сборка теста и способ подставить репозиторий; - договор ядра с хранилищем
internal/contract— интерфейсы, по которым подставляется отказ; - единая форма ответа об отказе
internal/controller/http/errors.go.
Критерии приёмки
- Тест подставляет отказ репозитория. Оракул: тест — подставной репозиторий отдаёт ошибку на названном методе, и обработчик её получает.
- Ответ на отказ идёт единой формой и не несёт причины. Оракул: тест на
каждом читающем обработчике — код
500, тело эталонной формы, текста ошибки базы в теле нет. - Отказ виден владельцу сервиса. Оракул: тот же тест с перехваченным
журналом — строка уровня
ERRORс причиной есть.
Рамки
Настоящую базу из тестов не убираем: подставной репозиторий нужен для отказов, а не вместо неё. Формы ответов и коды не меняем — задача проверяет то, что уже объявлено.