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Примеры
Заголовок раздела «Примеры»Пример 1: Восстановление удалённого PRD
Заголовок раздела «Пример 1: Восстановление удалённого PRD»forgeplan restore PRD-042Находит самую свежую неиспользованную запись для PRD-042, проигрывает оригинальную операцию в обратную сторону и печатает, сколько связей восстановлено. Если какие-то связи указывали на артефакты, которых больше нет, они попадают в relations_skipped - будете знать, что чинить руками.
Пример 2: Проверка после восстановления
Заголовок раздела «Пример 2: Проверка после восстановления»forgeplan restore PRD-042forgeplan show PRD-042После восстановления всегда проверяйте тело, статус и связи - убедитесь, что всё корректно. Если в relations_skipped что-то важное, пересоздайте вручную.
Пример 3: Машинно-читаемый вывод
Заголовок раздела «Пример 3: Машинно-читаемый вывод»forgeplan restore PRD-042 --json | jq '.relations_skipped'Возвращает JSON и вытаскивает только список связей, которые не удалось восстановить. Полезно в скрипте восстановления, который должен попытаться пересоздать эти связи из другого источника.
Место в рабочем процессе
Заголовок раздела «Место в рабочем процессе»Восстановление - два шага: понять когда произошло уничтожение, потом восстановить. Используйте forgeplan activity с фильтром по деструктивным операциям, чтобы уточнить таймлайн, запустите forgeplan restore <ID>, потом проверьте через forgeplan show <ID>. Пропущенные связи перелинкуйте вручную, если они важны.
См. также
Заголовок раздела «См. также»forgeplan_restore- MCP-эквивалентforgeplan undo-last- откатить самую свежую деструктивную операцию (без ID)forgeplan activity- найти receipt перед восстановлениемforgeplan delete- soft-delete, который это откатывает- Обзор CLI