6.6 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-120 | architecture | architect | proposed | 2026-06-17 | claude-opus-4-8 |
10 — Технические риски: ORCH-120 — Открытые вопросы аналитика → Needs Input
Work Item: ORCH-120 · Repo: orchestrator (self-hosting) · Стадия: architecture
Информационный (гейтом не парсится). Перечисляет риски реализации и их митигейшн.
Реестр рисков
| ID | Риск | Вер. | Влия. | Митигейшн |
|---|---|---|---|---|
| TR-1 | Связывание индикации (слой B) с осью планировщика при авто-park (DQ-1): непреднамеренный park из-за широкого/ошибочного триггера. | Низ. | Сред. | Триггер узкий — только переход аналитика в Needs Input в _handle_analysis_approved_flow, не общее «статус→пауза». Отдельный под-флаг analyst_needs_input_autopause_enabled (откат к operator-park). never-raise: сбой set_task_paused не отменяет Needs Input. Симметричный unpark на resume (D5) исключает «застрявшую паузу». |
| TR-2 | Хрупкость mtime-freshness (DQ-2): re-материализация worktree выставляет близкие mtime → ложный supersede (AC-1 ломается) или ложная активность (AC-6 ломается). | Низ. | Сред. | Полный прогон аналитика всегда пишет 4 deliverables свежим mtime → старый нетронутый 01-questions.md детерминированно старше (AC-6 устойчив). Сверка строгая (> для всех 4). Контракт промпта (D1): на resume с блокерами аналитик перезаписывает вопросы → свежий mtime (AC-1 устойчив). Fail-в-сторону-Needs-Input при ошибке getmtime на существующем файле. Покрыто TC-01/TC-06. |
| TR-3 | Регресс serial-gate (ORCH-088/124): неаккуратная интеграция паузы обходит freeze/deps или ломает анти-stale-base. | Низ. | Выс. | serial_gate.py/task_deps.py/stages.py кодом не трогаются — пауза уже ортогональна (ORCH-124: paused_at не читают оси freeze/deps/терминал). Анти-stale-base цел: нормальная задача paused_at IS NULL держит гейт; на resume свежесть базы дают существующие механизмы (отложенный срез / auto_rebase_onto_main). Снапшот-тест serial-gate + TC-04. |
| TR-4 | Бесконечная петля Needs Input при устаревшем 01-questions.md (если supersede не сработал). |
Низ. | Сред. | Детерминированный freshness supersede (DQ-2) + обязательный регресс TC-06 (полный пакет без свежих вопросов → In Review, не повторный Needs Input). Контракт промпта подкрепляет. |
| TR-5 | Застрявшая пауза на resume (task остаётся paused_at NOT NULL после ответа → семантика «активна, но помечена paused»). |
Низ. | Низ. | D5: clear_task_paused на analysis-resume ветке handle_status_start (под autopause-флагом + applies), идемпотентно/never-raise. Ручной fallback — POST /serial-gate/resume. Покрыто TC-05. |
| TR-6 | Нарушение never-raise новой логики (чтение файла/park/приоритет) роняет advance_stage/launcher → встаёт конвейер всех проектов (self-hosting). |
Низ. | Выс. | Все врезки в try/except с деградацией к прежнему поведению + WARNING (паттерн serial_gate/labels/cancel). set_task_paused/clear_task_paused уже never-raise (→ False). Покрыто TC-09. |
| TR-7 | Регресс enduro / нулевой-флаг (поведение отличается при выключенном kill-switch или вне self-hosting). | Низ. | Сред. | applies(repo) первым; off/out-of-scope → исходный порядок (files_ok первым + плоский isfile) байт-в-байт. enduro-аналитик 01-questions.md не эмитит. Покрыто TC-10 + снапшот TC-11. |
| TR-8 | Дрейф промпта (контракт вопросов не задокументирован или сломан канон 52d). | Низ. | Низ. | Анти-дрейф tests/test_agent_prompts_canon.py (5 секций, 6 полей, без model:) + новый assert наличия контракта вопросов (TC-07); канон артефакта — TC-08. |
Сводный вывод
Доминирующий класс — корректность интеграции с serial-gate (ORCH-088/124) и never-raise на self-hosting горячем пути (TR-3/TR-6: высокое влияние, низкая вероятность). Оба полностью структурно нейтрализованы: serial-gate кодом не трогается (пауза уже ортогональна), все врезки изолированы и деградируют к прежнему поведению. Остальные риски — низкого влияния и покрыты обязательными регресс-тестами (TC-01/TC-04/TC-05/TC-06/TC-09/TC-10).
Остаточный риск для прод-конвейера (self-hosting) — низкий: изменение аддитивно, под тремя
флагами с безопасными дефолтами (байт-в-байт откат), не деплоит / не рестартит прод / не пушит в
main / не трогает detached-процессы (NFR-4). Эскалация arch:major-change не требуется
(нет новой стадии/QG/компонента/смены БД); возврат в анализ не требуется (ТЗ удовлетворимо без
нарушения принципов архитектуры).