5.1 KiB
type, work_item_id, result
| type | work_item_id | result |
|---|---|---|
| test-report | ORCH-089 | PASS |
Test Report — ORCH-089
Авто-режим по лейблам: autoApprove (авто-BRD) + autoDeploy (авто-деплой).
Окружение
- Python: 3.12.13
- pytest: 8.3.3
- Branch: feature/ORCH-089-autoapprove-brd-autodeploy
- Дата: 2026-06-09
Предусловия
- Review verdict: APPROVED (
12-review.md, P0/P1 — нет). - Prod health (8500):
{"status":"ok"}— конвейер всех проектов жив, деструктивные операции не выполнялись.
Результаты (test-plan 04-test-plan.yaml)
Все 26 TC из плана покрыты 43 целевыми тестами (7 модулей). Сопоставление с критериями приёмки (03-acceptance-criteria.md):
| TC ID | Описание | AC | Результат |
|---|---|---|---|
| TC-01 | has_label=True когда лейбл присутствует | AC-1 | PASS |
| TC-02 | has_label=False когда лейбла нет | AC-4 | PASS |
| TC-03 | has_label при ошибке Plane/таймауте → fail-safe, never-raise | AC-6 | PASS |
| TC-04 | Нормализация имени лейбла; неоднозначность → нет авто | AC-6 | PASS |
| TC-05 | applies: scope CSV + self-hosting; пустой scope по дефолту | AC-8 | PASS |
| TC-06 | auto_label_enabled=False → нет авто без сетевых вызовов | AC-8 | PASS |
| TC-07 | fetch_issue_labels парсит labels + резолв uuid→имя | AC-1 | PASS |
| TC-08 | Карта лейблов проекта кэшируется с TTL | AC-8 | PASS |
| TC-09 | set_issue_approved PATCH в Approved-UUID; never-raise | AC-1 | PASS |
| TC-10 | autoApprove → авто-advance analysis→architecture, Approved, клок закрыт | AC-1 | PASS |
| TC-11 | Без лейбла autoApprove → In Review, return без advance | AC-4 | PASS |
| TC-12 | autoApprove без артефактов → НЕ advance | AC-5 | PASS |
| TC-13 | autoApprove через тот же advance-путь; идемпотентно | AC-1 | PASS |
| TC-14 | autoApprove: лог + Telegram/карточка + Plane-коммент | AC-7 | PASS |
| TC-15 | autoDeploy + Phase A → авто _handle_self_deploy_phase_b | AC-2 | PASS |
| TC-16 | Без лейбла autoDeploy → Awaiting Deploy, ждёт человека | AC-4 | PASS |
| TC-17 | autoDeploy идемпотентен: маркер INITIATED → no-op | AC-2 | PASS |
| TC-18 | autoDeploy не-self/вне scope → no-op | AC-8 | PASS |
| TC-19 | autoDeploy: лог + Telegram + Plane-коммент | AC-7 | PASS |
| TC-20 | Только autoApprove: BRD авто, деплой ждёт человека | AC-9 | PASS |
| TC-21 | Только autoDeploy: BRD ждёт человека, деплой авто | AC-9 | PASS |
| TC-22 | auto_label_enabled=False → оба гейта ручные | AC-8 | PASS |
| TC-23 | Оба лейбла + зелёные тех-гейты → analysis→deploy автономно | AC-3 | PASS |
| TC-24 | autoDeploy + красный staging/merge-gate → Phase B НЕ инициирован | AC-5 | PASS |
| TC-25 | Регресс: без лейблов оба гейта как до ORCH-089 | AC-4 | PASS |
| TC-26 | Инвариант: STAGE_TRANSITIONS и QG_CHECKS не изменены | AC-10 | PASS |
Smoke test API (prod 8500)
GET /health→{"status":"ok","service":"orchestrator"}— OKGET /status→ 200, активные задачи перечислены (ORCH-089 =testing) — OKGET /queue→ 200, блоки наблюдаемости присутствуют — OK
Примечание: блок
auto_labelsвGET /queueна 8500 пока отсутствует — это ожидаемо: прод-контейнер исполняет код до ORCH-089 (задача ещё вtesting, не задеплоена). Блок добавляется кодом ветки и покрыт юнит-тестами (snapshot/observability) выше.
Вывод pytest (полный регресс)
======================= 1157 passed, 1 warning in 37.99s =======================
Целевой набор ORCH-089 (7 модулей):
tests/test_labels.py ................ (14)
tests/test_plane_sync_labels.py ..... (11)
tests/test_auto_approve_brd.py ...... (5)
tests/test_auto_deploy.py ........... (5)
tests/test_auto_label_combinations.py (3)
tests/test_auto_labels_integration.py (3)
tests/test_auto_labels_invariants.py . (2)
======================== 43 passed, 1 warning in 1.09s =========================
Единственный warning — PydanticDeprecatedSince20 (class-based config в src/config.py),
не связан с ORCH-089, присутствует в baseline.
Итог
PASS — все 26 TC плана зелёные, полный регресс 1157/1157 пройден, smoke-тесты OK,
инварианты (STAGE_TRANSITIONS/QG_CHECKS, AC-10) подтверждены. Задача готова к deploy-staging.