Skip to content

Commit 0049671

Browse files
martinky82claude
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 a65890d commit 0049671

26 files changed

Lines changed: 3234 additions & 38 deletions

Makefile

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

286+
.PHONY: run-issue-verification-agent-standalone
287+
run-issue-verification-agent-standalone:
288+
$(COMPOSE_AGENTS) run --rm \
289+
-e JIRA_ISSUE=$(JIRA_ISSUE) \
290+
-e DRY_RUN=$(DRY_RUN) \
291+
-e IGNORE_NEEDS_ATTENTION=$(IGNORE_NEEDS_ATTENTION) \
292+
issue-verification-agent
293+
286294
.PHONY: run-preliminary-testing-agent-standalone
287295
run-preliminary-testing-agent-standalone:
288296
$(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
@@ -164,6 +164,13 @@ services:
164164
command: ["python", "-m", "ymir.agents.preliminary_testing_agent"]
165165
profiles: ["agents"]
166166

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

0 commit comments

Comments
 (0)