3.5 KiB
3.5 KiB
10 — Технические риски
Work Item: ORCH-048
Stage: architecture
Решение: ADR-001 — B6 читает реестр через HTTP-эндпоинт GET /projects живого staging-инстанса.
| ID | Риск | Вероятн. | Влияние | Митигация |
|---|---|---|---|---|
| R-1 | Эндпоинт GET /projects затрагивает прод-main.py (self-hosting) — добавление роута в инструмент, обслуживающий все проекты |
низкая | высокое | Эндпоинт additive и read-only; существующие роуты не меняются. Доставка в прод — штатно через staging-гейт (ADR-0003), без внепланового рестарта прод-контейнера. |
| R-2 | Утечка чувствительных данных через /projects |
низкая | среднее | Отдавать только id / repo / prefix / name. Токены, webhook-secret, пути — НЕ включать. Зафиксировано контрактом в ADR-001. |
| R-3 | Недоступность /projects даёт ложный PASS B6 (потеря защитной функции) |
низкая | высокое | TR-4: при не-200 / отсутствии ключа / сетевом сбое — детерминированный FAIL с понятным detail; никогда не PASS «по умолчанию». |
| R-4 | Логика вердикта B6 не выделена → невозможно покрыть оба исхода без живого инстанса | средняя | среднее | Вынести вердикт в чистую _evaluate_b6(known: set[str]) -> tuple[bool, str]; unit-тест на clean→PASS и polluted→FAIL (AC-2), без docker/HTTP. |
| R-5 | Регрессия других чеков / случайная правка src/projects.py или .env* |
низкая | высокое | Менять только блок B6 в staging_check.py + добавить эндпоинт. git diff не должен содержать src/projects.py, .env* (AC-3). A1–A3/B4/B5/C — без изменений. |
| R-6 | Документация (golden source) разойдётся с кодом | средняя | среднее | В том же PR обновить README (API-таблица + B6), CHANGELOG, STAGING_CHECK.md. Reviewer обязан завернуть при отсутствии (CLAUDE.md правило 6). |
| R-7 | Нарушение конвенции «stdlib-only» в scripts/staging_check.py |
низкая | низкое | B6 использует существующий _get(...) (urllib) — сторонние зависимости не добавляются (TR-5). |
| R-8 | Эндпоинт не сериализуется (ProjectConfig — frozen dataclass с dict-полями) | низкая | низкое | Возвращать явный dict с нужными полями, не сам dataclass; agent_models/agent_efforts в ответ не включать. |
Открытых архитектурных вопросов нет
ТЗ удовлетворяется без нарушения принципов (SQLite не затронут, без новых зависимостей, без новой стадии/QG, без рестарта прода вне staging-гейта). Эскалация не требуется.