6.8 KiB
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) |