Files
orchestrator/CLAUDE.md
claude-bot 0dfddf93f0 feat(plane): осмысленная статусная модель Plane (слой B — индикация)
Приводит статусы доски Plane к смыслу стадий конвейера, сохраняя
инвариант «статус — индикация, а не управление». Меняется только слой B
(отображение: src/plane_sync.py + точки выставления статуса в
stage_engine.py/webhooks/plane.py/reconciler.py); слой A — машина стадий
src/stages.py::STAGE_TRANSITIONS — остаётся байт-в-байт неизменным (AC-21).

- 6 новых логических ключей статуса (to_analyse, analysis, code_review,
  awaiting_deploy, deploying, monitoring) + сеттеры и диспетчер
  set_issue_stage_state.
- Project-relative alias-fallback (BR-12): новый ключ деградирует на
  базовый UUID того же проекта → нулевая регрессия для enduro-trails.
- Самодеплой (ORCH-036) индицирует фазы: Awaiting Deploy / Deploying;
  terminal-sync для self-hosting → Monitoring after Deploy, для прочих →
  терминальный Done.
- Post-deploy монитор (ORCH-021): HEALTHY → Done, DEGRADED → Blocked
  (только индикация; self-hosting ALERT_ONLY, прод не трогается, BR-5).
- Reconciler: триггер старта/резюма на To Analyse; Guard 2 учитывает
  новые активные ожидания без расширения skip-set на алиасах.
- never-raise контракт сеттеров и резолвера состояний сохранён.
- Раскатка — созданием статусов в Plane оператором, без kill-switch.

Инварианты не менялись: STAGE_TRANSITIONS, QG_CHECKS (12 чеков),
check_deploy_status, exit-код-контракт хука, merge-gate, схема БД.

ADR: docs/work-items/ORCH-066/06-adr/ADR-001-plane-status-model.md
Тесты: test_plane_status_model, test_plane_to_analyse_resume,
test_plane_status_failclosed + TC в существующих наборах. 774 passed.

Refs: ORCH-066

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-07 22:02:45 +00:00

6.6 KiB
Raw Blame History

CLAUDE.md — паспорт проекта orchestrator

TL;DR

Мульти-агентный оркестратор разработки. FastAPI-сервис: принимает webhooks от Plane и Gitea, ведёт задачи по конвейеру стадий через Quality Gates, запускает Claude CLI агентов (analyst → architect → developer → reviewer → tester → deployer) на каждой стадии. Оркестратор дорабатывает в том числе сам себя (self-hosting).

Стек

  • Backend: FastAPI + uvicorn (Python 3.12)
  • БД: SQLite (src/db.py)
  • Агенты: Claude CLI (ORCH_CLAUDE_BIN), по одному промпту на роль в .openclaw/agents/
  • Очередь задач: собственная (SQLite jobs, src/queue_worker.py, ORCH-1)
  • Контейнеризация: Docker + Compose
  • CI/CD: Gitea Actions (.gitea/workflows/)
  • Деплой: docker compose на mva154

Команды

  • uvicorn src.main:app --reload --port 8500 — поднять локально (dev)
  • pytest tests/ -q — все тесты
  • docker compose up -d --build — прод
  • docker compose --profile staging up -d orchestrator-staging — staging-песочница (8501)

Среды

  • prodorchestrator (8500), внешний URL https://openclaw.mva154.duckdns.org/orchestrator/
  • stagingorchestrator-staging (8501), изолированная БД (./data/staging), только sandbox-проект

Структура

  • src/ — приложение (main, config, db, stages, stage_engine, queue_worker, projects, usage)
  • src/agents/launcher.py — запуск Claude CLI агентов
  • src/qg/checks.py — Quality Gate проверки
  • src/webhooks/ — приём вебхуков Plane/Gitea
  • tests/ — pytest
  • docs/ — документация, ADR, work-items, operations
  • scripts/ — утилиты (staging_check.py, orchestrator-deploy-hook.sh)

