Skip to content

Commit e9daa3a

Browse files
martinky82claude
authored andcommitted
Refactor IssueHandler from supervisor to issue_verification_agent
Move the IssueHandler workflow from ymir/supervisor/ into a standalone BeeAI Framework agent at ymir/agents/issue_verification_agent.py, following the pattern established by preliminary_testing_agent. This includes: - New agent: issue_verification_agent with Workflow-based state machine - Testing analyst inlined as a sub-agent for AI-driven test result analysis, using ReasoningAgent with maintainer rules from MCP - New MCP tools: errata (GetErratum, GetErratumBuildNvr), testing_farm (GetTestingFarmRequest, ReproduceTestingFarmRequest), gitlab (SearchGitlabProjectMrs), jira (UpdateJiraComment, AddJiraAttachments, GetJiraAttachment) - New unprivileged tools: read_logfile, read_readme, search_resultsdb, analyze_ewa_testrun - Supporting modules moved to ymir/agents/utilities/ - Shared types added to ymir/common/models.py (JotnarTag renamed to YmirTag) - Skill definition for issue_verification with full workflow details - Makefile target and compose service for standalone execution - Jira dev-status tools return dict-wrapped responses for MCP compliance - Blocking sync calls wrapped in asyncio.to_thread - URL allowlisting removed from read_logfile (egress control handles security) The supervisor's ErratumHandler remains unchanged for a follow-up. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 91fe1b1 commit e9daa3a

26 files changed

Lines changed: 3234 additions & 38 deletions

Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,14 @@ process-erratum:
292292
$(COMPOSE_SUPERVISOR) run --rm \
293293
supervisor python -m ymir.supervisor.main $(DEBUG_FLAG) $(IGNORE_NEEDS_ATTENTION_FLAG) $(DRY_RUN_FLAG) process-erratum $(ERRATA_ID)
294294

295+
.PHONY: run-issue-verification-agent-standalone
296+
run-issue-verification-agent-standalone:
297+
$(COMPOSE_AGENTS) run --rm \
298+
-e JIRA_ISSUE=$(JIRA_ISSUE) \
299+
-e DRY_RUN=$(DRY_RUN) \
300+
-e IGNORE_NEEDS_ATTENTION=$(IGNORE_NEEDS_ATTENTION) \
301+
issue-verification-agent
302+
295303
.PHONY: run-preliminary-testing-agent-standalone
296304
run-preliminary-testing-agent-standalone:
297305
$(COMPOSE_AGENTS) run --rm \

README-agents.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Three agents process tasks through Redis queues:
1111
- **Triage Agent**: Analyzes JIRA issues and determines resolution path. It uses title, description, fields, and comments to find out root cause of the issue. It can ask for clarification, create tasks for other agents or may take no action if not needed.
1212
- **Rebase Agent**: Updates packages to newer upstream versions. A Rebase is only to be chosen when the issue explicitly instructs you to "rebase" or "update". It looks for upstream references that are linked, attached and present in the description or comments in the issue.
1313
- **Backport Agent**: Applies specific fixes/patches to packages. It looks for patches that are linked, attached and present in the description or comments in the issue. It tries to apply the patch and resolve any conflicts that may arise during the backport process.
14+
- **Issue Verification Agent**: Manages the post-fix lifecycle of a JIRA issue — from merged MR through errata creation, testing analysis, and status transitions to RELEASE_PENDING. Migrated from the supervisor's `IssueHandler`.
1415

1516

1617
## Dry run mode

README-supervisor.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ This will have to be repeated when the ticket expires. (Exporting the kcm-cache
3838
socket to the container seems better, but I wasn't able to get it to work due
3939
to various difficult to work around permission issues.)
4040

41+
## Note on IssueHandler migration
42+
43+
The `IssueHandler` has been migrated to `ymir/agents/issue_verification_agent.py` as part of the BeeAI Framework refactoring. The supervisor still handles errata processing via `ErratumHandler`. For processing individual issues, prefer using the new agent directly (see README-agents.md).
44+
4145
## Processing a single issue or erratum
4246

4347
To process a single issue or erratum, you can run:

agents_as_skills/README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,24 @@ This directory contains Ymir workflows packaged as **AI coding assistant skills*
1616

1717
For installation instructions (skill setup and MCP tool configuration), see the [Skills Installation Guide](https://github.com/packit/ai-workflows/blob/main/skills_installation.md).
1818

19+
## Available skills
20+
21+
- `backport/` — Backport fix agent
22+
- `preliminary_testing/` — Preliminary testing agent
23+
- `rebase/` — Rebase fix agent
24+
- `rebuild/` — Rebuild agent
25+
- `triage/` — Triage agent
26+
- `issue_verification/` — Issue verification agent (post-fix lifecycle management)
27+
28+
## Available skills
29+
30+
- `backport/` — Backport fix agent
31+
- `preliminary_testing/` — Preliminary testing agent
32+
- `rebase/` — Rebase fix agent
33+
- `rebuild/` — Rebuild agent
34+
- `triage/` — Triage agent
35+
- `issue_verification/` — Issue verification agent (post-fix lifecycle management)
36+
1937
## How to build
2038

2139
```bash

agents_as_skills/issue_verification/SKILL.md

Lines changed: 358 additions & 0 deletions
Large diffs are not rendered by default.

compose.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,13 @@ services:
166166
command: ["python", "-m", "ymir.agents.preliminary_testing_agent"]
167167
profiles: ["agents"]
168168

169+
issue-verification-agent:
170+
<<: *beeai-agent-c10s
171+
environment:
172+
<<: *beeai-env
173+
command: ["python", "-m", "ymir.agents.issue_verification_agent"]
174+
profiles: ["agents"]
175+
169176
triage-agent-e2e-tests:
170177
<<: *beeai-agent-c10s
171178
environment:

0 commit comments

Comments
 (0)