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

6.2 KiB
Raw Blame History

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

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

Summary

Реализация продлевает ответственность конвейера ЗА терминальный переход deploy → done, закрывая класс инцидентов «зелёный деплой, красный прод» (ET-8). Механизм — детерминированный reserved-agent job post-deploy-monitor (вариант B из ADR-001, точная калька deploy-finalizer): арм в stage_engine.advance_stage (блок next_stage == "done"), один тик = один job (перехват в launcher.launch_job ДО _spawnstage_engine.run_post_deploy_monitor), чистая логика в новом leaf-модуле src/post_deploy.py (never-raise).

Проверены все четыре оси. Реализация соответствует ТЗ (02-trz.md), ADR-001 и глобальному adr-0010, удовлетворяет всем критериям приёмки AC-1…AC-18. Документация (golden-source) обновлена в том же PR. Регрессов нет.

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

  • §2.1 src/post_deploy.py (leaf, never-raise): post_deploy_applies, probe_signals, classify, decide_action, sentinel-state, артефакт, build_rollback_command — все на месте.
  • §2.2 Оркестрация: арм в terminal-блоке + reserved-agent тик с само-перепостановкой через available_at_delay_s; restart-safe (sentinel armed/series/done + jobs-очередь).
  • §2.3 Реакция: non-self+auto → хук --rollback (синхронно, целевой ≠ orch); self-hosting → ВСЕГДА ALERT_ONLY.
  • §2.4 Конфигурация: все post_deploy_* в src/config.py, дефолты безопасны (kill-switch on, auto-rollback off), параметры отката переиспользуют deploy_prod_*.
  • §2.5 Артефакт 16-post-deploy-log.md с машиночитаемым frontmatter, best-effort.
  • §2.6 Блок post_deploy в GET /queue.
  • §2.7/§2.8/§3 Инварианты: STAGE_TRANSITIONS, QG_CHECKS, check_deploy_status, terminal-sync, merge-gate, exit-code-контракт хука, схема БД — не тронуты (подтверждено зелёным полным прогоном).

Соответствие ADR

Реализация 1:1 повторяет ADR-001: механизм (reserved-agent, не стадия/не daemon), точки интеграции, пороги BR-3, политика реакции BR-5 (self never auto-rollback — структурный инвариант в decide_action + отсутствие вызова run_rollback на ALERT_ONLY). Нарушений глобальных ADR не выявлено.

Качество кода

  • Контракт never-raise выдержан во всех публичных функциях и в каждой ветке run_post_deploy_monitor; launcher оборачивает тик в доп. guard (AC-16).
  • classify fail-safe → HEALTHY на мусорном входе (ложный DEGRADED опаснее).
  • Docstrings содержательные, со ссылками на AC/BR.
  • Условность раската по образцу ORCH-35/36/43/58 (флаг + CSV-репо).

Тесты

30 тестов ORCH-021 (tests/test_post_deploy.py, tests/test_post_deploy_integration.py) — содержательные, покрывают классификацию (AC-3..6), self-hosting safety (TC-19 явно проверяет, что хук --rollback НЕ вызывается для self — AC-8), idempotency двойного арма (AC-15), kill-switch/условность (AC-2/10/11), exit-code маппинг (AC-9), frontmatter артефакта (AC-13), never-raise (AC-16), /queue (AC-14). Полный прогон pytest tests/701 passed (регрессов нет, AC-12).

Findings

P0 — Blocker

  • нет

P1 — Must fix

  • нет

P2 — Should fix

  • нет

P3 — Nice to have

  • run_post_deploy_monitor: в ветке ALERT_ONLY для не-self репо при post_deploy_auto_rollback=false текст алерта упоминает «авто-rollback для self-hosting запрещён (BR-5)», что для не-self случая формулировка не совсем точна (косметика сообщения; на поведение не влияет).
  • write_post_deploy_log коммитит/пушит артефакт в ветку задачи, которая к моменту наблюдения уже слита/может быть удалена — артефакт может не попасть в main. Контракт best-effort соблюдён (never-raise, ничего не роняет); как улучшение наблюдаемости — рассмотреть запись лог-артефакта отдельным путём.

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

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

  • CLAUDE.md16-post-deploy-log.md добавлен в перечень артефактов;
  • docs/architecture/README.md — раздел «Post-deploy наблюдение прода» + блок post_deploy в таблице API /queue;
  • docs/architecture/adr/adr-0010-post-deploy-monitor.md — новый сквозной ADR;
  • docs/work-items/ORCH-021/06-adr/ADR-001-post-deploy-monitor.md — детальный ADR;
  • CHANGELOG.md — запись в Added (+ fix Dockerfile COPY data/);
  • README.md / .env.example — все ORCH_POST_DEPLOY_* env задокументированы.

Изменение src/ сопровождено обновлением документации — правило CLAUDE.md №2/№6 выполнено.

Вердикт

Только P3 (nice-to-have) findings, блокеров и must-fix нет → APPROVED.