From 19f42cd9e5ec2cadb5159c9ca1417e46d777dcf2 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Sun, 7 Jun 2026 14:19:44 +0000 Subject: [PATCH] reviewer(ET): auto-commit from reviewer run_id=308 --- docs/work-items/ORCH-021/12-review.md | 73 +++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 docs/work-items/ORCH-021/12-review.md diff --git a/docs/work-items/ORCH-021/12-review.md b/docs/work-items/ORCH-021/12-review.md new file mode 100644 index 0000000..b84f902 --- /dev/null +++ b/docs/work-items/ORCH-021/12-review.md @@ -0,0 +1,73 @@ +--- +type: review +work_item_id: ORCH-021 +verdict: APPROVED +version: 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_action` → + `run_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 покрыты тестами TC01–TC20 (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.md` — `16-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 файлов).