feat(replication): ORCH-10b Bundled-тираж — весь стек одним комплектом + bootstrap (ORCH-103) #124

Merged
admin merged 8 commits from feature/ORCH-103-orch-10b-bundled-bootstrap into main 2026-06-11 02:22:42 +03:00
Owner

ORCH-103 — ORCH-10b Bundled-тираж: весь стек одним комплектом + bootstrap-скрипт

Закрывает Type B эпика ORCH-10 (поверх 10-common ORCH-101 и канона Lite ORCH-102). Реализация по docs/work-items/ORCH-103/06-adr/ADR-001-bundled-stack-compose-and-bootstrap.md (D1–D11), сквозной adr-0038-bundled-replication-canon.md.

Состав

  • deploy/bundled/docker-compose.yml — самодостаточный compose всего стека: орк + watchdog + Gitea 1.22.6 + зеркало upstream Plane CE v0.23.1 (~14 контейнеров). Project name orchestrator-bundle (узнаваемый префикс томов), container_name не пиннится, staging-контура нет; одна bridge-сеть, машинный трафик — сервис-DNS, наружу только человеческие порты (BUNDLE_*); GITEA__webhook__ALLOWED_HOST_LIST=orchestrator; все сторонние образы пиннованы неподвижными тегами (NFR-6).
  • deploy/bundled/.env.example — конфиг-канон bundle: только плейсхолдеры, ни одного дефолтного пароля; key-set-sync интерполяций держит тест.
  • scripts/bootstrap_bundle.py — python stdlib-only, plan (дефолт) / apply / verify, step-движок check→ensure, exit 0/2/1: preflight → секреты (webhook — строго gen_secrets.py; bundle-креды — stdlib secrets) → up+готовность → init Gitea автоматом → init Plane (честные manual-step с API-верификацией) → онбординг строго onboard_project.py apply+verify → git-доступ агентов token-remote → сборка корневых .env/.env.watchdog → health. Delete-операций нет вообще (D9); секреты не печатаются (NFR-3).
  • docs/deployment/BUNDLED_SETUP.md — golden source, 14 разделов канона LITE_SETUP; общие шаги — ссылками (LITE_SETUP §7–§8, ONBOARDING, REPLICATION §4).
  • Анти-дрейф (D11): tests/test_bundle_compose.py, tests/test_bundled_setup_doc.py, tests/test_bootstrap_script.py — структурные, без docker/сети/LLM.
  • Перекрёстные доки: REPLICATION §1 (Type B → ), arch README, CLAUDE.md, CHANGELOG, .gitignore (deploy/bundled/repos/).

Инварианты (AC-6)

