---
name: reboot
description: >
  Safe REBOOT of a fleet node (Mac or PC) by a single protocol — not just shutdown: pre-flight
  (save state, finish syncing, warn peers, verify autostart is armed) → the correct reboot
  command (FULL restart, not the fast-startup hybrid) → post-reboot check via the crash-recovery
  skill. Trigger on "/reboot", "restart this machine".
license: MIT
---

# /reboot — управляемая перезагрузка узла флота

**Боль:** ребут вслепую = потерянный несинканный файл (sync-conflict), ложная SEV1-тревога от
пир-сторожей («узел умер!»), не оживший после старта робот, и — как с HP Wolf 24.07 — «перезагрузил,
а драйвер всё равно в памяти», потому что Fast Startup не очищает RAM при обычном выключении.

Ребут делаем ТОЛЬКО когда: (а) есть причина (выгнать хуки/драйвер из RAM, применить обновление,
починить залипшее), и (б) автозапуск армирован → машина вернётся сама.

## ШАГ 1 — PRE-FLIGHT (перед ребутом, по порядку)

1. **Причина + подтверждение.** Одна строка: зачем ребут и что он починит. Если рискованно
   (away-mode, машина без автологина, FileVault/BitLocker с ручным паролем на буте) → сперва спрос Антона.
2. **Сохранить состояние.** TurnState-чёрный-ящик пишет каждый ход сам (переживает ребут → /1 поднимет).
   Активная незакоммиченная работа в коде/волте → закоммить/сохранить сейчас.
3. **Досинхронить Syncthing** (иначе потеря/конфликт). Дождись `need=0` по всем шарам:
   ```bash
   powershell -NoProfile -ExecutionPolicy Bypass -File "$IMPORTS_ROOT/sync_check/sync_check.ps1"
   ```
   need>0 → подожди синк / подними его (`/raise-sync`), НЕ ребути с висящим need.
4. **Предупредить пиров** (иначе observer-offline ложная SEV1) — в шину + 03, ДО ребута:
   ```bash
   python "$HOME/.claude/scripts/bus_send.py" --text "🔁 <host> уходит в ребут (~N мин), причина: <...>. Вернусь сам."
   ```
5. **Проверить, что автозапуск армирован** (машина оживёт БЕЗ рук):
   - **ПК:** Claude Desktop = один лаунчер `%APPDATA%\...\Startup\Claude-Autostart.lnk`
     (`shell:AppsFolder\Claude_pzs8sxrjxfjjc!Claude`), НЕ битый HKCU\Run на старую версию
     ([[claude-desktop-autostart-race]]); Syncthing = `start-syncthing.vbs` в Startup; watchdog-задачи на месте.
     Хаб — вдобавок автологин + `hub_boot_report.py` ([[hub-boot-selfreport]]).
   - **Mac:** Login Items / launchd-агенты Syncthing + Claude; FileVault-пароль на буте = ручной
     (без него безлюдный ребут не оживёт — только при человеке).

## ШАГ 2 — РЕБУТ (правильной командой)

⚠️ **ПОЛНЫЙ Restart, а не Shutdown** — Fast Startup (hiberboot) на Windows НЕ очищает ядро/драйверы/RAM
при `shutdown /s`; `Restart` (`/r`) всегда делает полный цикл и очищает. Для «выгнать драйвер/хук из
памяти» (HP Wolf, антивирус, залипший драйвер) годится ТОЛЬКО полный Restart.

- **ПК (Windows):**
  ```bash
  shutdown /r /t 0
  ```
  (гарантированно чистый выход даже при Fast Startup ON; при этом сессия Claude Code завершится).
- **Mac:**
  ```bash
  osascript -e 'tell app "System Events" to restart'   # или: sudo shutdown -r now
  ```

## ШАГ 3 — POST-REBOOT (после подъёма — через /1)

Машина поднялась → в новой сессии запусти **`/1`** (воскрешение): RECALL из чёрного ящика + пинг
здоровья (arch/sync/mcp) + полная история прошлой сессии в буфер. Затем:
- Убедись, что автозапуск сработал: Syncthing подключён, Claude Desktop = один инстанс (нет гонки),
  коннекторы зелёные.
- **Проверь, что причина ребута достигнута** (напр. чёрные окна ушли / драйвер не в памяти) —
  глазами/замером, не на слово ([[prichina-kak-claim]]).
- Boot self-report в шину (хаб делает сам; на пире — короткий «✅ <host> вернулся, всё зелёное»).

## Границы
- READ-only до самого ребута; сам ребут — управляемое действие с причиной.
- ⛔ Away-mode / нет автологина / ручной FileVault-BitLocker на буте → ребут только со спросом Антона
  (риск не подняться без рук).
- Пир ребутит СЕБЯ сам ([[peers-own-outbound-local-full-member]]); хаб-ребут в away — осторожно
  ([[away-mode-45-days]], BIOS «Restore on AC Power Loss»).
- Имя папки = `reboot`; `/restart` — текст-триггер на этот же скилл (регистр не важен).
