work_item: ORCH-042 description: > Режим bump live-трекера (delete+send+repoint, тихо, fallback, never-raises), сохранение режима edit без регрессий, и текстовые правки карточки (Подтверждение BRD, ✅ после approve, русские метки стадий, «Внедрено»). Сеть не трогаем: httpx / низкоуровневые helpers мокаются; изолированная temp-БД. tests: # --- config --- - id: TC-01 type: unit description: "Settings.tracker_mode по умолчанию 'edit' и читается из ORCH_TRACKER_MODE (AC-1)" module: tests/test_config.py expected: PASS - id: TC-02 type: unit description: "Неизвестное/пустое значение режима -> update_task_tracker идёт по edit-ветке, без исключений (AC-2)" module: tests/test_telegram_tracker.py expected: PASS # --- edit mode regression --- - id: TC-03 type: unit description: "edit: первый вызов -> sendMessage тихо, id сохранён, editMessageText не вызван (AC-3)" module: tests/test_telegram_tracker.py expected: PASS - id: TC-04 type: unit description: "edit: повторный вызов -> editMessageText на сохранённый id, нового send нет (AC-4)" module: tests/test_telegram_tracker.py expected: PASS - id: TC-05 type: unit description: "edit: EDIT_GONE -> отправка нового, id обновлён (AC-5)" module: tests/test_telegram_tracker.py expected: PASS - id: TC-06 type: unit description: "edit: EDIT_NOT_MODIFIED и EDIT_FAILED -> нового сообщения нет, id не меняется (AC-6)" module: tests/test_telegram_tracker.py expected: PASS # --- bump mode --- - id: TC-07 type: unit description: "bump: первый вызов (нет id) -> delete не вызван, send тихий, id сохранён (AC-7, AC-9)" module: tests/test_tracker_bump.py expected: PASS - id: TC-08 type: unit description: "bump: повторный вызов -> delete(старый) затем send(тихо), id перенаправлен на новый, порядок delete->send (AC-8, AC-9, AC-10)" module: tests/test_tracker_bump.py expected: PASS - id: TC-09 type: unit description: "bump fallback: delete_telegram->False -> новое всё равно отправлено, id обновлён, без исключений (AC-11)" module: tests/test_tracker_bump.py expected: PASS - id: TC-10 type: unit description: "bump: send вернул None (транзиент) -> id не затёрт на None, ровно одна попытка send, без исключений (AC-13)" module: tests/test_tracker_bump.py expected: PASS - id: TC-11 type: unit description: "bump: одна карточка за вызов -> send_telegram вызван <=1 раза (AC-10)" module: tests/test_tracker_bump.py expected: PASS # --- delete_telegram classification --- - id: TC-12 type: unit description: "delete_telegram: ok:true -> True (httpx замокан)" module: tests/test_tracker_bump.py expected: PASS - id: TC-13 type: unit description: "delete_telegram: ok:false 'message to delete not found' / 'message can't be deleted' / 'message_id_invalid' -> True (AC-12)" module: tests/test_tracker_bump.py expected: PASS - id: TC-14 type: unit description: "delete_telegram: неизвестный ok:false / 5xx -> False (AC-12)" module: tests/test_tracker_bump.py expected: PASS - id: TC-15 type: unit description: "delete_telegram: исключение (таймаут/сеть) -> False, never raises (AC-12, AC-14)" module: tests/test_tracker_bump.py expected: PASS - id: TC-16 type: unit description: "delete_telegram: нет токена/chat_id -> False, HTTP не вызывается (AC-12)" module: tests/test_tracker_bump.py expected: PASS # --- never raises --- - id: TC-17 type: unit description: "update_task_tracker никогда не бросает (DB/сеть сбой) в обоих режимах (AC-14)" module: tests/test_tracker_bump.py expected: PASS # --- text changes --- - id: TC-18 type: unit description: "render: метка 'Подтверждение BRD' присутствует, 'Ревью БРД' отсутствует (AC-15)" module: tests/test_telegram_tracker.py expected: PASS - id: TC-19 type: unit description: "render: approve-gate пройден (brd_review_ended_at задан) -> строка BRD с ✅, не ⏸️ (AC-16)" module: tests/test_telegram_tracker.py expected: PASS - id: TC-20 type: unit description: "render: ожидание человека (brd_review_ended_at пуст) -> индикатор ожидания/⏳, не ✅ (AC-16)" module: tests/test_telegram_tracker.py expected: PASS - id: TC-21 type: unit description: "render: русские метки стадий (Анализ/Архитектура/Разработка/Код ревью/Тестирование/Внедрение), английских нет — в ✅- и 🔄-строках (AC-17)" module: tests/test_telegram_tracker.py expected: PASS - id: TC-22 type: unit description: "render done: итоговая строка содержит '📦 Внедрено', не 'deployed' (AC-18)" module: tests/test_telegram_tracker.py expected: PASS # --- separate alerts regression --- - id: TC-23 type: unit description: "Состав отдельных пингов не изменён: approve-gate/error шлют 1 нетихий пинг; stage_change/agent_started/qg_failure не шлют (AC-19)" module: tests/test_telegram_tracker.py expected: PASS # --- full suite --- - id: TC-24 type: integration description: "Вся pytest-сюита зелёная; обновлённые ассерты под русские метки проходят (AC-20)" module: tests/ expected: PASS