Files
bmad_agent/config/company.yaml
T
2026-04-23 13:35:33 +02:00

170 lines
6.2 KiB
YAML
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.
# Paperclip Company-Konfiguration für BMAD Phase 4 Automation
# ===========================================================
# REFERENZ-Dokument, keine direkt einspielbare Config.
# Paperclip legt Companies/Agents über UI oder API an.
# Konkrete API-Payloads: config/agents.jsonc
# Schritt-für-Schritt-Setup: docs/RUNBOOK.md
company:
name: "BMAD Phase 4 Executor"
mission: >
Automatisierte Ausführung der BMAD-V6-Implementation-Phase mit
getrennten Dev- und QA-Rollen. Phasen 13 sowie Sprint Planning
sind manuell durchgeführt. Diese Company führt ausschließlich den
Create → Dev → Review Loop pro Story mit max. 3 Retries bei
Review-Fails und Retrospectives pro abgeschlossenem Epic aus.
# Pfad auf das BMAD-Projekt-Verzeichnis, in dem OpenCode arbeitet.
project_root: "/srv/projects/<dein-projektname>"
# Wohin Eskalationen gehen. Optional wenn leer, nur Dashboard.
operator:
name: "<dein Name>"
notification_webhook: "<optional>"
# Agents Details siehe config/agents.jsonc
# -------------------------------------------
agents:
- id: pm-supervisor
role: "Supervisor"
adapter: opencode_local
session_behavior: resume-or-new
skills: [monitor-bmad-progress]
budget_monthly_usd: 20
heartbeat: event-only # wake-on-assignment, kein Timer
governance:
can_create_child_issues: true
can_complete_own_work: false
can_escalate: true
- id: dev-worker
role: "Developer"
adapter: opencode_local
session_behavior: new # fresh chat pro BMAD-Skill (BMAD-Doku-Anforderung)
skills: [execute-bmad-dev-tasks]
model: "<starkes Code-Modell>"
budget_monthly_usd: 300
per_task_usd_max: 10
heartbeat: event-only
reports_to: pm-supervisor
assigned_task_types: [create-story, dev-story]
governance:
can_modify_files: true
can_git_commit: true
can_git_push: false
can_create_child_issues: false
- id: qa-engineer
role: "QA"
adapter: opencode_local
session_behavior: new # fresh session = unabhängiges Review
skills: [execute-bmad-qa-tasks]
model: "<anderes Modell als dev-worker>"
budget_monthly_usd: 150
per_task_usd_max: 5
heartbeat: event-only
reports_to: pm-supervisor
assigned_task_types: [code-review, retrospective]
governance:
can_modify_files: false # QA schreibt keinen Code
can_git_commit: false
can_git_push: false
can_create_child_issues: false
# Hinweis: Der Supervisor oben nutzt `heartbeat: event-plus-timer`
# mit Intervall 900s (15 Min) siehe agents.jsonc. Das ist
# beabsichtigte Abweichung vom Event-only-Muster der Worker:
# Der Supervisor patrouilliert proaktiv und räumt Blocker auf.
# Concurrency- und Sequenzierungs-Policies
# -----------------------------------------
# Diese Policies werden vom Supervisor-Skill ERZWUNGEN (nicht nur
# empfohlen). Das Skill prüft sie vor jedem Ready-Setzen eines Tasks.
policies:
single_epic_sequence:
id: A
enabled: true
description: >
Höchstens ein Epic ist zu einem Zeitpunkt "aktiv". Das nächste
Epic startet erst, wenn die Retrospektive des vorigen Epics
completed ist. Kein Task aus einem späteren Epic wird ready
gesetzt, solange ein früheres Epic nicht abgeschlossen ist.
single_task_per_agent:
id: B
enabled: true
description: >
Jeder Agent bearbeitet zur selben Zeit genau einen Task.
Supervisor setzt einen neuen Task für einen Agent erst dann auf
ready, wenn dieser Agent keinen anderen Task ready oder
in-progress hat. Paperclips atomisches Task-Checkout verstärkt
das auf Infrastruktur-Ebene.
strict_story_order:
id: C
enabled: true
description: >
Innerhalb eines Epics werden Stories strikt in Reihenfolge
abgearbeitet: Story 1.1 bis zum approved, dann Story 1.2,
dann Story 1.3 und so weiter. Story N.(M+1) rührt sich nicht,
solange Story N.M nicht approved ist. Keine Vor-Arbeit, keine
Parallelität über Story-Grenzen hinweg.
idempotent_task_creation:
id: invariant-zero
enabled: true
description: >
Jede Task-Anlage läuft durch Duplikats-Prüfung. Kompositschlüssel
ist (type, epic_id, story_id, retry_count). Kein Task mit
identischem Schlüssel wird je zweimal angelegt. Gilt für
Bootstrap, Retry-Logik und Patrol-autonome Aktionen gleichermaßen.
# Patrol-Policy
# -------------
patrol:
enabled: true
interval_seconds: 900 # 15 Min (siehe agents.jsonc)
meta_stall_threshold_minutes: 60 # ab hier Eskalation statt Weiter-Patrol
autonomous_resolutions:
- stuck_in_progress_task # Agent-Hang, Task reset-to-ready
- orphan_ready_task # kein Agent assigned, re-assign
- lost_ready_propagation # Vorgänger completed, Folge blocked
- duplicate_task # jüngere Duplikate cancellen
- idle_workflow # kein aktiver Task trotz offenem Goal
- dirty_worktree # WIP-Commit, kein Code-Verlust
mandatory_escalations: # Operator muss ran, keine autonome Aktion
- retry_limit_reached # inhaltliche Entscheidung
- missing_agent # Agent dereferenziert oder gelöscht
- meta_stall # >1h kein Fortschritt trotz Patrol
# Skill-Config werden als persistent_facts an Agents übergeben
# --------------------------------------------------------------
skill_config:
monitor-bmad-progress:
max_review_retries: 3
timeout_retry_limit: 3
consecutive_crash_limit: 2
stall_detection_minutes: 30
patrol_interval_seconds: 900
# Governance-Eskalationen (harte Stops, kein Approval-Gate)
# ---------------------------------------------------------
hard_escalations:
- retry_limit_reached
- sprint_status_missing
- sprint_status_inconsistent
- no_epic_source_found
- planning_incomplete
- dirty_worktree
- consecutive_crash_limit_reached
- concurrent_task # Concurrency-Verletzung STOPP
- duplicate_task_detected # Idempotenz-Verletzung erkannt durch Worker
- partial_bootstrap_detected # unvollständige Task-Hierarchie
- budget_exhausted
audit_trail:
enabled: true
retention_days: 90