4.3 KiB
4.3 KiB
Технические риски — ORCH-036
Work Item: ORCH-036 Stage: architecture Автор: architect
| ID | Риск | Влияние | Вероятность | Митигация |
|---|---|---|---|---|
| R-1 | Detached host-процесс не пережил рестарт 8500 (ssh-канал убит вместе с контейнером) | Деплой не завершён, result не записан, finalizer вечно defer'ит |
Средняя | setsid/nohup + redirect отвязывает remote-процесс от ssh; интеграционная проверка на staging-цели (TC-08); finalize-defer bounded → по исчерпании set_issue_blocked + Telegram |
| R-2 | Преждевременное чтение check_deploy_status (вердикта ещё нет) |
Ложный FAILED → ложный откат на development | Средняя | Фаза B возвращается БЕЗ advance; гейт запускает только finalizer (Фаза C) после появления result; defer пока result отсутствует |
| R-3 | Дрейф образ↔main: merge-gate сделал rebase, но staging-образ собран до rebase → build-once тегирует «не тот» код | В прод уезжает не точно то, что в main |
Низкая | merge-gate (ORCH-43) делает re-test после rebase; build-once = «что валидировано на staging», что и есть контракт; задокументировано как осознанное ограничение; усиление (rebuild+revalidate staging после rebase) — отдельная задача |
| R-4 | Двойной Approved (человек кликнул дважды / дубль webhook) запускает деплой дважды | Двойной рестарт прода, гонка | Средняя | Маркер initiated (idempotency-guard); event-dedup webhook'ов Plane уже есть |
| R-5 | exit 2 хука (rollback тоже упал) → 8500 лежит → finalizer/новый контейнер не поднялся | Конвейер всех проектов встал | Низкая | health-loop + авто-rollback хука минимизируют; restart: unless-stopped поднимет контейнер на ПРЕДЫДУЩЕМ образе если retag не случился; exit 2 → deploy_status: FAILED + откат + Telegram-алерт; ручной --rollback хука как backstop |
| R-6 | Reserved-agent deploy-finalizer ошибочно уйдёт в LLM-путь лаунчера (_spawn → ValueError) |
Finalizer не отработает | Низкая | Перехват ДО _spawn в launch_job; unit-тест маршрутизации |
| R-7 | sentinel-файлы не видны контейнеру/хосту (mount/uid) | Фазы B/C не синхронизируются | Низкая | Тот же mount и uid-модель, что у merge-lease (ORCH-40/43); HP-2 в 07-infra |
| R-8 | Approve через смену статуса Plane конфликтует с auto-advance других стадий | Случайный Approved на deploy ничего не ломает, но семантика неочевидна |
Низкая | Перехват по current_stage=="deploy" + finished_agent is None + маркеры; задокументировать в deployer.md/INFRA, что Approved на deploy = «деплой в прод» |
| R-9 | Самодеплой ORCH ломает прод во время разработки самой ORCH-36 | Групповой простой (enduro-trails) | Низкая | Вся отладка — на staging-цели хука (8501); прод 8500 не трогать (AC: DoD); флаг approve=true |
Сводный приоритет
- Блокеры дизайна: R-1, R-2 — закрыты архитектурой (setsid-detached + finalizer-defer).
- Безопасность self-hosting: R-5, R-9 — закрыты обязательным approve + staging-отладкой
- авто-rollback +
restart: unless-stopped.
- авто-rollback +
- Корректность: R-3, R-4 — осознанные ограничения / idempotency-guard.