Files
transcriber/tasks/items/goose-table-in-schema-norm.md
T
av 75c6f0168a учёт: закрыт переезд хранилища, заведён урожай его ревью
- storage-without-pocketbase закрыта как реализованная: приёмка сошлась по всем
  пяти критериям записи и по двенадцати приёмочным свойствам рубрики ревью
  дизайна, работа лежит коммитом c9b7765
- урожай триажа ревью развёрнут в одиннадцать записей с тегом партии
  review-2026-08-23 и расставлен по зависимости, а не в конец списка
- находка про признак живости воркера слита в stalled-pipeline-metric: у неё та
  же причина — вставший конвейер неотличим от простоя
2026-08-23 08:41:49 +03:00

4.0 KiB

🧹 Свести норму схемы со служебной таблицей goose

  • Тип: chore
  • Категория: Очередь — Та же окрестность, что и сведение документов: норма схемы объявлена в database.md, а держит её сторож
  • Зачем: Таблица учёта goose_db_version несёт второй вид времени и своё умолчание, а норма схемы объявлена абсолютной; сторож перечисляет наши таблицы поимённо и служебной не видит вовсе.
  • Теги: review-2026-08-23, question

Норма схемы объявлена абсолютной: database.md описывает таблицы сервиса, а сторож internal/archrules перечисляет их поимённо и сверяет с применённой схемой. Таблицы учёта goose_db_version в этом перечне нет, и она под норму не подпадает: время в ней своего вида, у колонки своё умолчание — то и другое ставит goose, а не мы.

Сегодня расхождение молчит: сторож смотрит только на названные таблицы. Стоит ему начать смотреть на применённую схему целиком, и он покраснеет на таблице, которую мы не заводили и править не можем.

Исход — выбор нормы, а не правка кода: либо требование сужается и называет таблицу учёта прямо, либо сторож расширяется на всю применённую схему с поимённым исключением.

Нашёл проход review-specs (S2) ревью change 2026-08-23-storage-without-pocketbase.

Затрагивает

  • 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 не заменяется и её таблица учёта не переименовывается.