auto-sync: 2026-06-05 08:40:01

This commit is contained in:
Stream
2026-06-05 08:40:01 +03:00
parent fe1e5cd664
commit c8317e9c1d

View File

@@ -99,3 +99,36 @@
### Следующий шаг (на момент флаша)
Жду ОК Славы: мержить PR #28 → идти на Этап 2 (ORCH-32: песочница Plane ORCH-SANDBOX + Gitea orchestrator-sandbox + реальный `.env.staging` + поднятие staging-контейнера через installer).
---
## Продолжение (флаш #3) — STAGING-СТЕНД ПОДНЯТ 🚀
### PR #28 смержен → Этапы 1+2 выкачены, staging живой на проде
- **PR #28 merged** (main HEAD `3b68a29`). ⚠️ Грабля: при мерже через Gitea API заголовок `Authorization` сглючил → `token is required` (HTTP 401); фикс — `AUTH = "token " + TOK` отдельной переменной, не инлайнить. Со второго раза HTTP 200.
- **Этап 2 (ORCH-32) песочница создана:** Gitea-репо `admin/orchestrator-sandbox` (auto-init main) + Plane-проект "ORCH Sandbox" (identifier SANDBOX, **id 8c5a3025-4f9d-4190-b79f-fa06276bb27e**). Имя в Plane БЕЗ дефиса — Plane не пускает спецсимволы в name (ошибка "Project name cannot contain special characters").
- **Токены — вариант 1** (Слава подтвердил): общие с продом, изоляция по проекту/репо.
- **`.env.staging` собран** (скрипт из прод-.env + staging-оверрайды), бэкап прод-.env сделан (`.env.bak-before-staging-*`), в .gitignore (IGNORED ok), прод .env цел (23 строки).
### Изоляция staging (КЛЮЧЕВОЕ — проверено лично, всё зелёное)
- **Реестр `ORCH_PROJECTS_JSON` = ТОЛЬКО sandbox** → `known_plane_project_ids()` = {8c5a3025...}, боевые ORCH(8da6aa25)/ET(7a79f0a9) = False → события по ним фильтр ORCH-6 режет в `ignored`. Staging физически не реагирует на боевые задачи.
- **БД физически раздельная**: volume `./data/staging``data/staging/orchestrator.db` (32KB свежая). Прод-БД не трогает.
- **Telegram пустой** (Слава: вариант 1, staging молчит) — ORCH_TELEGRAM_CHAT_ID="" и BOT_TOKEN="". Не спамит боевой канал.
- **ORCH_STAGING=true** пометка.
- Подъём: `sg docker -c "docker compose --profile staging up -d --build orchestrator-staging"`.
### Проверки выката (все ✅)
- staging 8501 /health=ok, /queue=ok (queued/running/done/failed=0, preflight_ok, Claude Code 2.1.142).
- прод 8500 /health=ok, контейнер Up 16h БЕЗ рестарта (не дёрнулся).
- реестр: sandbox=True, боевой ORCH=False, боевой ET=False.
### Важные технические факты (для след. этапов)
- **Gitea-webhook прод-репо `orchestrator`** жёстко шлёт на `http://localhost:8500/webhook/gitea`. Sandbox-репо `orchestrator-sandbox` пока БЕЗ хуков (настрою на 8501 в Этапе 3 при e2e).
- **Plane-webhooks через workspace API = 404** (Plane настраивает их через UI/инстанс plane-app-*, не через API). Прод получает Plane-события webhook'ом на 8500. Staging боевые Plane-события НЕ получит, пока ему отдельно не настроят webhook → плюс к безопасности.
- Орк роутеры: `/webhook/plane`, `/webhook/gitea` (main.py:92-93, prefix /webhook).
- 8500=прод (uvicorn pid живой), 8501=staging.
- `ORCH_REPOS_DIR` в .env=/home/slin/repos, но compose env-секция перебивает на /repos → внутри контейнера /repos (правильно).
- Образ staging: `orchestrator-orchestrator-staging:latest`, контейнер `orchestrator-staging`.
### Следующий шаг
Этап 3 (ORCH-33): тест-сьют staging — smoke + проверка доступов (Plane sandbox + Gitea sandbox реальными вызовами) + e2e (задача в SANDBOX → ветка в orchestrator-sandbox → статусы+комменты в Plane, верификация по API), режим full-real. Перед e2e: настроить Gitea-webhook sandbox-репо на localhost:8501. Это код для Dev (тест-скрипт) + моя инфра (webhook).