---
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=<id>` — админ-ручка возврата задачи в полный цикл
(`track → 'full'`), по образцу `POST /serial-gate/unfreeze`. Без новой инфраструктуры (тот же
FastAPI-приложение/порт). Read-only блок `bug_fast_track` добавляется в существующий `GET /queue`.
</content>
