4.2 KiB
4.2 KiB
10 — Технические риски — ORCH-026
Work Item: ORCH-026 · Repo: orchestrator · Стадия: architecture
Связь: ADR 06-adr/ADR-001-merge-serialization-and-task-deps.md.
| # | Риск | Уровень | Митигация |
|---|---|---|---|
| R-1 | Гейт NOT EXISTS в claim_next_job (горячий путь всех проектов) содержит баг → встаёт очередь ВСЕХ проектов (self-hosting групповой риск). |
Высокий | Условие добавляется ТОЛЬКО при task_deps_enabled; инертно при пустой job_deps (нулевая регрессия); kill-switch task_deps_enabled=False мгновенно возвращает поведение ORCH-1; интеграционный тест «пустые deps ⇒ FIFO 1:1» (AC-G2). |
| R-2 | Безусловный premerge_rebase_always делает лишний push --force-with-lease → ложный перезапуск CI / новые коммиты. |
Низкий | На актуальной ветке rebase origin/main — no-op (HEAD не меняется), push → «Everything up-to-date» (тот же SHA, CI не триггерится). Подтвердить тестом, что SHA не меняется на уже-актуальной ветке. |
| R-3 | Дедлок по циклической зависимости → задача молча ждёт вечно. | Средний | DFS-детектор detect_cycle при вставке связи + backstop в reconciler; цикл → set_issue_blocked + alert с перечислением цикла (AC-B3); SQL-гейт не выбирает задачу в цикле, детектор делает это видимым. |
| R-4 | Livelock: B бесконечно defer’ится на merge-lock busy. |
Низкий | Существующий bounded-бюджет merge_defer_max_attempts → Blocked+alert (ORCH-043, без изменений). |
| R-5 | Залипший merge-lease после смерти держателя → конвейер репо встаёт навсегда. | Средний | Переиспользуется ORCH-065: reclaim_stale_lease (мёртвый pid / TTL merge_lock_timeout_s) + holder-aware release. Restart-safe (AC-A4). |
| R-6 | Plane relations недоступны/неверно смаплены при task_deps_source=plane. |
Средний | Планировщик читает ТОЛЬКО БД-кэш job_deps; Plane-ingestion — best-effort, never-raise; дефолт task_deps_source=db не зависит от Plane. |
| R-7 | reconciler «разблокирует» dep-заблокированную задачу мимо её зависимостей. | Средний | В фильтр reconciler добавляется is_task_ready (паттерн ORCH-060 skip-Blocked); reaper трогает только running — dep-блок остаётся queued (AC-B5). |
| R-8 | Миграция БД повреждает общую прод-БД (данные enduro-trails). | Низкий | Только аддитивно: CREATE TABLE/INDEX IF NOT EXISTS; существующие колонки не меняются; идемпотентно (AC-G4). |
| R-9 | Self-hosting: изменения требуют рестарта прод-контейнера вне Confirm Deploy. |
Высокий (если нарушено) | Все изменения — обычный код, проходят deploy-staging (8501) → Confirm Deploy (ORCH-059). STAGE_TRANSITIONS/QG_CHECKS не трогаются; никакого внеочередного рестарта (AC-A5). |
| R-10 | Конфликт точек интеграции A (merge-gate) и B (постановка в очередь). | Низкий | Разные точки конвейера: B гейтит claim job (вход), A гейтит merge на ребре deploy-staging→deploy. Независимы; покрыть интеграционным тестом совместной работы (BRD §4.4). |