7.3 KiB
result, work_item, stage, author_agent, status, created_at, model_used, type, work_item_id
| result | work_item | stage | author_agent | status | created_at | model_used | type | work_item_id |
|---|---|---|---|---|---|---|---|---|
| PASS | ORCH-019 | testing | tester | pass | 2026-06-10 | claude-opus-4-8 | test-report | ORCH-019 |
Test Report — ORCH-019 — Багфикс-трек (упрощённый/дешёвый маршрут для багов)
Окружение
- Python: 3.12.13
- pytest: 8.3.3 (plugins: cov-5.0.0, anyio-4.13.0, asyncio-0.23.8)
- Worktree:
/repos/_wt/orchestrator/feature_ORCH-019-(веткаfeature/ORCH-019-) - Дата: 2026-06-10T00:53:34Z
- Предусловие: review
12-review.md=verdict: APPROVED✓
Smoke API (read-only)
| Endpoint | Результат | Примечание |
|---|---|---|
GET /health |
PASS | {"status":"ok","service":"orchestrator"} |
GET /status |
PASS | отвечает; ORCH-019 (task 84) виден на стадии testing |
GET /queue |
PASS | блок serial_gate присутствует (ORCH-088) ✓; auto_labels присутствует ✓ |
Прод-контейнер (8500) исполняет код до ORCH-019 (фича ещё не задеплоена), поэтому блока
bug_fast_trackв живом/queueожидаемо нет — это не регресс смока. Обязательные для смока блокиserial_gateиauto_labelsприсутствуют. Новый блокbug_fast_trackверифицирован юнит/интеграционными тестамиtest_queue_endpoint.py(TC-13) на коде ветки. Smoke — read-only, прод-контейнер не трогался.
Результаты — покрытие TC из 04-test-plan.yaml
| TC ID | Описание (кратко) | Тип | Тесты | AC | Результат |
|---|---|---|---|---|---|
| TC-01 | is_bug_task() True для метки Bug; источник — Plane API, не payload |
unit | test_tc01_is_bug_task_true, test_tc01_label_from_plane_api_not_payload |
AC-1 | PASS |
| TC-02 | is_bug_task() False при отсутствии/неоднозначной метке/labels=None (fail-safe) |
unit | test_tc02_label_absent, test_tc02_labels_none, test_tc02_label_ambiguous, test_tc02_empty_label_config |
AC-1/AC-6 | PASS |
| TC-03 | bug_fast_track_applies(repo): локальная область ПЕРВОЙ; выключенный флаг → без сети |
unit | test_tc03_empty_csv_self_hosting_only, test_tc03_csv_membership, test_tc03_killswitch_off_no_network |
AC-6 | PASS |
| TC-04 | never-raise: исключение в fetch labels → деградация в False (полный цикл) | unit | test_tc04_is_bug_task_never_raises, test_tc04_applies_never_raises |
AC-6 | PASS |
| TC-05 | Маршрут: bug → next stage после analysis = development; не-баг = architecture |
unit | test_tc05_bug_task_skips_architecture, test_tc05_full_task_keeps_architecture, test_tc05_killswitch_off_bug_keeps_architecture, test_tc05_bug_only_affects_analysis_edge |
AC-2 | PASS |
| TC-06 | STAGE_TRANSITIONS структурно не изменён (анти-регресс) |
unit | test_tc06_stage_transitions_unchanged, test_tc06_get_next_stage_pure |
AC-2 | PASS |
| TC-07 | QG_CHECKS/сигнатуры check_*/вердикт-ключи не изменены (имя+регистр) |
unit | test_tc07_qg_checks_registry_unchanged, test_tc07_verdict_keys_preserved |
AC-3 | PASS |
| TC-08 | E2E багфикс-трек проходит development→…→deploy, минуя architecture, все гейты | integration | test_tc08_bug_task_full_walk_skips_architecture |
AC-2/AC-3 | PASS |
| TC-09 | start_pipeline: метка Bug → bug-track; без метки → full-track |
integration | test_tc09_bug_label_creates_bug_track, test_tc09_no_label_creates_full_track |
AC-1 | PASS |
| TC-10 | Fail-safe: enabled=False → метка Bug идёт полным циклом (нулевая регрессия) |
integration | test_tc10_killswitch_off_bug_label_full_cycle |
AC-6 | PASS |
| TC-11 | Эскалация: 'bug'→'full' → штатный маршрут с architecture |
integration | test_tc11_escalate_returns_to_full_cycle, test_tc11_escalate_unknown_work_item, test_tc11_escalate_missing_arg, test_tc11_escalate_idempotent_on_full |
AC-5 | PASS |
| TC-12 | check_analysis_* не блокирует ложно lite-пакет; не ослаблен для не-баг |
unit | test_tc12_bug_lite_package_with_all_four_passes, test_tc12_missing_file_still_fails_for_any_track, test_tc12_signature_has_no_track_param |
AC-3/FR-6 | PASS |
| TC-13 | GET /queue несёт read-only блок bug_fast_track; существующие ключи целы |
integration | test_queue_has_bug_fast_track_block_and_keeps_existing_keys, test_queue_bug_fast_track_counts_bug_tasks |
AC-7 | PASS |
| TC-14 | Композиция: bug-задача учтена serial-gate; autoApprove/autoDeploy применимы | integration | test_tc14_bug_task_counts_as_active_in_serial_gate, test_tc14_bug_task_itself_gated_behind_predecessor, test_tc14_bug_task_claimable_once_predecessor_done, test_tc14_auto_label_applies_track_agnostic |
AC-9 | PASS |
| TC-15 | Миграция tasks.track аддитивна/идемпотентна; дефолт 'full' |
unit | test_tc15_track_column_present_with_default, test_tc15_init_db_idempotent, test_tc15_helpers_round_trip, test_tc15_get_task_track_missing_row_failsafe |
AC-8 | PASS |
Итог покрытия: все 15 TC из 04-test-plan.yaml выполнены и сопоставлены с критериями
03-acceptance-criteria.md (AC-1…AC-9). Непокрытых/пропущенных TC нет.
Вывод pytest
Целевые suite ORCH-019 (6 файлов + queue/migrations)
$ pytest tests/test_bug_fast_track.py tests/test_bug_fast_track_routing.py \
tests/test_bug_fast_track_gates.py tests/test_bug_fast_track_e2e.py \
tests/test_bug_fast_track_escalation.py tests/test_bug_fast_track_composition.py \
tests/test_queue_endpoint.py tests/test_db_migrations.py -v
...
======================== 46 passed, 1 warning in 2.51s =========================
46/46 целевых тестов — PASS.
Полный регресс
$ pytest tests/ -q --tb=short
........................................................................ [100%]
1551 passed, 1 warning in 56.64s
1551/1551 — PASS, 0 failed. (Единственный warning — известный Pydantic V2 deprecation в
src/config.py:8, не относится к ORCH-019.)
Итог
PASS — полный регресс (1551 passed) и целевые suites ORCH-019 (46 passed) зелёные; smoke API
(/health//status//queue с блоками serial_gate+auto_labels) — OK; все 15 TC выполнены и
сопоставлены с AC-1…AC-9. Корневой инвариант NFR-1 (неизменность STAGE_TRANSITIONS/QG_CHECKS/
вердикт-ключей) подтверждён анти-регресс-тестами TC-06/TC-07. → стадия переходит на deploy-staging.