3.8 KiB
3.8 KiB
10-Tech Risks — ORCH-017
Work Item: ORCH-017 · Repo: orchestrator
Опирается на ADR-001. Шкала: вероятность × влияние.
| ID | Риск | Вер. | Влияние | Митигация |
|---|---|---|---|---|
| R-1 | Self-hosting: уведомление роняет поток. Исключение при построении ссылок (нет данных в tasks, неконсистентный реестр проектов) прерывает notify_approve_requested и тормозит конвейер всех проектов. |
Низк. | Выс. | NFR-1/ADR Р-4: один SELECT в try/except, каждая ссылка строится независимо и опускается при нехватке данных; сообщение и призыв отправляются всегда. Тест на ветви degradation (tests/test_notify_approve_links.py). |
| R-2 | Битый/непубличный Plane-URL. Фоллбэк на plane_api_url=localhost:8091 дал бы некликабельную ссылку снаружи хоста (нарушение AC-2). |
Сред. | Сред. | ADR Р-3 loopback-guard: при пустом/loopback базовом URL Plane-ссылка опускается, а не вставляется битой. Значение ORCH_PLANE_WEB_URL подтверждает Owner/INFRA (07-infra-requirements.md). |
| R-3 | Несовпадение браузерного роута Plane. Формат /{workspace}/projects/{id}/issues/{id}/ зависит от версии Plane; иной роут → ссылка ведёт в никуда (открывается, но не на ту issue). |
Низк. | Сред. | Проверить роут на одной реальной задаче после задания ORCH_PLANE_WEB_URL (acceptance в staging). uuid plane_issue_id детерминирован — ошибка может быть только в шаблоне пути, не в идентификаторе. |
| R-4 | Поломка HTML-разметки сообщения. Неэкранированная динамическая подпись (напр. символы </& в work_item_id/title) ломает parse_mode="HTML" → Telegram отвергает сообщение. |
Низк. | Сред. | NFR-3/ADR Р-4: html.escape на всех подписях; URL только из доверенных конфиг/БД-значений. Тест на спецсимволы. |
| R-5 | Регрессия «дубль-сообщения». Случайное добавление второго send_telegram или повторная отправка трекера как нового сообщения. |
Низк. | Низк. | ADR Р-5: инвариант «один send_telegram», порядок действий зафиксирован; регресс-тесты tests/test_telegram_tracker.py, tests/test_notify_done_regression.py. |
| R-6 | Zero-padding identifier. Короткий browse/<IDENT> промахнулся бы по issue (ORCH-017 vs ORCH-17). |
— | — | Снят на корню: ADR Р-2 использует uuid plane_issue_id, короткий формат отклонён. |
Сводно
Изменение косметическое и изолированное: нет правок реестра гейтов/стадий, схемы БД, API и
разделяемой send_telegram. Главный класс риска — self-hosting-устойчивость (R-1) — закрыт
graceful-degradation контрактом ADR Р-4. Внешний незакрытый вход — значение ORCH_PLANE_WEB_URL
(R-2/R-3), проверяется в staging до прод-деплоя.