feat(ci): treat openshift/release PRs as revert candidates - #385
Conversation
WalkthroughPlugin Changes
Sequence Diagram(s)sequenceDiagram
rect rgba(200,200,255,0.5)
actor User
end
rect rgba(200,255,200,0.5)
participant Subagent
participant Analyzer
participant Scorer
participant Repo as "openshift/release"
end
User->>Subagent: Report CI failure / payload
Subagent->>Analyzer: Synthesize root-cause hypotheses from payload PRs
Analyzer-->>Subagent: Hypothesis (may reference CI step script)
alt Root cause traced to payload PR
Analyzer->>Scorer: Score (failed job, payload PR) pairs
else Root cause traced outside payload
Subagent->>Repo: Check recent commits to step script
Repo-->>Subagent: Return external PR (if found)
Subagent->>Analyzer: Include external PR as candidate
Analyzer->>Scorer: Score (failed job, external PR) pairs
end
Scorer->>Analyzer: Aggregated scores
Analyzer->>User: Root-cause summary + recommendations
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 8✅ Passed checks (8 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Comment |
a9e3e3f to
26e2413
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/ci/skills/prow-job-analyze-test-failure/SKILL.md`:
- Around line 937-940: The guidance under the "Check for step registry changes
when the failure is in a CI step script" section currently asks for free-form PR
mention; change it to require a fixed structured attribution whenever a
step-registry PR is identified: require fields repo, pr_number, pr_url, and
evidence (a short quoted log/snippet) to be provided in the root-cause summary,
and update the sentence in SKILL.md that currently advises "Include the
responsible PR in your root cause summary" to instead mandate that exact
structured format so downstream extraction/scoring (repo, pr_number, pr_url,
evidence) can be reliably parsed.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: ddbaf8ed-63f5-4097-a6da-ffc4491fa1ac
📒 Files selected for processing (5)
.claude-plugin/marketplace.jsondocs/data.jsonplugins/ci/.claude-plugin/plugin.jsonplugins/ci/skills/analyze-payload/SKILL.mdplugins/ci/skills/prow-job-analyze-test-failure/SKILL.md
✅ Files skipped from review due to trivial changes (3)
- .claude-plugin/marketplace.json
- plugins/ci/.claude-plugin/plugin.json
- docs/data.json
🚧 Files skipped from review as they are similar to previous changes (1)
- plugins/ci/skills/analyze-payload/SKILL.md
…-payload When a subagent traces a failure root cause to a PR outside the payload (e.g., an openshift/release step registry change), include it as a candidate scored the same way as payload PRs rather than dismissing it as an infrastructure issue. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
26e2413 to
0c58750
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/ci/skills/analyze-payload/SKILL.md`:
- Around line 200-203: Update the rubric text under "Score each (failed job,
candidate PR) pair using the following weighted rubric" to explicitly normalize
signals that reference originating-payload membership: state that external PRs
(e.g., an openshift/release PR) are treated as candidates but are not considered
payload members, define that the "Single candidate" bonus applies only when
there is exactly one candidate across both payload and external PRs (or specify
alternative desired behavior), and clarify timing checks to compare PR
commit/merge timestamps to the job failure time (not payload creation) so
identical evidence yields consistent scores; add one short example sentence for
each rule and a single-line normalization statement at the top of the rubric
referencing the "Single candidate" and timing-check signals.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: e84732af-0f26-4c10-89b3-4ddcdf7352f5
📒 Files selected for processing (5)
.claude-plugin/marketplace.jsondocs/data.jsonplugins/ci/.claude-plugin/plugin.jsonplugins/ci/skills/analyze-payload/SKILL.mdplugins/ci/skills/prow-job-analyze-test-failure/SKILL.md
✅ Files skipped from review due to trivial changes (3)
- plugins/ci/.claude-plugin/plugin.json
- .claude-plugin/marketplace.json
- docs/data.json
🚧 Files skipped from review as they are similar to previous changes (1)
- plugins/ci/skills/prow-job-analyze-test-failure/SKILL.md
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: smg247, stbenjam The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Summary
openshift/releasestep registry change), include it as a revert candidate scored the same way as payload PRsThis was discovered during analysis of
4.22.0-0.ci-2026-03-19-064431, where all 3 aggregated upgrade jobs were broken byopenshift/release#76145(a step registry bug), but the skill had no mechanism to recommend reverting it.Test plan
/ci:analyze-payloadon a payload where aopenshift/releasePR broke a blocking job and verify it appears as a scored revert candidate🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation
Chores