Add all BMAD skill artifacts: epics, stories, sprint-status, QA tests, project-context, readiness report
Co-authored-by: Kenearos <86194771+Kenearos@users.noreply.github.com>
This commit is contained in:
parent
e37cb6f4c0
commit
3be3cb73b6
14 changed files with 1577 additions and 4 deletions
|
|
@ -0,0 +1,74 @@
|
|||
# Story 2.3: Critic-Agent-Node implementieren
|
||||
|
||||
<!-- 🏃 Prepared by BMAD SM Skill — Agent: Bob (Scrum Master) -->
|
||||
<!-- Skill Command: /bmad-agent-bmm-sm → [CS] Context Story -->
|
||||
<!-- Workflow: _bmad/bmm/workflows/4-implementation/create-story/workflow.yaml -->
|
||||
|
||||
Status: done
|
||||
|
||||
## Story
|
||||
|
||||
Als **Backend-Entwickler**,
|
||||
möchte ich **den `critic_agent_node` mit Score-Parsing, Routing-Logik und Safety-Valve**,
|
||||
so dass er **Drafts bewertet, `route_decision` korrekt setzt und Endlosschleifen verhindert**.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
1. Score < 8 → `route_decision = "rework"`, Feedback wird an `feedback_history` angehängt
|
||||
2. Score ≥ 8 → `route_decision = "approve"`, `feedback_history` bleibt unverändert
|
||||
3. `iteration_count >= MAX_ITERATIONS` → automatische Genehmigung ohne LLM-Aufruf (Safety Valve)
|
||||
4. Nicht-parsbare LLM-Antwort → Fallback `route_decision = "rework"`, kein Crash
|
||||
5. Score wird auf 0–10 geclampt (kein Overflow)
|
||||
|
||||
## Tasks / Subtasks
|
||||
|
||||
- [x] Task 1: `_parse_critic_response()` implementieren (AC: 1, 4, 5)
|
||||
- [x] Subtask 1.1: Regex für SCORE, VERDICT, FEEDBACK-Blöcke
|
||||
- [x] Subtask 1.2: Score-Clamping (max 0.0, min 10.0)
|
||||
- [x] Subtask 1.3: Fallback auf (0.0, "rework", full_content) bei Parse-Fehler
|
||||
- [x] Task 2: `critic_agent_node()` implementieren (AC: 1, 2, 3)
|
||||
- [x] Subtask 2.1: Safety-Valve prüfen vor LLM-Aufruf
|
||||
- [x] Subtask 2.2: LLM-Aufruf mit temperature=0.2
|
||||
- [x] Subtask 2.3: Route-Decision aus Score und APPROVAL_THRESHOLD ableiten
|
||||
- [x] Subtask 2.4: `feedback_history` nur bei rework anhängen
|
||||
- [x] Task 3: Unit-Tests schreiben (AC: 1–5)
|
||||
- [x] Subtask 3.1: Test score < 8 → rework
|
||||
- [x] Subtask 3.2: Test score ≥ 8 → approve
|
||||
- [x] Subtask 3.3: Test safety valve bei MAX_ITERATIONS
|
||||
- [x] Subtask 3.4: Test Parse-Fehler-Fallback
|
||||
|
||||
## Dev Notes
|
||||
|
||||
- **LLM-Mocking:** `@patch("agents.critic_agent.ChatAnthropic")` in allen Unit-Tests
|
||||
- **Kein echter API-Aufruf in CI** — strikte Anforderung aus CLAUDE.md
|
||||
- **Threshold-Tests:** Immer beide Seiten testen (score=7.9 → rework, score=8.0 → approve)
|
||||
- Bezug: `backend/state.py#APPROVAL_THRESHOLD`, `backend/state.py#MAX_ITERATIONS`
|
||||
|
||||
### Project Structure Notes
|
||||
|
||||
- Implementiert in: `backend/agents/critic_agent.py`
|
||||
- Tests in: `backend/tests/test_routing.py`
|
||||
|
||||
### References
|
||||
|
||||
- [Source: CLAUDE.md#Python Code Style] — Type hints mandatory
|
||||
- [Source: _bmad-output/planning-artifacts/architecture.md#CouncilState] — State contract
|
||||
- [Source: _bmad-output/planning-artifacts/epics.md#Story-2.3] — ACs
|
||||
|
||||
## Dev Agent Record
|
||||
|
||||
### Agent Model Used
|
||||
|
||||
Amelia (💻 BMAD Dev Agent) — `dev-story` workflow
|
||||
|
||||
### Completion Notes List
|
||||
|
||||
- Score-Clamping verhindert Werte außerhalb 0–10 auch bei fehlerhafter LLM-Formatierung.
|
||||
- Safety-Valve gibt `APPROVAL_THRESHOLD` als Score zurück (nicht 10.0), damit Tests einheitlich bleiben.
|
||||
- Feedback wird nur bei `rework` angehängt, da `operator.add`-Reducer andernfalls Genehmigungen in die History schreibt.
|
||||
|
||||
### File List
|
||||
|
||||
- `backend/agents/critic_agent.py`
|
||||
- `backend/tests/test_routing.py`
|
||||
- `backend/state.py` (nur gelesen, nicht verändert)
|
||||
Loading…
Add table
Add a link
Reference in a new issue