auto-sync: 2026-06-02 22:50:01

This commit is contained in:
Stream
2026-06-02 22:50:01 +03:00
parent 86e659c047
commit 7ede28a5a2

View File

@@ -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)