src/**, корневой docker-compose.yml, Dockerfile, .gitea/workflows/** — байт-в-байт; STAGE_TRANSITIONS/QG_CHECKS/machine-verdict/схема БД не тронуты. Kill-switch не нужен: артефакты инертны в нашем контуре, активация — только явный запуск оператором на целевом хосте (паттерн ORCH-009/102).

Проверки

  • pytest tests/ -q1844 passed (включая существующие анти-дрейф test_lite_setup_doc.py, test_no_host_hardcodes.py без правки их ассертов — AC-5).
  • ruff check по файлам задачи — чистый.
  • Ручная приёмка AC-1/AC-2/AC-3/AC-8 (e2e-подъём на чистом хосте) — по чек-листу BUNDLED_SETUP §11 (REPLICATION §4), вне CI по построению.

Refs: ORCH-103

🤖 Generated with Claude Code

## ORCH-103 — ORCH-10b Bundled-тираж: весь стек одним комплектом + bootstrap-скрипт Закрывает **Type B** эпика ORCH-10 (поверх 10-common ORCH-101 и канона Lite ORCH-102). Реализация по `docs/work-items/ORCH-103/06-adr/ADR-001-bundled-stack-compose-and-bootstrap.md` (D1–D11), сквозной `adr-0038-bundled-replication-canon.md`. ### Состав - **`deploy/bundled/docker-compose.yml`** — самодостаточный compose всего стека: орк + watchdog + Gitea 1.22.6 + зеркало upstream Plane CE v0.23.1 (~14 контейнеров). Project name `orchestrator-bundle` (узнаваемый префикс томов), `container_name` не пиннится, staging-контура нет; одна bridge-сеть, машинный трафик — сервис-DNS, наружу только человеческие порты (`BUNDLE_*`); `GITEA__webhook__ALLOWED_HOST_LIST=orchestrator`; все сторонние образы пиннованы неподвижными тегами (NFR-6). - **`deploy/bundled/.env.example`** — конфиг-канон bundle: только плейсхолдеры, ни одного дефолтного пароля; key-set-sync интерполяций держит тест. - **`scripts/bootstrap_bundle.py`** — python stdlib-only, `plan` (дефолт) / `apply` / `verify`, step-движок check→ensure, exit 0/2/1: preflight → секреты (webhook — строго `gen_secrets.py`; bundle-креды — stdlib `secrets`) → up+готовность → init Gitea автоматом → init Plane (честные manual-step с API-верификацией) → онбординг строго `onboard_project.py apply+verify` → git-доступ агентов token-remote → сборка корневых `.env`/`.env.watchdog` → health. Delete-операций нет вообще (D9); секреты не печатаются (NFR-3). - **`docs/deployment/BUNDLED_SETUP.md`** — golden source, 14 разделов канона LITE_SETUP; общие шаги — ссылками (LITE_SETUP §7–§8, ONBOARDING, REPLICATION §4). - **Анти-дрейф (D11):** `tests/test_bundle_compose.py`, `tests/test_bundled_setup_doc.py`, `tests/test_bootstrap_script.py` — структурные, без docker/сети/LLM. - **Перекрёстные доки:** REPLICATION §1 (Type B → ✅), arch README, CLAUDE.md, CHANGELOG, `.gitignore` (`deploy/bundled/repos/`). ### Инварианты (AC-6) `src/**`, корневой `docker-compose.yml`, `Dockerfile`, `.gitea/workflows/**` — байт-в-байт; `STAGE_TRANSITIONS`/`QG_CHECKS`/machine-verdict/схема БД не тронуты. Kill-switch не нужен: артефакты инертны в нашем контуре, активация — только явный запуск оператором на целевом хосте (паттерн ORCH-009/102). ### Проверки - `pytest tests/ -q` — **1844 passed** (включая существующие анти-дрейф `test_lite_setup_doc.py`, `test_no_host_hardcodes.py` без правки их ассертов — AC-5). - `ruff check` по файлам задачи — чистый. - Ручная приёмка AC-1/AC-2/AC-3/AC-8 (e2e-подъём на чистом хосте) — по чек-листу BUNDLED_SETUP §11 (REPLICATION §4), вне CI по построению. Refs: ORCH-103 🤖 Generated with [Claude Code](https://claude.com/claude-code)
admin changed title from feat: ORCH-103-orch-10b-bundled-bootstrap to feat(replication): ORCH-10b Bundled-тираж — весь стек одним комплектом + bootstrap (ORCH-103) 2026-06-11 02:02:25 +03:00
admin added 7 commits 2026-06-11 02:16:33 +03:00
Закрывает Type B эпика ORCH-10 (по ADR-001 ORCH-103, D1–D11):

- deploy/bundled/docker-compose.yml — самодостаточный compose всего стека
  (орк + watchdog + Gitea 1.22.6 + зеркало upstream Plane CE v0.23.1,
  ~14 контейнеров); project name orchestrator-bundle (узнаваемый префикс),
  container_name не пиннится, staging-контура нет; одна bridge-сеть,
  машинный трафик — сервис-DNS, наружу только человеческие порты;
  GITEA__webhook__ALLOWED_HOST_LIST=orchestrator; все образы пиннованы
  неподвижными тегами. Корневой compose/Dockerfile/src/** — байт-в-байт.
- deploy/bundled/.env.example — конфиг-канон bundle (плейсхолдеры, ни одного
  дефолтного пароля; key-set-sync интерполяций держит тест).
- scripts/bootstrap_bundle.py — python stdlib-only, режимы plan/apply/verify,
  step-движок check→ensure, exit 0/2/1: preflight (fail-fast до мутаций) →
  секреты (gen_secrets.py + stdlib secrets, без перетирания) → up+готовность →
  init Gitea автоматом → init Plane (manual-step с API-верификацией) →
  онбординг строго onboard_project.py apply+verify → token-remote клон →
  сборка .env/.env.watchdog (единственный писатель, права 600) → health.
  Delete-операций нет вообще (D9), секреты не печатаются (NFR-3).
- CHANGELOG.md, CLAUDE.md (абзац Type B), .gitignore (deploy/bundled/repos/).

Док BUNDLED_SETUP.md, REPLICATION §1, arch README, adr-0038 и три структурных
тест-модуля (TC-01…TC-11) — в предыдущих коммитах ветки; полный регресс
1844 passed, ruff по файлам задачи чистый.

Refs: ORCH-103

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tester(ET): auto-commit from tester run_id=630
All checks were successful
CI / test (push) Successful in 57s
CI / test (pull_request) Successful in 1m1s
6e17f33be4
admin force-pushed feature/ORCH-103-orch-10b-bundled-bootstrap from 0db3581f1b to 6e17f33be4 2026-06-11 02:16:33 +03:00 Compare
admin merged commit 2c72a889b6 into main 2026-06-11 02:22:42 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/orchestrator#124