Техническое задание: Семантические операции изменения для v0.2

Исторический документ из ревизии 61e75e9. План отражает работы, предложенные в этой ревизии, и не является актуальной инструкцией по реализации. Исходный документ.

1. Цель

Добавить идемпотентные предметные операции для стандартных групп полей OKF v0.2 поверх движка, сохраняющего данные без потерь. Не предоставлять вызывающей стороне обходной путь для произвольного изменения YAML.

Зависимости: task10.md, task11.md, task13.md.

2. Операции

Добавить узкоспециализированные канонические операции:

PutAttestedComputation атомарно задаёт согласованный контракт:

Не публиковать произвольный SetYAML, yaml.Node или путь по исходным ключам.

3. Отдельное отображение и список verified

4. Канонический контракт хранилища

Каждая операция:

Нужна запись об архитектурном решении (ADR): добавление тегов в формат ChangeSet v1 либо обоснованное повышение версии. Нельзя повышать версию формата «на всякий случай».

Не ограничивать store.ChangeSet.Actor соглашением об акторах v0.2: это субъект транзакции. Акторы документа валидируются внутри соответствующей операции.

5. Интеграция перемещений и путей

Расширить MoveConcept, чтобы он без потери данных переписывал статически разрешимые пути пакета в:

Внешние URL и дескрипторы области действия не менять. Неработающие и неразрешимые значения сохранять.

6. Контроль валидации

Сохранить последовательность:

  1. Валидировать ChangeSet.
  2. Применить операции к копии.
  3. Загрузить итоговый пакет с подготовленными изменениями.
  4. Запустить валидатор с учётом версии.
  5. При блокирующей проблеме вернуть предварительный просмотр только с диагностикой.

Предварительная проверка операции проверяет актора, дату, селектор источника и уникальность параметров. Предупреждения строгого режима не блокируют обычную фиксацию, если не являются явным постусловием операции.

7. Файлы

8. Тесты

Все тесты следуют AAA.

9. Критерии приёмки

10. Вне рамок задачи

Миграция устаревших данных, исполнение вычислений, связывание, квитанции и вердикты, среда исполнения проверяющей стороны и исполнение произвольных ресурсов.