reboot · diff

git:20260814.44e61cf to git:20260814.5023d8c

4 added, 8 removed. Audit A to A.

---
name: reboot
description: >
- Безопасная ПЕРЕЗАГРУЗКА узла флота (Mac или ПК) по единому протоколу — не «просто shutdown»,
- а pre-flight (сохранить состояние, досинхронить Syncthing, предупредить пиров, убедиться что
- автозапуск армирован) → правильная команда ребута (⚠️ ПОЛНЫЙ Restart, чтобы выгнать драйверы/хуки
- из RAM, а не Fast-Startup-гибрид) → post-reboot проверка через /1. Триггеры: "/reboot", "/restart",
- "перезагрузи", "перезагрузка", "ребутни", "ребут этой машины", "reboot", "restart this machine".
- НЕ путать: /1 = воскрешение ПОСЛЕ обрыва (этот — управляемый ребут ДО); /retro = конец сессии.
- Канон: память [[reboot-protocol]], [[hub-boot-selfreport]], [[claude-desktop-autostart-race]],
- [[machine-bus-telegram-rail]], [[syncthing-desktop-laptop-sync]].
+ 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` — текст-триггер на этот же скилл (регистр не важен).