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

7.0 KiB
Raw Blame History

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

10 — Технические риски: ORCH-102 — ORCH-10a Lite-тираж (инструкция + анти-дрейф)

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

Информационный (гейтом не парсится). Перечисляет риски реализации и их митигейшн. Решения, на которые ссылаются митигейшны (D1…D9), — 06-adr/ADR-001-lite-setup-doc-canon.md.

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

ID Риск Вер. Влия. Митигейшн
TR-1 Дрейф инструкции: платформа развивается, шаги LITE_SETUP.md тихо устаревают (новый env-ключ, изменённый маршрут онбординга) Сред. Сред. Структурный tests/test_lite_setup_doc.py (D8: кирпичи, env-ключи ⊂ .env.example, compose-подмножество, перекрёстность) рвёт CI при дрейфе; футер-норматив NFR-5 + правило агентов №2 («шаги тиража → док в том же PR»); reviewer-ось обзорных доков (правило №6)
TR-2 Форк канона: скопированная в док таблица статусов/env/вебхуков разъезжается с golden source Низ. Сред. D2/FR-4: канон — только ссылками (ONBOARDING §1 / REPLICATION §2§4 / SETUP_WEBHOOKS); в доке дублируются лишь fail-closed имена (Confirm Deploy/STOP) и списки обязательных ключей — оба под TC-02/TC-03; единственный структурный дубль (WATCHDOG_*) — под key-sync TC-02b
TR-3 «Без доп-вопросов» непроверяемо: реальный заказчик найдёт пробел, который не увидел внутренний прогон Сред. Низ. Операционализация BRD §6: каждый шаг = команда+проверка (TC-01/02), приёмочный smoke-прогон на чистом контуре фиксируется в 13-test-report.md/15-staging-log.md, траблшутинг ≥5 отказов (§13). Остаточные пробелы лечатся правкой golden source штатной задачей
TR-4 Гетерогенность хостов заказчиков: rootless docker, иной uid владельца репо, нет node/claude-code, arm64 Сред. Сред. §2 «Предусловия» с явным поддерживаемым контуром (Linux x86_64, Docker+Compose v2, git, python3, node) и чек-командой на каждое предусловие (getent group docker, владение ORCH_HOST_REPOS_DIR = ORCH_RUN_UID); вне контура — вне гарантии Lite (BRD §6); §13 покрывает типовые отказы (docker.sock gid, uid mismatch ORCH-040/057)
TR-5 Заказчик включит branch protection / pre-receive на main вопреки нормативу → ложные HOLD merge-актора на ЕГО инсталляции (класс ORCH-063) Низ. Выс. (у заказчика) D3: явная нормативная рамка в §6 («НЕ включать», основание D10 ORCH-009/INV-4) + симптом в §13 («PR не мержится/HOLD → проверь protection»); для нашего прода риск нулевой (его Gitea не трогается)
TR-6 Утечка секрета/боевого литерала через примеры дока или .env.watchdog.example Низ. Выс. NFR-3: только плейсхолдеры; TC-05 — fenced-скан на FORBIDDEN (импорт из test_no_host_hardcodes.py, один источник истины) + эвристика секретоподобных значений; security-гейт ORCH-022 (17-security-report.md) обязан остаться PASS; D2(б): дефолты хост-переменных в док не копируются
TR-7 Хрупкость анти-дрейф теста: ложно-красный CI от безобидной правки прозы → соблазн ослабить тест Сред. Низ. D8: ассерты только на стабильное (заголовки ## N., подстроки-кирпичи, парсинг env-ключей, yaml.safe_load), запреты — только в fenced-блоках; никаких проверок прозы/формулировок; паттерн уже обкатан (test_replication_smoke.py стабилен)
TR-8 .env.watchdog.example разъезжается с блоком WATCHDOG_* .env.example / дефолтами watchdog/config.py Низ. Низ. TC-02b: равенство множеств ключей двух файлов; значения = дефолты канона (сверены с watchdog/config.py при ревью); полнота самого .env.example уже держится тестами ORCH-101
TR-9 Приёмочный smoke на staging-песочнице ≠ голый чужой хост: средовые эффекты нового железа (сеть, версии docker) не проверены Сред. Низ. Принятый прецедент ORCH-101 AC-3 (без нового железа в контуре задачи; FR-5(г) — прогон на реальном хосте желателен, не блокер); зазор сужают чек-команды §2 и траблшутинг §13; первый реальный тираж — операторски сопровождаемый

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

Доминирующий класс — документационный (дрейф/полнота/гигиена), систематически закрытый структурными тестами (TC-01…TC-06) и нормативом golden source; рантайм-рисков нет — дифф docs+tests (+.env.watchdog.example), конвейер и src/** байт-в-байт (D9), kill-switch не требуется. Самый тяжёлый по влиянию риск (TR-5) материализуется только на инсталляции заказчика и купирован явным нормативом + траблшутингом. Эскалация arch:major-change не требуется; возврат в анализ не нужен. Остаточный риск для self-hosting прод-конвейера — минимальный (прод-контейнер не трогается; выкат — штатно через staging 8501 → Confirm Deploy).