Files
wiki/tasks/orchestrator/STATUS.md
2026-06-03 23:50:01 +03:00

15 KiB
Raw Blame History

Статус проекта: Мультиагентная разработка ПО

Дата обновления: 2026-06-03 20:50 UTC
Ревьюер: Стрим


📌 Свежее (2026-06-03) — сессия багов входа/выхода analyst

Работа Статус
PR #12 status-only verdict model (вердикт по статусу, не комменту; фикс Баг 3 эхо-самоудар) 🟢 смержен, на проде
PR #13 Баги A/B/C: description.task.md, name→ветка, коммент analyst + ссылки 🟢 смержен, боевой прогон чистый
PR #14 gitea_public_url — внешние кликабельные ссылки в комментах 🟢 смержен, env прописан на проде
PR #15 Баг 4 (блокер): Approved-вердикт двигает analysis→architecture 🟢 смержен, боевой прогон
🎉 Конвейер analysis→architecture end-to-end через живой Approved 🟢 впервые пройден на ET-011 (#6, task 29)

Дальше: architect отработал (ADR-014/015 + infra-req) → дождаться финала + QG architecture → Development. Проверить Rejected-путь живьём. Детали: tasks/orchestrator/ORCHESTRATOR_DOCS.md → раздел «🐛 Баги входа/выхода analyst» + memory/2026-06-03.md.

Предыдущая сессия (2026-06-02)

  • ORCH-6 multi-repo (PR #2), ORCH-1 очередь (PR #3), Plane-webhook включён с HMAC+project-filter — всё на проде. Подробности: PROGRESS_2026-06-02.md.

Общая зрелость

Фаза (из BRD) Статус Комментарий
Фаза 0: Инфраструктура Завершена Всё установлено и работает
Фаза 1: Ручной конвейер Завершена ET-001 прошёл полный цикл
Фаза 2: Orchestrator MVP Завершена (21.05) QG реальные, автозапуск Claude CLI, 27 тестов
Фаза 3: Plane интеграция Завершена (21.05) Webhooks + обратная связь (state sync, comments)
Фаза 4: Полный конвейер Первый прогон (21.05) ET-002 прошёл полный автоматический цикл!
Фаза 5: Оптимизация 🟡 В работе Analyst полностью интегрирован как первая стадия (31.05), 27 тестов green

🎉 MILESTONE: Первый полный автоматический прогон (21.05.2026)

ET-002 "Чекбокс POI в попапе рельефа" прошёл весь пайплайн автоматически:

analysis → architecture → development → review → testing → deploy → done ✅
Стадия Агент Результат Время
architecture Architect (Claude CLI, Opus) ADR + infra-requirements ~5 мин
development Developer (Claude CLI, Sonnet) feat commit + тесты ~55 мин (docker build)
review Reviewer (Claude CLI, Opus) APPROVED (0 P0/P1) ~3 мин
testing Tester (Claude CLI, Sonnet) PASS (pytest 14/14, JS 7/7) ~5 мин
deploy Merge PR #5 → main Merged

Коммиты на ветке:

c36ee9d test(ET-002): test report PASS - all tests green, ready to deploy
a4a0aab docs(ET-002): code review APPROVED - no P0/P1 findings
8c17a4f feat(web): add POI visibility checkbox to terrain popup
af579f7 docs(ET-002): add ADR-0001 and infra requirements for POI toggle
73c9dc4 docs(ET-002): status → approved
f1f4d5f docs(ET-002): BRD, ТЗ, AC, Test Plan

Баги и фиксы (21.05.2026)

# Баг Статус Фикс
1 /repos mounted as :ro Исправлен Убрал :ro из docker-compose.yml
2 check_review_approved — PR not found Исправлен Lookup PR по branch + file-based fallback
3 git не установлен в контейнере Исправлен Уже был в Dockerfile (git v2.47.3)
4 Коммиты от root ломают permissions Исправлен GIT_AUTHOR_NAME/EMAIL = claude-bot в launcher.py
5 task_id=NULL в agent_runs Исправлен task_id передаётся в launch()
6 Нет timeout для агентов Исправлен Watchdog 30 мин, kill -9
7 Нет auto-advance после CI green Исправлен gitea.py: CI green → review, PR approved → testing
8 Orchestrator не пишет в Plane Исправлен plane_sync.py: state update + comments
9 dismiss_stale_approvals + duplicate CI statuses ⚠️ Workaround Временно отключал status check для merge
10 Developer застревает на docker build (~55 мин) 🔴 Не исправлен Для frontend-only фич docker build избыточен

Баги входа/выхода analyst (03.06.2026) — PR #12#15

Цепочка из 4 багов, вскрытых при переходе на status-only verdict и боевом прогоне ET-011 (#6, task 29). Полный разбор: ORCHESTRATOR_DOCS.md.

# PR Баг Статус
Баг 3 #12 Эхо-самоудар: собственный коммент analyst сбивал стадию → status-only verdict model Смержен
Баг A #13 description из Plane не попадал в .task.md (пустышка) Смержен
Баг B #13 name не дотягивался → ветка untitled Смержен
Баг C #13 Устаревший коммент «Жду :approved:» + нет ссылок на доки Смержен
#14 Ссылки в комменте на localhost:3000 (не кликались) → gitea_public_url Смержен + env
Баг 4 #15 БЛОКЕР: ручной Approved не двигал конвейер (task застревал в analysis) → развёл check_analysis_approved по finished_agent Смержен, боевой прогон

Baseline тестов: 210 passed + 9 pre-existing failed (test_webhooks.py, HMAC/401 — off-limits).


Инфраструктура на mva154 (82.22.50.71)

Контейнеры (docker ps на 21.05.2026)

Контейнер Образ Статус Порт
orchestrator orchestrator-orchestrator (self-built) Up 127.0.0.1:8500
openclaw-gateway ghcr.io/openclaw/openclaw:latest Up (healthy) 127.0.0.1:18789
enduro-trails-app-1 enduro-trails-app (self-built) Up 0.0.0.0:5558
gitea gitea/gitea:latest Up 127.0.0.1:3000, 0.0.0.0:2222
claude-cli-proxy eceasy/cli-proxy-api:latest Up 127.0.0.1:8317
xray ghcr.io/xtls/xray-core:latest Up
plane-* (8 контейнеров) makeplane/* Up (healthy) 0.0.0.0:8091, 0.0.0.0:8443

Установленное ПО на хосте

Компонент Версия Путь
Claude Code CLI 2.1.142 /usr/bin/claude (+ mount в orchestrator)
Node.js v24.14.0
Docker + Compose
Nginx reverse proxy
Gitea Actions Runner act_runner /home/slin/act_runner (online, self-hosted)

Orchestrator — детальный статус

Репо: /home/slin/repos/orchestrator/
Контейнер: orchestrator (порт 8500, network_mode: host)
Конфиг: .env

Архитектура

src/
├── main.py              # FastAPI app
├── config.py            # Settings from env
├── db.py                # SQLite connection
├── stages.py            # Stage machine (8 stages)
├── notifications.py     # Structured logging
├── plane_sync.py        # ← NEW: Plane API sync (state + comments)
├── webhooks/
│   ├── plane.py         # Plane webhook handler + QG orchestration + plane_sync calls
│   └── gitea.py         # Gitea webhook handler (push, PR, CI status) + plane_sync calls
├── qg/
│   └── checks.py        # 6 QG checks (filesystem + Gitea API + Plane API)
└── agents/
    └── launcher.py      # Claude CLI launcher (subprocess.Popen + timeout watchdog)

Stage Machine

created → analysis → architecture → development → review → testing → deploy → done
            ↑ QG: files    ↑ QG: ADR      ↑ QG: CI green  ↑ QG: PR approved  ↑ QG: test report
            ↑ Agent: analyst↑ Agent: arch   ↑ Agent: dev    ↑ Agent: reviewer   ↑ Agent: tester

Auto-advance (добавлено 21.05, расширено 31.05)

Триггер Действие
work_item.created в Plane created → analysis, launch Analyst
:approved: comment + QG analysis analysis → architecture, launch Architect
Push с ADR файлами architecture → development, launch Developer
CI status = success development → review, launch Reviewer
PR review = approved review → testing, launch Tester
PR review = request_changes back-to development, relaunch Developer (max 3x)
Test report PASS testing → deploy

Plane Sync (добавлено 21.05, расширено 31.05)

Событие Действие в Plane
Stage change PATCH issue state (Todo/In Progress/Done) + comment
QG failure Comment с причиной
Task done State → Done + closing comment
Task created (webhook) Сохраняет plane_issue_id для маппинга
Analyst запущен Comment: "🔍 Analyst запущен. BRD/ТЗ/AC/TestPlan в работе..."
Analyst завершил (exit 0) Comment: "📋 BRD/ТЗ/AC/TestPlan готовы. Прошу :approved:"

Данные в БД (на 21.05.2026)

  • events: 40+
  • tasks: 6 (ET-001..ET-004 + smoke tests)
  • agent_runs: 8 (architect x4, developer x1, reviewer x1, tester x1)
  • Таблица tasks: добавлена колонка plane_issue_id (UUID из Plane)

Docker-compose.yml

services:
  orchestrator:
    build: .
    container_name: orchestrator
    restart: unless-stopped
    network_mode: host
    volumes:
      - ./data:/app/data
      - /home/slin/repos:/repos          # БЕЗ :ro
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/lib/node_modules/@anthropic-ai/claude-code:/opt/claude-code:ro
      - /usr/bin/node:/usr/bin/node:ro
      - /home/slin/.claude:/home/slin/.claude
      - /home/slin/.claude.json:/home/slin/.claude.json:ro
    env_file: .env
    environment:
      - ORCH_REPOS_DIR=/repos
      - ORCH_HOST_REPOS_DIR=/home/slin/repos
    group_add:
      - "999"

Analyst agent (OpenClaw) — статус

Параметр Значение
ID analyst
Модель vibecode/claude-sonnet-4.6
Workspace /home/node/.openclaw/workspace-analyst/
Telegram binding account analyst (отдельный бот)
Статус Полностью зарегистрирован и работает
Orchestrator интеграция Полностью интегрирован (31.05): автозапуск, QG, :approved: → architecture

Gitea — статус

Параметр Значение
URL https://git.mva154.duckdns.org
Repos enduro-trails, orchestrator
CI Runner mva154-runner (online, self-hosted)
Branch protection main: require 1 approval + CI green
Webhooks → Orchestrator Работают (push, PR, status events)
Service accounts admin, claude-bot, stream
claude-bot token 38c6fa88... (write:repository)

Plane — статус

Параметр Значение
URL https://plane.mva154.duckdns.org
Workspace ag_proj
Проект "Enduro Trails" (identifier: ET)
Project ID 7a79f0a9-5278-49cd-9007-9a338f238f9c
Issues ET-1 (POI checkbox) — Done
Webhook → Orchestrator Через PostgreSQL trigger (HMAC-SHA256)
Orchestrator → Plane State sync + comments (plane_sync.py)

States в Plane

ID Name Group
113b24f6-... Backlog backlog
2c7d3df3-... Todo unstarted
b873d9eb-... In Progress started
381a2833-... Done completed
b1cae7f9-... Cancelled cancelled

Репозиторий enduro-trails

Ветки: main (актуальная с ET-001 + ET-002 merged)

Work Items

ID Название Статус
ET-001 Исключить шлагбаумы и тротуары из OSRM Done (ручной цикл)
ET-002 Чекбокс POI в попапе рельефа Done (автоматический цикл!)

Следующие шаги (приоритет)

Оставшиеся баги

  1. dismiss_stale_approvals + duplicate CI statuses — Gitea создаёт duplicate pending statuses, блокирует merge. Нужно: либо отключить dismiss_stale_approvals, либо чистить stale statuses через API.
  2. Developer застревает на docker build — для frontend-only фич нужен skip docker build или определение scope по git diff.

Улучшения для полной автономности

  1. Deploy stage — автоматический merge PR + deploy (сейчас ручной)
  2. Notifications в Telegram — отправлять Славе статус при смене stage
  3. Custom fields в Plane — qg_status, stage, tokens_spent
  4. Лейблы в Plane — stage:, back-to:, escalation:*
  5. Параллельные задачи — FIFO-очередь (F2-6 из BRD)

Доступ к mva154

Из OpenClaw контейнера:

/home/node/.openclaw/skills/installer/scripts/ssh_exec.sh --host mva154 --cmd "<command>"
  • Тип: ssh-direct, Хост: 82.22.50.71:22, User: slin

Документация проекта

Файл Описание
tasks/multi-agent/BRD.md Полный BRD с архитектурой, QG, roadmap
tasks/multi-agent/BACKLOG.md Бэклог + решения по Analyst
tasks/multi-agent/STATUS.md Этот файл — актуальный статус
tasks/multi-agent/DEV_TASK_ORCHESTRATOR_QG.md ТЗ: QG + автозапуск (выполнено)
tasks/multi-agent/DEV_TASK_ORCHESTRATOR_FIXES.md ТЗ: 5 критических фиксов (выполнено)
tasks/multi-agent/DEV_TASK_PLANE_SYNC.md ТЗ: Plane sync (выполнено)
tasks/multi-agent/DEV_TASK_WEBHOOKS.md ТЗ: Webhooks (выполнено)