Перейти к содержимому
FRGEPLAN

forgeplan restore

forgeplan restore возвращает конкретный артефакт, который ранее был удалён, заменён (superseded) или признан устаревшим (deprecated). Вы передаёте ID (например, PRD-042); команда находит самую свежую запись о его уничтожении в .forgeplan/trash/ и проигрывает её в обратную сторону: markdown-файл возвращается, запись в поисковом индексе пересоздаётся, связи восстанавливаются там, где их цели ещё существуют, lifecycle-статус переключается обратно с superseded / deprecated.

Если артефакт с таким же ID уже существует (другой), команда отказывает - нужно сначала разрешить конфликт вручную (переименовать или заменить живой, потом повторить restore). Записи старше 30 дней удаляются и восстановить их нельзя.

Это точечный вариант forgeplan undo-last - undo-last откатывает самую свежую деструктивную операцию независимо от артефакта, а restore нацеливается на один конкретный артефакт по ID. Аналог forgeplan_restore на MCP-стороне.

  • Поняли, что вчерашний forgeplan delete PRD-042 был ошибкой - восстанавливайте по точному ID.
  • Решение forgeplan supersede оказалось неверным, и нужен именно оригинальный артефакт, а не та операция, которая случайно оказалась самой свежей.
  • Нужно точное восстановление без риска откатить случайно ещё какую-то операцию, произошедшую позже.
  • Не помните ID - forgeplan undo-last сам пройдёт по логу деструктивных операций от свежих к старым.
  • Другой артефакт с таким же ID уже существует - сначала разрешите конфликт (переименуйте или замените живой), потом запускайте restore.
  • Прошло больше 30 дней - запись из trash удалена. Восстанавливайте, читая тело артефакта из git log и пересоздавая вручную.
forgeplan restore [OPTIONS] <ID>
<ID> Artifact ID to recover from the most recent non-consumed receipt
--json Output as JSON for machine consumption
-h, --help Print help
-V, --version Print version
Окно терминала
forgeplan restore PRD-042

Находит самую свежую неиспользованную запись для PRD-042, проигрывает оригинальную операцию в обратную сторону и печатает, сколько связей восстановлено. Если какие-то связи указывали на артефакты, которых больше нет, они попадают в relations_skipped - будете знать, что чинить руками.

Окно терминала
forgeplan restore PRD-042
forgeplan show PRD-042

После восстановления всегда проверяйте тело, статус и связи - убедитесь, что всё корректно. Если в relations_skipped что-то важное, пересоздайте вручную.

Окно терминала
forgeplan restore PRD-042 --json | jq '.relations_skipped'

Возвращает JSON и вытаскивает только список связей, которые не удалось восстановить. Полезно в скрипте восстановления, который должен попытаться пересоздать эти связи из другого источника.

Восстановление - два шага: понять когда произошло уничтожение, потом восстановить. Используйте forgeplan activity с фильтром по деструктивным операциям, чтобы уточнить таймлайн, запустите forgeplan restore <ID>, потом проверьте через forgeplan show <ID>. Пропущенные связи перелинкуйте вручную, если они важны.