Files
orchestrator/docs/work-items/ORCH-112/03-acceptance-criteria.md

7.4 KiB
Raw Blame History

work_item, stage, author_agent, status, created_at, model_used
work_item stage author_agent status created_at model_used
ORCH-112 analysis analyst ready-for-review 2026-06-15 claude-opus-4-8

03 — Критерии приёмки (Acceptance Criteria): ORCH-112 — failed/cancelled task artifacts must be cleaned from shared checkout

Work Item: ORCH-112 · Repo: orchestrator · Стадия: analysis

Формат: каждый критерий имеет PASS (что должно быть истинно для приёмки) и FAIL (что считается провалом). Reviewer/CI проверяют их буквально по файлам репозитория и тестам.


AC-1 — Грязная tracked-правка не блокирует self-deploy pull (регресс ORCH-104/ORCH-111)

Условие: shared deploy-база имеет локальную модификацию tracked-файла (напр. src/config.py), self-deploy выполняет шаг pull.

  • PASS: база приводится к чистому актуальному origin/main без ручного вмешательства; шаг pull не возвращает «local changes would be overwritten by merge»; деплой продолжается; есть тест, воспроизводящий точный сценарий ORCH-111 (красный до фикса, зелёный после).
  • FAIL: pull/деплой падает на грязной tracked-правке; или сценарий не покрыт тестом.

AC-2 — Untracked WIP-файлы не блокируют и не «протекают» в деплой

Условие: в shared-базе лежат untracked-файлы failed/брошенной задачи (напр. scripts/install_lite.py, tests/test_install_lite.py, docs/deployment/lite-install.example.yaml).

  • PASS: база сходится к чистому origin/main; untracked-остатки не блокируют операцию и не попадают в деплоимый/собираемый артефакт.
  • FAIL: untracked-остатки блокируют операцию либо остаются и клинят будущий деплой.

AC-3 — Сохранность deploy-rollback-состояния и sibling-артефактов (жёсткое ограничение)

Условие: в $REPO/рядом присутствуют .deploy-prev-image-* (rollback), deploy-hook.log, <repos_dir>/.deploy-state-*, .merge-lease-*.json, .git/worktrees/*.

  • PASS: после гигиены все перечисленные артефакты на месте; rollback по .deploy-prev-image-* остаётся работоспособным; есть тест, доказывающий их неудаление.
  • FAIL: гигиена удаляет хотя бы один из этих артефактов (особенно .deploy-prev-image-*).

AC-4 — Happy-path без регресса (чистая база)

Условие: shared-база чистая, self-deploy выполняет pull.

  • PASS: поведение и exit-коды (0/1/2, ORCH-036) — байт-в-байт прежние (обычный fast-forward); полный pytest tests/ -q зелёный.
  • FAIL: изменилось наблюдаемое поведение/exit-код на чистой базе, либо красный регресс.

AC-5 — Self-hosting safety

Условие: исполнение пути гигиены/деплоя.

  • PASS: нет операций над веткой main на remote, нет force-push, нет рестарта прод-контейнера вне штатного гейта, нет удаления worktree/веток других активных задач; операции строго в пределах настроенного пути deploy-базы; тест/анализ это подтверждает.
  • FAIL: любое из перечисленных нарушений присутствует или возможно.

AC-6 — Kill-switch и обратимость

Условие: новый флаг выключен.

  • PASS: деплой ведёт себя байт-в-байт как до ORCH-112 (голый git pull origin main); включение флага активирует устойчивое поведение; область скоупится на self-hosting (прочие репо не затронуты).
  • FAIL: выключенный флаг меняет поведение, либо нет kill-switch, либо затронуты прочие репо.

AC-7 — Сходимость после cancel/failed

Условие: задача отменена (STOP/ORCH-090) или job завершился failed, оставив остатки в рабочем дереве deploy-базы.

  • PASS: shared-база сходится к чистому origin/main (через автоочистку в деплое и/или дворник), и последующий self-deploy проходит без ручного вмешательства; покрыто интеграционным тестом.
  • FAIL: остатки сохраняются и блокируют последующий деплой/git-операцию.

AC-8 — Наблюдаемость

Условие: обнаружена грязная deploy-база.

  • PASS: факт обнаружения и автоочистки (или отказ) — в логах (структурно) и в Telegram-алерте (кликабельный номер); алерт best-effort, never-raise (его сбой не валит деплой).
  • FAIL: тихая очистка без следа в логах/уведомлениях, либо сбой алерта роняет деплой.

AC-9 — Инвариант конвейера и БД не тронуты

Условие: диф задачи.

  • PASS: STAGE_TRANSITIONS / реестр QG_CHECKS / семантика и имена check_* / machine-verdict ключи / схема БД / exit-code-контракт хука — байт-в-байт; структурные тесты конвейера зелёные.
  • FAIL: любой из перечисленных контрактов изменён.

AC-10 — Документация (golden source)

Условие: изменён функционал deploy-базы/гигиены.

  • PASS: обновлены docs/operations/INFRA.md (инвариант deploy-база ≠ workspace) и docs/architecture/README.md; CHANGELOG.md/CLAUDE.md отражают изменение; ADR заведён на стадии architecture (после эскалации escalate: full-cycle).
  • FAIL: функционал изменён, доки/ADR не обновлены (reviewer → finding ≥P1, CLAUDE.md §6).

Сводная матрица AC ↔ FR/BR

AC Покрывает
AC-1 BR-1 / FR-1
AC-2 BR-1, BR-2 / FR-1, FR-2
AC-3 NFR-2 / FR-1 (ограничение)
AC-4 BR-5 / FR-1
AC-5 NFR-1 / FR-1, FR-2
AC-6 NFR-3, NFR-6 / FR-5
AC-7 BR-2 / FR-2
AC-8 BR-4 / FR-4
AC-9 NFR-5 / FR-1…FR-5
AC-10 BR-3 / FR-3