fix(migrations): publish canonical v13 contract
CI / Rust Checks (push) Failing after 3m20s
CI / UI Checks (push) Has been skipped
CI / Frontend E2E (push) Has been skipped
CI / Community Image Smoke (push) Has been skipped
CI / Deploy (push) Has been skipped

This commit is contained in:
2026-08-29 21:34:23 +03:00
parent c2556ec236
commit 10641faf43
4 changed files with 23 additions and 4 deletions
+4 -1
View File
@@ -16,7 +16,7 @@ docker compose -f deploy/community/docker-compose.yml --env-file deploy/communit
2. Создайте и проверьте согласованный backup PostgreSQL и artifact storage. Для первой пустой установки зафиксируйте, что восстанавливать нечего.
3. Проверьте immutable plan: `cargo run -p admin-api --bin crank-migrate -- plan --check` в source checkout либо `<compose> run --rm migrate crank-migrate plan` для образа.
4. Примените sequence: `<compose> run --rm migrate crank-migrate apply`.
5. Повторите preflight и убедитесь в `{"status":"current","version":12}`.
5. Повторите preflight и убедитесь в `{"status":"current","version":13}`.
6. Только теперь запускайте long-running services: `<compose> up -d`.
Обычный `up` также содержит обязательный migration job, но при upgrade он не заменяет предварительные preflight и backup. Migrator делает до десяти bounded попыток подключения с секундной паузой и затем безопасно завершается ошибкой.
@@ -90,6 +90,9 @@ cargo run -p admin-api --bin crank-migrate -- plan --check
sensitivity и source lifecycle принадлежат scoped relation. Claim token/expiry
зарезервированы bounded all-or-none contract для последующего reconciliation,
но эта версия не запускает cleanup и не удаляет physical blobs.
- V13 — expand-only indexes, поддерживающие bounded artifact/import cleanup и
reconciliation ранее зарезервированных claim token/expiry; эта версия сама
не выполняет cleanup, не переписывает данные и не удаляет physical blobs.
- Каждая версия имеет contiguous `i64` version, стабильное имя, lowercase SHA-256, owner, phase, explicit readable schema min/max и backfill policy.
- `migrate` требует bounded cursor/batch policy; `contract` дополнительно требует tracked compatibility evidence и закрытого окна.
- Добавление descriptor без executable implementation блокируется `invalid_contract` до DB I/O.