Files
orchestrator/docs/work-items/ORCH-077/10-tech-risks.md
claude-bot 114c25b787
All checks were successful
CI / test (push) Successful in 31s
architect(ET): auto-commit from architect run_id=460
2026-06-09 14:48:03 +03:00

6.1 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-077 architecture architect ready-for-review 2026-06-09 claude-opus-4-8

10 — Технические риски: ORCH-077 — ORCH-52d: оптимизация 6 системных промптов по Anthropic

Work Item: ORCH-077 · Repo: orchestrator (self-hosting) · Стадия: architecture

Информационный (гейтом не парсится). Перечисляет риски реализации и митигейшн. Главный класс риска — анти-регресс поведения агента прода: промпт исполняется на КАЖДОЙ задаче ВСЕХ проектов (orchestrator + enduro-trails) из общего инстанса.

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

ID Риск Вер. Влия. Митигейшн
TR-1 Регресс поведения агента: при рефакторе формы потеряна рабочая инструкция → агент ломает выход для всех проектов Сред. Выс. Построчная карта переноса (ADR D5) + структурные тесты test_agent_prompts_canon.py + построчный review против инвентаря TRZ §FR-6; in-vivo A/B (D6)
TR-2 Ложный гейт-провал: случайно изменён регистр/имя/значения machine-verdict ключа (verdict:/result:/staging_status:/deploy_status:/security_status:) → парсер не находит вердикт Низ. Выс. Эмиссия схемы строго аддитивна (ADR D2); структурный тест проверяет точный регистр ключей и значений; frontmatter.parse_frontmatter читает по имени (порядок неважен)
TR-3 Потеря self-hosting-запрета deployer'а: пропал «не рестартить 8500 изнутри» / canonical docker exec orchestrator-staging / merge-guard pr_already_merged → агент роняет прод-конвейер всех проектов Низ. Крит. deployer — самый строгий инвентарь §FR-6; отдельные структурные ассерты на 3 маркера; reviewer проверяет deployer построчно в первую очередь
TR-4 Раздувание промпта: XML-канон + few-shot «утопят» ключевые запреты, агент их проигнорирует Сред. Сред. Эталоны ссылкой, не инлайном (D3); контроль объёма (NFR-4); запреты — компактным списком в <constraints>
TR-5 Некорректный model_used: захардкожена неверная модель вместо резолва ORCH-41 Низ. Низ. Промпт ссылается на резолв ORCH-41 и таблицу README; текущее значение claude-opus-4-8 для всех ролей; информационное поле (не гейт)
TR-6 Сломан frontmatter промпта: правка тела случайно затронула YAML-шапку (name/description/tools) или вернула model: Низ. Сред. test_agent_frontmatter_no_model.py остаётся зелёным (FR-7); правится только тело ниже frontmatter
TR-7 In-vivo самоприменение (D6): дефект нового промпта влияет на reviewer/tester самой ORCH-077 Низ. Сред. Вердикт-логика гейтов читается кодом из frontmatter, не зависит от текста промпта; анти-регресс D5; откат git revert
TR-8 Расползание scope в код: соблазн «заодно» включить frontmatter_validation_strict или тронуть src/ Низ. Выс. AC-5 (git diff только .openclaw/*, docs/**, CHANGELOG.md, новые tests/test_*); ADR D7 фиксирует границу; reviewer проверяет diff
TR-9 Несогласованность status с machine-verdict: например status: ready при verdict: REQUEST_CHANGES → путаница наблюдателя Низ. Низ. Карта ADR D2 предписывает status, согласованный с вердиктом для вердикт-ролей; информационное поле, гейт не зависит

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

Доминирующий класс — анти-регресс поведения агентов прода (TR-1/TR-3), критичный из-за self-hosting и общего инстанса. Изменение при этом docs/prompts-only, чисто текстовое, обратимое git revert без миграций; loading-model (cat промпта из worktree, ADR D6) исключает прод-рестарт → выкатка не несёт классического self-hosting-риска рестарта.

Эскалация arch:major-change НЕ требуется: новых стадий/компонентов/QG/смены БД нет; STAGE_TRANSITIONS/QG_CHECKS/check_*/схема БД не трогаются (BR-5). Возврат в анализ НЕ требуется: ТЗ выполнимо в рамках принципов архитектуры.

Остаточный риск для прод-конвейера — низкий при соблюдении D5 (построчная карта + структурные тесты + приоритетный review deployer/reviewer). Ключевое предписание исполнителю: рефакторить форму без потери ни одной функциональной строки; при сомнении «перенести или выбросить» — переносить.