Files
orchestrator/docs/work-items/ORCH-103/10-tech-risks.md

7.3 KiB
Raw Permalink Blame History

work_item, stage, author_agent, status, created_at, model_used
work_item stage author_agent status created_at model_used
ORCH-103 architecture architect proposed 2026-06-11 claude-opus-4-8

10 — Технические риски: ORCH-103 — Bundled-тираж: весь стек одним комплектом + bootstrap

Work Item: ORCH-103 · Repo: orchestrator · Стадия: architecture

Информационный (гейтом не парсится). Риски реализации и эксплуатации bundle; решения — 06-adr/ADR-001-bundled-stack-compose-and-bootstrap.md (D1…D11).

Реестр рисков

ID Риск Вер. Влия. Митигейшн
TR-1 Ресурсоёмкость Plane (≈1314 контейнеров): OOM/вечные миграции на слабом хосте → «bundle не работает» Сред. Выс. Preflight bootstrap (RAM/диск/CPU до мутаций, BR-7); честные цифры в BUNDLED_SETUP §2 по замеру (AC-4); таймауты ожидания готовности с диагностикой «кто не дождался + хвост логов» (D5 ш.3); траблшутинг §14
TR-2 Дыры Plane CE API: instance-setup/workspace/API-токен UI-only → UX «одной команды» размывается; молчаливый пропуск шага ломает всё дальше Выс. Сред. Контракт manual-step (инструкция → подтверждение → API-верификация результата, exit 2 без TTY; D5/D7); число ручных шагов минимизировано (Gitea — полностью автоматом, D6); прогрессивная автоматизация разрешена без смены контракта
TR-3 Дрейф upstream-образов: «плавающий» тег ломает воспроизводимость; пиннованные версии стареют (CVE/несовместимость) Сред. Сред. Неподвижные теги литералом + тест формы TC-03 (не latest/безтеговых); теги фиксируются по фактически проверенному стенду (D3); апгрейд — отдельные задачи (NFR-6, BRD §6)
TR-4 Сетевая недостижимость вебхуков (труднодиагностируемое «задача не появилась»): приватные адреса, рассинхрон URL Сред. Выс. Одна bridge-сеть + строго сервис-DNS для машинного трафика (D4); явный GITEA__webhook__ALLOWED_HOST_LIST=orchestrator (Gitea по умолчанию режет приватные таргеты); URL подставляет bootstrap, не оператор; smoke проверяет ОБА направления (FR-6); траблшутинг §14
TR-5 Соблазн форкнуть/расширить корневой compose (упадёт анти-дрейф ORCH-102 TC-04) Низ. Выс. Bundle строго отдельным файлом deploy/bundled/ (D1); TC-02 зеркалит заморозку корневого compose; правило эскалации TRZ §7 — если всплывёт незакрытая параметризация src/**, остановиться и вернуть задачу, не «дотачивать молча»
TR-6 Утечка секретов в репо/логи при генерации bundle-кред Низ. Выс. В гите — только плейсхолдеры (канон D2); bootstrap не печатает значения (имена ключей/пути, D5); права 600; секрет-эвристика hex≥32/alnum≥40 + FORBIDDEN-скан на новых артефактах (TC-06); live-файлы в .gitignore
TR-7 Токен-remote агентов: токен бот-юзера plaintext в .git/config чекаутов; один бот = широкие права Сред. Низ. Осознанный компромисс тестовой инсталляции (D8): порты БД/брокера не публикуются, каталог локальный, права 600; ssh-контур сознательно не вводится (меньше поверхность); зафиксировано в BUNDLED_SETUP §1 «рамка»
TR-8 Путаница двух .env-слоёв (bundle-инфра deploy/bundled/.env vs runtime орка корневой .env): ручная правка не того файла Сред. Сред. Bootstrap — единственный писатель всех live-файлов (D2); авто-чтение compose из project dir (нет --env-file-футгана); шапки-комментарии в канонах перекрёстно ссылаются; key-set-sync тест TC-04
TR-9 Хост-python/venv для onboard: onboard_project.py требует venv с requirements.txt (канон ONBOARDING) — на голом хосте шаг 6 падает Сред. Сред. Preflight проверяет python3/venv (D5 ш.1); создание venv — идемпотентный ensure-шаг bootstrap; сам bootstrap stdlib-only и от venv не зависит (D5)
TR-10 Повторный запуск/грязный хост: bootstrap портит чужое состояние или дублирует своё Низ. Выс. Step-движок check→ensure (skip-семантика, AC-8); детект «грязи» по префиксу orchestrator-bundle до мутаций; delete-операций в скрипте нет вообще — teardown только документированной процедурой §13 (D9); unit-тесты чистых функций preflight (TC-08)

Сводный вывод

Доминирующий класс — эксплуатационные риски целевого хоста (TR-1/TR-2/TR-4): они не затрагивают наш прод и гасятся честным preflight, контрактом manual-step и smoke в обе стороны. Рисков для прод-конвейера self-hosting нет по построению (NFR-1/NFR-2: рантайм байт-в-байт, артефакты в нашем контуре инертны, kill-switch не требуется — паттерн ORCH-009; все существующие анти-дрейф тесты остаются зелёными). Эскалация arch:major-change не требуется: новых стадий/ компонентов рантайма/смены БД нет — задача целиком в слое дистрибуции (паттерн ORCH-101/102). Возврат в анализ не требуется: ТЗ выполнимо без нарушения принципов; единственный заранее оговорённый стоп-кран — TR-5 (обнаружение незакрытой параметризации src/** ⇒ остановка по TRZ §7). Остаточный риск — низкий.