--- type: test-report work_item_id: ORCH-067 result: PASS --- # Test Report — ORCH-067 Telegram tracker: bump по умолчанию, статус-строка карточки по модели Plane (ORCH-066), кликабельный номер задачи в карточке и во всех уведомлениях орка. ## Окружение - Python: 3.12.13 - pytest: 8.3.3 - Ветка: `feature/ORCH-067-telegram-tracker-bump-plane` (worktree) - Дата: 2026-06-08 - Review-вердикт: APPROVED (`12-review.md`, version 2) ## Smoke test API (prod, :8500) | Endpoint | Результат | |----------|-----------| | `GET /health` | PASS — `{"status":"ok","service":"orchestrator"}` | | `GET /status` | PASS — отдаёт active_tasks (ORCH-067 на stage=testing) | | `GET /queue` | PASS — breaker closed, preflight_ok, counts корректны | Прод-контейнер не перезапускался (self-hosting инвариант соблюдён). ## Результаты по тест-плану (04-test-plan.yaml) | TC ID | Описание | Модуль | AC | Результат | |-------|----------|--------|----|-----------| | TC-01 | Дефолт `tracker_mode == "bump"` без env | test_tracker_bump_default.py | AC-1 | PASS | | TC-02 | bump: delete(old)→send(silent)→repoint, одна карточка | test_tracker_bump_default.py | AC-2 | PASS | | TC-03 | bump fail-safe: send=None не обнуляет указатель | test_tracker_bump_default.py | AC-3 | PASS | | TC-04 | `ORCH_TRACKER_MODE=edit` — прежнее поведение | test_tracker_bump_default.py | AC-4 | PASS | | TC-05 | Карточка содержит строку Plane-статуса | test_tracker_status_line.py | AC-5 | PASS | | TC-06 | Маппинг stage → Plane-статус (§2.2, параметризованный) | test_tracker_status_line.py | AC-6 | PASS | | TC-07 | In Review из brd-clock, без сети; строка «Подтверждение BRD» сохранена | test_tracker_status_line.py | AC-7 | PASS | | TC-08 | Awaiting Deploy + Needs Input отражены | test_tracker_status_line.py | AC-8 | PASS | | TC-09 | render_task_tracker не падает на битых данных | test_tracker_status_line.py | AC-9, AC-16 | PASS | | TC-10 | Кликабельный номер в карточке при полных данных | test_tracker_issue_link.py | AC-10 | PASS | | TC-11 | Fail-safe ссылки в карточке (параметризованный) | test_tracker_issue_link.py | AC-11 | PASS | | TC-12 | `plane_issue_link(...)` — ссылка/escape, никогда не бросает | test_plane_issue_link.py | AC-12 | PASS | | TC-13 | notify_approve_requested: номер кликабелен, одна нотификация | test_notify_issue_links.py | AC-13 | PASS | | TC-14 | notify_error: кликабелен/деградирует без падения | test_notify_issue_links.py | AC-13, AC-12 | PASS | | TC-15 | Точки send_telegram (stage_engine/launcher/merge_gate/job_reaper/security_gate/reconciler/main) используют хелпер | test_notify_issue_links.py | AC-13 | PASS | | TC-16 | HTML-экранирование title/`&`, валидность `` | test_tracker_issue_link.py | AC-14 | PASS | | TC-17 | Инварианты транспорта: disable_notification, одна карточка | test_tracker_bump_default.py | AC-15 | PASS | | TC-18 | Нерегресс нотификаций + деградация для enduro-trails | test_notify_done_regression.py | AC-16, AC-17 | PASS | Все 18 TC из тест-плана — PASS. Целевые модули: **57 passed**. ## Покрытие acceptance criteria AC-1..AC-18 — все покрыты соответствующими TC и зелёные. AC-17 (полный набор) подтверждён прогоном всего пакета. ## Вывод pytest (полный регресс) ``` $ python -m pytest tests/ -v --tb=short ... ======================= 907 passed, 1 warning in 22.36s ======================== ``` Единственный warning — пре-существующий `PydanticDeprecatedSince20` в `src/config.py:4` (не относится к ORCH-067, не регресс). Целевые модули задачи: ``` $ python -m pytest tests/test_tracker_bump_default.py tests/test_tracker_status_line.py \ tests/test_tracker_issue_link.py tests/test_plane_issue_link.py \ tests/test_notify_issue_links.py tests/test_notify_done_regression.py -q 57 passed, 1 warning in 1.39s ``` ## Итог **PASS** — 907/907 тестов зелёные, все 18 TC и AC-1..AC-18 выполнены, smoke API OK, нерегресс для enduro-trails подтверждён. Задача готова к переходу на `deploy-staging`.