# 03 — Критерии приёмки: ORCH-061 Work Item: **ORCH-061** · Тип: **BUG** · Приоритет: **P0** Формат: каждый критерий имеет чёткое условие **PASS/FAIL**. Критерии outcome-ориентированы (не предписывают механизм); реализация может удовлетворить FR-2 направлением (а), (б) или обоими. --- ## AC-1 — Автономный проход self-deploy без петли (главный критерий) - **PASS:** для self-hosting `orchestrator` задача в состоянии `deploy-staging` при здоровом стенде и корректном pipeline продвигается `deploy-staging → deploy` (далее по штатному approve → `done`) **без** отката на `development` и **без** ручного вмешательства в шаги staging/merge/retag/deploy. - **FAIL:** наблюдается хотя бы один автоматический откат `deploy-staging → development` при отсутствии реального регресса, либо для прохода требуется ручной шаг. ## AC-2 — Ложный инфраструктурный FAIL не откатывает - **PASS:** прогон, где **единственные** падения — заведомо sandbox-инфраструктурные (C9a branch-not-found / C9b analyst-job-not-in-queue при ненастроенных bot-токенах SANDBOX), а все реальные pipeline-проверки зелёные, приводит к `staging_status: SUCCESS` (или эквивалентному «не-FAILED») → **нет** отката. - **FAIL:** такой прогон даёт `staging_status: FAILED` → откат `deploy-staging → development`. ## AC-3 — Реальный провал staging по-прежнему откатывает (страховка цела) - **PASS:** прогон с провалом **реальной** pipeline-проверки (не инфра-исключение) даёт `staging_status: FAILED` → откат `deploy-staging → development` + `set_issue_blocked`/нотификации (как сейчас, ORCH-35). - **FAIL:** реальный провал staging проходит как успех / задача доходит до `deploy`. ## AC-4 — «no changes to commit» на action-стадии не есть недовыполнение - **PASS:** на стадиях `deploy-staging`/`deploy` для self-deploy отсутствие git-изменений не вызывает откат/блокировку; продвижение определяется успешным exit + health/staging-вердиктом. - **FAIL:** отсутствие коммита на стадии деплоя приводит к откату/недопродвижению. ## AC-5 — Реальный провал прод-деплоя по-прежнему откатывает (БАГ-8 цел) - **PASS:** `deploy_status: FAILED` (exit-code хука ≠ 0) → откат `deploy → development` + `set_issue_blocked` + release merge-lease + clear deploy-state (как сейчас). - **FAIL:** провал прод-деплоя проходит как `done`. ## AC-6 — Условность self-hosting сохранена - **PASS:** для не-self-hosting репо (`is_self_hosting_repo == False`) `check_staging_status` остаётся `(True, "Staging gate N/A …")`, стадия деплоя работает как прежде; поведение этих репо байт-в-байт не изменилось. - **FAIL:** изменилось поведение для не-self-hosting репозиториев. ## AC-7 — Kill-switch возвращает прежнее поведение - **PASS:** при выключенном флаге нового поведения (FR-6) система ведёт себя 1:1 как до ORCH-061 (включая прежний откат на инфра-FAIL, если флаг выключен). - **FAIL:** новое поведение невозможно отключить / выключение не восстанавливает старое. ## AC-8 — Контракты не сломаны - **PASS:** `STAGE_TRANSITIONS`, реестр `QG_CHECKS`, frontmatter-контракты `staging_status:`/`deploy_status:` (только YAML, `SUCCESS|FAILED`), exit-code хука (0/1/2) и `map_exit_code_to_status` — без регресса; снапшот-тест реестра гейтов зелёный. - **FAIL:** изменены контракты стадий/гейтов/вердиктов или сломан снапшот реестра. ## AC-9 — Схема БД не меняется - **PASS:** нет миграций; `events`/`tasks`/`agent_runs`/`jobs` без изменений схемы. - **FAIL:** добавлена/изменена колонка/таблица. ## AC-10 — never-raise - **PASS:** новая логика в пути `advance_stage`/staging-вердикта при любой внутренней ошибке (docker/ssh/io/парсинг) даёт безопасный детерминированный вердикт и не пробрасывает исключение в `advance_stage`. - **FAIL:** исключение из новой логики всплывает в `advance_stage`/останавливает конвейер. ## AC-11 — Наблюдаемость - **PASS:** срабатывание нового поведения (игнор инфра-FAIL / ожидаемые no-changes) даёт явную лог-строку (и при необходимости коммент/Telegram), позволяющую отличить «честно зелёный» от «зелёного с допущением». - **FAIL:** новое поведение срабатывает молча, неотличимо от честного зелёного. ## AC-12 — Безопасность self-hosting - **PASS:** реализация не перезапускает/не роняет прод-контейнер 8500 в рамках задачи; любые сборки/recreate — только staging (8501). - **FAIL:** код пути задачи рестартит/собирает прод 8500. ## AC-13 — Документация обновлена (golden source) - **PASS:** в том же PR обновлены `docs/architecture/README.md`, `docs/operations/STAGING_CHECK.md` (поведение C9a/C9b и/или sandbox-настройка), `CHANGELOG.md`, и (при смене контракта) `.openclaw/agents/deployer.md`; заведён ADR `docs/work-items/ORCH-061/06-adr/ADR-001-*.md`. - **FAIL:** функционал изменён без обновления документации/ADR. ## AC-14 — Регрессионные тесты зелёные - **PASS:** `pytest tests/ -q` проходит полностью; новые тесты из `04-test-plan.yaml` присутствуют и зелёные; существующие staging/deploy/qg/stage_engine тесты не упали. - **FAIL:** любой тест из плана отсутствует или красный.