- storage-without-pocketbase закрыта как реализованная: приёмка сошлась по всем
пяти критериям записи и по двенадцати приёмочным свойствам рубрики ревью
дизайна, работа лежит коммитом c9b7765
- урожай триажа ревью развёрнут в одиннадцать записей с тегом партии
review-2026-08-23 и расставлен по зависимости, а не в конец списка
- находка про признак живости воркера слита в stalled-pipeline-metric: у неё та
же причина — вставший конвейер неотличим от простоя
55 lines
4.0 KiB
Markdown
55 lines
4.0 KiB
Markdown
# 🧹 Свести норму схемы со служебной таблицей 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 не заменяется и её таблица
|
|
учёта не переименовывается.
|