1 · v1.0.0 · 2026-09-24 · sha256 afd3ab27043b3b87

1 v1.0.0B

Immutable. This exact content never changes and is served at /api/v1/blob/afd3ab27043b3b87.

---
name: 1
description: "Восстановление после ЖЁСТКОГО обрыва сессии (крэш / комп вырубился / контекст потерян посреди работы) — ОДНА сверхкороткая команда «где мы были + всё ли живо + верни историю». Триггеры: “/1“, “/!“, “восстановись“, “продолжаем“, “я вернулся“, “где мы остановились“, “проверь что всё работает“, “сделай recall и проверь систему“, “resume after crash“, “wake“"
version: 1.0.0
---

# /1 — воскрешение после крэша («где мы были + всё ли работает»)

**Боль Антона:** сессия умерла посреди работы (крэш / комп выключился) → новая сессия пустая. Раньше: руками вспоминай, потом отдельно дёргай `/arch`, `/sync-check`, `/mcp`, потом думай «на чём остановились». Теперь — одно слово `/1` (или `/!`).

**Чем это НЕ является:** `/retro` — для ЧИСТОГО конца сессии (инвентарь сделанного → раскладка по домам → /compact). После внезапного крэша упаковывать нечего, контекст уже потерян → нужен НЕ `/retro`, а воскрешение. Это разные инструменты.

## 4 шага (выполняй по порядку, отчитайся одной плашкой)

### Шаг 0 — СВЕРЬ ЧАСЫ (одна команда, до всего остального)
```bash
date
```
Сравни с датой последней записи чёрного ящика (`turnstate_show.py --n 1`) и с датой в шапке
контекста. **Разошлись — верь турнстейту и контексту, а не `date`.** Замер 18.08.2026 на
[машина флота]: `date` отдал «Tue Aug 4», реальным было 18-е, и целая сессия успела сохранить
ретро-ноту, две карточки задач и запись памяти с датой на две недели в прошлом.

Если между «тогда» и «сейчас» разрыв больше суток — премисса задачи протухла
([[seed-premise-expires-measure-before-building]], [[resume-check-date-first]]):
каждое «не сделано» из прошлой сессии **перепроверь живым замером**, прежде чем чинить.
Замер 18.08: P0 «флот разлогинен» был закрыт ещё 13.08, оставался один узел из трёх.

### Шаг 1 — RECALL: где мы были (0 токенов, детерминированно)
TurnState-чёрный-ящик пишет КАЖДЫЙ ход в SQLite (Stop-хук), переживает любой крэш. Прочитай последние ходы:
```bash
python "$IMPORTS_ROOT/turnstate/turnstate_show.py" --n 12
```
Из вывода вытяни: что Антон просил последним · какие файлы трогали · какие РЕШЕНИЯ приняли · следующий шаг. Это и есть «на чём оборвались». (Флаги: `--stats`, `--session <id>`, `--n N`.)

⛳ **И сразу — вопрос-рефлекс на входе** (anton hub:5090; единственный источник текста и формата — `/skill-gap` §⛳): «что из этой задачи уже должно быть скиллом — а если скилл есть, чего ему не хватило?» Ответ ОДНОЙ строкой идёт в плашку ниже; «не тянет» — валидный ответ, молчание — нет.

**⚠️ Фолбэк, если ящик ПУСТ** (`turnstate_show.py --stats` показывает `turns: 0` — бывает, если Stop-хук ещё не активировался после рестарта Claude Code; см. [[crash-recovery-command]]): НЕ говори «данных нет». Деривируй «где мы были» из ПОСЛЕДНЕЙ сессии — её полный seed уже собран в шаге 3 (`_Dashboards/sessions-md/_continue/<cli>.seed.md`): прочитай ХВОСТ этого файла (последние 1–2 обмена «человек→ассистент») и вытяни из них задачу + последний шаг. То есть шаг 1 при пустом ящике опирается на результат шага 3.

**📅 Шире одного хода — вчерашний день целиком** (0 токенов, читает готовый файл):
```bash
python "$IMPORTS_ROOT/day_ledger.py" --recall
```
TurnState помнит ХОДЫ, леджер помнит ДЕНЬ: коммиты, ретро, решения, ДР — то, что случилось
между сессиями и в чужих сессиях. После долгого перерыва бери `--recall 7`. Дверь целиком — `/ledger`.

### Шаг 2 — ПИНГ здоровья: всё ли живо (зелёный/красный)
Три быстрых детерминированных проверки:
```bash
python "$IMPORTS_ROOT/arch/arch_status.py"
powershell -NoProfile -ExecutionPolicy Bypass -File "$IMPORTS_ROOT/sync_check\sync_check.ps1"
```
**MCP — ТОЛЬКО внутрисессионно** (⚠️ НЕ `claude mcp list` и НЕ второй Telethon-клиент → `AUTH_KEY_DUPLICATED` разлогинит аккаунт; память [[mcp-health-check]]): дёрни по одному дешёвому read-вызову у живых серверов — Telegram `mcp__telegram__get_me` (ждём Tony/@[рабочий аккаунт]), WhatsApp `mcp__whatsapp__get_my_profile`, n8n `mcp__n8n__n8n_health_check`. Если инструментов сервера нет в сессии — он не загрузился (диагностика — в `/mcp`).

