Files
orchestrator/docs/work-items/ORCH-104/07-infra-requirements.md
claude-bot 302a891aff
All checks were successful
CI / test (push) Successful in 59s
architect(ET): auto-commit from architect run_id=639
2026-06-11 20:42:39 +03:00

5.2 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-104 architecture architect proposed 2026-06-11 claude-opus-4-8

07 — Инфра-требования: ORCH-104 — Установочный скрипт Lite-тиража (интерактивный installer)

Work Item: ORCH-104 · Repo: orchestrator · Стадия: architecture

When-applicable: топология нашего прода не меняется — файл создан для аудитопригодности с явными N/A и фиксацией предусловий целевого хоста заказчика (на котором скрипт исполняется). Решения — 06-adr/ADR-001-setup-lite-interactive-installer.md.

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

  • Наш прод/staging (mva154): N/A — задача scripts+docs+tests; контейнеры, порты, сеть, тома, compose-файлы не меняются. В нашем контуре скрипт инертен (активация — только явный запуск человеком; запуска на mva154 не предполагается вовсе).
  • Целевой хост заказчика (где скрипт работает): контур Lite без изменений — Linux x86_64, Docker Engine + Compose v2, git, python3, node (LITE_SETUP §2). Скрипт сам сканирует эти предусловия и предлагает доустановить недостающее (per-package consent, ADR D4); результат установки — ровно базовый Lite-контур: orchestrator + orchestrator-watchdog (orchestrator-staging НЕ поднимается — строго за profiles: [staging]).
  • Discovery-предположение: Plane/Gitea заказчика обнаруживаются только как docker-инсталляции локального хоста (image-префиксы makeplane/*, gitea/gitea*, docker.gitea.com/gitea* — ADR D5); native/k8s-инсталляции — честный ручной ввод URL (не FAIL). Сетевая достижимость Plane/Gitea с хоста оркестратора — предусловие заказчика (BRD §6).

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

  • Новых ключей Settings/.env.example/.env.watchdog.example НЕТ (TRZ §8) — каноны только читаются как шаблоны рендера.
  • Скрипт пишет целевые .env/.env.watchdog на хосте заказчика: от канонов-example, права 600, первая строка — маркер managed-файла # managed by scripts/setup_lite.py (ORCH-104) (ADR D6: немаркированный существующий файл → отказ exit 2 без --force).
  • Секреты: webhook-секреты — только свежий выпуск кирпичом gen_secrets.py (субпроцесс); внешние токены (Plane/Gitea/Telegram ×2) — скрытый ввод оператора с немедленной верификацией; значения нигде не печатаются и не логируются (NFR-3). Боевые секреты исходного хоста не используются даже как подсказки-дефолты (stateless, LITE_SETUP §12).
  • Headless-prefill: переменные окружения процесса с каноническими именами ключей + явный --yes (ADR D10); answers-file не вводится.

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

  • Рестарт нашего прод-контейнера НЕ требуется и не выполняется (self-hosting инвариант): изменение — файлы scripts/ + tests/ + docs; выкат задачи — штатный конвейер (deploy-staging 8501 → Confirm Deploy).
  • На хосте заказчика скрипт выполняет docker compose up -d --build и управляемый --force-recreate orchestrator только собственного свежеподнятого контура, после проверки тихого окна GET /queue (ADR D11); чужие/уже бегущие контейнеры не трогаются без согласия (NFR-7); delete-операций нет вообще.

I-4. CI/CD

  • .gitea/workflows/без изменений. Новый структурный/unit тест-модуль tests/test_setup_lite_script.py + аддитивный тест в tests/test_lite_setup_doc.py попадают в существующий прогон pytest tests/ -q (детерминированы: без TTY/сети/docker — инжектируемый I/O, моки, tmp_path; NFR-5).
  • Инфра-предусловий прод-образа нет (скрипт не входит в рантайм-контейнер как зависимость; pip-зависимости не добавляются — stdlib-only).