--- type: review work_item_id: ORCH-059 verdict: APPROVED version: 1 --- # Review ORCH-059 ## Summary Выделенный Plane-статус «Confirm Deploy» как единственный триггер Фазы B прод-деплоя self-hosting; `Approved` на стадии `deploy` становится детерминированным no-op. Реализация точно соответствует ТЗ (TRZ-1..6), ADR-001 и критериям приёмки (AC-1..10). Четыре точечные правки в трёх модулях (`plane_sync.py`, `webhooks/plane.py`, `stage_engine.py`), без изменения контрактов (`STAGE_TRANSITIONS`, `QG_CHECKS`, `check_deploy_status`, Фазы A/C, merge-gate, схема БД). Документация обновлена в том же PR. `pytest tests/ -q` — 763 passed. ## Соответствие ТЗ и ADR - **TRZ-1 / AC-1** — `"Confirm Deploy" → "confirm_deploy"` добавлен в `_PLANE_NAME_TO_KEY`; намеренно отсутствует в `_DEFAULT_STATES` → fail-closed. Покрыто `test_tc01/tc02`. - **TRZ-2 / AC-2** — `handle_confirm_deploy` (гард `stage=="deploy"`) → `_try_advance_stage(..., confirm_deploy=True)` → Фаза B. Покрыто `test_tc04/tc07/tc10`. - **TRZ-3 / AC-3** — `Approved` на `deploy`: ранний возврат ДО Quality Gate с `note="approved-on-deploy-noop"`, без `initiate_deploy`, без ложного отката БАГ-8. Покрыто `test_tc05/tc07_approved_without_confirm_is_noop/tc11`. - **TRZ-4 / AC-4** — `handle_verdict(approved=True)` не тронут; approve на `analysis` продвигает конвейер. Покрыто `test_tc06_approved_on_analysis_still_advances`. - **AC-5** — идемпотентность повторного «Confirm Deploy» (`self-deploy-already-initiated`). Покрыто `test_tc08`, `test_tc06_approved_calls_prod_hook_exactly_once`. - **TRZ-5 / AC-6** — CTA Фазы A (Plane-коммент + Telegram) просит «Confirm Deploy» и явно отмечает, что «Approved» прод-деплой не запускает. Покрыто `test_tc09`. - **TRZ-1 / AC-7** — доступ через `.get("confirm_deploy")`, отсутствие статуса → ветка не активируется, без `KeyError`. Покрыто `test_tc03` (API недоступен / статуса нет на доске). - **TRZ-6 / AC-8** — условность через `self_deploy.self_deploy_applies`; не-self репо без изменений. Покрыто `test_tc12`. - **AC-9** — контракты и схема БД не изменены; 763 теста зелёные. ## Findings ### P0 — Blocker - нет ### P1 — Must fix - нет ### P2 — Should fix - нет ## Документация Обновлено в том же PR (AC-10 выполнен): - `CLAUDE.md` — раздел self-hosting: прод-деплой только через «Confirm Deploy», `Approved` = no-op. - `docs/architecture/README.md` — секция ORCH-036 уточнена + добавлена подсекция ORCH-059 (статус-триггер «Confirm Deploy»), запись в перечне статусов доработок. - `CHANGELOG.md` — запись ORCH-059 в `[Unreleased] / Added`. - ADR `docs/work-items/ORCH-059/06-adr/ADR-001-confirm-deploy-status.md` — заведён, отражает реализацию (4 правки, fail-closed, рассмотренные альтернативы). - `07-infra-requirements.md` — эксплуатационное предусловие (создать статус доски + сброс кэша). Документация консистентна с кодом; golden-source инвариант соблюдён.