---
title: "История версий"
description: "Журнал ревизий заметки: снапшоты с дедупом по содержимому, провенанс правок и восстановление любой версии."
---

# История версий

Каждая заметка ведёт собственный журнал ревизий — историю всех состояний, через которые она прошла. Это версионирование на уровне приложения, а не git-слой над папкой: журнал живёт в служебной базе (meta-DB) и копит состояния, которые прошли через Notarium или были замечены синхронизацией файлов. Сам `.md`-файл при этом остаётся источником правды — журнал его дополняет, а не подменяет.

## Ревизия — это снапшот

Каждая ревизия хранит полное состояние заметки на момент правки: заголовок, теги, slug и нормализованное тело — а не построчный дифф. Диффы для сравнения версий вычисляются на лету, потому что они восстановимы из снапшотов.

Тела ревизий адресуются по содержимому (content-addressed, sha-256), поэтому одинаковое содержимое хранится один раз. Восстановление версии, циклы правок агента и повторяющиеся состояния не плодят копий — дедупликация идёт по самому содержимому.

Ключ журнала — внутренний идентификатор заметки (`notarium-id`), а не путь к файлу. Поэтому история переживает перемещение между папками и переименование: это по-прежнему та же заметка с той же историей.

## Провенанс: кто и как правил

Каждая ревизия подписана — видно, откуда взялось изменение. У ревизии есть вид и принципал-автор:

| Вид ревизии | Что означает |
|---|---|
| `write` | Сохранение через Notarium (человек или агент) |
| `external` | Состояние, замеченное синхронизацией файла напрямую на диске |
| `restore` | Откат к прошлой версии (хранит ссылку на источник) |
| `delete` | Надгробие: последнее состояние удалённой заметки |

Автор фиксируется как конкретный пользователь, персональный токен агента или интерфейс; у внешних правок автора нет — их некому подписать. Так в истории видно, что именно правил человек, а что — ИИ-агент. Подробнее о разделении правок людей и агентов — в разделе [Человек и агенты](/docs/concepts/human-and-agents/).

> [!note] Гранулярность внешних правок
> Правки прямо в файле (в обход Notarium) журнал видит с точностью до цикла синхронизации: несколько изменений между опросами схлопываются в одно наблюдаемое состояние. Правки через сам Notarium фиксируются точно.

Ревизия также несёт счётчики добавленных и удалённых символов — «цену» правки относительно предыдущей версии.

## Просмотр, сравнение и восстановление

История заметки доступна из режима чтения — вкладка **History** в боковой панели показывает таймлайн версий: кто внёс правку, счётчики `+N −M` и дату. Выбор ревизии открывает её вместо текущего текста, с переключателем между режимами Changes (пословный дифф с подсветкой вставок и удалений) и Content (само содержимое).

![Вкладка History: ревизии с автором и счётчиками правки; v3 внесена агентом](/media/app-history-light.webp)

Откат — кнопка **Restore this version**. Восстановление берёт тело из журнала и записывает его как новую правку через оптимистичную проверку версии: если заметку тем временем изменили, вы получите конфликт (409), и ничего не затрётся молча.

## Хранение и удаление

По умолчанию история хранится целиком — Notarium не прореживает ревизии автоматически. Полностью стереть историю заметки можно вручную, очистив её из [Корзины](/docs/guides/trash/): удаление заметки создаёт надгробие с последним состоянием (её можно восстановить), а окончательная очистка стирает и историю.

> [!note] Границы журнала
> История версий требует служебной БД. Без служебной БД история живёт только на время работы процесса. Автоматического прореживания старых ревизий по расписанию нет — историю храним целиком.

Смежные темы: [File-first](/docs/concepts/file-first/) — файл как источник правды, [Корзина](/docs/guides/trash/) — удаление и восстановление, [Модель доступа](/docs/concepts/access-model/) — кто может откатывать версии.
