# 07 — Требования к инфраструктуре — ORCH-053 Work Item ID: ORCH-053 ## Топология **Без изменений.** Новых контейнеров/портов/сервисов нет. Reconciler — фоновый daemon-поток **внутри** существующего процесса orchestrator (как `queue_worker`). Стартует/останавливается в `main.lifespan`. Деплой ORCH-053 — строго через staging-гейт (8501) перед прод-деплоем (self-hosting, см. `docs/operations/INFRA.md`). ## Новые переменные окружения (`.env` / `.env.staging` на хосте, префикс `ORCH_`) | Env | Поле `Settings` | Дефолт | Назначение | |-----|-----------------|--------|-----------| | `ORCH_RECONCILE_ENABLED` | `reconcile_enabled` | `true` | **Kill-switch** всего sweeper'а (self-hosting safety, поэтапный раскат, аварийное отключение). | | `ORCH_RECONCILE_INTERVAL_S` | `reconcile_interval_s` | `120` | Период фонового прохода (сек). | | `ORCH_RECONCILE_PLANE_ENABLED` | `reconcile_plane_enabled` | `true` | Отдельный флаг F-2 (опрос Plane API); `false` гасит только plane-ветку, F-1 работает. | | `ORCH_RECONCILE_GRACE_DEFAULT_S` | `reconcile_grace_default_s` | `600` | Дефолтный порог «застревания» по `tasks.updated_at` / `issue.updated_at`. | | `ORCH_RECONCILE_GRACE_OVERRIDES_JSON` | `reconcile_grace_overrides_json` | `""` | Per-stage пороги, напр. `{"analysis":1800,"development":300,"deploy":900}`. Невалидный JSON → дефолт (never-raise). | | `ORCH_RECONCILE_NOTIFY_UNBLOCK` | `reconcile_notify_unblock` | `true` | Telegram при разблокировке (F-4). | Секреты не добавляются. `.env.example` (канон) обновляется в PR реализации. ## Нагрузка / сеть - **Plane API (F-2):** GET issues per-project каждые `reconcile_interval_s`, с фильтром по статусам (In Progress / Approved / Rejected) и пагинацией. Митигация нагрузки — интервал (120с), фильтр, per-project, never-raise (Plane outage → `[]`, тик не падает). `get_project_states` уже кэширует state-uuid per-project. - **Gitea API (F-1):** только косвенно — внутри переоценки гейтов (`check_ci_green` и т.п.), которые и так вызываются webhook-путём. Дополнительных постоянных вызовов reconciler не вносит сверх момента реальной разблокировки. - **CPU/RAM:** один спящий daemon-поток; всплеск только при наличии застрявших задач. ## Self-hosting - Reconciler **не** рестартит/не роняет прод-контейнер `orchestrator` (8500), обслуживающий все проекты с общей БД. - `docs/operations/INFRA.md` дополняется упоминанием kill-switch `ORCH_RECONCILE_ENABLED` (выполняется в PR реализации, §9 ТЗ). - Раскат: при первом деплое допустимо стартовать с `ORCH_RECONCILE_PLANE_ENABLED=false` (только F-1, минимальный риск), затем включить F-2. ## Конфиги/деплой Дополнительных томов, портов, healthcheck'ов, изменений `docker-compose`/Dockerfile **не требуется**.