7.4 KiB
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 |