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

74 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 файлов).