Files
orchestrator/docs/work-items/ORCH-026/10-tech-risks.md
claude-bot f8ec1c2f6e
All checks were successful
CI / test (push) Successful in 22s
architect(ET): auto-commit from architect run_id=387
2026-06-08 18:43:57 +03:00

4.2 KiB
Raw Blame History

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).