# 03 — Безопасный жизненный цикл управляемого процесса **What to build:** Управляемый Xray предсказуемо переживает повторные команды, сигналы, устаревшее состояние и аварийное исчезновение супервизора, не затрагивая чужие процессы и не оставляя секретные или временные данные. **Blocked by:** 02 — Управляемый Xray: полный штатный путь. **Status:** ready-for-agent - [ ] Супервизор владеет пользовательской блокировкой, допускает только один управляемый экземпляр и не заменяет запущенный профиль другим без явных `stop` и нового `start`. - [ ] Состояние с правами `0600` хранит PID и время старта супервизора и Xray, путь к бинарнику, порт и безопасный отпечаток профиля, но не ссылку или её секреты; служебные каталоги имеют права `0700`. - [ ] `status` и `stop` сверяют PID со временем старта и ожидаемым исполняемым файлом, поэтому чужой, устаревший и повторно использованный PID никогда не считается управляемым процессом. - [ ] SIGINT, SIGTERM и SIGHUP передаются дочернему Xray; штатное завершение удаляет состояние, сгенерированный JSON и временные файлы. - [ ] Если супервизор аварийно исчез, `stop` завершает оставшийся Xray только после полной проверки его личности и затем безопасно очищает состояние. - [ ] Повторный запуск, смена профиля, конфликт локального порта и несогласованный машинный адрес завершаются понятным отказом без повреждения уже работающего экземпляра. - [ ] Полная VLESS-ссылка и её секреты отсутствуют в stdout, stderr, служебных файлах и аргументах дочерних процессов; временная конфигурация существует только внутри закрытого служебного каталога. - [ ] Автоматические тесты покрывают блокировку, повторный запуск, сигналы, остановку, очистку, смену профиля, конфликт порта, чужой, устаревший и повторно использованный PID, а также исчезнувший супервизор.