Files
orchestrator/docs/work-items/ORCH-021/10-tech-risks.md

4.1 KiB
Raw Blame History

10 — Технические риски (ORCH-021)

# Риск Вероятн. Влияние Митигация
R-1 Монитор self бежит внутри наблюдаемого прода. Полностью wedged прод-контейнер → worker не выполнит тик → деградация не замечена, алерта нет. Сред. Высок. Known MVP limitation (зафиксировано в ADR-001 §Последствия). Health в момент рестарта (хук) + reconciler ловят часть случаев. Внешний независимый watchdog — follow-up (вне рамок).
R-2 Ложный авто-rollback по сетевому глюку. Низк. Высок. Пороги по N ПОСЛЕДОВАТЕЛЬНЫХ провалов + доля 5xx на окне (BR-3/AC-6), а не разовый провал. Self ВСЕГДА ALERT_ONLY (BR-5). auto_rollback=False по умолчанию.
R-3 Авто-rollback прод-орка убивает инструмент всех проектов. Низк. Критич. Структурный инвариант: тик self НИКОГДА не откатывает/рестартит прод-контейнер (AC-8). Self → только alert + ручной approve. Откат self — только detached host-процесс вне тика.
R-4 Нет prev-образа при ROLLBACK → откат невозможен. Сред. Сред. Хук возвращает exit 1 → ROLLBACK_FAILED + громкий алерт (AC-9), деградация не проглатывается тихо.
R-5 Дубль/потеря наблюдения при двойном webhook / рестарте. Сред. Сред. Идемпотентность: sentinel armed (арм-гард) + done (защита от повторной обработки) + restart-safe jobs-очередь + series (AC-15). По образцу finalizer.
R-6 Исключение в наблюдении роняет worker / конвейер других проектов. Низк. Высок. Контракт never-raise во всём post_deploy.py и run_post_deploy_monitor (AC-16), по образцу self_deploy/staging_verdict.
R-7 Тик занимает single-worker (max_concurrency=1) → задержка других задач. Низк. Низк. Опрос короткий (~секунды), между тиками job не выполняется (defer через available_at_delay_s) — worker свободен, как у finalizer. Окно bounded (window_s/interval_s).
R-8 Скрытое изменение контракта (реестры/гейты/exit-коды/схема). Низк. Высок. Инвариант: STAGE_TRANSITIONS/QG_CHECKS/check_deploy_status/terminal-sync/merge-gate/exit-коды/схема БД НЕ меняются (AC-12). Существующие тесты deploy/staging/merge-gate должны остаться зелёными.
R-9 5xx на /queue//status из-за самого монитора (рекурсивная нагрузка). Низк. Низк. Интервал post_deploy_interval_s (30с) — низкая частота; опрос лёгкий GET.
R-10 Артефакт 16-post-deploy-log.md не пишется / невалиден → петля уроков без данных. Низк. Низк. Best-effort запись с валидным frontmatter (AC-13); отсутствие файла ничего не роняет. Парсинг — defensive.

Эскалация

  • Изменение помечено arch:major-change (новая под-компонента src/post_deploy.py
    • новый reserved-agent job-kind post-deploy-monitor).
  • R-1 (gap наблюдения для wedged self-контейнера) — кандидат на отдельную задачу (внешний watchdog), вне рамок ORCH-021.