Files
wiki/tasks/multi-agent/STATUS.md
2026-05-21 22:00:01 +03:00

279 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Статус проекта: Мультиагентная разработка ПО
**Дата обновления:** 2026-05-21 18:55 UTC
**Ревьюер:** Стрим
---
## Общая зрелость
| Фаза (из 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: Оптимизация** | 🟡 В работе | Баги исправлены, auto-advance добавлен |
---
## 🎉 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 избыточен |
---
## Инфраструктура на 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 # 5 QG checks (filesystem + Gitea 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: — ↑ Agent: arch ↑ Agent: dev ↑ Agent: reviewer ↑ Agent: tester
```
### Auto-advance (добавлено 21.05)
| Триггер | Действие |
|---------|----------|
| 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)
| Событие | Действие в 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` для маппинга |
### Данные в БД (на 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
```yaml
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` (отдельный бот) |
| Статус | ✅ **Полностью зарегистрирован и работает** |
---
## 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.
### Улучшения для полной автономности
3. **Deploy stage** — автоматический merge PR + deploy (сейчас ручной)
4. **Notifications в Telegram** — отправлять Славе статус при смене stage
5. **Custom fields в Plane** — qg_status, stage, tokens_spent
6. **Лейблы в Plane** — stage:*, back-to:*, escalation:*
7. **Параллельные задачи** — FIFO-очередь (F2-6 из BRD)
---
## Доступ к mva154
**Из OpenClaw контейнера:**
```bash
/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 (выполнено) |