5.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-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.