reviewer(ET): auto-commit from reviewer run_id=308

This commit is contained in:
2026-06-07 14:19:44 +00:00
committed by Dev Agent
parent 2f4c553fd8
commit fbfcd84b16

View File

@@ -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 покрыты тестами 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.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 файлов).