diff --git a/memory/2026-06-01.md b/memory/2026-06-01.md index c79ea7a..f375f82 100644 --- a/memory/2026-06-01.md +++ b/memory/2026-06-01.md @@ -189,3 +189,95 @@ - Серверный pipeline gps_collect.py по cron, отдельная БД gps_tracks.sqlite - Дедупликация: bbox-bucket + length + date - Визуализация: vector tiles на z8-11, GeoJSON на z12+ +# 2026-06-01 + +## Orchestrator: Полная интеграция с Plane + +### Что сделано +- Написано ТЗ для Dev-агента: `tasks/multi-agent/DEV_TASK_PLANE_FULL_INTEGRATION.md` (12 задач) +- Dev-агент реализовал все 12 пунктов, acceptance checks пройдены +- Обновлена документация: `ORCHESTRATOR_DOCS.md` (полностью переписана) +- Обновлена таблица расхождений: `PROPOSAL_VS_REALITY.md` (18/33 = 55% done) + +### Реализованные фичи (Plane integration) +- 8 статусов Issue: Backlog, Todo, In Progress, Needs Input, In Review, Blocked, Done, Cancelled +- Analyst questions flow: 01-questions.md → Needs Input → ответ Славы → relaunch (макс 3 раунда) +- :rejected: с причиной + relaunch analyst / rollback +- :approved: → In Progress → advance +- Tester FAIL → developer retry (до 3 раз → Blocked) +- Deploy FAIL → Blocked + rollback + notification +- Architect conflict (10-conflict.md) → rollback to analysis +- QG-0 при создании Issue (title 5-80, description ≥2 предложений) +- Ссылки в комментариях Plane (branch URL + PR link) + +### Модели агентов — обновлено +- **Architect и Reviewer переключены на Opus** (claude-opus-4-7) — подтверждено Славой +- **Analyst возвращён на Sonnet** (01.06 — экономия лимитов Max 5x) +- Developer, Tester, Deployer — Sonnet (claude-sonnet-4-6) +- Добавлено поле `model` в AGENT_CONFIGS + `--model` в команду запуска launcher.py +- Контейнер пересобран и задеплоен + +### Оставшиеся TODO (🟡) +- E2E тесты (Playwright) +- Event dedup (idempotency) +- Budget tracking +- Test/prod environments split + +### Баги + +#### 🐛 Plane comment webhook — ПОЧИНЕН (01.06 ~16:00 UTC) +- **Симптом:** Слава написал `:approved:` в Plane, orchestrator не получил webhook +- **Причина:** Plane шлёт comment event с полем `"issue": ""`, а код искал `"work_item_id"` и `"issue_id"` +- **Фикс:** fallback chain `work_item_id → issue_id → issue` + читать `comment_stripped` первым +- **Файл:** `src/webhooks/plane.py` — функция `handle_comment` +- **Коммит:** `e27e489` fix(plane-webhook): read issue/comment_stripped fields from Plane comment payload +- **Статус:** ✅ починен, протестирован + +#### 🐛 Claude CLI зависает при rate limit (Max 5x) +- **Симптом:** run 35, 36 зависли — процесс не стартовал, лог пустой (только git output) +- **Причина:** rate limit после run 34 (Opus, 9 мин работы) +- **Фикс:** добавлен startup timeout 120 сек + kill + Telegram уведомление (задеплоен 01.06) +- **Статус:** ✅ починен + +#### 🐛 Analyst не использовал Write tool (run 34) +- **Симптом:** analyst вывел артефакты в stdout, файлы на диске не создал +- **Причина:** в prompt не было явной инструкции использовать Write tool +- **Фикс:** добавлен раздел "КРИТИЧЕСКИ ВАЖНО: Используй Write tool!" в analyst.md (merged в main) +- **Статус:** ✅ починен + +#### 🐛 Popen launcher зависает (не rate limit) +- **Симптом:** architect run_id=38 завис — лог пустой, CLI при ручном запуске работает +- **Причина:** вероятно shell expansion `$(cat .task.md)` ломается в контексте Popen +- **Workaround:** ручной запуск через `docker exec -e HOME=/home/slin` +- **Статус:** нужно разобраться с launcher.py (как именно формируется cmd) + +### Изменения модели (01.06.2026) +- Analyst: opus → sonnet (вернули обратно, экономия лимитов Max 5x) +- Architect: sonnet → opus (оставили) +- Reviewer: sonnet → opus (оставили) + +### ET-008: GPS-треки с публичных платформ +- Issue создан в Plane (id: 020811f2-eaf0-434e-8257-f5e0d141274b) +- Sequence: ET-008 (в Plane отображается как #4) +- Branch: feature/ET-008-gps +- Analyst завершён v2 (артефакты запушены, 6 файлов в docs/work-items/ET-008/) +- Слава approve'нул → architect запущен (run_id=38, Opus) +- **Pipeline прогресс (01.06 финал ~17:00 UTC):** + - ✅ analysis (run_id=37, sonnet) + - ✅ architecture (run_id=38/39, opus) — 7 ADR, infra/data requirements, tech risks + - ✅ development (run_id=40, sonnet) — backend + frontend + 48 тестов + - ✅ review (run_id=41, opus) — нашёл 1xP0, 4xP1 → developer починил + - ✅ testing (run_id=42, sonnet) — PASS + - ✅ deploy (deployer) — merge PR → tag → deploy → smoke ✓ + - ✅ done — Issue закрыт в Plane +- Источники MVP: OSM GPS Traces + EnduroRussia + ttrails (Wikiloc/Strava/Komoot — out of scope) +- Серверный pipeline gps_collect.py по cron, отдельная БД gps_tracks.sqlite +- Дедупликация: bbox-bucket + length + date +- Визуализация: vector tiles на z8-11, GeoJSON на z12+ +- **Pending:** `docker compose up -d gps-collector` на mva154 (ждёт Славу) + +### Итог дня +- 3 бага починены (webhook, rate limit timeout, analyst Write tool) +- ET-008 прошёл полный pipeline analyst→architect→developer→reviewer→tester→deployer→done +- Orchestrator документация актуализирована +- MEMORY.md обновлена