Files
orchestrator/docs/work-items/ORCH-044/10-tech-risks.md
claude-bot 8fb59cd87f
All checks were successful
CI / test (push) Successful in 13s
architect(ET): auto-commit from architect run_id=158
2026-06-06 07:57:07 +00:00

5.3 KiB
Raw Blame History

10 — Технические риски

Work Item: ORCH-044 Основано на: ADR-001

ID Риск Вероятн. Влияние Митигация
R-1 Ложноположительный auth-fail. Неверно резолвленный путь к .credentials.json (иной HOME/маунт) ⇒ preflight всегда FAIL ⇒ не клеймится ни одна job всех проектов (общая очередь, self-hosting). Средняя Высокое Единый источник HOME (AgentLauncher.AGENT_HOME, зеркально _claude_bin()); тумблер ORCH_PREFLIGHT_CHECK_AUTH=false; обязательная проверка на staging (реальный путь == резолвленный) перед прод-деплоем; информативный reason в /queue + warning-лог.
R-2 Fail-safe-провал на легитимном пустом выводе. Агент легитимно завершился exit 0 с непустым логом, но _validate_result ошибочно счёл результат невалидным ⇒ ложный failed/requeue (регрессия AC-13). Низкая Среднее Контракт извлечения JSON — тот же, что у работающего usage-учёта (_extract_last_json_object); регресс-тест TC-15 (валидный лог ⇒ done); валидатор не трогает успешный путь, кроме булева флага.
R-3 expiresAt без сетевой валидации. Реально отозванный, но ещё не истёкший по времени токен пройдёт проактивную проверку (a). Средняя Среднее Защитная сетка постфактум (b): маркер Not logged in в логе ⇒ error + preflight.reset_cache() ⇒ следующий тик переоценивает auth; полная сетевая валидация — вне scope (BR-1).
R-4 expiresAt отсутствует/нечисловой в файле (иная версия CLI / иной формат) ⇒ проверка трактует как OK и пропускает. Низкая Низкое Осознанный компромисс против ложных срабатываний (см. ADR §P1.5); отсутствие токена/accessToken по-прежнему ⇒ FAIL; постфактум-маркер ловит реальный «не залогинен».
R-5 Часовой рассинхрон контейнер vs токен ⇒ валидный токен сочтён истёкшим. Низкая Среднее ORCH_AUTH_EXPIRY_SKEW_SECONDS (default 0) для запаса; контейнеры на одном хосте (mva154) — рассинхрон маловероятен.
R-6 Транзиентный auth (битый JSON в момент записи re-login). Чтение файла во время атомарной перезаписи ⇒ временный FAIL. Низкая Низкое Кеш TTL сглаживает; следующий тик перечитает; fail-safe в сторону «подождать» (job остаётся queued, не теряется).
R-7 Конфликт test-plan с коррекцией scope. 04-test-plan.yaml TC-09/TC-10/TC-11 проверяют --effort (variant B: «--effort не формируется»), но владелец исключил effort из ORCH-044 и оставил дефолты agent_effort_* = high. При дефолтной тест-конфигурации _spawn сформирует --effort high ⇒ TC-09 (ожидающий отсутствие флага) упадёт. Высокая Среднее Developer/Tester: адаптировать TC-09/10/11 под «effort не трогаем» (assert успешной сборки cmd без требования удаления флага, либо пометить как deferred→ORCH-50). Артефакт 04-test-plan.yaml — чужой этап (правило №3), архитектор его НЕ редактирует, только фиксирует расхождение здесь. AC-7/AC-8/AC-9 не применяются (см. 03-acceptance-criteria.md §P2).
R-8 Постфактум auth-сброс кеша зацикливает. Повторные auth-провалы ⇒ повторные reset_cache(). Низкая Низкое reset_cache() лишь форсирует один пересчёт; следующий check() снова закеширует на TTL; цикла «горячего» чтения нет; job не клеймится при FAIL.

Сводно

Доминирующий риск — R-1 (блок очереди ложным auth-fail при неверном пути) и организационный R-7 (test-plan vs scope). Оба закрываются: R-1 — staging-проверкой + тумблером, R-7 — правкой effort-тестов разработчиком/тестером согласно коррекции владельца.