3.3 KiB
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, аддитивность миграций.