Files
orchestrator/docs/work-items/ORCH-118/10-tech-risks.md
claude-bot 7597804f8c
All checks were successful
CI / test (push) Successful in 1m7s
architect(ET): auto-commit from architect run_id=727
2026-06-15 23:56:27 +03:00

6.0 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-118 architecture architect accepted 2026-06-15 claude-opus-4-8

10 — Технические риски: ORCH-118 — replace avoidable LLM control paths (inventory + map + policy)

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

Информационный документ (гейтом не парсится). Перечисляет риски реализации этой задачи (docs + tests only — inventory/карта/политика/тесты). Риски будущих раннеров замен — в roadmap'е и в ADR соответствующих follow-up'ов, не здесь.

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

ID Риск Вер. Влия. Митигейшн
TR-1 Тривиальный тест — структурные тесты «зелёные, но ничего не проверяют» (рецидив корня R4: проверяют «один Popen» без control-path-оси) Сред. Выс. D5: обязательные инварианты (g) control-path-разметка сверена с src/qg/checks.py и (h) avoidable-набор {tester, deployer}; (a)+(f) двусторонний транспорт-инвариант; ревью AC-6 буквально требует (g)/(h)
TR-2 False-positive матчинга транспорта — тест ловит preflight.py/config.py (bare CLAUDE_BIN — capability/литерал, не консультация) → ложный «второй транспорт» Сред. Сред. D5a: матчинг по конъюнкции признаков (CLAUDE_BIN--system-promptPopen/bash -c); allowlist = _spawn; явный негативный кейс на preflight/config
TR-3 Дрейф карты-снимкаsrc/qg/checks.py эволюционирует (смена потребителя / новая роль), карта не обновлена → ложно-зелёная витрина Сред. Сред. Запланированное свойство: тесты D5g/h краснеют в точке дрейфа; норматив сопровождения «менял потребителя вердикта → обнови карту в том же PR» (ADR-001 D7 / adr-0047 D6)
TR-4 Хрупкий парс машинного блока — regex по прозе карты ломается на переформулировке без смыслового дрейфа Низ. Сред. D2/D5: стабильный markdown-блок с фиксированным заголовком таблицы, парс stdlib-split; формат документирован
TR-5 Непроверяемые ссылки / фабрикация follow-up ID (рецидив дефекта R2) Низ. Выс. NFR-6/AC-9: только резолвящиеся file:line/doc-ссылки; кандидаты — по роли; тест не пинит карту к follow-up ID; ревью AC-9
TR-6 Scope-creep в рантайм — соблазн «заодно» тронуть QG_CHECKS/check_*/раннер Низ. Выс. AC-7/D7: docs+tests only; диф не меняет STAGE_TRANSITIONS/реестр-имена QG_CHECKS/machine-verdict/схему БД; нет нового раннера tester/deployer; ревью буквально
TR-7 Пере-/недо-классификация (LLM убран где нужно суждение / сохранён где не нужен) Низ. Сред. Класс выводится из осей D3 (двухбитный предикат), не «на глаз»; keep-LLM обязан назвать конкретное суждение; ревью карты против src/qg/checks.py
TR-8 Рассинхрон golden-source — карта/политика введены, README/overview/CHANGELOG не обновлены Сред. Сред. AC-8 (ось ORCH-079/011 → finding ≥P1); README-секция добавлена на стадии architecture; development досинхронизирует overview/CHANGELOG в том же PR
TR-9 Line-привязки file:line устаревают между анализом и реализацией Низ. Низ. Тест проверяет якоря по имени def (наличие в src/qg/checks.py), а не по номеру строки; номера в карте — справочные, обновляются разработчиком при материализации

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

Доминирующий класс — риски качества тестов и анти-дрейфа (TR-1/TR-2/TR-4), не рантайм-риски: задача физически не меняет поведение конвейера (STAGE_TRANSITIONS/QG_CHECKS/check_*/ machine-verdict/схема БД — байт-в-байт), не деплоит и не трогает прод (self-hosting безопасно, NFR-3), enduro-trails не затронут. Остаточный риск для прод-конвейера — пренебрежимо мал.

Эскалация arch:major-change не требуется (нет новой стадии/компонента/смены БД — это docs+tests-only задача по прецеденту ORCH-077/079/101/102/103/011). Возврат в анализ не требуется: ТЗ удовлетворяется без нарушения принципов архитектуры. Ключевой управляемый риск — не дать тестам выродиться в тривиальные (TR-1) и не словить false-positive транспорта (TR-2); оба сняты дизайном D5.