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

7.5 KiB
Raw Blame History

Бэклог — Мультиагентная разработка ПО


type: backlog updated_at: 2026-06-03

TODO: Plane — авто-добавление ботов в новый проект (03.06.2026)

ORCH-9 · приоритет: средний · родитель: задача Plane per-agent authorship (PR #9 e9fd3052, замержена 03.06).

Проблема: 7 сервис-ботов орка (🧠 Analyst / 🏗️ Architect / 💻 Developer / 🔍 Reviewer / 🧪 Tester / 🚀 Deployer / 🌊 Стрим) добавлены в project_members только текущего проекта enduro (7a79f0a9-...). При создании НОВОГО проекта в Plane боты в нём не состоят → POST коммента вернёт 403 Forbidden (аутентификация ок, прав нет). Авторство сломается на новом проекте.

Решение: автоматически добавлять 7 ботов в project_members (role 15) при появлении нового проекта. Точка интеграции — resolve проекта в ORCH-6 (src/projects.py / реестр Plane id→repo): когда оркестратор впервые видит новый project_id, дёрнуть «ensure bots in project». Идемпотентно (NOT EXISTS).

Грабли (зафиксированы 03.06):

  • project_members NOT NULL: member_id обязателен (без него INSERT падает молча в транзакции).
  • Боты должны быть И в workspace_members, И в project_members — членство в воркспейсе само по себе НЕ даёт права комментить в проекте.
  • Связь автор↔токен: issue_comments.actor_id = владелец api_tokens.token.

Done when: новый проект → боты авто-добавлены → коммент любого бота возвращает 201, автор в Plane = бот (не mva154).

Источники: memory/2026-06-03.md (раздел «Plane per-agent authorship»), ТЗ DEV_TASK_PLANE_PER_AGENT_AUTHOR.md.


Решения (19.05.2026)

Analyst — пересмотр архитектуры

Было: Analyst = Стрим (OpenClaw main agent), работает как посредник.

Стало: Analyst = отдельный полноценный агент OpenClaw (не субагент).

Ключевые решения:

  • Analyst — первоклассный агент в agents.list[], равноправен с main
  • Слава общается с Analyst напрямую (не через Стрим)
  • Каналы связи: отдельный Telegram-чат + Plane (комментарии)
  • Модель: anthropic/claude-sonnet-4-6 (API, не CLI)
  • Свой workspace, своя память, свои сессии

Поведение:

  1. Получает задачу от Славы (Telegram или Plane)
  2. Читает 00-business-request.md + CLAUDE.md проекта
  3. Если неясности → формирует вопросы, останавливается, ждёт ответа
  4. Пишет BRD, ТЗ, AC, Test Plan
  5. Коммитит в feature-ветку
  6. Запрашивает approve у Славы

Правила:

  • Не пишет код
  • Не трогает архитектуру, дизайн, ADR
  • Не закрывает задачу без :approved: от Славы
  • Не угадывает — спрашивает
  • Читает весь репо (контекст)
  • Пишет только в docs/work-items/<id>/
  • Коммитит в feature-ветку
  • Обновляет статусы в Plane

Поток:

Слава (Telegram)  ──────►  Analyst agent
Слава (Plane comment) ──►  Analyst agent (через webhook)
Analyst ──► Git (коммит в feature-ветку)
Analyst ──► Plane (статус, комментарии)
Analyst ──► Слава (ответ в Telegram / Plane)

Стрим в цепочке НЕ участвует — Analyst автономен.


TODO: Analyst agent

  • Решить: тот же Telegram-бот (binding по peer) или отдельный бот?
  • Решить: Plane webhook сразу или пока руками?
  • Решить: первый проект — enduro-trails?
  • Добавить analyst в agents.list[] в openclaw.json
  • Создать workspace ~/.openclaw/workspace-analyst/ с AGENTS.md (промпт из proposal)
  • Настроить Telegram binding
  • Дать доступ к Gitea (SSH key или token для claude-bot)
  • Дать PLANE_API_TOKEN в env агента
  • Написать скилл plane-api (или использовать exec curl)
  • Тестовый прогон: создать Work Item → Analyst пишет BRD

TODO: Инфраструктура (из ревью 18.05)

  • Claude Code CLI установлен на mva154 (v2.1.142)
  • Gitea работает (v1.25.5)
  • Plane работает
  • Node.js на mva154 (v24.14.0)
  • Service account claude-bot в Gitea
  • Репо enduro-trails — каноническая структура
  • CI workflow (lint + test + build)
  • Проверить авторизацию Claude CLI (claude auth status)
  • Проверить Gitea Actions runner (работает ли?)
  • Настроить branch protection на main
  • Plane webhooks → endpoint

TODO: Orchestrator (Фаза 2)

  • FastAPI скелет: /webhook/plane, /webhook/gitea, /health
  • QG-проверки (lint-spec, req-coverage, reaction check)
  • Запуск агентов по событиям
  • Репо admin/agent-dev — заполнить кодом

TODO: Тестирование / аудит (24.05.2026)

  • Определить тип Work Item для чистого тестирования (Audit / Regression или Feature+skip:*)
  • Описать YAML-схему Test Plan (чтобы Tester agent мог исполнять автономно)
  • Обновить proposal_v1/09_ui_testing.md под сценарий «регресс без новой фичи»
  • Прописать как Tester agent запускает Playwright + vision + формирует отчёт
  • Добавить тип Audit в список типов Work Item в 06_plane_integration.md

TODO: Управление бэклогом (24.05.2026)

  • Решить: кто и куда заводит задачи (Слава → Plane / через Analyst / через Стрим)
  • Описать правила декомпозиции крупных фич (тип Decomposition, когда и как)
  • Прописать правила работы с backlog (приоритет, эпик/фаза, когда заводить Phase)
  • Решить: кто обновляет статусы в Plane (Analyst? Orchestrator?)
  • Решить: Plane — единственный источник backlog'а или нужно отдельное хранилище

TODO: Остальные агенты (после Analyst)

  • Architect (Claude CLI, Opus)
  • Developer (Claude CLI, Sonnet)
  • Reviewer (Claude CLI, Opus)
  • Tester (Claude CLI, Sonnet)
  • Deployer (Claude CLI, Sonnet)