⭐ **Шаг 2-бис — RED, НАЗВАВШИЙ ЛЕКАРСТВО, ЛЕЧИШЬ ТЫ, В ЭТОМ ЖЕ ЗАХОДЕ** (добавлено 15.09.2026; память [[alert-ownership-routing]] §Поправка 15.09).
Пинг выше — не «посмотреть и пойти дальше». Если прибор вернул RED/WARN **и напечатал команду лечения**,
эта команда **запускается сразу**, без спроса и без записи в бэклог, когда лечение обратимо
(карантин/перемещение/переиндекс/перезапуск сервиса). Молча пройти мимо красного с названным лекарством = нарушение.
⛔ Не запускать и вместо этого написать строку Антону: необратимое удаление · Tier-2 · чужой узел · команда НЕ названа.
⚠️ Это НЕ «паразитная активность» §10.0: тот суточный потолок про профилактические сканы по своей инициативе,
а тут — реакция на КОНКРЕТНЫЙ красный сигнал, который прибор уже предъявил.
⚠️ Замер, из-за которого шаг появился: `sync_check` печатал `oldest is 48.6 days (threshold 3), 64 live` и рядом —
`resolve_conflicts.py --quarantine`; порог был превышен в 16 раз, потому что вызывателей у движка НЕ БЫЛО НИ ОДНОГО
(`grep -rl` по scripts/skills/scheduled-tasks = 0), а каждая сессия считала, что лечит кто-то другой. 7-й случай семьи с 14.08.

### Шаг 3 — ПОЛНЫЙ ПОДХВАТ: вся история в буфер
Собери прошлую человеческую сессию этой машины в seed → буфер (движок `/resume-last`):
```bash
python "$IMPORTS_ROOT/claude_sessions/continue_session.py" --last
```
Скажи Антону: **«Открой New session и нажми Ctrl+V — вернёшь весь разговор целиком».** Если `clipboard: FAILED` — seed лежит файлом `_Dashboards/sessions-md/_continue/<cli>.seed.md`.

## Что ответить (одна плашка + 🧒)
```
🔄 Воскрешение
🕒 Часы: <date == турнстейт ✅ | РАЗОШЛИСЬ: date=<X>, реально <Y> → премиссы перепроверены>
📂 Кабинет: <родной ✅ | ЧУЖОЙ: сессия в <папке>, родная <родная-папка> → память здесь чужая, стройку вести из родной (сигнал = SessionStart-хук home-dir-guard; реестр home_dirs.json)>
📍 Где были: <1-2 строки из TurnState — задача, последний файл/решение, следующий шаг>
💚 Система: arch <✅/⚠️/🔴> · sync <✅/⚠️/🔴> · mcp <tg ✅ / wa ✅ / n8n ✅>
📋 Полная история прошлой сессии — в буфере (New session → Ctrl+V).
⛳ Скилл: <нет скилла, не тянет | нет скилла, тянет → ДО→ПОСЛЕ | есть /X, не хватило <чего> → апгрейд>
➤ Продолжаем с: <следующий шаг>?
```
Затем 🧒 «Простыми словами» (память [[eli5-always]]).

## Если окно Claude вообще не поднимается (класс `app-in-session-0`, Windows)

Симптом: окно не открывается ни ярлыком, ни из Пуска, трей пуст, а процессы живые. Прибор:

```
Get-Process claude | Select Id,SessionId,MainWindowHandle
```

`SessionId=0` и `MainWindowHandle=0` = приложение стартовало в СЛУЖЕБНОЙ сессии Windows, где нет рабочего стола;
single-instance замок не даёт создать окно в интерактивной сессии. **Перезагрузка машины НЕ нужна.** Лечение —
кнопка `Починить Claude` на рабочем столе (хаб: стоит с 22.08.2026; пиры — посылка `fix-claude-button-260822`),
она же `%USERPROFILE%\.claude\scripts\fix_claude_app.cmd`: гасит все `claude.exe` и стартует приложение заново.
По ssh шаг СТАРТА бесполезен — ssh это та же сессия 0 (скрипт это ловит и говорит вслух). После подъёма сверить
аккаунт узла (память `claude-account-per-node`). Память `claude-app-session-0-restart`.

## Границы
- **READ-ONLY.** Ничего не отправляет, не правит живые данные и не чинит синк/MCP — только ЧИТАЕТ чёрный ящик, статус-скрипты и пишет seed-файл + буфер. Лечение красного — это уже `/arch` / `/sync-check` / `/mcp` отдельно.
- Имя скилла = `1`, поэтому `/1` работает нативно; `/!` — алиас-триггер (спецсимвол нельзя сделать именем папки): увидев `/!`, запускай этот же скилл.
- На Маках: `python3`; при нестандартном пути волта — env `CLAUDE_VAULT_ROOT=<...>`.

## Канон
Память [[crash-recovery-command]]. Кирпичи: [[turnstate-ledger]] (чёрный ящик), [[claude-desktop-sessions-per-account]] (continue_session), [[system-architect]] (/arch), `syncthing-desktop-laptop-sync` (/sync-check), [[mcp-health-check]] (/mcp). Пара к SessionStart-хуку `session_resume_hook` (тот показывает прошлую сессию сам на старте — этот собирает recall+здоровье+полную историю по команде).