From c8317e9c1d3d45a8c628414069cb17f87dad7216 Mon Sep 17 00:00:00 2001 From: Stream Date: Fri, 5 Jun 2026 08:40:01 +0300 Subject: [PATCH] auto-sync: 2026-06-05 08:40:01 --- memory/2026-06-05.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/memory/2026-06-05.md b/memory/2026-06-05.md index 77cdb26..7b08333 100644 --- a/memory/2026-06-05.md +++ b/memory/2026-06-05.md @@ -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).