91 lines
7.3 KiB
Markdown
91 lines
7.3 KiB
Markdown
# 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:** любой тест из плана отсутствует или красный.
|