Files
orchestrator/docs/work-items/ORCH-017/10-tech-risks.md
claude-bot c9b1195c0b
All checks were successful
CI / test (push) Successful in 12s
architect(ET): auto-commit from architect run_id=115
2026-06-05 17:50:28 +00:00

3.8 KiB
Raw Blame History

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 до прод-деплоя.