# Статус проекта: Мультиагентная разработка ПО **Дата ревью:** 2026-05-21 **Ревьюер:** Стрим --- ## Общая зрелость | Фаза (из BRD) | Статус | Комментарий | |----------------|--------|-------------| | **Фаза 0: Инфраструктура** | ✅ Завершена | Всё установлено и работает | | **Фаза 1: Ручной конвейер** | ✅ Завершена | ET-001 прошёл полный цикл | | **Фаза 2: Orchestrator MVP** | ✅ Завершена (21.05) | QG реальные, автозапуск Claude CLI работает, 27 тестов green | | **Фаза 3: Plane интеграция** | 🟡 В работе (21.05) | Webhook handlers готовы, настройка webhooks в Plane/Gitea UI — в процессе | | **Фаза 4: Полный конвейер** | ❌ Не начата | — | | **Фаза 5: Оптимизация** | ❌ Не начата | — | --- ## Инфраструктура на mva154 (82.22.50.71) ### Контейнеры (docker ps на 21.05.2026) | Контейнер | Образ | Статус | Порт | |-----------|-------|--------|------| | `orchestrator` | orchestrator-orchestrator (self-built) | Up 46h | 127.0.0.1:8500 | | `openclaw-gateway` | ghcr.io/openclaw/openclaw:latest | Up 15h (healthy) | 127.0.0.1:18789 | | `enduro-trails-app-1` | enduro-trails-app (self-built) | Up 5d (**unhealthy**) | 0.0.0.0:5558 | | `gitea` | gitea/gitea:latest | Up 2d | 127.0.0.1:3000, 0.0.0.0:2222 | | `claude-cli-proxy` | eceasy/cli-proxy-api:latest | Up 6d | 127.0.0.1:8317 | | `xray` | ghcr.io/xtls/xray-core:latest | Up 2w | — | | `plane-app-proxy-1` | makeplane/plane-proxy:stable | Up 5d | 0.0.0.0:8091, 0.0.0.0:8443 | | `plane-app-live-1` | makeplane/plane-live:stable | Up 5d | 3000 (internal) | | `plane-app-space-1` | makeplane/plane-space:stable | Up 5d (healthy) | 3000 (internal) | | `plane-app-admin-1` | makeplane/plane-admin:stable | Up 5d (healthy) | 3000 (internal) | | `plane-app-web-1` | makeplane/plane-frontend:stable | Up 5d (healthy) | 3000 (internal) | | `plane-app-beat-worker-1` | makeplane/plane-backend:stable | Up 5d | 8000 (internal) | | `plane-app-worker-1` | makeplane/plane-backend:stable | Up 5d | 8000 (internal) | | `plane-app-api-1` | makeplane/plane-backend:stable | Up 5d | 8000 (internal) | | `plane-app-plane-db-1` | postgres:15.7-alpine | Up 5d | 5432 (internal) | | `plane-app-plane-mq-1` | rabbitmq:3.13.6-management-alpine | Up 5d | 5672 (internal) | | `plane-app-plane-minio-1` | minio/minio:latest | Up 5d | 9000 (internal) | | `plane-app-plane-redis-1` | valkey/valkey:7.2.11-alpine | Up 2w | 6379 (internal) | ### Установленное ПО на хосте | Компонент | Версия | Путь | |-----------|--------|------| | Claude Code CLI | 2.1.142 | `/usr/bin/claude` | | Node.js | v24.14.0 | — | | Docker + Compose | — | — | | Nginx | — | reverse proxy | | Gitea Actions Runner | `act_runner` | `/home/slin/act_runner` | ### Директории на хосте ``` /home/slin/ ├── openclaw/ # docker-compose.yml для OpenClaw + Xray ├── repos/ │ ├── enduro-trails/ # Пилотный проект (git repo) │ └── orchestrator/ # Orchestrator (git repo) ├── gitea/ # docker-compose.yml для Gitea ├── gitea-data/ # Gitea data volume ├── plane-selfhost/ # Plane docker-compose ├── claude-cli-proxy/ # CLI proxy config ├── enduro-trails/ # Отдельная копия (app container) ├── act_runner/ # Gitea Actions runner binary ├── act_runner_data/ # Runner data ├── n8n/ # n8n (не запущен?) ├── duckdns/ # DuckDNS update script └── backups/ # Бэкапы ``` --- ## Orchestrator — детальный статус **Репо:** `/home/slin/repos/orchestrator/` **Контейнер:** `orchestrator` (порт 8500) **Конфиг:** `.env` (ORCH_PLANE_API_URL, ORCH_GITEA_URL, ORCH_CLAUDE_BIN, ORCH_REPOS_DIR) ### Что работает - ✅ FastAPI app запущен, `/health` отвечает 200 - ✅ `/webhook/plane` — принимает events, пишет в SQLite - ✅ `/webhook/gitea` — принимает events, пишет в SQLite - ✅ `/status` — показывает active tasks - ✅ SQLite БД инициализирована (tables: events, tasks, agent_runs) - ✅ AgentLauncher — класс написан, конфиги 5 агентов определены ### Что реализовано (21.05.2026 — DEV_TASK_ORCHESTRATOR_QG) - ✅ `qg/checks.py` — 5 реальных QG-проверок (filesystem + Gitea API) - ✅ `handle_work_item_created` — создаёт task + ветку в Gitea + папку docs - ✅ `handle_comment` — `:approved:` → QG check → advance stage → launch agent - ✅ `handle_push` / `handle_pr` / `handle_ci_status` — полная обработка - ✅ AgentLauncher — Claude CLI запускается из контейнера (binary mount) - ✅ Stage machine (`src/stages.py`) — конечный автомат 8 стадий - ✅ Notifications (`src/notifications.py`) — structured logging - ✅ 27 тестов — all green - ✅ Nginx proxy_pass `/orchestrator/` → localhost:8500 (уже был настроен) - 🟡 Plane webhooks → Orchestrator — настройка в процессе - 🟡 Gitea webhooks → Orchestrator — настройка в процессе ### Данные в БД (на 21.05.2026) - events: 15 (4 старых + 11 от smoke tests) - tasks: 6 (2 старых + 4 smoke tests: ET-001..ET-004) - agent_runs: 3 (2x architect, 1x developer — реальные запуски Claude CLI) --- ## Репозиторий enduro-trails — детальный статус **Репо:** `/home/slin/repos/enduro-trails/` (Gitea: `admin/enduro-trails`) **Ветки:** main, feature/ET-001-barriers-footways, feature/ET-002-poi-toggle (active), feature/bootstrap, feature/migrate-prototype **Коммитов:** 22 ### Структура (каноническая, по BRD) ``` enduro-trails/ ├── CLAUDE.md ✅ Полный паспорт проекта ├── CHANGELOG.md ✅ ├── Makefile ✅ (make dev/test/lint/build) ├── Dockerfile ✅ ├── docker-compose.yml ✅ ├── pyproject.toml ✅ ├── run_architect.sh ✅ Скрипт ручного запуска ├── run_dev.sh ✅ ├── run_review.sh ✅ ├── run_test.sh ✅ ├── .openclaw/agents/ │ ├── architect.md ✅ System prompt (Opus) │ ├── developer.md ✅ System prompt (Sonnet) │ ├── reviewer.md ✅ │ ├── tester.md ✅ │ └── deployer.md ✅ ├── docs/work-items/ │ ├── ET-001/ ✅ ПОЛНЫЙ ЦИКЛ (merged) │ │ ├── 00-business-request.md │ │ ├── 01-brd.md │ │ ├── 02-trz.md │ │ ├── 03-acceptance-criteria.md │ │ ├── 04-test-plan.yaml │ │ ├── 06-adr/ │ │ ├── 07-infra-requirements.md │ │ ├── 12-review.md ✅ APPROVED │ │ └── 13-test-report.md ✅ PASS │ └── ET-002/ 🟡 В РАБОТЕ (analysis done, approved) │ ├── 00-business-request.md │ ├── 01-brd.md │ ├── 02-trz.md │ ├── 03-acceptance-criteria.md │ └── 04-test-plan.yaml ├── src/ ✅ ├── tests/ ✅ ├── scripts/ ✅ ├── migrations/ ✅ └── infra/ ✅ ``` ### Work Items — прогресс | ID | Название | Этап | Статус | |----|----------|------|--------| | ET-001 | Исключить шлагбаумы и тротуары из OSRM | Done | ✅ Полный цикл: BRD → ADR → код → review (APPROVED) → test (PASS) → merged | | ET-002 | Чекбокс POI в попапе рельефа | Analysis → approved | 🟡 BRD/ТЗ/AC/TestPlan готовы, status=approved, ветка создана, ждёт Architect | ### Git history (последние коммиты) ``` 73c9dc4 docs(ET-002): status → approved f1f4d5f docs(ET-002): BRD, ТЗ, AC, Test Plan 832099c docs: restructure phases f561c3b fix: switchMapStyle loads style as JSON fdc9836 Merge PR #4: restore UI phase 5.4 + ET-001 8d36f38 fix: restore UI to phase 5.4 0d57e47 test(ET-001): test report — PASS d171629 review(ET-001): code review — APPROVED e263f84 feat(ET-001): implement barrier blocking and footway exclusion c44dc5c arch(ET-001): ADR, infra requirements ``` --- ## Analyst agent (OpenClaw) — статус **Workspace:** `/home/node/.openclaw/workspace-analyst/` ### Что есть - ✅ SOUL.md, IDENTITY.md, AGENTS.md, TOOLS.md, HEARTBEAT.md - ✅ ET-002 артефакты (BRD, ТЗ, AC, test plan) — сгенерированы - ✅ Workspace-state.json (OpenClaw знает о нём) ### Что НЕ сделано - ❌ Не зарегистрирован в `openclaw.json` → `agents.list[]` - ❌ Нет Telegram binding (не получает сообщения напрямую) - ❌ Нет отдельного Telegram-бота/группы - ❌ Нет доступа к Plane API (PLANE_API_TOKEN не в env) - ❌ Нет доступа к Gitea (SSH key / token) --- ## Plane — статус **URL:** `https://plane.mva154.duckdns.org` (порт 8091/8443) **Workspace slug:** `ag_proj` ### Что есть - ✅ Plane развёрнут и работает (все контейнеры healthy) - ✅ Workspace создан ### Что НЕ сделано - ❌ Webhooks → Orchestrator не настроены - ❌ Custom fields (qg_status, stage) не созданы - ❌ Лейблы (stage:*, back-to:*, escalation:*) не созданы - ❌ Шаблон Work Item с подзадачами не создан --- ## Gitea — статус **URL:** `https://git.mva154.duckdns.org` (порт 3000 internal) **Домен:** `git.mva154.duckdns.org` ### Что есть - ✅ Gitea работает - ✅ Репо `enduro-trails` с полной структурой - ✅ Репо `orchestrator` - ✅ CI workflow (Gitea Actions) — self-hosted runner (`act_runner`) - ✅ Service account `claude-bot` (предположительно — коммиты от агентов) ### Что НЕ проверено / не сделано - ❓ Branch protection на main (require PR, require CI green) - ❓ Gitea Actions runner — работает ли сейчас? - ❌ Webhooks → Orchestrator не настроены в Gitea UI --- ## Доступ к mva154 **Из OpenClaw контейнера:** ```bash /home/node/.openclaw/skills/installer/scripts/ssh_exec.sh --host mva154 --cmd "" ``` - Тип: `ssh-direct` - Хост: `82.22.50.71:22` - User: `slin` - Auth: password (`MVA154_PASSWORD` из .env) - Sudo: yes (`MVA154_SUDO_PASS`) --- ## Следующие шаги (приоритет) 1. **Дотянуть Orchestrator** — реализовать QG-проверки и автозапуск агентов (заглушки → реальная логика) 2. **Настроить webhooks** — Plane → Orchestrator, Gitea → Orchestrator 3. **Nginx proxy** — добавить `/orchestrator/` location 4. **Зарегистрировать Analyst** в openclaw.json + binding 5. **Прогнать ET-002** через автоматический пайплайн (первый автоматический запуск) --- ## Документация проекта | Файл | Описание | |------|----------| | `tasks/multi-agent/BRD.md` | Полный BRD с архитектурой, QG, roadmap | | `tasks/multi-agent/BACKLOG.md` | Бэклог + решения по Analyst | | `tasks/multi-agent/DEV_TASK_ORCHESTRATOR_MVP.md` | ТЗ для Dev-агента на Orchestrator | | `tasks/multi-agent/STATUS.md` | **Этот файл** — актуальный статус | | `tasks/multi-agent/proposal_v1/` | Исходный proposal | | `tasks/multi-agent/reports/` | Отчёты Dev-агента |