Files
orchestrator/docs/work-items/ORCH-048/10-tech-risks.md
claude-bot f77825b3c4
All checks were successful
CI / test (push) Successful in 12s
architect(ET): auto-commit from architect run_id=146
2026-06-06 05:20:41 +00:00

3.5 KiB
Raw Blame History

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). A1A3/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-гейта). Эскалация не требуется.