Analyze and grade component health based on regression and JIRA bug metrics
Analyzes component health by combining regression and JIRA bug metrics to grade quality.
/plugin marketplace add openshift-eng/ai-helpers/plugin install component-health@ai-helpers<release> [--components comp1 comp2 ...] [--project JIRAPROJECT]component-health:analyze
/component-health:analyze <release> [--components comp1 comp2 ...] [--project JIRAPROJECT]
The component-health:analyze command provides comprehensive component health analysis for a specified OpenShift release by automatically combining regression management metrics with JIRA bug backlog data.
CRITICAL: This command REQUIRES and AUTOMATICALLY fetches BOTH data sources:
The analysis is INCOMPLETE without both data sources. Both are fetched automatically without user prompting.
The command evaluates component health based on:
Regression Management (ALWAYS fetched automatically): How well components are managing test regressions
Bug Backlog Health (ALWAYS fetched automatically): Current state of open bugs for components
This command is useful for:
Grading is subjective and not meant to be a critique of team performance. This is intended to help identify where help is needed and track progress as we improve our quality practices.
CRITICAL WORKFLOW: The analyze command MUST execute steps 3 and 4 (fetch regression data AND fetch JIRA data) automatically without waiting for user prompting. Both data sources are required for a complete analysis.
Parse Arguments: Extract release version and optional filters from arguments
--components: Space-separated list of component search strings (fuzzy match)--project: JIRA project key (default: "OCPBUGS")Resolve Component Names: Use fuzzy matching to find actual component names
python3 plugins/component-health/skills/list-components/list_components.py --release <release>
--components was provided:
--components was NOT provided:
Fetch Regression Summary: REQUIRED - Always call the summarize-regressions command
IMPORTANT: This step is REQUIRED for the analyze command. Regression data must ALWAYS be fetched automatically without user prompting. The analyze command combines both regression and bug metrics - it is incomplete without both data sources.
/component-health:summarize-regressions <release> [--components ...]Fetch JIRA Bug Summary: REQUIRED - Always call the summarize-jiras command
IMPORTANT: This step is REQUIRED for the analyze command. JIRA bug data must ALWAYS be fetched automatically without user prompting. The analyze command combines both regression and bug metrics - it is incomplete without both data sources.
/component-health:summarize-jiras --project <project> --component "<component>" --limit 1000Calculate Combined Health Grades: REQUIRED - Analyze BOTH regression and bug data
IMPORTANT: This step requires data from BOTH step 3 (regressions) AND step 4 (JIRA bugs). Do not perform analysis with only one data source unless the other failed to fetch.
For each component, grade based on:
a. Regression Health (from step 3: summarize-regressions):
168 hours: Poor ❌
720 hours (4+ weeks): Poor ❌
b. Bug Backlog Health (from step 4: summarize-jiras):
180 days: Poor ❌
c. Combined Health Score: Weighted average of regression and bug health
Display Overall Health Report: Present comprehensive analysis combining BOTH data sources
IMPORTANT: The report MUST include BOTH regression metrics AND JIRA bug metrics. Do not present regression-only analysis unless JIRA data fetch failed.
Section 1: Overall Release Health
Section 2: Per-Component Health Scorecard
Section 3: Components Needing Attention
Offer HTML Report Generation (AFTER displaying the text report):
plugins/component-health/skills/analyze-regressions/report_template.html.work/component-health-{release}/health-report.htmlError Handling: Handle common error scenarios
The command outputs a Comprehensive Component Health Report:
From combined regression and bug data:
Ranked table combining both metrics:
| Component | Regression Triage | Triage Time | Resolution Time | Open Bugs | Bug Age | Health Grade |
|---|---|---|---|---|---|---|
| kube-apiserver | 100.0% | 58 hrs | 144 hrs | 15 | 45d avg | ✅ Excellent |
| etcd | 95.0% | 84 hrs | 192 hrs | 8 | 30d avg | ✅ Good |
| Monitoring | 86.7% | 68 hrs | 156 hrs | 23 | 120d avg | ⚠️ Needs Improvement |
Prioritized list with actionable items:
1. Monitoring (Needs Improvement):
- 1 open untriaged regression (needs triage)
- High bug backlog: 23 open bugs (8 older than 90 days)
- Growing backlog: +5 net bugs in last 30 days
- Recommendation: Focus on triaging open regression and addressing oldest bugs
2. Example-Component (Poor):
- 5 open untriaged regressions (urgent triage needed)
- Slow triage response: 120 hours average
- Very high bug backlog: 45 open bugs (15 older than 180 days)
- Recommendation: Immediate triage sprint needed; consider bug backlog cleanup initiative
IMPORTANT: When listing untriaged regressions:
open.total - open.triagedIf requested:
Analyze overall component health for a release:
/component-health:analyze 4.17
Automatically fetches and analyzes BOTH data sources for release 4.17:
Analyze specific components (exact match):
/component-health:analyze 4.21 --components Monitoring Etcd
Automatically fetches BOTH regression and bug data for Monitoring and Etcd:
Analyze by fuzzy search:
/component-health:analyze 4.21 --components network
Automatically fetches BOTH data sources for all components containing "network":
Analyze with custom JIRA project:
/component-health:analyze 4.21 --project OCPSTRAT
Analyzes health using bugs from OCPSTRAT project instead of default OCPBUGS.
In-development release analysis:
/component-health:analyze 4.21
Automatically fetches BOTH data sources for an in-development release:
$1 (required): Release version
$2+ (optional): Filter flags
--components <search1> [search2 ...]: Filter by component names using fuzzy search
--project <PROJECT>: JIRA project key
Python 3: Required to run the underlying data fetching scripts
which python3JIRA Authentication: Environment variables must be configured for bug data
JIRA_URL: Your JIRA instance URLJIRA_PERSONAL_TOKEN: Your JIRA bearer token or personal access token/component-health:summarize-jiras for setup instructionsNetwork Access: Must be able to reach both component health API and JIRA
/component-health:summarize-regressions)/component-health:summarize-jiras)/component-health:list-regressions/component-health:list-jiras/component-health:summarize-regressions (regression metrics)/component-health:summarize-jiras (bug backlog metrics)/component-health:list-regressions (raw regression data)/component-health:list-jiras (raw JIRA data)plugins/component-health/skills/analyze-regressions/SKILL.mdplugins/component-health/skills/list-regressions/list_regressions.pyplugins/component-health/skills/summarize-jiras/summarize_jiras.py