--- work_item: ORCH-019 stage: architecture author_agent: architect status: proposed created_at: 2026-06-10 model_used: claude-opus-4-8 --- # 07 — Инфраструктурные требования (Infra Requirements): ORCH-019 — Багфикс-трек Work Item: **ORCH-019** · Repo: **orchestrator** · Стадия: architecture > **Топология не меняется.** Один прод-контейнер `orchestrator` (8500) + staging (8501) на mva154, > общая SQLite-БД. ORCH-019 — чисто прикладное изменение под флагом. Этот документ фиксирует > **предусловия включения** (Plane-метка + env-флаги), не новую инфраструктуру. --- ## 1. Предусловие: метка `Bug` в Plane-проекте (блокирующее для активации) Багфикс-трек активируется по метке Plane с именем `bug_fast_track_label` (дефолт `Bug`), читаемой аппаратом ORCH-089 (`fetch_issue_labels`/`get_project_labels`). **Метка должна существовать** в Plane-проекте orchestrator (и в любом проекте, добавленном в `bug_fast_track_repos`). - Её **отсутствие = fail-safe полный цикл** (`has_label → False`), не сбой. Включение флага без заведённой метки безопасно, но эффекта не даёт. - Создаётся оператором в Plane вручную (как `autoApprove`/`autoDeploy` для ORCH-089). ## 2. Конфигурация (env-флаги, `src/config.py`) | Флаг | Env | Дефолт | Назначение | |------|-----|--------|-----------| | `bug_fast_track_enabled` | `ORCH_BUG_FAST_TRACK_ENABLED` | `False` | kill-switch; `False` → путь старта/маршрут строго прежние (нулевая регрессия) | | `bug_fast_track_label` | `ORCH_BUG_FAST_TRACK_LABEL` | `Bug` | имя метки Plane для распознавания бага | | `bug_fast_track_repos` | `ORCH_BUG_FAST_TRACK_REPOS` | `""` (пусто) | CSV-область; пусто → **self-hosting only** (`orchestrator`) | > Рекомендация выката: `enabled=False` до момента, когда метка `Bug` заведена в Plane и проведён > staging-прогон. Дефолт области (пустой CSV) = self-hosting only → enduro не затронут даже при > включённом флаге. ## 3. Зависимости / образ - **Новых pip-зависимостей нет.** Переиспользуются существующие `httpx`/`plane_sync` (label-чтение) и `sqlite3` (колонка `tasks.track`). Пересборка образа из-за зависимостей не требуется. - **Миграция БД** (`tasks.track`) применяется идемпотентно при старте приложения (`_ensure_column`) — без ручного шага, без даунтайма (ALTER ADD COLUMN на SQLite — мгновенный). ## 4. Self-hosting безопасность (NFR-6) - Механизм **не** рестартит/не роняет прод-контейнер, **не** пушит/force-push в `main`. Это routing-решение планировщика + аддитивная колонка + read-only наблюдаемость. - Выкат самого ORCH-019 на прод орка идёт штатным конвейером через обязательный `deploy-staging` (8501) → `Confirm Deploy` (ORCH-059). Топология/процедура — `docs/operations/INFRA.md`. ## 5. Новый эндпоинт (эскалация) `POST /bug-fast-track/escalate?work_item=` — админ-ручка возврата задачи в полный цикл (`track → 'full'`), по образцу `POST /serial-gate/unfreeze`. Без новой инфраструктуры (тот же FastAPI-приложение/порт). Read-only блок `bug_fast_track` добавляется в существующий `GET /queue`.