Migration Guides (руководства по миграции)
Заметки version-to-version и vendor-migration для интеграторов. Ломающие публичные контракты должны попадать сюда (и в Changelog) в той же docs-волне, что и код (EN+RU).
Как пользоваться разделом
| Ситуация | Куда смотреть |
|---|---|
| Breaking change Runtime / OpenAPI | Запись ниже + API Reference |
| Rename / retire кода ошибки | Каталог ошибок |
| Major bump SDK | Changelog пакета в публичном SDK-репо (SDKs) |
| Политика ключей / device identity | Ключи лицензий · Идентичность устройства |
| Trust / crypto profile | Проверка доверия (JWKS) |
Опубликованные миграции
Wave 74.15
Переход на каноническую authority License и Edge Gateway — 2026-08
Wave 74.15 отключает три compatibility-пути, которые могли обходить каноническую identity Product и Customer. Это поведенческий cutover без удаления схемы: существующие строки License, signed artifacts и legacy storage Relay не переписываются, но больше не могут быть authority для новых решений.
Затронутые пути и замена
| Отключённый путь | Текущий результат | Замена |
|---|---|---|
POST /api/v1/licenses | 410 с license_legacy_compatibility_disabled | Выпускайте License из проверенной Subscription через POST /api/v1/licenses/subscription-issues; см. выпуск License из Subscription |
POST /api/v1/licenses/bulk/create | 410 с license_legacy_compatibility_disabled | Выпускайте каждую подходящую Subscription через канонический workflow; не синтезируйте Product или Customer identity в bulk body |
Compatibility-вход productId offline request | Принимается для source compatibility, но игнорируется | Получайте Product из актуального проверенного runtime snapshot License; mismatch или отсутствие snapshot означает deny |
| Local Relay только с legacy entitlement rows или историческим code-derived lease | Validate и refresh возвращают deny с relay.host.no_snapshot | Зарегистрируйте Gateway и примените актуальный подписанный V2 bundle со snapshot License до LAN activation, validation или refresh |
entitlement.Code остаётся идентификатором функции или лимита. Его нельзя
копировать, разбирать или преобразовывать в ProductId. Поля request,
конфигурация, default и unknown также не являются Product authority.
Существующие чтения License и lifecycle-операции остаются доступны согласно обычному состоянию. Сохранённые для compatibility формы публичных request и response не означают, что deprecated-поля всё ещё несут authority.
Подготовка
- Найдите все интеграции, которые вызывают отключённые generic create routes, передают ProductId offline request как authority или запускают Local Relay без V2 Gateway bundle synchronization.
- До выпуска каждой новой License проверьте точные same-tenant Product, Customer, Published OfferVersion, active CustomerSubscription и immutable policy snapshot.
- Переведите issue traffic на
POST /api/v1/licenses/subscription-issuesи используйте новый стабильныйIdempotency-Keyдля каждой логической попытки. - Обновите и зарегистрируйте каждый Local Relay, завершите
pull/ackподписанного V2 bundle и убедитесь, что нужная License входит в active generation. Количество legacy entitlements не доказывает готовность. - В non-production проверьте, что два отключённых create routes возвращают
410, offline artifacts несут ProductId из snapshot, а LAN validate/refresh успешны только после доставки V2 snapshot.
Переключение
- Остановите producers generic single и bulk License create.
- Разверните интеграцию канонического Cloud issue и проверьте durable receipt, прежде чем включать следующего producer.
- Пересоздайте offline request/response artifacts через актуальный workflow. Не редактируйте и не переподписывайте исторические artifacts, вставляя вычисленный ProductId.
- Синхронизируйте и подтвердите актуальный V2 bundle на каждом Relay до направления LAN-клиентов на него.
- Наблюдайте стабильные shutdown codes.
license_legacy_compatibility_disabledозначает немигрировавший producer;relay.host.no_snapshotозначает отсутствие локальной V2 authority, а не проблему entitlement или offline grace.
Восстановление
- Если канонический License issue отклонён, оставьте issue traffic остановленным и исправьте отсутствующие owner evidence Product, Customer, Subscription, OfferVersion или policy. Не возвращайтесь к generic routes.
- Если offline issuance не имеет валидного snapshot, восстановите канонический runtime snapshot и создайте новый request. Не доверяйте игнорируемому request ProductId и не повторяйте artifact с несовпадающей identity.
- Если Relay возвращает
relay.host.no_snapshot, восстановите outbound-связь или примените актуальный доверенный V2 air-gap bundle, затем проверьте active generation. Offline grace и исторические code-derived leases не обходят это состояние.
Граница rollback
Rollback означает остановку traffic или roll-forward с исправленной
канонической evidence. Возврат к software или configuration, которые снова
разрешают legacy writes, request ProductId authority или leases из
entitlement.Code, не поддерживается и небезопасен. Wave 74.15 не выполняет
destructive cleanup, поэтому исторические данные остаются для диагностики.
Удаление схемы/таблиц, переписывание истории и оценка готовности cleanup
принадлежат отдельно одобряемой Wave 74.15.5.