# S00-014: Fix repeated runner cleanup after a submitted parent is reaped - Remediation для: S00-012; root: S00-002; depth: 2 > Generated from planning/tasks.json; status is in state/tasks.json. - Этап: S00 - Оператор: ci-cd - Reviewer: qa - Зависимости: S00-001, S00-011, S00-013 - Требования: NFR-007 ## Один результат Reliable repeated lifecycle cleanup after submit with a reaped parent and SIGTERM-ignoring descendant, preserving actual process-tree termination and valid workflow state. ## Разрешённые пути - `scripts/runner.py` - `tests/tooling/test_automation.py` Не изменять другие modules, shared contracts или spec snapshots без изменения плана. Stem без расширения разрешает принятые stack-specific extensions и focused test рядом. ## Прочитать - docs/WEB_PROFILE.md - docs/ARCHITECTURE.md - docs/CONTRACTS.md - docs/TESTING.md - roles/orchestrator.md - docs/decisions/README.md - state/blockers/S00-012.md - state/blockers/S00-014.md ## Шаги 1. Read S00-012 evidence and preserved descendant regressions. 2. Reproduce repeated cleanup EPERM in the supplied execution harness without launching a model. 3. Correct only the repeated-cleanup lifecycle failure; retain fail-closed handling for inaccessible live descendants and terminal/deadline monitoring. 4. Run descendant, delayed stdin and existing lifecycle checks plus make check; record evidence and submit. ## Приёмка 1. Submit-transition descendant regression completes without invalid escalation or delayed source writes. 2. Timeout and terminal-transition paths terminate descendants, including SIGTERM-ignoring children. 3. Repeated cleanup does not hide a failure to terminate a live process; stdin delivery and prompt budgets remain intact. ## Focused checks 1. Both preserved descendant regressions. 2. Delayed-reader UTF-8/EOF, timeout, transition, scope and fresh-session runner checks. 3. make check ## Блокер и завершение запуска Для всех ролей scope — только эта задача. При блокере создать issue JSON по state/ISSUE_TEMPLATE.json, вызвать escalate с текущим ID/role/agent, проверить status=blocked и resolution_task, затем немедленно завершить запуск. Не решать blocker и не выбирать следующую задачу самому. Новый агент назначается runner. Правки metadata через CLI — единственное исключение scope. ## Передача Сохранить evidence/handoff; submit → review и завершить запуск. Reviewer также выполняет только эту задачу, включая обязательное escalate при блокере.