docs(deployment): ORCH-102 — ORCH-10a Lite-тираж (LITE_SETUP + watchdog-канон + анти-дрейф) #123

Merged
admin merged 7 commits from feature/ORCH-102-orch-10a-lite-watchdog into main 2026-06-11 00:48:30 +03:00
Owner

ORCH-102 — ORCH-10a Lite-тираж: перенос орк+watchdog + полная инструкция донастройки окружения

Закрывает Type A эпика ORCH-10 (поверх фундамента 10-common ORCH-101). Docs+tests (паттерн ORCH-077/092): src/** / docker-compose.yml / Dockerfile / scripts/** — ноль изменений; конвейер (STAGE_TRANSITIONS/QG_CHECKS/check_*/machine-verdict/схема БД) — байт-в-байт.

Состав (по ADR-001, D1–D9)

  • docs/deployment/LITE_SETUP.md (D1/D2) — golden source Lite-тиража: 13 нормативных разделов в порядке маршрута оператора («голый хост → работающий конвейер»); каждый шаг = fenced-команда + явная «Проверка:»/PASS/FAIL; хост-специфика только плейсхолдерами <...>/$ENV_VAR; канон не форкается (ссылки на ONBOARDING §1 / REPLICATION §2–§4 / SETUP_WEBHOOKS; явно — fail-closed Confirm Deploy/STOP и обязательные ключи нового хоста); траблшутинг ×7 (симптом → диагностика → лечение).
  • .env.watchdog.example (D5, исход А-4) — третий канонический env-example: key-set = блок WATCHDOG_* .env.example (19 ключей; токены — пустые плейсхолдеры); закрывает ловушку файла-носителя (sidecar читает ТОЛЬКО .env.watchdog); шапка несёт C-1 ORCH-100 и когерентность порта.
  • tests/test_lite_setup_doc.py (D8) — 25 структурных тестов (без сети/LLM/subprocess): 13 разделов в порядке D2; кирпичи FR-6.1; key-sync watchdog-канона (TC-02b); env-ключи ⊂ .env.example (TC-03); compose-подмножество — ровно орк+watchdog по дефолту, staging строго за profiles: [staging], анти-появление plane*/gitea* (TC-04); fenced-скан FORBIDDEN (импорт из test_no_host_hardcodes.py — один источник истины) + секрет-эвристика с негативным самочеком (TC-05); «22 статуса» сверкой импорта plane_sync._PLANE_NAME_TO_KEY (TC-06); инварианты Gitea-раздела (TC-07); перекрёстность (TC-08).
  • Перекрёстные доки (FR-7): REPLICATION.md §1 (строка Type A — Lite → ORCH-102 + ссылка), README.md (способность Lite + docs/deployment/ в структуре), INFRA.md, CLAUDE.md, CHANGELOG.md.

Нормативы (исходы вопросов ТЗ §3.8)

  • А-1 (D3): branch protection на main НЕ включать (ADR D10 ORCH-009 / INV-4); pre-receive не вводится; симптом «PR не мержится/HOLD» — в траблшутинге.
  • А-2 (D4): compose НЕ форкается — свойство подмножества держит тест.
  • А-5 (D6): staging-вилка опциональна (только под self-hosting развитие платформы).
  • А-6 (D7): источник кода — параметризованный git clone <ORCHESTRATOR_GIT_URL>.

Отклонение от заявленного диффа (флаг для reviewer)

.gitignore +2 строки: .env.watchdog (зеркало .env.staging). Не входит в перечень D9, но механически закрепляет норматив D5 «DO NOT COMMIT реальный .env.watchdog» (NFR-3, секрет-гигиена). Откат тривиален.

Проверки

  • pytest tests/ -q1789 passed (полный регресс; новые 25 тестов зелёные; существующие структурные тесты не ослаблялись).
  • ruff в окружении/CI отсутствует (CI-гейт — pytest); новый код — только тест-модуль.
  • Скан боевых литералов по новым артефактам — чисто.

