5.2 KiB
5.2 KiB
03 — Критерии приёмки: ORCH-082 (ORCH-81)
Каждый критерий — однозначное условие PASS/FAIL. Машинные вердикты гейтов — только из YAML-frontmatter.
AC-1 — Root cause задокументирован
- PASS: в
06-adr/ADR-001-*.mdзафиксировано, почему PR не создался на ORCH-074 (со ссылкой на код-путьlauncher._ensure_prи/или логи run_id 396/398), и какая из гипотез R-A/R-B/R-C подтвердилась. - FAIL: причина не названа / только догадка без привязки к коду или логам.
AC-2 — Гарантированный идемпотентный код-PR к merge-verify
- PASS: к моменту merge-verify у ветки гарантированно существует открытый PR с
head.ref==branchИbase.ref=="main"; повторный вызов авто-создания при уже существующем PR не плодит дубль (возвращает existed). - FAIL: при отсутствии PR задача сразу уходит в HOLD; ИЛИ повторный проход создаёт второй PR.
AC-3 — Авто-создание PR ПЕРЕД merge_pr (вместо немедленного HOLD)
- PASS: при физическом отсутствии открытого код-PR
_handle_merge_verifyсначала создаёт PR (ensure_open_pr → created), затем выполняетmerge_pr→verify_merged_to_main; ложного HOLD «no open PR» не возникает. - FAIL: «no open PR» по-прежнему приводит к HOLD без попытки создать PR (при включённом kill-switch).
AC-4 — Защита ORCH-073 цела (регресс)
- PASS: при реальном «код не в
main» (verify_merged_to_main → False) — по-прежнему HOLD + alert +set_issue_blocked, задача НЕdone, БЕЗ авто-отката на development. Регресс-гардcheck_main_regressionне ослаблен. - FAIL: создание PR маскирует невлитый код и пропускает задачу в
done; ИЛИ ослаблен SHA-в-main / регресс-гард.
AC-5 — Логи различают исход PR
- PASS: в логах присутствует ровно один однозначный исход на проход: PR-created / PR-existed / PR-create-failed; HOLD по «create-failed» текстуально отличим от HOLD «not merged».
- FAIL: исход не логируется или created/existed/failed неразличимы.
AC-6 — Грабли мультиPR: фильтр base==main
- PASS: при наличии у ветки авто-docs-PR (
base != main) актор НЕ принимает его за код-PR и создаёт/выбирает именно PR наmain. - FAIL: docs-PR трактуется как код-PR (слияние/верификация работают не с тем PR).
AC-7 — Never-raise + честный HOLD при недоступности Gitea
- PASS: при ошибке создания PR (Gitea недоступна/HTTP-ошибка)
ensure_open_prвозвращаетfailed, путь merge-verify даёт честный HOLD+alert, исключение НЕ всплывает вadvance_stage. - FAIL: исключение пробрасывается / процесс падает / задача молча уходит в
done.
AC-8 — Kill-switch off → прежнее поведение 1:1
- PASS: при
merge_verify_autocreate_pr_enabled=Falseавто-создание не выполняется; «no open PR» → HOLD как до фикса (поведение ORCH-074 воспроизводится). - FAIL: при выключенном флаге PR всё равно создаётся.
AC-9 — Условность (область self-hosting)
- PASS: для не-self репозиториев (
merge_verify_applies → False) врезка — no-op; создание PR остаётся за прежним механизмом. - FAIL: авто-создание срабатывает для чужих репо.
AC-10 — Инварианты не нарушены
- PASS:
STAGE_TRANSITIONS,QG_CHECKS, схема БД,check_deploy_status, exit-коды хука, merge-gate/image-freshness — без изменений;mainне push/force-push; документация (README.md,CHANGELOG.md) обновлена в этом же PR. - FAIL: затронут любой из перечисленных инвариантов / документация не обновлена.
AC-11 — pytest зелёный
- PASS:
pytest tests/ -qзелёный, включая новые тесты из04-test-plan.yamlи существующиеtest_merge_verify*.py/test_orch073_*/test_merge_actor.py. - FAIL: любой тест падает.