agent hubПУТЕВОДИТЕЛЬ Начать

Документация

Пограничные случаи и проверка восстановления

Этот аудит добавил восстановление исходного состояния и регрессии сверх обычного sync/restore. Использовались изолированные Hub и клиенты; рабочие конфигурации не сбрасывались.

Добавленные проверки

СлучайОжидаемое поведение и проверка
Несколько sync разных клиентовПервый снимок сохраняется; один reset возвращает все учтённые оригиналы
Обычный restore после позднего syncСтарое владение отклоняется вместо угадывания порядка копий
Новый Hub с GitВсё созданное дерево архивируется, активный путь исчезает
Существующий Hub с личными и бинарными даннымиВозвращается точный отпечаток дерева, текущее архивируется
Изначально отсутствовавший файл клиентаФайл удаляется; новые родительские папки — только если пусты
Новые пользовательские файлы в созданной папкеСохраняются; рекурсивной очистки нет
Правка или chmod клиента после syncReset блокируется; явный archive-changes сохраняет текущее перед полным возвратом
Правка клиента, прав или новый файл Hub после previewРевизия reset устаревает, применение останавливается
Существующая конфигурационная ссылкаВозвращаются байты и права цели при прежней привязке
Перенаправленная ссылка клиентаБлокировка даже с archive-changes
Ссылка Hub на внешний каталогУказатель сохраняется, произвольное внешнее содержимое не обходится
Повреждённые данные baselineПроверка целостности останавливает изменение текущих данных
Повреждённый hub.yaml или удалённый активный HubИспользуется внешний baseline, не текущие настройки
SIGKILL после первой замены syncЖурнал распознаёт частичное состояние; мёртвые блокировки восстанавливаются явно
SIGKILL после перемещения Hub при resetПовтор завершает возврат по внешнему baseline для нового и существующего Hub
Живой или неизвестный владелец блокировкиАвтоматическое восстановление её не снимает
Сбой rename при установке resetУже изменённые клиенты и активный Hub откатываются
Сбой самого отката resetЯвная ошибка ручной проверки; baseline и архив сохраняются
ENOSPC при сохранении оригиналовОстановка до записей; неполный baseline не устанавливается, повтор возможен
ENOSPC при архивировании клиентовОстановка до изменения клиентов и Hub
Новый профиль DSHДобавляется его первый оригинал, старые не заменяются
Ссылка или чужие данные в recoveryОтклонение без перезаписи чужого
Два клиента разрешаются в один файлБлокировка на этапе preview sync
Новый путь пакета или NodeПомеченные запускатели Hub не импортируются повторно, вложенных запускателей нет
Имя MCP начинается с дефисаСозданные параметры используют форму с equals и исполняются корректно
CLI reset вне cwd проектаТочная команда с ревизией работает из другой папки

Важные выводы

Старый restore возвращал один sync, но не исходное состояние всей истории. Теперь этот сценарий покрывают внешний baseline, неизменяемые оригиналы, журнал намерений и reset.

Тесты выявили различия канонических путей macOS (/var и /private/var), копирование readonly-каталогов, неоднозначных владельцев блокировок и очистку после завершения данных, но до выхода процесса. Добавлены регрессии.

Неизвестная история не восстанавливается из ничего. Без baseline reset сообщает об этом и не создаёт вводящий в заблуждение снимок в dry run. Следующая управляемая запись сохраняет явно помеченный снимок существующего Hub. Для нового Hub фиксируется отсутствие до создания.

Что ещё не доказано

Точный контракт, параметры и архивы — в восстановлении.

Результат проверки

На этапе этого аудита весь quality gate прошёл с 86 тестами, также на Node 22.13.0. Покрытие: 88,66% строк, 83,92% ветвей, 86,68% функций, выше порогов. Allowlist пакета проверен. Настоящий reset --dry-run корректно сообщил об отсутствии исторического baseline; хеши девяти наблюдаемых рабочих файлов и состав recovery не изменились. Более поздние результаты находятся на странице проверок.