Приёмка AC-4 (smoke-прогон)

Процедурная (TC-09): исполняет tester на staging-песочнице (8501 + sandbox-проект), протокол — 13-test-report.md/15-staging-log.md. В этот PR не входит.

Refs: ORCH-102

🤖 Generated with Claude Code

## ORCH-102 — ORCH-10a Lite-тираж: перенос орк+watchdog + полная инструкция донастройки окружения Закрывает **Type A** эпика ORCH-10 (поверх фундамента 10-common ORCH-101). **Docs+tests** (паттерн ORCH-077/092): `src/**` / `docker-compose.yml` / `Dockerfile` / `scripts/**` — ноль изменений; конвейер (`STAGE_TRANSITIONS`/`QG_CHECKS`/`check_*`/machine-verdict/схема БД) — байт-в-байт. ### Состав (по ADR-001, D1–D9) - **`docs/deployment/LITE_SETUP.md`** (D1/D2) — golden source Lite-тиража: 13 нормативных разделов в порядке маршрута оператора («голый хост → работающий конвейер»); каждый шаг = fenced-команда + явная «Проверка:»/PASS/FAIL; хост-специфика только плейсхолдерами `<...>`/`$ENV_VAR`; канон не форкается (ссылки на ONBOARDING §1 / REPLICATION §2–§4 / SETUP_WEBHOOKS; явно — fail-closed `Confirm Deploy`/`STOP` и обязательные ключи нового хоста); траблшутинг ×7 (симптом → диагностика → лечение). - **`.env.watchdog.example`** (D5, исход А-4) — третий канонический env-example: key-set = блок `WATCHDOG_*` `.env.example` (19 ключей; токены — пустые плейсхолдеры); закрывает ловушку файла-носителя (sidecar читает ТОЛЬКО `.env.watchdog`); шапка несёт C-1 ORCH-100 и когерентность порта. - **`tests/test_lite_setup_doc.py`** (D8) — 25 структурных тестов (без сети/LLM/subprocess): 13 разделов в порядке D2; кирпичи FR-6.1; key-sync watchdog-канона (TC-02b); env-ключи ⊂ `.env.example` (TC-03); compose-подмножество — ровно орк+watchdog по дефолту, staging строго за `profiles: [staging]`, анти-появление `plane*`/`gitea*` (TC-04); fenced-скан `FORBIDDEN` (импорт из `test_no_host_hardcodes.py` — один источник истины) + секрет-эвристика с негативным самочеком (TC-05); «22 статуса» сверкой импорта `plane_sync._PLANE_NAME_TO_KEY` (TC-06); инварианты Gitea-раздела (TC-07); перекрёстность (TC-08). - **Перекрёстные доки** (FR-7): REPLICATION.md §1 (строка Type A — Lite → ✅ ORCH-102 + ссылка), README.md (способность Lite + `docs/deployment/` в структуре), INFRA.md, CLAUDE.md, CHANGELOG.md. ### Нормативы (исходы вопросов ТЗ §3.8) - **А-1 (D3):** branch protection на `main` НЕ включать (ADR D10 ORCH-009 / INV-4); pre-receive не вводится; симптом «PR не мержится/HOLD» — в траблшутинге. - **А-2 (D4):** compose НЕ форкается — свойство подмножества держит тест. - **А-5 (D6):** staging-вилка опциональна (только под self-hosting развитие платформы). - **А-6 (D7):** источник кода — параметризованный `git clone <ORCHESTRATOR_GIT_URL>`. ### Отклонение от заявленного диффа (флаг для reviewer) `.gitignore` +2 строки: `.env.watchdog` (зеркало `.env.staging`). Не входит в перечень D9, но механически закрепляет норматив D5 «DO NOT COMMIT реальный `.env.watchdog`» (NFR-3, секрет-гигиена). Откат тривиален. ### Проверки - `pytest tests/ -q` — **1789 passed** (полный регресс; новые 25 тестов зелёные; существующие структурные тесты не ослаблялись). - ruff в окружении/CI отсутствует (CI-гейт — pytest); новый код — только тест-модуль. - Скан боевых литералов по новым артефактам — чисто. ### Приёмка AC-4 (smoke-прогон) Процедурная (TC-09): исполняет tester на staging-песочнице (8501 + sandbox-проект), протокол — `13-test-report.md`/`15-staging-log.md`. В этот PR не входит. Refs: ORCH-102 🤖 Generated with [Claude Code](https://claude.com/claude-code)
admin added 6 commits 2026-06-11 00:42:18 +03:00
Закрывает Type A эпика ORCH-10 (поверх 10-common ORCH-101). Docs+tests
(паттерн ORCH-077/092): src/**, docker-compose.yml, Dockerfile, scripts/** —
ноль изменений; конвейер (STAGE_TRANSITIONS/QG_CHECKS/check_*/machine-verdict/
схема БД) — байт-в-байт.

