diff --git a/docs/work-items/ORCH-071/12-review.md b/docs/work-items/ORCH-071/12-review.md new file mode 100644 index 0000000..654e505 --- /dev/null +++ b/docs/work-items/ORCH-071/12-review.md @@ -0,0 +1,53 @@ +--- +type: review +work_item_id: ORCH-071 +verdict: REQUEST_CHANGES +version: 1 +--- + +# Review ORCH-071 + +## Summary +Фикс «фантомного merge» реализован архитектурно корректно и полно: детерминированный +merge-актор + пост-деплой верификация как под-гейт ребра `deploy → done`, врезка +`_handle_merge_verify` в единственную точку перехода `advance_stage` (гейтит все пути — +finalizer Phase C, reconciler F-1, job-reaper), merge выполняется в restart-surviving +Phase C (G3), kill-switch и условность раската по образцу ORCH-35/43/58. Все FR-1..FR-5 и +AC-1..AC-11 покрыты содержательными тестами; `pytest tests/ -q` зелёный (853 passed). +Код соответствует ADR-001 (D1–D9) и глобальному adr-0013, never-raise контракты соблюдены, +INV-4 (только PR-merge API, без push/force-push) выдержан. + +**Единственный блокер — документация:** `CHANGELOG.md` НЕ обновлён, хотя задача меняет +`src/`. По CLAUDE.md §6 и AC-5 это обязательно → REQUEST_CHANGES. + +## Findings + +### P0 — Blocker +- [ ] **`CHANGELOG.md` не обновлён при изменении `src/`.** Изменены `src/config.py`, + `src/main.py`, `src/merge_gate.py`, `src/self_deploy.py`, `src/stage_engine.py`, но в + `CHANGELOG.md` нет ни одной записи про ORCH-071 (`grep -c "ORCH-071" CHANGELOG.md` → 0, + `git diff main...HEAD -- CHANGELOG.md` пуст). Это прямое нарушение CLAUDE.md §2/§6 + («Документация = golden source… обнови `CHANGELOG.md`») и AC-5 (PASS требует обновлённый + CHANGELOG; FAIL → reviewer REQUEST_CHANGES). **Требуется:** добавить запись в раздел + `## [Unreleased] → ### Added/Fixed` по образцу соседних задач (ORCH-022 и т.п.), + описывающую merge-verify под-гейт, merge-актор, пост-деплой верификацию и kill-switch. + +### P1 — Must fix +- (нет) + +### P2 — Should fix +- (нет; `.openclaw/agents/deployer.md` про self-hosting не уточнён, но TRZ §1 помечает это + как «возможное» изменение, а non-self путь по ADR не меняется — не блокер.) + +## Документация +- `docs/architecture/README.md` — ✅ обновлён: добавлен раздел «Merge-в-main + пост-деплой + верификация как условие `done` (ORCH-071)», точно описывает врезку, Phase C, merge-актор, + верификатор, условность и инварианты. +- `docs/architecture/adr/adr-0013-merge-verify-gate.md` — ✅ создан (global ADR), корректен. +- `docs/work-items/ORCH-071/06-adr/ADR-001-merge-verify-gate.md` — ✅ детальный ADR (D1–D9). +- `docs/operations/PHANTOM_MERGE_RUNBOOK.md` — ✅ создан, 4 проверки постмортема с + copy-paste командами + критерий «фантом подтверждён» + remediation (FR-4/D9). +- **`CHANGELOG.md` — ❌ НЕ обновлён.** ← блокер (P0 выше). + +После добавления записи в `CHANGELOG.md` (и при сохранении зелёного pytest) задача готова к +повторному ревью и APPROVED.