Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
350d611
Add reproducer input/output models and unit tests
vmihalko Jun 18, 2026
62813d3
Add reproducer queue constants and Jira labels
vmihalko Jun 18, 2026
b3c10f6
Make Testing Farm API URL configurable and harden API helpers
vmihalko Jun 18, 2026
25468fa
Add Testing Farm reservation lifecycle tools
vmihalko Jun 18, 2026
8561aa1
Add RunRemoteCommand and CopyFilesToRemote tools for SSH operations
vmihalko Jun 18, 2026
79e600b
Add Testing Farm tools unit tests
vmihalko Jun 18, 2026
6def1be
Register Testing Farm and SSH tools in MCP gateway
vmihalko Jun 18, 2026
1636346
Fix push_to_remote_repository silent failures and credential leakage
vmihalko Jun 18, 2026
0fe2c54
Fix clone_repository failing on non-empty target directory
vmihalko Jun 18, 2026
84cb149
Fix ToolError double-wrapping in existing GitLab tools
vmihalko Jun 18, 2026
f675081
Add Testing Farm cleanup middleware for crash recovery
vmihalko Jun 18, 2026
171e5f3
Add reproducer agent Jinja2 prompt template
vmihalko Jun 18, 2026
2e85a68
Add BeeAI reproducer agent orchestration
vmihalko Jun 18, 2026
694c38b
Add reproducer agent deployment configuration
vmihalko Jun 18, 2026
fa4d608
Add reproducer agent skill definition
vmihalko Jun 18, 2026
09a4117
Polish reproducer agent prompts and apply formatting fixes
TomasKorbar Jun 19, 2026
22c00af
Add step checking whether the same test already exists in reproducer
TomasKorbar Jul 7, 2026
7f64d78
Add reproducer e2e suite
TomasKorbar Jul 8, 2026
05224fc
Fix GitLab stderr credential scrubbing and branch-path clone overwrite
TomasKorbar Jul 28, 2026
a2b7f3f
Fix TF reservation cleanup middleware to match MCP tool events
TomasKorbar Jul 28, 2026
1dbb852
Fail reproducer workflow when MR creation is skipped or errors
TomasKorbar Jul 28, 2026
1eba551
Align reproducer prompt and skill with list patch_urls and orchestrat…
TomasKorbar Jul 28, 2026
6fe75ab
Schedule reproducer retries after Testing Farm provisioning failures
TomasKorbar Jul 28, 2026
ffed15d
Make cleanup testing farm machine use mcp
TomasKorbar Jul 29, 2026
5899d4c
Skip guest setup in testing farm machine provisioning
TomasKorbar Jul 29, 2026
acb0e0e
Extend triage/reproducer schemas for parallel reproducer handoff.
TomasKorbar Jul 29, 2026
304ecf3
Add Redis lock for reproducer create and adapt races.
TomasKorbar Jul 29, 2026
8177330
Enqueue reproducer jobs from triage for eligible resolutions.
TomasKorbar Jul 29, 2026
b91ed75
Verify and adapt existing reproducer tests across streams.
TomasKorbar Jul 29, 2026
924df91
Document reproducer routing and treat it as in-flight.
TomasKorbar Jul 29, 2026
bde2910
Add reproducer agent docs
TomasKorbar Jul 29, 2026
0f376b3
Make reproducer agent output mention path of the test
TomasKorbar Jul 30, 2026
3d5c322
Add further guidance about triggering CVEs to reproducer prompt
TomasKorbar Aug 10, 2026
a5c7565
Enable context management and parallel tool calls for reproducer agent
TomasKorbar Aug 12, 2026
74e8e4d
Add openshift deployment files
TomasKorbar Aug 11, 2026
afa9286
Fix recovery of jira issue whose reproducer workflow crashed
TomasKorbar Aug 11, 2026
70c6b52
Make reproducer lock release compare-and-delete by ownership token.
TomasKorbar Aug 11, 2026
5a248c8
Include reproducer queues in fetcher existing-keys dedup.
TomasKorbar Aug 11, 2026
52ec469
Fetch existing MR branch before adapting reproducer tests.
TomasKorbar Aug 11, 2026
44d69f7
Bind TF remote tools to reservation host and package tree.
TomasKorbar Aug 11, 2026
384e5e5
Fix ruff complains
TomasKorbar Aug 11, 2026
2f3c5d6
Fix old unittest for gitlab tools
TomasKorbar Aug 11, 2026
5a863df
Comment-out reproducer redis job submission and add makefile targets
TomasKorbar Aug 11, 2026
d9003a0
Add skip_reason to reproducer e2e test case for results.yaml reporting
TomasKorbar Aug 12, 2026
2d34941
Remove sequential tool call use from reproducer agent
TomasKorbar Aug 12, 2026
8bba461
Scope reproducer tests clones per Jira issue to avoid NFS races.
TomasKorbar Aug 12, 2026
f7fc409
Fix the openinference patch and freeze openinference package version
TomasKorbar Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,10 @@ ymir/agents/tests/e2e/mock_repos/*
!ymir/agents/tests/e2e/mock_repos/README.md
!ymir/agents/tests/e2e/mock_repos/triage/
!ymir/agents/tests/e2e/mock_repos/backport/
!ymir/agents/tests/e2e/mock_repos/reproducer/
ymir/agents/tests/e2e/mock_repos/triage/*
ymir/agents/tests/e2e/mock_repos/backport/*
ymir/agents/tests/e2e/mock_repos/reproducer/*

# E2E test output artifacts
ymir/agents/tests/e2e/test_output/
Expand Down
4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ For detailed deployment info: see [openshift/README.md](openshift/README.md)
| Update OpenShift | `openshift/overlays/{dev,staging,prod}/` |
| Add skill | `agents_as_skills/{skill_name}/SKILL.md` |
| Change queue routing | [jira_label_workflow_routing.md](jira_label_workflow_routing.md) |
| Reproducer design | [docs/reproducer_architecture.md](docs/reproducer_architecture.md) |
| MR consolidation design | [docs/mr_consolidation_architecture.md](docs/mr_consolidation_architecture.md) |

## Documentation to Understand Workflows

Expand All @@ -110,6 +112,8 @@ For detailed deployment info: see [openshift/README.md](openshift/README.md)
- **[brew_konflux_data_flow.md](brew_konflux_data_flow.md)** — Build system integration
- **[ai_providers_data_flow.md](ai_providers_data_flow.md)** — Vertex AI integration
- **[monitoring.md](monitoring.md)** — Observability and performance review
- **[docs/reproducer_architecture.md](docs/reproducer_architecture.md)** — Reproducer agent, cross-stream reuse, create/adapt lock
- **[docs/mr_consolidation_architecture.md](docs/mr_consolidation_architecture.md)** — MR consolidation agent and Redis queue

## Code Changes Checklist

Expand Down
2 changes: 1 addition & 1 deletion Containerfile.c10s
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ RUN pip3 install --no-cache-dir \
beeai-framework[vertexai,mcp,duckduckgo]==0.1.82 \
"mcp<1.29.0" \
google-cloud-aiplatform \
openinference-instrumentation-beeai \
openinference-instrumentation-beeai==0.1.21 \
arize-phoenix-otel \
redis \
specfile \
Expand Down
2 changes: 1 addition & 1 deletion Containerfile.c9s
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ RUN python3.11 -m venv --system-site-packages /opt/beeai-venv \
beeai-framework[vertexai,mcp,duckduckgo]==0.1.82 \
"mcp<1.29.0" \
google-cloud-aiplatform \
openinference-instrumentation-beeai \
openinference-instrumentation-beeai==0.1.21 \
arize-phoenix-otel \
redis \
specfile \
Expand Down
2 changes: 1 addition & 1 deletion Containerfile.c9s-tests
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ RUN python3.11 -m venv --system-site-packages /opt/beeai-venv \
"litellm!=1.82.7,!=1.82.8" \
beeai-framework[vertexai,mcp,duckduckgo]==0.1.82 \
"mcp<1.29.0" \
openinference-instrumentation-beeai \
openinference-instrumentation-beeai==0.1.21 \
arize-phoenix-otel \
aiohttp>=3.12.15 \
redis \
Expand Down
2 changes: 1 addition & 1 deletion Containerfile.supervisor
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ RUN dnf -y install --allowerasing \
beeai-framework[vertexai,mcp,duckduckgo]==0.1.82 \
"mcp<1.29.0" \
google-cloud-aiplatform \
openinference-instrumentation-beeai \
openinference-instrumentation-beeai==0.1.21 \
arize-phoenix-otel \
redis \
specfile \
Expand Down
55 changes: 55 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,23 @@ run-backport-agent-e2e-tests:
backport-agent-e2e-tests


.PHONY: run-reproducer-agent-e2e-tests
run-reproducer-agent-e2e-tests:
$(COMPOSE) -f $(COMPOSE_FILE) --profile=e2e-test run --rm \
-e MOCK_JIRA="true" \
-e DRY_RUN="true" \
-e TESTING_FARM_DRY_RUN="false" \
reproducer-agent-e2e-tests

.PHONY: run-reproducer-agent-standalone
run-reproducer-agent-standalone:
$(COMPOSE_AGENTS) run --rm \
-e JIRA_ISSUE=$(JIRA_ISSUE) \
-e DRY_RUN=$(DRY_RUN) \
-e MOCK_JIRA=$(MOCK_JIRA) \
-e JIRA_DRY_RUN=$(JIRA_DRY_RUN) \
reproducer-agent

.PHONY: run-rebase-agent-c9s-standalone
run-rebase-agent-c9s-standalone:
$(COMPOSE_AGENTS) run --rm \
Expand Down Expand Up @@ -322,6 +339,44 @@ trigger-pipeline:
@echo "Triggering pipeline for issue: $(JIRA_ISSUE) (force_cve_triage=$(FORCE_CVE_TRIAGE))"
$(COMPOSE_AGENTS) exec valkey redis-cli LPUSH triage_queue '{"metadata": {"issue": "$(JIRA_ISSUE)", "force_cve_triage": $(FORCE_CVE_TRIAGE)}}'

# Manually enqueue a reproducer job (triage auto-enqueue is currently disabled).
# Required: JIRA_ISSUE, PACKAGE
# Optional: CVE_ID, FIX_VERSION, TARGET_BRANCH, TRIAGE_SUMMARY, USER_TRIGGERED=true
.PHONY: trigger-reproducer
trigger-reproducer:
@if [ -z "$(JIRA_ISSUE)" ] || [ -z "$(PACKAGE)" ]; then \
echo "Usage: make trigger-reproducer JIRA_ISSUE=RHEL-12345 PACKAGE=bind \\"; \
echo " [CVE_ID=CVE-2025-12345] [FIX_VERSION=rhel-10.1] [TARGET_BRANCH=c10s] \\"; \
echo " [TRIAGE_SUMMARY='…'] [USER_TRIGGERED=true]"; \
exit 1; \
fi
@echo "Enqueueing reproducer for $(JIRA_ISSUE) (package=$(PACKAGE), user_triggered=$(or $(USER_TRIGGERED),false))"
@payload=$$( \
JIRA_ISSUE="$(JIRA_ISSUE)" \
PACKAGE="$(PACKAGE)" \
CVE_ID="$(CVE_ID)" \
FIX_VERSION="$(FIX_VERSION)" \
TARGET_BRANCH="$(TARGET_BRANCH)" \
TRIAGE_SUMMARY="$(TRIAGE_SUMMARY)" \
USER_TRIGGERED="$(or $(USER_TRIGGERED),false)" \
python3 -c 'import json, os; \
meta = {"jira_issue": os.environ["JIRA_ISSUE"], "package": os.environ["PACKAGE"]}; \
[meta.__setitem__(k, v) for k, e in ( \
("cve_id", "CVE_ID"), \
("fix_version", "FIX_VERSION"), \
("target_branch", "TARGET_BRANCH"), \
("triage_summary", "TRIAGE_SUMMARY"), \
) if (v := (os.environ.get(e) or "").strip())]; \
print(json.dumps({ \
"metadata": meta, \
"attempts": 0, \
"user_triggered": os.environ.get("USER_TRIGGERED", "false").lower() == "true", \
}))' \
) && \
queue=$$(if [ "$(or $(USER_TRIGGERED),false)" = "true" ]; then echo reproducer_queue_todo; else echo reproducer_queue; fi) && \
$(COMPOSE_AGENTS) exec -T valkey redis-cli LPUSH $$queue "$$payload" && \
echo "Pushed to $$queue"


# Testing and Release Supervisor

Expand Down
7 changes: 7 additions & 0 deletions README-agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,15 @@ make trigger-pipeline JIRA_ISSUE=RHEL-12345

# Force triage of Y-stream CVEs (normally skipped)
make trigger-pipeline JIRA_ISSUE=RHEL-12345 FORCE_CVE_TRIAGE=true

# Manually enqueue a reproducer job (triage auto-enqueue is currently disabled)
make trigger-reproducer JIRA_ISSUE=RHEL-12345 PACKAGE=bind
make trigger-reproducer JIRA_ISSUE=RHEL-12345 PACKAGE=bind CVE_ID=CVE-2025-12345 FIX_VERSION=rhel-10.1
```

See [docs/reproducer_architecture.md](docs/reproducer_architecture.md#manual-queue-submit)
for full `trigger-reproducer` options.

**Environment variables:**
| Variable | Default | Description |
|----------|---------|-------------|
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ For installation instructions (skill setup and MCP tool configuration), see the
- [AI Providers Data Flow](ai_providers_data_flow.md) - Google Vertex AI integration and model usage
- [Agent Monitoring and Performance Review](monitoring.md) - Monitoring processes, anomaly detection, and continuous improvement
- [MR Consolidation Architecture](docs/mr_consolidation_architecture.md) - Merging multiple backport MRs into a single MR
- [Reproducer Architecture](docs/reproducer_architecture.md) - Automated test reproducers, cross-stream reuse, and create/adapt locking

**Data management:**

Expand Down
Loading
Loading