- docs/deployment/LITE_SETUP.md (D1/D2): golden source Lite-тиража — 13
  нормативных разделов в порядке маршрута оператора, каждый шаг =
  fenced-команда + явная «Проверка:»/PASS/FAIL, хост-специфика только
  плейсхолдерами; канон не форкается (статусы/env/вебхуки/smoke — ссылками
  на ONBOARDING §1 / REPLICATION §2–§4 / SETUP_WEBHOOKS; явно — только
  fail-closed Confirm Deploy/STOP и обязательные ключи нового хоста).
- .env.watchdog.example (D5, исход А-4): третий канонический env-example;
  key-set = блок WATCHDOG_* .env.example (19 ключей, токены — пустые
  плейсхолдеры); закрывает ловушку файла-носителя (sidecar читает ТОЛЬКО
  .env.watchdog); C-1 ORCH-100 + когерентность порта в шапке; .env.watchdog
  добавлен в .gitignore (секрет-гигиена, зеркало .env.staging).
- tests/test_lite_setup_doc.py (D8): 25 структурных тестов без
  сети/LLM/subprocess — 13 разделов в порядке D2, кирпичи FR-6.1, key-sync
  watchdog-канона, env-ключи ⊂ .env.example, compose-подмножество (ровно
  орк+watchdog по дефолту, staging за профилем, анти-появление
  plane*/gitea*), fenced-скан FORBIDDEN (импорт из test_no_host_hardcodes)
  + секрет-эвристика с негативным самочеком, «22 статуса» сверкой импорта
  plane_sync._PLANE_NAME_TO_KEY, перекрёстность.
- Перекрёстные доки (FR-7): REPLICATION.md §1 (Type A — Lite →  ORCH-102 +
  ссылка), README.md (способность Lite + docs/deployment/ в структуре),
  INFRA.md (.env.watchdog в секрет-нормативе + ссылка на deployment),
  CLAUDE.md (блок ORCH-102), CHANGELOG.md.

Нормативы разделов: Gitea — branch protection на main НЕ включать (D3 /
ADR D10 ORCH-009 / INV-4), pre-receive не вводится, ОДИН глобальный
webhook-секрет; staging-вилка опциональна (D6); источник кода —
параметризованный git clone <ORCHESTRATOR_GIT_URL> (D7); stateless —
данные/задачи/секреты боевого хоста НЕ переносятся (AC-3).

Тесты: pytest tests/ -q — 1789 passed (полный регресс зелёный).

Refs: ORCH-102

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
tester(ET): auto-commit from tester run_id=623
All checks were successful
CI / test (push) Successful in 59s
CI / test (pull_request) Successful in 1m1s
a5f904b56a
admin force-pushed feature/ORCH-102-orch-10a-lite-watchdog from d1a0cc4595 to a5f904b56a 2026-06-11 00:42:18 +03:00 Compare
admin merged commit 0d15719676 into main 2026-06-11 00:48:30 +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#123