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

4.7 KiB
Raw Blame History

work_item, stage, author_agent, status, created_at, model_used
work_item stage author_agent status created_at model_used
ORCH-063 architecture architect proposed 2026-06-09 claude-opus-4-8

07 — Инфра-требования: ORCH-063 — мониторинг диска mva154 + алерт при ≥85%

Work Item: ORCH-063 · Repo: orchestrator (self-hosting) · Стадия: architecture

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

Топология не меняется. Watchdog работает внутри существующего контейнера orchestrator (8500, network_mode: host) и опирается на уже существующие bind-mount'ы host-разделов:

  • /home/slin/repos → /repos (рабочие репозитории, git-worktree /repos/_wt/...);
  • ./data → /app/data (SQLite БД).

Именно эта host-ФС переполнилась 07.06. Замер ведётся по смонтированным путям /repos, /app/data (shutil.disk_usage), что отражает хост-раздел, а не overlay / контейнера (NFR-3/AC-8). Новых контейнеров/портов/томов/сетей не требуется. Тот же демон автоматически работает и в staging-инстансе (8501) — на собственной Ф С/путях, без отдельной настройки.

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

Новые env (дескрипторы — в .env.example; без секретов):

Env Дефолт Назначение
ORCH_DISK_MONITOR_ENABLED true kill-switch (false → демон не стартует, нулевая регрессия).
ORCH_DISK_MONITOR_INTERVAL_S 300 период heartbeat-замера, сек.
ORCH_DISK_MONITOR_THRESHOLD_PCT 85 порог заполнения для алерта.
ORCH_DISK_MONITOR_REALERT_S 21600 cooldown повторного алерта выше порога (~6 ч).
ORCH_DISK_MONITOR_PATHS /repos,/app/data CSV отслеживаемых host-путей.

Telegram-доставка использует существующие секреты send_telegram (ORCH_TELEGRAM_* / .env) — новых секретов не вводится. Дефолты пригодны для прода без обязательной правки .env (env опциональны — все имеют значения по умолчанию в config.py).

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

  • Изменение не требует специальной инфра-процедуры сверх штатного self-hosting-деплоя (staging 8501 → прод 8500 через Confirm Deploy, ORCH-059/036).
  • Self-hosting инвариант соблюдён: watchdog только читает заполнение и шлёт уведомление — не рестартит/не роняет прод-контейнер, не выполняет действий над диском (NFR-6). Безопасен для enduro-trails в общем инстансе.
  • Демон стартует/останавливается автоматически в main.lifespan (ручной запуск не нужен, AC-1/AC-8).

Реакция оператора на алерт (runbook-минимум)

При получении Telegram-алерта «Диск mva154 ≥ порога»:

  1. Зайти на хост (slin@82.22.50.71), проверить df -h /home/slin/repos.
  2. Освободить место (кандидаты — порядок ручной очистки): прунинг старых git-worktree /home/slin/repos/_wt/* завершённых задач; docker image prune / docker builder prune; ротация/удаление старых логов. Авто-очистка — вне объёма ORCH-063 (отдельная задача).
  3. Дождаться recovery-сообщения «диск ниже порога» (приходит однократно при возврате под порог).

Развёрнутый раздел про disk-watchdog (что мониторится, порог, как отключить ORCH_DISK_MONITOR_ENABLED, реакция на алерт) добавляется в docs/operations/INFRA.md на стадии development (TRZ §9, AC-9).

I-4. CI/CD

Без изменений .gitea/workflows/. Новый код покрывается существующим pytest tests/ (юнит-тесты pure-логики decide_action/measure_paths/format_* + изоляция never-raise — TRZ/AC-3/AC-6).