Files
orchestrator/docs/work-items/ORCH-098/13-test-report.md

5.3 KiB
Raw Blame History

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-098 testing tester pass 2026-06-10 claude-opus-4-8 test-report ORCH-098

Test Report — ORCH-098 — FND: машинный журнал уроков

Окружение

  • Python: 3.12.13
  • pytest: 8.3.3
  • Worktree: /repos/_wt/orchestrator/feature_ORCH-098-fnd (ветка feature/ORCH-098-fnd)
  • Дата: 2026-06-10
  • Review verdict (12-review.md): APPROVED

Результаты — покрытие тест-плана (04-test-plan.yaml)

Каждый TC из тест-плана сопоставлен с конкретным тестом tests/test_lessons.py и с критерием приёмки 03-acceptance-criteria.md.

TC ID Тип Описание (кратко) AC Тест Результат
TC-01 unit init_db() создаёт lessons идемпотентно, все поля BR-1 AC-1 test_tc01_table_idempotent_and_fields PASS
TC-02 unit Нуллабельные колонки атрибуции; запись без них + update позже AC-2 test_tc02_attribution_columns_nullable_and_settable PASS
TC-03 unit record() вставляет строку (auto/manual), возвращает id, стампит created_at AC-3/AC-5 test_tc03_record_inserts_and_returns_id PASS
TC-04 unit never-raise: падающая БД → None/[]/{} без исключения AC-6 test_tc04_never_raise_on_db_error PASS
TC-05 unit kill-switch lessons_enabled=False → record/get/update/snapshot инертны AC-7 test_tc05_kill_switch_inert PASS
TC-06 unit get_lessons фильтрует type/status/repo/work_item + limit, ORDER BY id DESC AC-4 test_tc06_filters_limit_order PASS
TC-07 unit update_lesson меняет status/attribution/target_*/related_task + updated_at; неизвестный id безопасен AC-5 test_tc07_update_and_unknown_id PASS
TC-08 integration Автозапись gate-fail: откат на development → строка type=gate_failure с контекстом AC-3 test_tc08_gate_failure_autorecord PASS
TC-09 integration Автозапись transient/HOLD; сбой записи не ломает горячий путь (never-raise) AC-3/AC-6 test_tc09_transient_autorecord_and_never_raise PASS
TC-10 integration GET /lessons → 200 + фильтры; GET /queue блок lessons; чтение не мутирует AC-4 test_tc10_get_endpoints PASS
TC-11 integration POST /lessons (manual+атрибуция), POST /lessons/{id} (update); flag=False → {enabled:false} AC-5/AC-7 test_tc11_post_endpoints_and_killswitch PASS
TC-12 unit Инварианты конвейера: STAGE_TRANSITIONS/QG_CHECKS/machine-verdict неизменны AC-8 test_tc12_pipeline_invariants_untouched PASS

Дополнительно (сверх тест-плана): test_tc07b_auto_dedup_and_manual_passthrough (дедуп source="auto" в окне lessons_dedup_window_s + manual-passthrough, ADR-001 D4) — PASS.

Покрытие: все 12 TC тест-плана выполнены и PASS; каждый сопоставлен с критерием приёмки AC-1…AC-8 (AC-9 — верификация тестов/доков, подтверждена зелёным регрессом и review APPROVED).

Smoke API (read-only)

  • GET /health{"status":"ok","service":"orchestrator"}
  • GET /status → 200, активные задачи отдаются (ORCH-098 task 86 на testing)
  • GET /queue → 200; блок serial_gate присутствует (ORCH-088) ; блок auto_labels присутствует ; блоки coverage/stop/bug_fast_track присутствуют
  • Прим.: эндпоинт GET /lessons и блок lessons в /queue на прод-контейнере (8500) отсутствуют ожидаемо — прод исполняет ещё не задеплоенный код; новая функциональность верифицирована в worktree (TC-10/TC-11 зелёные). Это не регресс смока: обязательный блок serial_gate на месте.

Вывод pytest

$ cd /repos/_wt/orchestrator/feature_ORCH-098-fnd && pytest tests/ -v --tb=short
...
================== 1564 passed, 1 warning in 62.81s (0:01:02) ==================

$ pytest tests/test_lessons.py -v
======================== 13 passed, 1 warning in 1.56s =========================

(1 warning — устаревший Pydantic class-based config в src/config.py, не относится к ORCH-098.)

Итог

PASS — полный регресс tests/ зелёный (1564 passed), все 12 TC тест-плана выполнены и сопоставлены с критериями приёмки, smoke read-only (/health, /status, /queue с обязательным блоком serial_gate) в порядке. Review-вердикт APPROVED. Задача готова к переходу на deploy-staging.