7.6 KiB
7.6 KiB
03 — Критерии приёмки (Acceptance Criteria)
Work Item: ORCH-066
Каждый критерий — чёткое условие PASS/FAIL. Покрытие тестами — см. 04-test-plan.yaml.
Группа A — Вход и стадия анализа
| ID | Критерий | PASS | FAIL |
|---|---|---|---|
| AC-1 | To Analyse запускает конвейер |
Перевод issue без task в To Analyse → handle_status_start → start_pipeline (создаётся task, ветка, enqueue analyst). |
Не запускается / запускается на другом статусе. |
| AC-2 | To Analyse делает resume аналитика из Needs Input |
Существующий task без active-job + перевод в To Analyse → relaunch агента текущей стадии (analyst читает свежие комменты). Fork «старт vs resume» определяется по get_task_by_plane_id + has_active_job_for_task (как раньше). |
Создаётся второй task / двойной запуск / resume не происходит. |
| AC-3 | Стадия analysis индицируется статусом Analysis |
При старте/relaunch аналитика орк ставит Analysis. |
Остаётся In Progress (при наличии статуса Analysis в проекте). |
| AC-4 | Busy-guard сохранён | To Analyse при существующем active-job для task → НЕ relaunch (no double launch). |
Двойной запуск агента. |
Группа B — Code-Review
| ID | Критерий | PASS | FAIL |
|---|---|---|---|
| AC-5 | Стадия review индицируется Code-Review |
Вход в стадию review → Plane-статус Code-Review. |
Остаётся Review (при наличии нового статуса). |
Группа C — Self-deploy фазы
| ID | Критерий | PASS | FAIL |
|---|---|---|---|
| AC-6 | Phase A → Awaiting Deploy |
_handle_self_deploy_phase_a ставит Awaiting Deploy (не In Review). |
Ставит In Review (при наличии нового статуса). |
| AC-7 | Phase B → Deploying |
_handle_self_deploy_phase_b при успешном initiate_deploy ставит Deploying. |
Статус не меняется / иной. |
| AC-8 | Phase C → Monitoring after Deploy (self) |
Финализатор SUCCESS для self-hosting → статус Monitoring after Deploy, НЕ Done сразу. |
Ставит Done немедленно (для self-hosting). |
| AC-9 | Не-self deploy → Done без регресса |
Для не-self репо (post_deploy_applies==False) терминальный deploy → done ставит Done как сейчас. |
Не-self репо получает Monitoring after Deploy / иной регресс. |
Группа D — Post-deploy monitor
| ID | Критерий | PASS | FAIL |
|---|---|---|---|
| AC-10 | Чистое окно → Done |
run_post_deploy_monitor HEALTHY + окно исчерпано → статус Done. |
Остаётся Monitoring after Deploy / иной. |
| AC-11 | Деградация → Blocked |
run_post_deploy_monitor DEGRADED → статус Blocked (+ существующий ALERT_ONLY для self). |
Остаётся в Monitoring / ставит Done. |
| AC-12 | Self-hosting монитор не рестартит прод | Тик НИКОГДА не рестартит/откатывает прод-контейнер (ORCH-021 BR-5 сохранён). | Тик трогает прод-контейнер. |
Группа E — In Review / Needs Input / ветки
| ID | Критерий | PASS | FAIL |
|---|---|---|---|
| AC-13 | In Review только за approve-pending конвейера |
In Review ставится лишь для approve артефактов (analyst BRD/ревью), не для Phase A. |
Phase A / иные стадии ставят In Review. |
| AC-14 | Needs Input без изменений |
Поведение set_issue_needs_input (analyst 01-questions.md) идентично прежнему; не расширено на других агентов. |
Механизм изменён / расширен. |
| AC-15 | Cancelled — валидный выход из In Review без действий конвейера |
Перевод в Cancelled → орк не выполняет advance/rollback (индикация, не управление). |
Орк совершает действие конвейера на Cancelled. |
Группа F — Fail-closed (КРИТИЧНО)
| ID | Критерий | PASS | FAIL |
|---|---|---|---|
| AC-16 | Отсутствие нового статуса не ломает конвейер | Проект без новых статусов (enduro/частичный/Plane down) → get_project_states отдаёт default-алиасы; все set_issue_*/триггеры работают backward-compatible, без исключений и без 404 PATCH. |
Падение / необработанное исключение / зависание задачи. |
| AC-17 | enduro In Progress по-прежнему стартует конвейер |
Через to_analyse-алиас (= in_progress UUID) перевод enduro-issue в In Progress запускает старт/resume. |
enduro-старт сломан. |
| AC-18 | Резолв по имени | При наличии статуса в проекте по name (_PLANE_NAME_TO_KEY) используется его UUID, а не default-алиас. |
Используется неверный UUID. |
Группа G — Reconciler
| ID | Критерий | PASS | FAIL |
|---|---|---|---|
| AC-19 | F-2 реконсилирует To Analyse |
_reconcile_plane_project запрашивает to_analyse и маршрутизирует к handle_status_start (старт/resume при потерянном webhook). |
To Analyse-старты не реконсилируются. |
| AC-20 | Guard 2 skip активных ожиданий | Задачи в Awaiting Deploy / Deploying / Monitoring after Deploy НЕ «оживляются» F-1 как зависшие. |
Реконсилер advance'ит активное ожидание. |
Группа H — Инварианты и документация
| ID | Критерий | PASS | FAIL |
|---|---|---|---|
| AC-21 | STAGE_TRANSITIONS не изменён |
src/stages.py STAGE_TRANSITIONS идентичен (diff пуст). |
Любое изменение слоя A. |
| AC-22 | Реестры/контракты не изменены | QG_CHECKS, check_deploy_status, exit-коды хука, merge-gate, схема БД, Confirm Deploy — без изменений. |
Любое изменение перечисленного. |
| AC-23 | Тесты зелёные | pytest tests/ -q проходит полностью; новые fail-closed тесты присутствуют и зелёные. |
Любой красный тест. |
| AC-24 | Документация обновлена (golden source) | CLAUDE.md, docs/architecture/README.md, CHANGELOG.md обновлены; заведён 06-adr/ADR-001-*. |
Любой из артефактов не обновлён. |