учёт: закрыт переезд хранилища, заведён урожай его ревью

- storage-without-pocketbase закрыта как реализованная: приёмка сошлась по всем
  пяти критериям записи и по двенадцати приёмочным свойствам рубрики ревью
  дизайна, работа лежит коммитом c9b7765
- урожай триажа ревью развёрнут в одиннадцать записей с тегом партии
  review-2026-08-23 и расставлен по зависимости, а не в конец списка
- находка про признак живости воркера слита в stalled-pipeline-metric: у неё та
  же причина — вставший конвейер неотличим от простоя
This commit is contained in:
av
2026-08-23 08:41:49 +03:00
parent c9b7765646
commit 75c6f0168a
14 changed files with 540 additions and 50 deletions
+54
View File
@@ -0,0 +1,54 @@
# 🧹 Свести норму схемы со служебной таблицей goose
- **Тип:** chore
- **Категория:** Очередь — Та же окрестность, что и сведение документов: норма схемы объявлена в database.md, а держит её сторож
- **Зачем:** Таблица учёта goose_db_version несёт второй вид времени и своё умолчание, а норма схемы объявлена абсолютной; сторож перечисляет наши таблицы поимённо и служебной не видит вовсе.
- **Теги:** review-2026-08-23, question
Норма схемы объявлена абсолютной: [database.md](../../docs/database.md)
описывает таблицы сервиса, а сторож `internal/archrules` перечисляет их поимённо
и сверяет с применённой схемой. Таблицы учёта `goose_db_version` в этом перечне
нет, и она под норму не подпадает: время в ней своего вида, у колонки своё
умолчание — то и другое ставит goose, а не мы.
Сегодня расхождение молчит: сторож смотрит только на названные таблицы. Стоит
ему начать смотреть на применённую схему целиком, и он покраснеет на таблице,
которую мы не заводили и править не можем.
Исход — выбор нормы, а не правка кода: либо требование сужается и называет
таблицу учёта прямо, либо сторож расширяется на всю применённую схему с
поимённым исключением.
Нашёл проход `review-specs` (S2) ревью change
`2026-08-23-storage-without-pocketbase`.
## Затрагивает
- [docs/database.md](../../docs/database.md) — формулировка нормы схемы;
- спека `storage` — требование о составе схемы;
- сторож `internal/archrules` — перечень таблиц и то, что он сверяет;
- каталог шагов `internal/adapter/repo/sqlite/migrations` — только чтением.
## Критерии приёмки
- Норма схемы называет таблицу учёта явно: либо как исключение, либо как
предмет. **Оракул:** чтение `docs/database.md` и спеки рядом — про
`goose_db_version` сказано, чья она и почему её колонки другие.
- Сторож судит то, что объявлено нормой, и краснеет на расхождении. **Оракул:**
мутация — завести колонку мимо шага схемы либо снять таблицу из перечня, и
`go test ./internal/archrules/` краснеет.
- Служебная таблица сторожа не роняет. **Оракул:** `task gate` зелёный на
применённой схеме целиком.
## Вопросы
- Что становится нормой: сузить требование и назвать таблицу учёта goose
исключением — или расширить сторож на всю применённую схему с поимённым
исключением? Первое дешевле и оставляет сторожа слепым к таблице, заведённой
мимо шага схемы; второе ловит такую таблицу, но требует держать перечень
исключений.
## Рамки
Применённые шаги схемы не переписываются. Сама goose не заменяется и её таблица
учёта не переименовывается.