Конвейер (кратко; детали — docs/architecture/README.md)

created → analysis → architecture → development → review → testing → deploy-staging → deploy → done
                          ↑                          │
                          └──── REQUEST_CHANGES ──────┘  (откат на development, max 3)

Статусная модель Plane (ORCH-066) — индикация ≠ управление

Статусы Plane — это слой B (индикация), отдельный от слоя A (машина стадий) src/stages.py::STAGE_TRANSITIONS. Plane показывает наблюдателю осмысленную картину (Backlog → Todo → Analysis → Architecture → Development → Code-Review → Testing → Awaiting Deploy → Deploying → Monitoring after Deploy → Done + человеческие гейты In Review/Approved, Confirm Deploy), но НИКОГДА не управляет конвейером. Маппинг и сеттеры — src/plane_sync.py (6 новых ключей: to_analyse/analysis/code_review/awaiting_deploy/deploying/monitoring), с project-relative alias-fallback: на частично сконфигурированном проекте новый ключ деградирует на базовый UUID ТОГО ЖЕ проекта (нулевая регрессия для enduro-trails). Детали — docs/architecture/README.md.

Конвенции

  • Conventional Commits (feat:, fix:, docs:, refactor:, test:)
  • Ветки: feature/ORCH-NNN-slug, fix/ORCH-NNN-slug
  • ADR per work-item: docs/work-items/<plane-id>/06-adr/ADR-NNN-slug.md
  • Global ADR (сквозные решения): docs/architecture/adr/adr-NNNN-slug.md
  • Work items: docs/work-items/<plane-id>/
  • Машинные вердикты Quality Gate — строго YAML-frontmatter (verdict:, deploy_status:, staging_status:), никогда проза

Артефакты задачи (docs/work-items/<plane-id>/)

00-business-request.md, 01-brd.md, 02-trz.md, 03-acceptance-criteria.md, 04-test-plan.yaml, 06-adr/ADR-NNN-slug.md, 07-infra-requirements.md, 08-data-requirements.md, 10-tech-risks.md, 12-review.md, 13-test-report.md, 14-deploy-log.md, 15-staging-log.md, 16-post-deploy-log.md (post-deploy наблюдение, ORCH-021).

Правила для агентов

  1. Перед любым действием прочесть этот файл и docs/architecture/README.md.
  2. Документация = golden source наравне с кодом. Изменил функционал → обнови доку В ТОМ ЖЕ PR. Архитектурное решение → заведи ADR. Обнови CHANGELOG.md.
  3. Никогда не править артефакты других этапов.
  4. Никогда не комментировать ТЗ задним числом — если ТЗ не годится, возвращай в Анализ.
  5. Никогда не закрывать задачу самостоятельно — это делает CI / финальная стадия.
  6. Reviewer проверяет: обновлена ли документация. Нет → REQUEST_CHANGES.
  7. Не использовать --no-verify без явного одобрения Owner.
  8. Секреты — только в .env/.env.staging на хосте, в гит НЕ коммитятся (канон — .env.example).

⚠️ Self-hosting — оркестратор правит САМ СЕБЯ

Задачи проекта ORCH меняют инструмент, который СЕЙЧАС работает в продакшене и обслуживает ДРУГИЕ проекты (enduro-trails) из ОДНОГО инстанса с ОБЩЕЙ БД и общей очередью.

  • НЕ перезапускать / не ронять прод-контейнер orchestrator в рамках задачи — встанет конвейер всех проектов.
  • Любой деплой/рестарт self = групповой риск. Детали и топология — docs/operations/INFRA.md.
  • Стадия deploy-staging (порт 8501) — обязательная страховка перед прод-деплоем орка.

Паспорт проекта orchestrator. Поддерживается агентами при каждой доработке. Изолирован: описывает только этот проект (канон per-repo, см. ORCH-9).