From 7ede28a5a2d013a40fb51cc7222d53c002c2709a Mon Sep 17 00:00:00 2001 From: Stream Date: Tue, 2 Jun 2026 22:50:01 +0300 Subject: [PATCH] auto-sync: 2026-06-02 22:50:01 --- memory/2026-06-02.md | 82 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/memory/2026-06-02.md b/memory/2026-06-02.md index a35eb3c..a8e2b6d 100644 --- a/memory/2026-06-02.md +++ b/memory/2026-06-02.md @@ -355,3 +355,85 @@ ssh slin@82.22.50.71 " - Tokenator API: жив, ключ в `/home/slin/openclaw/data/.env` (НЕ в orchestrator/.env). Ключ содержит `|` — bash sed/grep его режет, брать через Python - Plane API токен (60 симв) в orchestrator/.env РАБОЧИЙ — баг был в bash sed-парсинге, через Python HTTP 200 - Тесты орка — ТОЛЬКО в контейнере через образ (хостовый .venv сломан): `IMG=$(docker inspect orchestrator --format '{{.Config.Image}}'); docker run --rm -v /home/slin/repos/orchestrator:/code -w /code --entrypoint python3 $IMG -m pytest tests/ -q` +- Workspace `tasks/multi-agent/` → `tasks/orchestrator/` +- Папка/контейнер/compose уже были `orchestrator` +- Plane задачи: ORCH-1 (F-2b), ORCH-2 (S-4), ORCH-3 (S-2/S-3), ORCH-4 (M-3), ORCH-5 (M-7) + +### Открытые вопросы Славе +1. Смержить PR #19 (enduro-trails)? +2. Смержить PR #1 (orchestrator worktree)? + +--- + +## ИНЦИДЕНТ: Plane-webhook авто-запустил конвейер по всем ORCH-1..7 (2026-06-02 19:00) + +### Что случилось +- Создала в Plane задачи ORCH-1..7 — **Plane-webhook поймал каждую и авто-запустил конвейер** (analyst→architect, auto-commit) +- Всё ушло в **неправильный репо enduro-trails** (`plane.py:91` hardcode `repo=settings.default_repo`), наплодило мусор ET-010..016 +- Корень: Plane-webhook (id `93f0c342-a614-4248-9d0f-c107276f5620`) срабатывает на ЛЮБ\u041eЕ issue в workspace, без фильтра по проекту +- ⚠️ **ПОЗИТИВ:** автономность реально работает — analyst exit=0, auto-commit, worktree (ORCH-2) сработал + +### Меры (сделано) +- 🛡️ **Plane-webhook ДЕАКТИВИРОВАН** в Plane postgres: `UPDATE webhooks SET is_active=false`. Проверено: `is_active=f` + - Plane postgres: контейнер `plane-app-plane-db-1`, `PGPASSWORD=plane`, db `plane`, user `plane`, table `webhooks` + - Обратно включить после ORCH-6: `UPDATE webhooks SET is_active=true WHERE id=...` +- 🧹 Вычищено: все ветки ET-010..016 (git local+remote, 204), worktree `_wt/enduro-trails/*` (root-owned → sudo rm), тестовые iso-A/iso-B, tasks≥19 в БД орка, agent_runs≥19 +- Plane чист: orchestrator=7 (ORCH-1..7), enduro=5 (родные). Junk ET-issues в Plane не было (орк генерил ET-номера сам в git+БД) +- Заметка на сервере: `orchestrator/docs/INCIDENT_2026-06-02_webhook_autorun.txt` + +### ROOT FIX = ORCH-6 (multi-repo) +- `plane.py:91` `repo=settings.default_repo` → нужен фильтр по `plane_project_id` + маппинг repo per project +- Пока ORCH-6 не сделан — webhook ДЕРЖАТЬ ВЫКЛЮЧЕННЫМ + +### Открытые вопросы +- Смержить PR #19 (enduro-trails) + PR #1 (orchestrator worktree)? + +--- + +## ORCH-6 (Multi-repo) — Dev-прогон (2026-06-02 ~19:20-19:28) + +### ТЗ +- Файл: `tasks/orchestrator/DEV_TASK_ORCH6_MULTIREPO.md` (снайперское, все точки кода file:line собраны Стрим заранее) +- Цель: реестр проектов (Plane id→repo+prefix) + фильтр webhook по проекту + resolve repo + plane_sync в правильный проект + prefix per project. Закрывает корень инцидента, снимает предохранитель. +- Маппинг по умолчанию: enduro `7a79f0a9-...`→repo enduro-trails/ET; orchestrator `8da6aa25-...`→repo orchestrator/ORCH + +### Прогон 1 (упал по таймауту LLM на Task 2, не вина кода) — но сделал ~75%, ФУНКЦИОНАЛ РАБОТАЕТ +✅ Готово (Task 1-5), проверено вживую: +- `src/projects.py` (4607 байт) — ProjectConfig + 4 резолвера + дефолт-реестр +- plane.py — фильтр по проекту (unknown→ignored) + resolve repo +- db.py — `get_next_work_item_id(repo, prefix)` per project (ORCH-001 vs ET-010) +- plane_sync.py — `_resolve_project_id`, параметризация (обратно совместимо) +- gitea.py — unknown repo→ignored (3 хэндлера) +- **Resolve-тест в контейнере прошёл:** orchestrator→orchestrator/ORCH, enduro→enduro-trails/ET, unknown→None ✅ +- Все файлы компилируются; тесты 37 passed / 9 failed (те же pre-existing 401/signature, baseline не сломан) +❌ НЕ доделано (Task 6-7): тесты test_projects/test_plane_webhook, коммит, PR, пересборка, доки. Всё в working tree (не закоммичено). + +### Решение: НЕ начинать заново, дослать Dev добивку (Task 6-7) — рабочие 75% терять глупо из-за инфра-таймаута +- Запущен 2-й прогон (taskName `orch6_finish`/добивка), session subagent `24ac376a...` +- ⚠️ Дубль-событие о падении прогона 1 (subagent `080bc9bc...`) прилетело позже — уже обработано, NO_REPLY + +### КРИТИЧНО на потом +- 🚫 Webhook ОСТАЁТСЯ выключенным до моего финального ревью фильтра (иначе риск повторить инцидент) +- Включить webhook (`is_active=true`) — мой шаг ПОСЛЕ проверки что фильтр реально режет unknown-проекты +- Tokenator API: жив, ключ в `/home/slin/openclaw/data/.env` (НЕ в orchestrator/.env). Ключ содержит `|` — bash sed/grep его режет, брать через Python +- Plane API токен (60 симв) в orchestrator/.env РАБОЧИЙ — баг был в bash sed-парсинге, через Python HTTP 200 +- Тесты орка — ТОЛЬКО в контейнере через образ (хостовый .venv сломан): `IMG=$(docker inspect orchestrator --format '{{.Config.Image}}'); docker run --rm -v /home/slin/repos/orchestrator:/code -w /code --entrypoint python3 $IMG -m pytest tests/ -q` + +### ✅ ORCH-6 ДОДЕЛАН (прогон 2, ~19:35) — проверено мной вживую, НЕ на слово +- **PR #2** (orchestrator, ветка `feature/ORCH-6-multirepo`) — open, **mergeable:True** +- 7 коммитов Conventional Commits +- Оба тест-файла созданы (test_projects, test_plane_webhook) +- **Тесты: 57 passed** (20 новых зелёных), 9 fail — те же pre-existing 401/TypeError, baseline ЦЕЛ +- Контейнер пересобран, health ok +- Resolve вживую: orchestrator→ORCH, enduro→ET, unknown→None ✅ +- 🛡️ Webhook ОСТАЁТСЯ выключен (`is_active=f`) — Dev не трогал, как и договорено + +### 🔵 ЖДЁТ РЕШЕНИЯ СЛАВЫ (спросила, ОК пока нет) +1. Смержить **PR #2** (multi-repo) в main orchestrator +2. После мержа — **включить Plane-webhook** (`UPDATE webhooks SET is_active=true`) — теперь безопасно, фильтр режет чужие проекты +- Делать без ОК НЕ буду: мерж в main + включение автозапуска = живая автономная система +- Также висят: PR #19 (enduro-trails), PR #1 (orchestrator worktree) + +### Следующий бэклог ORCH (после ORCH-6 merge+webhook on) +- ORCH-1 (F-2b очередь задач вместо in-process daemon) — следующий приоритет +- ORCH-3 (S-2/S-3 rollback), ORCH-4 (M-3 stage-engine), ORCH-5 (M-7 идемпотентность webhook dedup)