chore(tradein): догнать _manifest_applied.txt до факта прода (31 имя) #2692

Merged
bot-backend merged 1 commit from chore/2683-manifest-catchup into main 2026-08-06 00:54:41 +00:00
Collaborator

Зачем

Манифест замораживает имена уже применённых миграций. Прод трекает их по bare-filename в _schema_migrations, поэтому переименование применённого файла заставит прод прогнать его повторно (дубль-INSERT, повторный DDL, падение деплоя под ON_ERROR_STOP). Гейт tests/test_migrations_manifest.py защищает ровно те имена, которые здесь перечислены — а список отстал.

Замер

Сверка с _schema_migrations на tradein-postgres (2026-08-06):

Имён
Применено на проде 209
Заморожено в манифесте 178
Расхождение 31

Расхождение одностороннее: 171 и весь диапазон 187–216 применены на проде, но не заморожены. Обратного расхождения нет ни одной строки — в манифесте не оказалось ни одного имени, которого не было бы на проде. Поэтому правка чисто добавочная: ничего не переопределяется и не переименовывается.

Все 31 файла проверены на существование в data/sql/ перед добавлением.

Снятое отложенное условие

Прошлая редакция намеренно держала 187_web_support_chat.sql / 188_tg_support_chat_id_scope.sql вне списка: веб-чат поддержки (#2532/#2533) тогда ещё дорабатывался, и заморозка имени до того, как файл осел на проде в финальном виде, лишила бы возможности переименовать его перед мержем. Условие снятия было записано прямо в комментарии — «когда подтверждено, что 187/188 применены». Оба в _schema_migrations; условие выполнено, комментарий заменён на запись о проверке.

Что это НЕ чинит

Главная жалоба #2683 — что гейт не ловит коллизию номеров между разными PR. Эта правка её не устраняет и не может: тест сравнивает префиксы в пределах одного рабочего дерева, а два параллельных PR друг друга не видят. Сегодня номера 217–222 разведены между параллельными задачами вручную. Актуальный манифест делает ручную разводку хотя бы возможной — без него неясно, какие номера уже заняты.

Test plan

  • pytest tests/test_migrations_manifest.py — 4 passed (существование имён, сортировка+уникальность, отсутствие коллизий префиксов у новых файлов)
  • pre-commit проходит
  • Деплой: изменений в SQL/коде нет, применяться на проде нечему — миграции не добавлены

Refs #2683

## Зачем Манифест замораживает имена **уже применённых** миграций. Прод трекает их по bare-filename в `_schema_migrations`, поэтому переименование применённого файла заставит прод прогнать его повторно (дубль-INSERT, повторный DDL, падение деплоя под `ON_ERROR_STOP`). Гейт `tests/test_migrations_manifest.py` защищает ровно те имена, которые здесь перечислены — а список отстал. ## Замер Сверка с `_schema_migrations` на `tradein-postgres` (2026-08-06): | | Имён | |---|---:| | Применено на проде | 209 | | Заморожено в манифесте | 178 | | **Расхождение** | **31** | Расхождение **одностороннее**: 171 и весь диапазон 187–216 применены на проде, но не заморожены. Обратного расхождения нет ни одной строки — в манифесте не оказалось ни одного имени, которого не было бы на проде. Поэтому правка чисто добавочная: ничего не переопределяется и не переименовывается. Все 31 файла проверены на существование в `data/sql/` перед добавлением. ## Снятое отложенное условие Прошлая редакция намеренно держала `187_web_support_chat.sql` / `188_tg_support_chat_id_scope.sql` вне списка: веб-чат поддержки (#2532/#2533) тогда ещё дорабатывался, и заморозка имени до того, как файл осел на проде в финальном виде, лишила бы возможности переименовать его перед мержем. Условие снятия было записано прямо в комментарии — «когда подтверждено, что 187/188 применены». Оба в `_schema_migrations`; условие выполнено, комментарий заменён на запись о проверке. ## Что это НЕ чинит Главная жалоба #2683 — что гейт не ловит коллизию номеров **между разными PR**. Эта правка её не устраняет и не может: тест сравнивает префиксы в пределах одного рабочего дерева, а два параллельных PR друг друга не видят. Сегодня номера 217–222 разведены между параллельными задачами вручную. Актуальный манифест делает ручную разводку хотя бы возможной — без него неясно, какие номера уже заняты. ## Test plan - [x] `pytest tests/test_migrations_manifest.py` — 4 passed (существование имён, сортировка+уникальность, отсутствие коллизий префиксов у новых файлов) - [x] pre-commit проходит - [ ] Деплой: изменений в SQL/коде нет, применяться на проде нечему — миграции не добавлены Refs #2683
bot-backend added 1 commit 2026-08-06 00:51:21 +00:00
chore(tradein): догнать _manifest_applied.txt до факта прода (31 имя)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 8s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 3m0s
300860ba9c
Манифест замораживает имена уже применённых миграций: прод трекает их по
bare-filename в _schema_migrations, поэтому переименование применённого файла
заставляет прод прогнать его повторно. Гейт работает только по тому, что в
манифесте перечислено, — а он отстал.

Сверка с _schema_migrations на tradein-postgres: 209 применённых имён против
178 замороженных. Расхождение — 31 имя, все в одну сторону: применено на
проде, но не заморожено (171, 187-216). Обратного расхождения нет ни одного,
поэтому правка чисто добавочная и ничего не переопределяет.

Заодно снято отложенное условие прошлой редакции: 187/188 откладывались до
подтверждения, что веб-чат поддержки осел на проде в финальном виде. Они в
_schema_migrations — условие выполнено.

Refs #2683
bot-backend merged commit e1c26c212a into main 2026-08-06 00:54:41 +00:00
bot-backend deleted branch chore/2683-manifest-catchup 2026-08-06 00:54:42 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2692
No description provided.