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

6.8 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-009 architecture architect proposed 2026-06-10 claude-opus-4-8

10 — Технические риски: ORCH-009 — Turnkey-онбординг проектов

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

Информационный (гейтом не парсится). Детализирует риски BRD §8 (R-1…R-5) до уровня решений 06-adr/ADR-001; митигейшены привязаны к D-решениям и TC тест-плана.

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

ID Риск Вер. Влия. Митигейшн
TR-1 Drift канона (R-1): копия _templates/_standards в новых репо разъезжается с живым каноном орка; kit-промпты отстают от эволюции канона 52d Сред. Сред. BR-2/D3: live-copy в момент онбординга, второй редактируемой копии канона нет; NFR-4: структурные канон-тесты kit (TC-03…08) ловят расхождение в CI; обновление онбордженных репо — их обычные PR
TR-2 Тихая деградация Plane-контрактов (R-2): опечатка в имени статуса/лейбла или неверная группа → fail-closed/fail-safe ветки (Confirm Deploy, STOP, авто-лейблы, Bug) молча не работают; рабочий статус в группе completed/cancelled → terminal-detection ORCH-068 ложно терминалит живую задачу Сред. Выс. D4: имена импортируются из _PLANE_NAME_TO_KEY (нулевой дрейф по построению, TC-13); D5: канонические группы зафиксированы таблицей ADR с код-критичными констрейнтами (STOP→cancelled, терминальные группы только Done/Cancelled/STOP); verify резолвит ВСЕ логические ключи включая confirm_deploy/stop
TR-3 Скрипт с боевыми токенами (R-3): ошибка = разрушительное действие на общих Plane/Gitea Низ. Выс. BR-9/D11: plan (GET-only) — дефолт; delete-операций в коде нет вовсе (TC-18); аддитивный ensure (TC-17); push только в свежесозданный пустой репо (empty: true, D6); существующие сущности не модифицируются
TR-4 Разрыв «создано, но не зарегистрировано» (R-4): оператор не применил env+рестарт → проект невидим для орка Сред. Сред. D7: merged-массив одной строкой (без ручного слияния JSON); runbook: явный операторский шаг с self-hosting-предупреждением + команда проверки; verify показывает разрыв (TC-12, AC-11)
TR-5 Утечка орк-специфики в kit (R-5): новый репо получает ORCH-префикс, порты 8500/8501, self-hosting-правила орка Сред. Сред. D2: скан неразрешённых плейсхолдеров после рендера; TC-10: явный тест на утечки; биекция словаря placeholders.json ↔ kit (мёртвые/опечаточные плейсхолдеры не живут)
TR-6 Поломка HMAC существующих вебхуков: генерация нового per-repo секрета при едином глобальном ORCH_GITEA_WEBHOOK_SECRET приёмника Низ. Выс. D6: секрет переиспользуется из env (новый генерится только при полном отсутствии — первичная настройка); секрет маскируется в логах/отчёте (NFR-3)
TR-7 Связь скрипта с приватными именами src (_parse_projects_json, _PLANE_NAME_TO_KEY): рефакторинг src валит скрипт Низ. Низ. D4: закрытый список импортов (расширение — только через ADR); поломка видимая, не тихая — импорт падает в тестах (TC-12/13) на том же PR, что рефакторит src; снапшот TC-21 гардит сам src
TR-8 Plane CE API-пробелы (OQ-5): POST project/states/labels недоступен в CE → провижининг неполон Сред. Низ. D5: fail-safe деградация в manual-step со ссылкой на runbook (имя+группа для UI-создания), не падение (TC-14); verify подтверждает итоговую полноту независимо от способа создания
TR-9 Smoke загрязняет общий контур: прогон способности в проде = строки в общей БД/очереди Низ. Сред. D8: smoke только на staging (8501, изолированная БД, .env.staging); sandbox-сущности одноразовые, снос вручную по разделу «Откат» runbook

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

Доминирующий класс — операционные риски исполнения способности (TR-2/TR-3/TR-4): они митигированы структурно (импорт констант вместо копий, GET-only дефолт, отсутствие delete-операций, verify-режим), а не дисциплиной. Рисков для прод-конвейера самой задачи нет по построению: src/** байт-в-байт (AC-12/TC-21), нового кода в горячих путях нет, kill-switch не требуется — способность активируется только явным запуском операторского CLI.

Эскалация arch:major-change не требуется: ни новой стадии, ни нового рантайм-компонента, ни изменения БД — это docs/templates/scripts/tests-only способность (новая стадия/компонент конвейера не вводится). Возврат в анализ не требуется: ТЗ выполнимо без нарушения принципов. Остаточный риск для прод-конвейера (self-hosting): низкий.