feat(core): add compact durable world storage and verified CLI
This commit is contained in:
@@ -78,7 +78,7 @@
|
||||
Одна успешная мутация атомарно фиксирует:
|
||||
|
||||
1. Новые секции и изменения ссылок мира.
|
||||
2. Новую ревизию, если состояние мира изменилось.
|
||||
2. Новую ревизию принятой операции, включая no-op.
|
||||
3. Запись операции, её отпечаток и точный результат для повторной выдачи.
|
||||
4. Данные истории, необходимые для безопасного undo.
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
Отпечаток включает метод и все его значимые аргументы, включая `expected_revision`; порядок уникальных позиций канонизируется. Область уникальности идентификатора — стабильный внутренний ID мира, а не имя, которое в будущем может быть переиспользовано.
|
||||
|
||||
Для операции, реально не изменяющей блоки, предлагается сохранять идемпотентный результат с `changed=0` без увеличения ревизии. Пустые и повторные запросы не должны бесконечно увеличивать номер состояния. Такая операция всё же требует долговечной записи дедупликации.
|
||||
Принятая семантика первого этапа: каждая новая успешно принятая edit-операция повышает ревизию, даже при `changed=0`. Такая операция также ставит границу для консервативного undo и сохраняет долговечный результат дедупликации. Точный повтор операции не увеличивает ревизию.
|
||||
|
||||
Повтор возвращает ревизию исходной операции, которая может быть меньше текущей. Клиент не должен откатывать свою текущую ревизию по такому ответу. Ошибка после commit, но до доставки ответа, означает неопределённость для вызывающего кода: безопасный повтор использует тот же идентификатор и те же аргументы.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user