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

6.8 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-091 analysis analyst ready-for-review 2026-06-09 claude-opus-4-8

03 — Критерии приёмки (Acceptance Criteria): ORCH-091 — Карточка трекера: статусы, откаты, метрики

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

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


AC-1 — Полнота карты статусов по STAGE_TRANSITIONS (Деф.1 / BR-1)

Условие: для КАЖДОГО ключа src/stages.py::STAGE_TRANSITIONS plane_status_label возвращает непустой осмысленный лейбл.

  • PASS: параметризованный тест итерирует по всем ключам STAGE_TRANSITIONS и для каждого (кроме реального created) получает непустой лейбл ≠ _DEFAULT_STATUS_LABEL-«To Analyse». Полнота карты выведена программно из STAGE_TRANSITIONS, а не статичным списком в тесте.
  • FAIL: хотя бы одна стадия из STAGE_TRANSITIONS отдаёт «To Analyse» (кроме created); либо полнота проверяется захардкоженным списком, не связанным с STAGE_TRANSITIONS.

AC-2 — Staging-лейбл для deploy-staging (Деф.1 / BR-2)

Условие: stage='deploy-staging' даёт осмысленный staging-лейбл.

  • PASS: plane_status_label для строки со stage='deploy-staging' возвращает осмысленный staging-лейбл (напр. «Deploying (staging)» / « Staging»), отличный от «To Analyse» и от лейбла стадии deploy (⏸️ Awaiting Deploy …).
  • FAIL: возвращает «To Analyse», пустую строку, либо лейбл, неотличимый от deploy.

AC-3 — Нейтральный фолбэк для неизвестной стадии (Деф.1 / BR-3)

Условие: истинно неизвестная/битая стадия → нейтральный фолбэк, never-raise.

  • PASS: для строки с заведомо несуществующим stage (напр. "__bogus__") plane_status_label возвращает нейтральный лейбл (НЕ «To Analyse») и не бросает исключение; для битого входа (None/нет ключа stage) тоже не падает.
  • FAIL: неизвестная стадия даёт «To Analyse»; либо функция бросает исключение на битом/неизвестном входе.

AC-4 — Отражение отката в строках стадий (Деф.2 / BR-4)

Условие: после rollback deploy-staging → development карточка показывает фактическую позицию.

  • PASS: для задачи с завершёнными прогонами reviewer/tester/deployer, но текущим stage='development', render_task_tracker рисует Разработку как активную (🔄), а Тестирование и Внедрение — НЕ как ✅ пройдено. Стадии до development (Анализ, Архитектура) остаются .
  • FAIL: карточка одновременно показывает ✅ Внедрение/Тестирование/Код-ревью и 🔄 Разработка (картина «Внедрение готово , но идёт Разработка»).

AC-5 — Суммирование метрик стадии по попыткам (Деф.3 / BR-5)

Условие: стадия с N попытками показывает СУММУ метрик по всем N agent_runs.

  • PASS: для стадии с N>1 agent_runs строка стадии показывает Σ времени, Σ токенов (input+output+cache_read+cache_creation) и Σ стоимости по всем N прогонам. На фикстуре по образцу ORCH-069 (developer: 3 прогона, суммарно ≈ $3.98) строка «Разработка» отражает ≈ $3.98, а не стоимость последнего прогона. Тоталы задачи (💰/🔢/⏱ Агенты) сходятся с SUM(agent_runs) по task_id (по стоимости, токенам, длительностям).
  • FAIL: строка стадии показывает метрики только последнего прогона (занижение); либо тоталы задачи не сходятся с SUM(agent_runs).

AC-6 — Регресс существующих меток (NFR-2)

Условие: существующие индикаторы карточки не изменены.

  • PASS: In Review (brd-clock, _IN_REVIEW_LABEL), Awaiting Deploy (deploy), Done, live-overlay ветки (Needs Input / Blocked / Rejected / Cancelled / Confirm Deploy / Deploying / Monitoring), строка Подтверждение BRD, формат строк стадий/тоталов и эффорт-суффикс — рендерятся как прежде; существующие тесты карточки зелёные.
  • FAIL: изменён текст/формат любой из перечисленных меток; падает существующий тест карточки.

AC-7 — Тесты и документация (G/AC-7)

Условие: добавлены тесты и обновлена документация.

  • PASS: pytest tests/ -q зелёный; добавлены тесты на полноту карты стадий (AC-1/2/3), суммирование метрик (AC-5), отражение отката (AC-4); CHANGELOG.md содержит запись ORCH-091; render_task_tracker/plane_status_label остаются never-raise.
  • FAIL: регресс pytest tests/ -q; отсутствует любой из обязательных новых тестов; не обновлён CHANGELOG.md.

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

AC Покрывает
AC-1 BR-1 / FR-1
AC-2 BR-2 / FR-2
AC-3 BR-3 / FR-3
AC-4 BR-4 / FR-4
AC-5 BR-5 / FR-5
AC-6 NFR-2 (регресс)
AC-7 NFR-1 + цель G/AC-7 (тесты, доки, never-raise)