Закрывает 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>
43 lines
2.4 KiB
Plaintext
43 lines
2.4 KiB
Plaintext
# .env.watchdog — конфигурация sidecar-watchdog (контейнер orchestrator-watchdog).
|
||
# Канонический example (ORCH-102, ADR-001 D5; симметрия .env.example/.env.staging.example).
|
||
#
|
||
# ⚠️ СЕМАНТИКА ФАЙЛА-НОСИТЕЛЯ: sidecar-контейнер читает ТОЛЬКО этот файл
|
||
# (compose: env_file {path: .env.watchdog, required: false}). Ключ WATCHDOG_*,
|
||
# положенный в .env, для sidecar ИНЕРТЕН (его видит лишь контейнер орка).
|
||
# Отсутствие файла НЕ ломает `docker compose up` (required: false); нет токена →
|
||
# fail-safe: watchdog пишет алерты в логи, но не отправляет.
|
||
#
|
||
# Создание на хосте: cp .env.watchdog.example .env.watchdog → заполнить два токена.
|
||
# DO NOT COMMIT реальный .env.watchdog — этот файл только шаблон (зеркало
|
||
# .env.staging.example); реальные значения живут на хосте.
|
||
#
|
||
# Нормативы:
|
||
# * C-1 (ORCH-100): у watchdog СВОЙ Telegram-бот — независимый канал алертов.
|
||
# Переиспользовать токен орка (ORCH_TELEGRAM_BOT_TOKEN) ЗАПРЕЩЕНО: упавший
|
||
# орк не сможет сообщить о себе своим же ботом.
|
||
# * Когерентность порта: WATCHDOG_METRICS_URL следует за прод-портом
|
||
# (ORCH_DEPLOY_PROD_TARGET_PORT) — сменил порт орка → обнови URL здесь.
|
||
# * Key-set этого файла = блок WATCHDOG_* в .env.example (канон ключей);
|
||
# синхронность держит tests/test_lite_setup_doc.py (key-sync, TC-02b).
|
||
# Значения = дефолты watchdog/config.py.
|
||
|
||
WATCHDOG_ENABLED=true
|
||
WATCHDOG_INTERVAL_S=30
|
||
WATCHDOG_HTTP_TIMEOUT_S=5
|
||
WATCHDOG_COOLDOWN_S=1800
|
||
WATCHDOG_METRICS_URL=http://127.0.0.1:8500/metrics
|
||
WATCHDOG_ORCH_DOWN_TICKS=3
|
||
WATCHDOG_MEM_PCT=90
|
||
WATCHDOG_DISK_CRIT_ENABLED=false
|
||
WATCHDOG_DISK_CRIT_PCT=97
|
||
WATCHDOG_DISK_PATHS=/repos,/app/data
|
||
WATCHDOG_AGENT_HUNG_MIN=20
|
||
WATCHDOG_AGENT_CPU_FLOOR=0.01
|
||
WATCHDOG_STAGE_STUCK_MIN=120
|
||
WATCHDOG_QUEUE_DEPTH=20
|
||
WATCHDOG_CONTAINERS=orchestrator
|
||
WATCHDOG_DOCKER_SOCK=/var/run/docker.sock
|
||
WATCHDOG_DEPS=
|
||
WATCHDOG_TG_BOT_TOKEN=
|
||
WATCHDOG_TG_CHAT_ID=
|