|
|
8351e91382
|
docs(deployment): ORCH-10a Lite-тираж — LITE_SETUP.md + канон 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/
схема БД) — байт-в-байт.
- 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>
|
2026-06-11 00:42:15 +03:00 |
|
|
|
f1635ddb39
|
feat(replication): расхардкод хоста + секреты нового хоста + smoke-runbook
CI / test (push) Successful in 57s
CI / test (pull_request) Successful in 55s
Фундамент тиража 10-common (эпик ORCH-10): платформа разворачивается на
новой инфре без правки кода — только env/конфиг. Каждый дефолт = боевому
значению (пустой .env => поведение 1:1, kill-switch-природа, NFR-2);
STAGE_TRANSITIONS/QG_CHECKS/check_*/machine-verdict/схема БД не тронуты.
- config: agent_home_dir / agent_git_name / git_email_domain / staging_port
(ADR-001 D2/D4); код-блокеры A1-A4 закрыты: plane_sync ссылки из
gitea_public_url+gitea_owner, launcher - единый agent_git_env() (x2 места),
self_deploy/post_deploy - HOME+домен из Settings (имена системных акторов -
платформенные литералы)
- image_freshness: staging_port из конфига + fail-closed guard
staging_port == прод-порт -> отказ ДО ssh/build (инвариант ORCH-058 AC-9
стал исполняемым); REPO= передаётся хуку явно обоими инвокерами (D7)
- SELF_HOSTING_REPO - нормативная платформенная константа (D3, пин-тест)
- compose: полная ${VAR:-default}-интерполяция (реестр B, карта D6); группа
ORCH-040 uid/gid/HOME/маунты двигается согласованно (build.args APP_*);
group_add "МИНА 1" сохранён x3; оба app-сервиса с явным command:
- Dockerfile: ARG APP_UID/APP_GID/APP_USER/APP_HOME (CMD exec-form 8500
сознательно не тронут - D5); deploy-hook: REPO="${REPO:-...}" (D1 реестра)
- секреты: stdlib scripts/gen_secrets.py (token_hex(32); печать по умолчанию;
--write никогда не перезаписывает существующий .env молча, exit=2;
перезапись только --force); .env.example дополнен до полноты ключей старта
- доки: новый docs/operations/REPLICATION.md (карта env, чек-лист секретов,
smoke-процедура с PASS/FAIL, границы 10-common/Lite/Bundled), INFRA.md,
README, CLAUDE.md, CHANGELOG
- анти-регресс: tests/test_no_host_hardcodes.py (tokenize-сканер запрещённых
литералов, config-модули - структурное исключение, allowlist пуст,
негативная самопроверка) + test_host_config_keys / test_infra_parametrization
/ test_secrets_gen / test_replication_smoke; согласованные структурные
правки test_orch040_compose (судит резолв дефолтов) и
test_deploy_hook_rollback_sim (REPO через env-override = контракт D7)
Полный регресс: 1764 passed.
Refs: ORCH-101
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-10 20:50:43 +03:00 |
|