5.2 KiB
5.2 KiB
10 — Технические риски: ORCH-042
См. 02-trz.md, 06-adr/ADR-001-tracker-bump-mode.md, 03-acceptance-criteria.md.
Шкала: Вероятность × Влияние ∈ {низк., сред., выс.}.
| # | Риск | Вер. | Влияние | Митигация | Контроль (AC/TC) |
|---|---|---|---|---|---|
| R-1 | Регрессия защиты от дублей — рефактор update_task_tracker ломает edit-ветку, возвращается боль «~15 карточек». |
низк. | выс. | edit — дефолт и неизменяемая ветка; bump добавляется отдельной веткой if mode == "bump", edit-код не трогается. Полное покрытие edit-регрессии тестами. |
AC-3..AC-6, AC-8; TC-03..TC-06, TC-24 |
| R-2 | Двойная отправка / накопление карточек в bump — delete и send рассинхронизированы, в чате >1 карточки. | низк. | сред. | Инвариант: ≤1 send_telegram за вызов; set_tracker_message_id только при успешном send; delete best-effort и не блокирует. |
AC-8, AC-10, AC-11; TC-08, TC-09, TC-11 |
| R-3 | Затирание tracker_message_id на None при транзиентном send-fail → потеря указателя, следующий апдейт не найдёт старое. |
низк. | сред. | repoint только при new_mid is not None; при None id сохраняется как есть. |
AC-13; TC-10 |
| R-4 | Нарушение контракта «never raises» — исключение из delete_telegram/новой ветки валит конвейер (групповой риск из-за общей очереди). |
низк. | выс. | delete_telegram обёрнут try/except → bool; внешний try/except в update_task_tracker сохранён; сеть/httpx мокаются в тестах. |
AC-12, AC-14; TC-12..TC-17 |
| R-5 | Ложная классифик. delete-ответа — неизвестный ok:false принят за «исчезло» (или наоборот), вечные ретраи/тишина. |
низк. | низк. | Явные _DELETE_GONE_MARKERS → True; всё прочее (включая 5xx) → False; повтор delete на следующем апдейте безопасен (идемпотентно). |
AC-12; TC-13, TC-14 |
| R-6 | Падение CI на старых ассертах — тесты tests/test_telegram_tracker.py проверяют EN-метки/«Ревью БРД». |
сред. | сред. | ТЗ §5 явно требует обновить существующие ассерты под русские метки и «Подтверждение BRD» в том же PR. | AC-20; TC-18, TC-21, TC-24 |
| R-7 | Сломанная human-gate индикация — ✅ показан до прохождения approve-gate (ввод в заблуждение). | низк. | низк. | ✅ только при заданном brd_review_ended_at; ветка ожидания (review_seconds is None, ⏳) не меняется. |
AC-16; TC-19, TC-20 |
| R-8 | Скрытая зависимость от display-label — русификация _TRACKER_STAGES ломает логику, завязанную на текст метки. |
низк. | сред. | Меняется только 2-й элемент кортежа (label); ключи стадий и имена агентов (_STAGE_ACTIVE_AGENT, last_done, БД) не трогаются. |
AC-17; TC-21 |
| R-9 | Self-hosting: прод-сбой при выкатке self — общая БД/очередь, рестарт орка останавливает все проекты. | низк. | выс. | Изменения только в коде нотификаций, миграций БД нет; обязательная страховка deploy-staging (8501) перед prod (CLAUDE.md, INFRA.md, adr-0003). Дефолт edit → даже при выкатке поведение не меняется без явного флага. |
стадия deploy-staging; check_staging_status |
| R-10 | Документация не обновлена в том же PR (internals.md / .env.example / CHANGELOG) → REQUEST_CHANGES. | сред. | низк. | ТЗ §5 и AC-21 фиксируют список; reviewer проверяет наличие. | AC-21 |
Сводный вывод
Все риски — низкие по вероятности при соблюдении инвариантов из ADR-001 (edit-дефолт, ≤1 send/вызов, repoint-only-on-success, never-raises, правка только display-label). Остаточный групповой self-hosting-риск (R-9) полностью покрывается обязательным deploy-staging-гейтом и тем, что дефолтное поведение не меняется. Блокеров для перехода на стадию development нет.