auto-sync: 2026-06-03 10:10:01

This commit is contained in:
Stream
2026-06-03 10:10:01 +03:00
parent f0aa3b9c9e
commit 90d6250690
2 changed files with 96 additions and 0 deletions

View File

@@ -90,3 +90,44 @@ Dev **запаниковал** на старте orch1b: «параллельн
- Деплой: `docker compose up -d --build && sleep 6 && curl -s :8500/health && curl -s :8500/queue`
- Тесты в контейнере: `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`
- ⚠️ root-файлы на хосте — через `docker exec orchestrator rm -rf` (не sudo, пароль не тот)
---
## Аудит 02.06 ПОЛНОСТЬЮ ЗАКРЫТ (финал дня 03.06)
### L-1 / L-2 / L-3 — ЗАМЕРЖЕНО (PR #7 `be27f506`)
- Один компактный PR, 3 коммита: `48b7707` docs(stages) L-1, `0653c24` feat(launcher) L-2, `8f11971` refactor(plane_sync) L-3.
- **L-1:** шапка `src/stages.py:8` врала «when entering the NEXT stage» (этот нейминг породил баг ORCH-4) → исправлена на «advancing FROM this stage (NOT the next stage's agent)». Только комментарий.
- **L-2:** `prune_run_logs(runs_dir, keep_days=30, keep_max=500, active_paths=None)` в `launcher.py` — чистит `*.log` старше keep_days ИЛИ сверх keep_max свежих; не трогает не-.log, поддиректории, активный лог. Вызов best-effort в `lifespan` (try/except + warning, не роняет app). Параметры: env `ORCH_LOG_KEEP_DAYS`/`ORCH_LOG_KEEP_MAX`, дефолты в config.py. +6 тестов `tests/test_log_rotation.py`.
- **L-3:** эмодзи-литералы → `EMOJI_STAGE`/`EMOJI_QG_FAIL`/`EMOJI_DONE` в `plane_sync.py`. Вывод байт-в-байт прежний. (стр.242 стала f-строкой ради подстановки — текст тот же.)
- Тесты: 145 → **151 passed** (+6), 9 = baseline 401.
- **L-4 СНЯТ:** мусорной папки `{src` уже нет. **L-5 СНЯТ:** `tests/test_launcher.py` (18 тестов) уже существует — долг закрыт по ходу ORCH-1b/2/4. Аудит 02.06 отстал от кода.
### M-6 — ЗАМЕРЖЕНО (PR #8 `12e2691a`), Слава отметил как ВАЖНУЮ
- `feat(webhook): derive work_item_id from Plane sequence_id` `1d978ca` + `fix(plane_sync): drop hardcoded ET- prefix` `c431a3d`.
- **Суть:** `work_item_id` теперь = Plane `sequence_id` (источник правды), а не `max(tasks)+1`. Helper `fetch_issue_sequence_id(issue_id, project_id)` в `plane_sync.py` — GET `…/projects/{pid}/issues/{uuid}/` (⚠️ **trailing slash обязателен**, без него 301), `sequence_id` = top-level int, timeout=10, try/except → None (не кидает).
- **Fallback автономности:** Plane down / seq=None → старый `get_next_work_item_id` + warning. Task создаётся при любом исходе, конвейер не встаёт. `get_next_work_item_id` ОСТАВЛЕН как fallback.
- **Бонус-фикс:** `find_issue_id` хардкодил `f"ET-{seq:03d}"` → сломан для ORCH-префикса (ORCH-6). Убрано, матч по числу из `rsplit("-",1)`, обобщено на любой префикс.
- Живая иллюстрация рассинхрона: `ET-010` (`f9009756…`) в Plane = **404** — старый счётчик такие дыры игнорировал.
- Тесты: 151 → **158 passed** (+7 `tests/test_m6_sequence.py`), 9 = baseline.
- Отчёт: `tasks/orchestrator/reports/dev-2026-06-03-orch-m6-plane-sequence.md`.
### ⚠️ ГОНКА ВЕТОК — урок (важно для будущих параллельных задач)
- L1L2L3 и M-6 — оба правят orchestrator-репо из ОДНОЙ рабочей копии `/home/slin/repos/orchestrator`. Запуск двух Dev одновременно = реальная драка за git-состояние (НЕ ложная паника).
- **Правило:** при работе двух задач в одном репо — сначала смержить+освободить ветку первой, ТОЛЬКО потом запускать вторую из чистого main. Так и сделала: PR #7 мерж → потом запуск M-6.
### 🔍 Три одинаковых сообщения (🔄 ET-100) — РАЗГАДКА
- **НЕ оркестратор, НЕ дубль конвейера (НЕ класс ET-009).** Орк за сутки слал в Telegram **0 сообщений** (проверено по логам), в конвейере 1 задача, breaker closed.
- Причина: **дубли completion-событий субагента** (Dev) — повадка доставки OpenClaw, событие «субагент завершил» приходит по нескольку раз, родитель просыпается на каждой доставке → отклик протекает наружу.
- Лечение: глушу через NO_REPLY, но 1-2 иногда проскакивают. Риска для данных/конвейера НОЛЬ. Если будет бесить Славу — копнуть жёсткий дедуп на уровне обработчика.
### Токен Gitea — РАЗРЕШЕНО
- Подтверждено: мерж M-6 прошёл рабочим токеном (брала из env контейнера по заметке Dev). `.env` на сервере содержит устаревший `ORCH_GITEA_TOKEN` (28 симв, 401), рабочий (40 симв) — `docker exec orchestrator printenv | grep -i gitea`. **Славе на заметку:** синхронизировать `.env`.
### ИТОГ
- **Весь бэклог orchestrator + весь аудит 02.06 закрыты.** В main: ORCH-1/1b/2/4/5/6/7 + L1L2L3 + M-6. ORCH-8 отменена, L-4/L-5 сняты как уже сделанные.
- Прод после M-6: main HEAD `12e2691`, health ok, breaker closed.
- Merge-commits финала: PR #7 `be27f506` (L1L2L3), PR #8 `12e2691a` (M-6).
- ТЗ-файлы: `DEV_TASK_ORCH_CLEANUP_L1L2L3.md`, `DEV_TASK_ORCH_M6_PLANE_SEQUENCE.md`.
- ⏳ Открыто (НЕ срочно): прод-применение хука enduro-trails (swap `.new`→живой) — ждёт ОК Славы; бэкап `enduro-deploy-hook.sh.bak-1780468526`.