7.6 KiB
7.6 KiB
Критерии приёмки — ORCH-021
Work Item: ORCH-021
Формат: каждый критерий имеет чёткое условие PASS/FAIL и проверяется тестом
из 04-test-plan.yaml.
Наблюдение и сигналы
AC-1 — наблюдение армится после deploy→done
- PASS: для применимого репозитория после терминального перехода
deploy → doneпост-деплой наблюдение инициируется (создаётся sentinel/отложенный job/запись в watcher). - FAIL: переход
deploy → doneне приводит к старту наблюдения.
AC-2 — наблюдение НЕ армится для неприменимых репо
- PASS: для репозитория вне области (не self-hosting и не в
post_deploy_repos)post_deploy_applies(repo)→ False; наблюдение не стартует; конвейер не меняется. - FAIL: наблюдение стартует для неприменимого репо.
AC-3 — классификация HEALTHY
- PASS: серия опросов без провалов (или провалов меньше
post_deploy_fail_thresholdи доля 5xx нижеpost_deploy_5xx_threshold) → вердиктHEALTHY. - FAIL: при здоровых сигналах возвращается
DEGRADED.
AC-4 — классификация DEGRADED по порогу провалов health
- PASS:
≥ post_deploy_fail_thresholdПОСЛЕДОВАТЕЛЬНЫХ провалов health →DEGRADED. - FAIL: порог достигнут, но вердикт не
DEGRADED.
AC-5 — классификация DEGRADED по доле 5xx
- PASS: доля 5xx на окне выше
post_deploy_5xx_threshold→DEGRADED, даже если/healthотвечает 200. - FAIL: превышение порога 5xx не даёт
DEGRADED.
AC-6 — устойчивость к разовому глюку (нет ложного срабатывания)
- PASS: одиночный провал (1 <
post_deploy_fail_threshold) с последующим восстановлением → итогHEALTHY, реакции нет. - FAIL: одиночный разовый провал приводит к
DEGRADED/откату.
Реакция
AC-7 — авто-rollback для не-self репо при политике auto
- PASS: при
post_deploy_auto_rollback=Trueи НЕ-self репо вердиктDEGRADEDприводит к вызову отката (хук--rollbackс прод-параметрами);action_takenфиксируется какROLLBACK_OK/ROLLBACK_FAILEDпо exit-code. - FAIL: откат не вызывается, либо вызывается с staging-дефолтами, либо роняет прод напрямую.
AC-8 — self-hosting НЕ откатывается автоматически (safety)
- PASS: для
orchestratorвердиктDEGRADEDНЕ приводит к автоматическому откату/рестарту прод-контейнера в тике наблюдения; вместо этого формируется громкий алерт + запрос ручного approve (action_taken: ALERT_ONLY). - FAIL: тик наблюдения автоматически откатывает/рестартит прод-орк.
AC-9 — откат-провал эскалируется
- PASS: если откат вызван и вернул код 1/2 (нет prev-образа / откат тоже упал) →
action_taken: ROLLBACK_FAILED+ громкий Telegram-алерт о необходимости ручного вмешательства. - FAIL: провал отката проглатывается тихо.
Конфигурация и совместимость
AC-10 — kill-switch выключает фичу
- PASS:
post_deploy_monitor_enabled=False→ наблюдение не армится ни для кого; поведение конвейера 1:1 как до ORCH-021. - FAIL: при выключенном флаге наблюдение всё равно работает.
AC-11 — пороги/окно конфигурируемы через env
- PASS:
post_deploy_window_s,post_deploy_interval_s,post_deploy_fail_threshold,post_deploy_5xx_thresholdчитаются изSettings(envORCH_*) и влияют на поведение. - FAIL: значения захардкожены.
AC-12 — реестры и схема БД не изменены
- PASS:
STAGE_TRANSITIONS,QG_CHECKS, контрактcheck_deploy_statusи схема таблиц БД не изменены (если архитектор не вводит явно новую стадию — тогда это отражено в ADR и тестах). Существующие тесты deploy/staging/merge-gate зелёные. - FAIL: молча сломан какой-либо существующий контракт/тест.
Наблюдаемость, артефакт, идемпотентность
AC-13 — артефакт 16-post-deploy-log.md с машиночитаемым frontmatter
- PASS: по итогу наблюдения пишется
16-post-deploy-log.mdс валидным YAML-frontmatter (post_deploy_status,action_taken); запись best-effort (её отсутствие ничего не роняет). - FAIL: артефакт не пишется или frontmatter невалиден/непарсится.
AC-14 — наблюдаемость в /queue
- PASS:
GET /queueсодержит блокpost_deployсо снимком состояния (enabled, window, активные/последний исход). - FAIL: состояние наблюдения нигде не видно.
AC-15 — идемпотентность / restart-safe
- PASS: повторный арм для той же задачи (двойной webhook / рестарт оркестратора) не создаёт второе параллельное наблюдение и не теряет уже идущее.
- FAIL: дублируется наблюдение или теряется при рестарте.
AC-16 — never-raise
- PASS: любая ошибка опроса/сети/файлов/классификации логируется и НЕ роняет worker / lifespan / конвейер других проектов.
- FAIL: исключение из наблюдения всплывает и ломает обслуживание других проектов.
AC-17 — уведомления
- PASS: ключевые события (наблюдение начато, DEGRADED, откат/алерт, чистое завершение окна) уведомляются в Telegram и/или Plane-комментарием.
- FAIL: деградация/откат происходят молча.
AC-18 — документация обновлена (golden-source)
- PASS: в том же PR обновлены
CLAUDE.md(артефакт16-post-deploy-log.md),docs/architecture/README.md(описание пост-деплой наблюдения),CHANGELOG.md, и заведён ADR work-item. - FAIL: функционал есть, документация не обновлена (reviewer → REQUEST_CHANGES).