Files
orchestrator/docs/work-items/ORCH-090/07-infra-requirements.md

3.3 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-090 architecture architect proposed 2026-06-09 claude-opus-4-8

07 — Инфра-требования: ORCH-090 — Механизм отмены задачи (STOP)

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

I-1. Топология / окружения

Без изменения топологии. Тот же прод-контейнер orchestrator (8500) и staging (8501), та же общая SQLite-БД и очередь. STOP — обработка вебхука внутри существующего сервиса; новых контейнеров/портов/томов/сетей нет.

Инфра-предусловие (обязательно): на доске Plane проекта ORCH создать статус «STOP» с группой cancelled (а не started/unstarted). Группа cancelled обеспечивает нативный терминал-скип реконсилятора (_is_terminal_state, ORCH-068/086) без доп-кода. До создания статуса фича в fail-safe: get_project_states(...).get("stop")None → ветка STOP не активируется (нет KeyError, ничего не ломается). После создания — сбросить кэш состояний (reload_project_states) или дождаться TTL ORCH_PLANE_STATES_TTL_S (дефолт 300с).

Для enduro-trails статус STOP не обязателен: stop отсутствует в _DEFAULT_STATES (fail-closed), отмена для enduro станет доступна только при создании статуса на их доске.

I-2. Переменные окружения / секреты

Новые env (в .env.example, аддитивно; секретов нет):

  • ORCH_STOP_STATUS_ENABLED — kill-switch фичи (дефолт true).
  • ORCH_STOP_STATUS_REPOS — CSV области репо (дефолт пусто → все репо).

Существующие переиспользуются: ORCH_AGENT_KILL_GRACE_SECONDS (graceful kill), Gitea-токен (delete_remote_branch), Telegram-токен (алерт). Новых секретов нет.

I-3. Деплой / рестарт

Прод-деплой орка — обязательно через staging-гейт (8501) перед deploy (self-hosting инвариант, INFRA.md). STOP-обработчик сам никогда не рестартит/не роняет прод-контейнер и не трогает main (NFR-3): при STOP во время self-deploy критичный detached-шаг не прерывается — отмена откладывается до его честного завершения (ADR-001 D7). Раскат — поэтапно через stop_status_repos при необходимости; дефолт «все репо».

I-4. CI/CD

Без изменений .gitea/workflows/. Добавляются только pytest-тесты (tests/, см. 04-test-plan.yaml): STOP-каскад, запрет авто-requeue, терминал-скип, закрытие дыры релонча, kill-switch, аддитивность миграций.