Они не умирали. Робот, который нашёл проблему и сам о ней доложил, выходит ненулевым кодом. Если этот код не записан в карту сигналов — сторож красит здорового робота мертвецом. Каждый случай прочитан в исходнике, а не угадан.
| Робот | Что означал его код 1 | Улика | Было → стало |
|---|---|---|---|
| Token Audit | нашёл флаги расхода токенов | token_audit.py:586, замер FLAGS=4 | RED → находка |
| Repo Hygiene Gate | нашёл репо без лицензии/CoC | repo_hygiene_gate.py:227 | RED → находка |
| Fleet Services Board | нашёл красные сервисы флота | fleet_services.py:635 | RED → находка |
| Proc Patrol | нашёл зомби-процессы | proc_patrol.py:609; в карте был только маковский ключ | RED → находка |
| claude-auth-probe | нашёл больную авторизацию | claude_auth_probe.py:99-121 | RED → находка |
| funnel-stall-watch | воронка встала | funnel_stall_watch.py:157-181 | RED → находка |
⚠️ Регистрировать код = заглушать его. Поэтому четырём роботам сначала поставлен
crash-guard (падение уходит кодом 4), и только потом сделана запись — иначе смерть робота
маскировалась бы под находку. Порядок проверяет гейт _test_crash_guard.py: ALL PASS.
Права описаны данными (runbooks.json), а не кликом. Незнакомое ночью
отклоняется, а не ждёт человека: зависшая сессия хуже отказавшей.
| Дыра | Чем закрыта |
|---|---|
Запрет обходится обёрткой -EncodedCommand / вложенным шеллом | белый список исполняемых + фильтр обфускации |
| Гонка бюджета: два процесса читают «попытка доступна» до записи | атомарный замок на пару (симптом, цель) |
| verify может выдавать «команда отработала» за «здорово» | отказ на runbook, где verify дословно равен cure |
oauth-probe смотрел не туда. Полгода проверял токены папки-дубля, а боевые
лежат в другой. Умри боевые — проба осталась бы зелёной. Переставлен, прогон 5/5 OK.| Робот | Код | Почему автопочинка не берётся |
|---|---|---|
| LobsterMonthlyPulse | 0x80070002 | файл не найден: перезапуск не лечит, нужен разбор — ярус 1 |
| Daily Community Card | 0x1 | перезапуск пробован, здоровье не вернулось → корень в очереди |
Автоперезапуск вылечил ноль реальных поломок. Всё, что дал вечер, дала починка корня (карта сигналов), а не рестарт. Это аргумент за фазу 2 — repair-сессии для настоящих корней, — а не за раздувание реестра перезапусков.