Коротко
- В OpenClaw 2026.9.8 в
frvдобавилиwatchиrerun --childс--max-attemptsдля точечной работы с упавшим дочерним прогоном. watchчитает строки диспатча родителя и сообщает о переходах попыток и упавших джобах один раз, без повторов после рестарта.rerun --childотправляет один запросrerun-failed-jobs, отказывает сверх--max-attempts(по умолчанию 2) и не выполняет финальную герметизацию.
Сверено с документацией OpenClaw 2026.9.8, 3 октября 2026.
В OpenClaw 2026.9.8 к команде pnpm frv добавили watch и rerun --child. Они позволяют наблюдать за прогоном и перезапускать конкретный дочерний прогон, тогда как финальная герметизация по-прежнему остаётся за continue --failed.
Что нужно заранее
- OpenClaw 2026.9.8: поведение
watchиrerun --childпоявилось в этой версии. - Идентификатор родительского прогона Full Release Validation (
<parent-run-id>). - Ключ дочернего прогона (
normalCi,pluginPrerelease,releaseChecksIndependent) или егоrun-id. Эти данные берутся из вывода команды статуса с флагом--json. - Node и pnpm для запуска
pnpm frv.
Шаг 1. Проверить состояние родителя
Перед watch зафиксируйте стартовое состояние прогона командой ниже.
pnpm frv status --run <parent-run-id> --json
Шаг 2. Запустить frv watch
watch разбирает строки журнала диспатча родителя вида Dispatched <workflow>: <url> (attempt N), находит по ним дочерние прогоны и сообщает о каждом переходе попытки и упавшем задании один раз, с метками раннера. Временные сбои GitHub повторяются при следующем опросе.
pnpm frv watch --run <parent-run-id> [--once] [--json]
Локальное состояние лежит под $TMPDIR/openclaw-frv/. После рестарта процесса watch подхватывает его и не повторяет уже показанные события.
Шаг 3. Точечный перезапуск ребёнка через --child
rerun --child ждёт один упавший дочерний прогон, отправляет ровно один запрос rerun-failed-jobs, проверяет, что в новой попытке нет дубликатов заданий, и пишет строку аудита. После старта новой попытки команда возвращается: финальную герметизацию по-прежнему выполняет continue --failed.
pnpm frv rerun --run <parent-run-id> --child <child-key|run-id> [--max-attempts 2]
--max-attempts по умолчанию равен 2, то есть допускает один повторный запуск. Если ребёнок уже превысил порог, команда откажется его перезапускать. Если упавший потребитель привязан к зелёной попытке производителя, команда перезапустит производителя и его зависимых, а не только самого потребителя.
Шаг 4. Закрыть блок через continue --failed
Если после повторного запуска дочерний прогон остался красным, сначала посмотрите frv status. Иначе continue --failed сам ретрайнет оставшихся блокеров. Когда других блокеров нет, закройте прогон командой ниже: она перезапускает только упавшие дочерние задания по мере их завершения, а в конце один раз перезапускает родительский сборщик.
pnpm frv continue --failed --run <parent-run-id>
Для normalCi можно вместо этого зафиксировать флейк через full-release-flake-classification.yml с доверенного main, а затем выполнить continue --failed.
Как проверить
pnpm frv status --run <parent-run-id> --jsonпоказывает свежий список дочерних попыток и их состояние.- В выводе
watchнет повторов одной и той же попытки после рестарта процесса. - После
rerun --childпоявилась новая попытка дочернего прогона, в ней нет дубликатов заданий, в журнале есть строка аудита отrerun --child. pnpm frv continue --failed --run <parent-run-id>отработал без ошибок.pnpm frv verify --run <successful-parent-run-id>прошёл на итоговом успешном parent.
Если что-то пошло не так
rerun --childотказывается запускаться из-за лимита попыток. Дочерний прогон уже превысил--max-attempts(по умолчанию 2), дальше повторять нельзя: разбирайте исходную причину.- Повторный запуск выглядит успешным, но родительский прогон всё равно красный. Сначала
frv status, потом точечный повторный запуск по оставшимся блокерам. Бездумно запускатьcontinue --failedне стоит, он сам их ретрайнет. - Получили неоднозначный временный ответ от GitHub. Контроллер выполняет сверку только для чтения, пока не появится новая попытка или не истечёт бюджет, и не повторяет изменение. Подождите и сверьте
frv statusс реальными попытками на GitHub перед новым повторным запуском. continueне подхватывает прогон. Значит, его неизменяемый план старше формата с учётом попыток, нужен свежий Full Release Validation: контроллер не восстанавливает старое состояние и не запускает заменяющий родительский прогон.