---
work_item: ORCH-091
stage: analysis
author_agent: analyst
status: ready-for-review
created_at: 2026-06-09
model_used: 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) |
