From 62c1fe3461551009f486e0538dcf349504dd8482 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Sun, 7 Jun 2026 21:57:56 +0000 Subject: [PATCH] reviewer(ET): auto-commit from reviewer run_id=342 --- docs/work-items/ORCH-066/12-review.md | 89 +++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 docs/work-items/ORCH-066/12-review.md diff --git a/docs/work-items/ORCH-066/12-review.md b/docs/work-items/ORCH-066/12-review.md new file mode 100644 index 0000000..92186ec --- /dev/null +++ b/docs/work-items/ORCH-066/12-review.md @@ -0,0 +1,89 @@ +--- +type: review +work_item_id: ORCH-066 +verdict: APPROVED +version: 1 +--- + +# Review ORCH-066 + +## Summary +Осмысленная статусная модель Plane (слой B — индикация). Реализация затрагивает +строго слой B (`src/plane_sync.py`, точки простановки в `src/stage_engine.py` / +`src/webhooks/plane.py` / `src/reconciler.py`) и **не трогает слой A** +(`src/stages.py::STAGE_TRANSITIONS` — diff пуст). Все 4 оси проверки (ТЗ, ADR, +качество кода, тесты) и проверка документации — пройдены. `pytest tests/ -q`: +**774 passed**. Вердикт — **APPROVED**. + +## Соответствие ТЗ (02-trz.md) +- §2.1 — 6 новых логических ключей в `_PLANE_NAME_TO_KEY` + `_DEFAULT_STATES`. ✔ +- §2.2 — fail-closed резолюция (BR-12). ✔ (реализована усиленная project-relative + версия — см. ADR ниже). +- §2.3 — `_STAGE_TO_STATE_KEY` (analysis→analysis, review→code_review), + `STAGE_VISIBILITY_STATE`, legacy `STAGE_TO_STATE` (UUID байт-в-байт прежние). ✔ +- §2.4 — точки простановки разведены (handle_issue_updated триггер `to_analyse`, + start_pipeline/resume → Analysis, Phase A → Awaiting Deploy, Phase B → Deploying, + terminal-sync split, post-deploy HEALTHY→Done / DEGRADED→Blocked, + rollback@analysis → Analysis). ✔ +- §2.5 — 5 новых never-raise хелперов `set_issue_*`. ✔ +- §3 — reconciler F-2 триггер `to_analyse` (+ resume-ветка), Guard 2 skip-set с + вычитанием base_working. ✔ +- §4/§5/§6 — нет новых эндпоинтов, нет миграций БД, `QG_CHECKS` не расширен. ✔ + +## Соответствие ADR (06-adr/ADR-001) +- §2.2 project-relative alias-fallback (`_STATE_ALIAS_FALLBACK`, применён ДО + `_DEFAULT_STATES.setdefault`) — реализован точно по контракту, деградация на + собственный базовый UUID проекта, PATCH остаётся валидным на частичной + конфигурации. ✔ +- §2.5 terminal-sync split по `post_deploy.post_deploy_applies(repo)` — реализован + как в ADR (self → Monitoring, не-self → Done). ✔ +- §2.6 Guard 2 анти-регресс (extra_waits − base_working − {None}) — реализован + дословно, enduro-алиасы схлопываются → нулевой регресс. ✔ +- §2.7 без kill-switch — config.py не изменён (diff пуст). ✔ + +## Качество кода +- Все новые `set_issue_*` следуют образцу `set_issue_in_review` (per-project резолв + + `_set_issue_state_direct`), контракт never-raise сохранён, есть docstrings. ✔ +- Post-deploy/terminal-sync простановки обёрнуты в try/except с warning-логом + (never break the tick). ✔ +- Переменные в scope корректны (`work_item_id` определён до всех новых вызовов в + `start_pipeline`/`handle_status_start`/stage_engine). ✔ +- AC-12 соблюдён: `set_issue_blocked` в DEGRADED-ветке — только индикация, тик + прод-контейнер не трогает. ✔ + +## Качество тестов +- Содержательные, не тривиальные: `test_plane_status_failclosed.py` + (TC-16/17/18 — partial project, API down, never-raise сеттеров, enduro alias + старт), `test_plane_to_analyse_resume.py`, `test_plane_status_model.py`, + `test_deploy_terminal_sync.py` (self/не-self split), `test_post_deploy_integration.py`, + `test_reconciler*.py` (F-2 to_analyse + Guard 2). ✔ + +## Инварианты (AC-21/AC-22) +- `src/stages.py` — diff 0 строк (STAGE_TRANSITIONS байт-в-байт). ✔ +- `src/qg/checks.py` — diff 0 строк (QG_CHECKS, check_deploy_status). ✔ +- `src/config.py` — diff 0 строк. ✔ +- Схема БД — без миграций. ✔ + +## Findings + +### P0 — Blocker +- нет + +### P1 — Must fix +- нет + +### P2 — Should fix +- нет + +## Документация +Обновлена в том же PR (golden source соблюдён): +- `CLAUDE.md` — добавлена секция «Статусная модель Plane (ORCH-066)». ✔ +- `docs/architecture/README.md` — секция «Осмысленная статусная модель Plane + (ORCH-066)» + обновлён статусный footer. ✔ +- `CHANGELOG.md` — подробная запись в [Unreleased]/Added. ✔ +- `06-adr/ADR-001-plane-status-model.md` — заведён. ✔ +- `07-infra-requirements.md` — присутствует (инфра-предусловие: 6 Plane-статусов + создаёт оператор). ✔ + +Изменения `src/` полностью отражены в документации → требование +«документация обновлена при изменении src/» выполнено.