Версии и отпечатки
- Формат называют имя в поле
schema(simai.composition.document,simai.composition.recipeи т. д.) и старшая версия. Совместимое добавление их не меняет; старшая версия меняется только при несовместимом изменении правил формата (см. Имена и версии). - Конкретное содержимое подтверждает отпечаток SHA-256 (digest). Он меняется при любом изменении содержимого.
- Воспроизводимость подтверждают отпечатки исполнения в перечне зависимостей: контракта, реестра типов и рендерера. Номер пакета сам по себе этого не доказывает.
Нормализация одного документа даёт одинаковый JSON и отпечаток в Node.js, в браузере и в PHP. Правила канонической формы (порядок ключей, числа, экранирование) зафиксированы в нормативном комплекте.
Отпечатки исполнения лежат в перечне зависимостей рядом с отпечатком документа:
{
"schema": "simai.composition.dependencies.v1",
"documentDigest": "sha256:результат-нормализации",
"executionContract": {
"contractDigest": "sha256:контракт",
"registryDigest": "sha256:реестр-типов",
"rendererDigest": "sha256:рендерер"
}
}
Метку формата (schema) и перечень зависимостей хранят вместе с результатом.
Старшая версия формата меняется только при несовместимом изменении правил, а
digest — при любом изменении конкретного содержимого; точную проверку
выполняют машинные контракты, а не номера в тексте.
Правила изменения контракта:
- добавление необязательной возможности может быть совместимым;
- удаление типа, слота или допустимого значения требует новой версии контракта и плана преобразования данных;
- точную поставку Framework проект закрепляет выпуском (см. Версии: как закрепить выпуск); при обновлении сначала прогоняют контрольные примеры и только потом активируют новый результат.