Files
orchestrator/docs/work-items/ORCH-021/12-review.md

4.6 KiB
Raw Blame History

type, work_item_id, verdict, version
type work_item_id verdict version
review ORCH-021 APPROVED 1

Review ORCH-021 — Post-deploy мониторинг прода + реакция на деградацию

Summary

Реализация продлевает ответственность конвейера ЗА deploy → done через reserved-agent job post-deploy-monitor (вариант B из ADR-001, калька deploy-finalizer). Новый leaf-модуль src/post_deploy.py (never-raise), арм в terminal-блоке advance_stage, перехват тика в launcher.launch_job ДО _spawn, исполнение в stage_engine.run_post_deploy_monitor, блок post_deploy в GET /queue. Соответствует ТЗ, ADR и критериям приёмки. Все 700 тестов зелёные (pytest tests/ -q), включая 30 новых (test_post_deploy.py, test_post_deploy_integration.py). Документация обновлена в том же PR. P0/P1 нет.

Соответствие ТЗ / ADR

  • §2.1 src/post_deploy.py — leaf-модуль, never-raise, post_deploy_applies, probe_signals, classify, decide_action, sentinel-state, артефакт, rollback-команда. ✔
  • §2.2 механизм — reserved-agent job, restart-safe (sentinel armed/series/done
    • jobs-очередь), идемпотентный арм. ✔ (соответствует выбору архитектора в ADR §1)
  • §2.3 реакция — self-hosting ВСЕГДА ALERT_ONLY (структурно: decide_actionrun_rollback недостижим для self), не-self+auto → --rollback, exit 1/2 → эскалация. ✔
  • §2.4 конфигурация — все post_deploy_* параметры с безопасными дефолтами; откат переиспользует deploy_prod_*. ✔
  • §2.5 артефакт 16-post-deploy-log.md — валидный YAML-frontmatter, best-effort. ✔
  • §2.6 GET /queue блок post_deploy. ✔
  • §3 инварианты — STAGE_TRANSITIONS, QG_CHECKS, check_deploy_status, terminal-sync, merge-gate, exit-коды хука, схема БД — НЕ изменены (AC-12; подтверждено зелёным полным прогоном). ✔

Критерии приёмки

AC-1…AC-18 покрыты тестами TC01TC20 (classify HEALTHY/DEGRADED по обоим порогам, устойчивость к одиночному глюку, kill-switch, условность репо, idempotent арм, self-hosting ALERT_ONLY, non-self rollback + эскалация, never-raise, артефакт, /queue). AC-18 (документация) — выполнен (см. ниже).

Findings

P0 — Blocker

  • нет

P1 — Must fix

  • нет

P2 — Should fix

  • нет

P3 — Nice-to-have (не блокируют)

  • build_rollback_command(repo) принимает repo, но не использует его (симметрия с build_deploy_command); можно убрать или задокументировать.
  • status() в /queue формирует active по os.path.basename(d) (только work_item_id, без repo) — для разных репо с одинаковым wi возможна косметическая коллизия в выводе.
  • Теоретическое раздвоение цепочки тиков при дубле job (как у deploy-finalizer); на практике гасится max_concurrency=1 + done-маркером. Принятый паттерн, не регресс.

Документация

Обновлена в том же PR (golden-source, AC-18 PASS):

  • CLAUDE.md16-post-deploy-log.md добавлен в перечень артефактов.
  • docs/architecture/README.md — раздел «Post-deploy наблюдение…», блок /queue, заметка об обновлении.
  • CHANGELOG.md — запись в [Unreleased] / Added.
  • .env.example — переменные ORCH_POST_DEPLOY_*.
  • ADR work-item docs/work-items/ORCH-021/06-adr/ADR-001-post-deploy-monitor.md
    • сквозной docs/architecture/adr/adr-0010-post-deploy-monitor.md.

Заметка о diff

git diff main...HEAD содержит файлы ORCH-060/ORCH-061/staging_verdict.py/reconciler.py из-за устаревшей merge-base ветки (эти изменения уже прошли свои PR в main). Предмет ревью — единственный коммит ORCH-021 c5b516b (12 файлов).