65 lines
4.1 KiB
Markdown
65 lines
4.1 KiB
Markdown
---
|
||
type: review
|
||
work_item_id: ORCH-036
|
||
verdict: APPROVED
|
||
version: 2
|
||
---
|
||
|
||
# Review ORCH-036 — Исполняемый самодеплой стадии `deploy` (Вариант B)
|
||
|
||
## Summary
|
||
|
||
Re-review после фикса двух P1 из версии 1. Оба блокера устранены:
|
||
|
||
1. **Stale deploy-state маркеры** — добавлен `self_deploy.clear_state(repo, work_item_id)`
|
||
(never-raise, idempotent, рекурсивное удаление `<repos_dir>/.deploy-state-<repo>/<wi>/`)
|
||
в ветке БАГ-8-отката `check_deploy_status` FAILED (`_handle_qg_failure_rollbacks`,
|
||
`src/stage_engine.py`) и дополнительно в начале Фазы A (`_handle_self_deploy_phase_a`)
|
||
как belt-and-suspenders. Добавлен регрессионный тест
|
||
`tests/test_deploy_rollback.py::test_tc11_re_deploy_after_rollback_not_wedged`,
|
||
доказывающий, что после FAILED → откат → фикс → повторный заход на `deploy` Фаза B
|
||
РЕАЛЬНО инициирует деплой (нет no-op по устаревшему `initiated`), плюс
|
||
`tests/test_deploy_hook_mapping.py::test_clear_state_removes_all_markers_and_is_idempotent`.
|
||
2. **`.env.example`** — добавлен полный блок дескрипторов `ORCH_SELF_DEPLOY_*` /
|
||
`ORCH_DEPLOY_*` (14 настроек, плейсхолдеры, секреты не коммитятся) по образцу
|
||
merge-gate ORCH-043, с подробными комментариями.
|
||
|
||
Реализация трёхфазного исполняемого самодеплоя соответствует ADR-001 и закрывает
|
||
критерии приёмки AC-1…AC-13. Контракты `STAGE_TRANSITIONS` / `QG_CHECKS` /
|
||
`_parse_deploy_status` / БАГ-8 / terminal-sync / merge-gate (ORCH-43) НЕ тронуты;
|
||
условность по репо (`self_deploy_applies`) корректна; перехваты упорядочены верно
|
||
(Phase B после terminal-check, Phase A после merge-gate); `deploy-finalizer` —
|
||
детерминированный no-LLM reserved-agent, перехвачен в launcher до `_spawn`. Все
|
||
импорты (`set_issue_in_review`, `plane_add_comment`, `set_issue_blocked`,
|
||
`send_telegram`) присутствуют. `pytest tests/` — **568 passed**.
|
||
|
||
## Findings
|
||
|
||
### P0 — Blocker
|
||
- (нет)
|
||
|
||
### P1 — Must fix
|
||
- (нет — оба P1 из версии 1 устранены и покрыты тестами)
|
||
|
||
### P2 — Should fix
|
||
- (нет блокирующих; прежний P2 про сквозную процедуру оператора частично закрыт:
|
||
env-карта новых настроек добавлена в INFRA.md, пошаговый approve→deploy описан в
|
||
deployer.md и DEPLOY_HOOK.md)
|
||
|
||
## Документация
|
||
|
||
Обновлена содержательно и в том же PR:
|
||
- `.openclaw/agents/deployer.md` — стадия `deploy` переписана: self-hosting путь
|
||
(Фазы A/B/C, явный запрет рестарта 8500 изнутри агента) vs прежний синхронный
|
||
ssh-путь для не-self репо;
|
||
- `docs/operations/INFRA.md` — env-карта всех новых `ORCH_SELF_DEPLOY_*` / `ORCH_DEPLOY_*`;
|
||
- `docs/operations/DEPLOY_HOOK.md` — `SOURCE_IMAGE` build-once + прод-пример;
|
||
- `docs/architecture/README.md` — раздел «Исполняемый самодеплой стадии `deploy`»;
|
||
- `CHANGELOG.md` — запись Added (фича) + запись Fixed (review-fix: clear_state + .env.example);
|
||
- ADR `docs/work-items/ORCH-036/06-adr/ADR-001-executable-self-deploy.md` + глобальный
|
||
`docs/architecture/adr/adr-0007-executable-self-deploy.md`;
|
||
- **`.env.example`** — канонический шаблон (CLAUDE.md №8, ТЗ §2.6) дополнен (был пробел в v1).
|
||
|
||
Документация = golden source: изменения `src/` сопровождены синхронным обновлением
|
||
доки в том же PR. Ось документации — PASS.
|