auto-sync: 2026-06-07 00:40:01
This commit is contained in:
@@ -177,3 +177,35 @@
|
||||
- Plane In Progress state id = `e331bfb3-e17e-4699-ba48-4abb89c21b7b` (flip туда = автозапуск конвейера через webhook). Проект ORCH id `8da6aa25-a60e-44d6-a1e2-d8ae59aa7d6a`.
|
||||
- Health: `http://localhost:8500/health`, очередь+resilience: `http://localhost:8500/queue`.
|
||||
- Gitea API: `http://localhost:3000/api/v1`, токен env `ORCH_GITEA_TOKEN`, repo `admin/orchestrator`. Merge PR: POST `/repos/admin/orchestrator/pulls/{N}/merge` body `{"Do":"merge"}`.
|
||||
|
||||
### 🏆 ORCH-36 (исполняемый деплой) + ORCH-53 (sweeper/reconciler) — ОБА В ПРОДЕ (21:24 UTC)
|
||||
- **Вечерний марафон:** обе задачи прошли конвейер автономно (через рабочий merge-gate ORCH-43), Слава апрувил на гейтах. Эпик ORCH-54: **4 из 6 в проде**.
|
||||
- **ORCH-53 (sweeper) — DONE с первого захода:** analyst→arch→dev→reviewer→tester→deployer, реворка НЕ было. Файл назван `src/reconciler.py` (НЕ sweeper.py!). PR #56 merged первым (чистый).
|
||||
- **ORCH-36 (деплой) — через реворк (review отработал!):**
|
||||
- 1-й заход developer упёрся в **таймаут 1800с (30 мин)** → SIGKILL (exit -9), система сама ушла в attempt 2 (resilience ORCH-1b), наработки в worktree сохранились → 2-й заход добил.
|
||||
- reviewer завернул REQUEST_CHANGES (2 реальных P1: sentinel-маркеры self-deploy не чистятся на rollback; нет .env.example для новых флагов + процедуры approve в INFRA) → конвейер сам откатил dev→review→fix→APPROVED.
|
||||
- Код: `src/self_deploy.py` (+338), `src/stage_engine.py` (+247), config.py, launcher.py, `scripts/orchestrator-deploy-hook.sh`, deployer.md. +2888/-8, 35 файлов. CI green, review APPROVED, tester PASS.
|
||||
- **approve-механизм для прод-деплоя 8500 = Telegram-кнопка** (решение Славы), флаг `DEPLOY_REQUIRE_MANUAL_APPROVE=true` (дефолт).
|
||||
- **🔴 BOOTSTRAP-ПАРАДОКС (важный урок):** ORCH-36 застряла в петле deploy→development. deployer на стадии deploy не писал `14-deploy-log.md` (старая логика в проде ≠ новая в ветке) → гейт check_deploy_status FAILED → откат. Self-репо НЕ может задеплоить сам себя через старую логику — нужен ручной разрыв цикла (мерж+деплой один раз, дальше катит своей же логикой). Как с ORCH-40/43.
|
||||
- **🔴 MERGE-CONFLICT при ручном мерже (урок):** после мержа PR #56 main ушёл вперёд → PR #55 дал CONFLICT 409 (`.env.example`, CHANGELOG, README, INFRA, **src/config.py**). Разрулила НЕ rebase (9 коммитов = 9 конфликтов), а **merge main→ветку** (1 разбор). config.py-конфликт был чисто аддитивный: HEAD добавлял self_deploy-настройки, main — reconcile-настройки → нужны ОБА блока, склеить убрав маркеры. Скрипт разрешения на хосте. ⚠️ grep `=======` в docs/*/13-test-report.md = ЛОЖНОЕ срабатывание (markdown-разделители, не git-маркеры). PR #55 merged после rebase+CI green.
|
||||
- **Деплой:** `temp/deploy_36_53.sh` (pull→build→up→health+preflight+проверка обоих файлов+reconciler в логах, авто-rollback). Откат не понадобился. self_deploy.py yes, reconciler.py yes, uid 1000, health ok, preflight True.
|
||||
- **🔥 RECONCILER ДОКАЗАЛ СЕБЯ СРАЗУ:** в первую секунду после старта в логах: `reconciler: ORCH-036 development разблокирована (потерян webhook)` + `ET-013 development разблокирована`. Sweeper нашёл и разблокировал ДВЕ застрявшие задачи, включая саму ORCH-36 из bootstrap-петли. Ручной heartbeat-watchdog больше не нужен — система чинит себя сама.
|
||||
|
||||
### Уроки вечера (закрепить):
|
||||
- **Заголовки ORCH-задач ≤80 символов** — иначе QG-0 (check title length) заворачивает старт. ORCH-53 был 83 → завернул, подрезала до 71.
|
||||
- **Время хоста ≠ UTC:** файлы worktree датированы по мск (+3), БД/системное в UTC. Не баг, но путает сверки etime/updated_at.
|
||||
- **Developer-таймаут 1800с** мал для мясных задач (деплой-хук+кнопка+callback). Если упрётся — поднять `agent_timeout_seconds` override или дробить на под-задачи. Пока спас resilience-ретрай (наработки в worktree не теряются между attempt).
|
||||
- **Gitea merge auth:** `Authorization: token <ORCH_GITEA_TOKEN>` (буквально, НЕ маскировать `***` → 401). Скрипт: `temp/merge_both.py`.
|
||||
|
||||
### Эпик ORCH-54 — статус на конец 06.06:
|
||||
```
|
||||
✅ ORCH-40 — права (uid 1000) → прод
|
||||
✅ ORCH-43 — merge-gate → прод
|
||||
✅ ORCH-36 — исполняемый деплой → прод (Telegram-кнопка approve)
|
||||
✅ ORCH-53 — sweeper/reconciler → прод (уже чинит зависания)
|
||||
☐ ORCH-51 — окно/HA → бэклог (на свежую голову)
|
||||
☐ обкатка автономного деплоя → следующая задача поедет через новый деплой сама
|
||||
```
|
||||
- **Что конвейер умеет САМ теперь:** мержит feature→main (merge-gate+rebase), реально катит в прод (build+restart+health), прод-деплор спросит Telegram-кнопку перед рестартом 8500, чинит застрявшие задачи (reconciler при потере webhook).
|
||||
- **Последний ручной шаг — мой деплой — уходит.** Со следующей задачи конвейер катит сам.
|
||||
- Слава: «Оставим concurrency=1, не рискуем» — НЕ поднимать max_concurrency (одна БД/очередь на все проекты, последовательно надёжнее).
|
||||
|
||||
Reference in New Issue
Block a user