Skip to content

Commit 765026f

Browse files
authored
Merge pull request #30 from redhat-developer/feat/rhdh-jira-session-learnings
feat(rhdh-jira): add component catalog, freeze flags, gotchas, and validation
2 parents a517aa9 + 14b16a1 commit 765026f

5 files changed

Lines changed: 321 additions & 43 deletions

File tree

skills/rhdh-jira/SKILL.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ Before attempting any REST API or GraphQL call:
8787
| `scripts/setup.py` | Verify acli install + auth. Run with `--json` for structured output. |
8888
| `scripts/parse_issues.py` | Flatten, enrich, and filter acli JSON output. Solves the core problem: `acli search --json` can't return custom fields (team, story points, sprint). Pipe search results in, get clean data out. Use `--enrich` to fetch full fields, `-f team="X"` to filter by team. |
8989
| `scripts/command-metadata.json` | Single source of truth for sub-command descriptions and argument hints. |
90+
| `scripts/validate_components.py` | Validate `references/fields.md` component catalog against live Jira projects (RHIDP + RHDHPLAN). Reports drift in both directions. Run with `--json` for structured output. |
9091

9192
## Projects
9293

@@ -159,6 +160,8 @@ Load only what the current task requires.
159160
13. **`acli search` silently truncates results.** The default page size is 30. If your JQL matches more than 30 issues, you get the first 30 with no warning. Always pass `--limit 200` for bulk queries, or use `--count` first to check the total, then `--paginate` to fetch all pages. This is the #2 cause of incorrect reports after skipping `--enrich`.
160161
14. **"Feature Exploration" vs "Feature Refinement."** The meeting/process is called **Feature Exploration**. The Jira workflow status is **Refinement**. These are different things. When referring to the meeting or process, always use "Feature Exploration." When referring to the Jira status, use "Refinement." The meeting is sometimes mislabeled as "Feature Refinement" in calendar invites — this is incorrect.
161162
15. **Don't remove `rhdh-X.Y-candidate` labels.** Candidate labels track release targeting. Removing them without PM approval can silently drop a feature from release tracking.
163+
16. **Feature→Epic child links use Parent Link, not issuelinks.** Cross-project parent-child relationships (RHDHPLAN Feature → RHIDP Epic) use the `Parent Link` field (`customfield_10018`), not `issuelinks`. To find child Epics of a Feature, use JQL: `project = RHIDP AND type = Epic AND "Parent Link" = RHDHPLAN-XXX`. Checking `issuelinks` will show zero results and produce false "no child Epics" reports.
164+
17. **REST `/rest/api/3/search` returns 410 Gone.** This endpoint has been removed. Use POST to `/rest/api/3/search/jql` with body `{"jql": "...", "fields": [...], "maxResults": N}` instead. This only affects direct REST calls — `acli search` still works.
162165

163166
## Error Handling
164167

skills/rhdh-jira/references/feature-exploration.md

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ The meeting is called **Feature Exploration**. The Jira workflow status is **Ref
1111

1212
Do not confuse the two. When referring to the meeting or process, use "Feature Exploration."
1313

14+
**Features in New status are expected going into Feature Exploration.** The exploration meeting is where the team reviews candidates, identifies risks, and produces the information needed to advance features through the pipeline. Do not frame New→Refinement transition as a prerequisite for exploration — it is an *outcome*. Sizing and field population happen during and after exploration.
15+
16+
**Epic creation can happen before or during exploration.** Teams often create child Epics before the exploration meeting to help size the Feature — aggregate Epic sizes inform the Feature’s T-shirt size. Do not treat Epic creation as exclusively an output of exploration.
17+
1418
## Feature Exploration Checklist
1519

1620
Team leads, architects, and engineers review feature candidates to identify dependencies and risks.
@@ -87,30 +91,13 @@ After exploration is complete:
8791

8892
## Component Validation
8993

90-
Components are critical for freeze queries and team routing. Validate proposed components against the live Jira data.
91-
92-
> Same validation pattern as `fields.md` Component Validation — duplicated here to avoid transitive loading.
93-
94-
```bash
95-
# List all components for a project
96-
curl -s -H "Authorization: Basic $(cat "$TOKEN_FILE")" \
97-
"https://redhat.atlassian.net/rest/api/3/project/RHIDP/components" | \
98-
python -c "import sys,json; [print(c['name']) for c in json.load(sys.stdin)]"
94+
Components are critical for freeze queries and team routing. Use the component catalog and validation script from `references/fields.md`:
9995

100-
# For RHDHPLAN
101-
curl -s -H "Authorization: Basic $(cat "$TOKEN_FILE")" \
102-
"https://redhat.atlassian.net/rest/api/3/project/RHDHPLAN/components" | \
103-
python -c "import sys,json; [print(c['name']) for c in json.load(sys.stdin)]"
104-
```
105-
106-
When setting components during feature creation or refinement:
107-
108-
1. **Infer components** from the issue summary and description — match against known component names
109-
2. **Validate** the proposed components exist in the project
110-
3. **Flag mismatches** — if a component doesn't exist, suggest the closest match
96+
1. **Match** components from the Component Catalog table in `references/fields.md` — it includes descriptions and freeze exclusion flags
97+
2. **Infer** from parent — when creating Epics chained from a Feature, inherit the parent's components
98+
3. **Validate** against live Jira data: `python scripts/validate_components.py`
11199
4. **Check FF/CF status** — note if a component is excluded from freeze queries (this affects release planning)
112-
113-
The agent should suggest components based on issue details, but always confirm with the user before setting them.
100+
5. **Confirm** with the user before setting — never auto-set components
114101

115102
## Feature Demo and Test Day
116103

skills/rhdh-jira/references/fields.md

Lines changed: 134 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,36 +84,149 @@ List all available link types with: `acli jira workitem link type`
8484

8585
Heavily used for filtering, routing, and freeze queries. Components affect Feature Freeze and Code Freeze scope — some components may be excluded from FF/CF.
8686

87-
Key components in RHIDP (run `acli jira workitem search --jql "project = RHIDP AND component = 'X'" --count` for current counts):
88-
89-
Documentation, Security, UI, Lightspeed, Orchestrator, Continuous Improvement, Plugins, Topology
90-
9187
Query by component: `project = RHIDP AND component = 'Documentation'`
9288

9389
Components are not available via `--fields` on search. Use `--json` to get component data.
9490

95-
### Component Validation
96-
97-
When setting components during issue creation or refinement, validate against the project's live component list:
91+
### Component Catalog
92+
93+
Full list of RHDH project components with descriptions, grouped by category. Freeze exclusion flags indicate which components are excluded from Feature Freeze (FF), Code Freeze (CF), Post-CF, and Release Notes (RN) queries.
94+
95+
**RHDH Core:**
96+
97+
| Component | Description | Excl FF | CF | Post CF | Excl RN |
98+
|-----------|-------------|---------|----|---------|---------|
99+
| Adoption Insights | Plugin tracking adoption metrics and usage patterns | | | | |
100+
| AI Demo | Demo server showcasing AI capabilities in RHDH | Yes | Yes | Yes | Yes |
101+
| AI Installer | Automated installer for AI-related RHDH components | | | | |
102+
| ai-templates | Software templates for AI/ML workflows and model onboarding | | | | |
103+
| ArgoCD | ArgoCD plugin integration (Roadie version migration) | | | | |
104+
| Authentication | Static auth provider module, dynamic auth provider, service-service auth, SCM auth | | | | |
105+
| Build | Container image builds, Konflux pipelines, and build infrastructure | Yes | | | Yes |
106+
| Bulk Import | Bulk import of repositories and entities into the catalog | | | | |
107+
| Catalog | Backstage software catalog (entity metadata, sources, composability) | | | | |
108+
| Database | PostgreSQL database support, migrations, and compatibility | | | | |
109+
| Dynamic Plugins | Dynamic plugin loading, frontend/backend plugin lifecycle | | | | |
110+
| Dynamic Plugins Factory | Build tooling for producing dynamic plugin artifacts | | | | |
111+
| Event Systems | Internal event bus for cross-plugin communication | | | | |
112+
| Extensions | Extension registry, OCI plugin hosting, and catalog sources | | | | |
113+
| FIPS | FIPS 140-2/140-3 compliance onboarding and validation testing | | | | |
114+
| Gitlab | Gitlab integration (SCM, events, auth provider) | | | | |
115+
| Helm Chart | Helm chart for RHDH deployment on OpenShift/Kubernetes | | | | |
116+
| High Availability | Multi-replica and HA deployment configurations | | | | |
117+
| Homepage | Dynamic homepage plugin and backend | | | | |
118+
| LDAP | LDAP auth provider and entity ingestion | | | | |
119+
| Lightspeed | AI-powered developer assistant plugin | | | | |
120+
| Localization | i18n and RTL language support | | | | |
121+
| LTS | Long Term Support release stream and lifecycle management | | | | |
122+
| MCP | Model Context Protocol server and AI permissions | | | | |
123+
| model-catalog | AI/ML model catalog plugin for browsing and discovering models | | | | |
124+
| model-registry-bridge | Bridge plugin connecting RHDH to OpenShift AI model registry | | | | |
125+
| msgraph/Azure | Microsoft Graph and Azure AD integration | | | | |
126+
| Mustgather | Diagnostic data collection tool for support case troubleshooting | | | | |
127+
| News Feed | RSS news feed plugin | | | | |
128+
| Operator | OLM-based operator for deploying and managing RHDH on OpenShift | | | | |
129+
| Orchestrator | Serverless workflow orchestration plugin | | | | |
130+
| Overlay | Overlay repository for plugin packaging and export | | | | |
131+
| Permissions | Role-based access control (RBAC) and permission policies | | | | |
132+
| Plugin Development | Plugin SDK, development tooling, and plugin onboarding guides | | | | |
133+
| Quay | Quay container registry plugin | | | | |
134+
| Quickstart | Quickstart plugin for guided setup | Yes | | | |
135+
| RHDH CLI | CLI tooling for plugin export, dependency checks, and scaffolding | | | | |
136+
| RHDH Local | Local development environment for running RHDH on a developer machine | Yes | | | |
137+
| rhdh-ai-external | AI related issues for other stakeholders (RHOAI, etc) | | | | |
138+
| RHEL | RHEL-based container image build and RPM installer | | | | |
139+
| RHOAI Bridge | Integration bridge between RHDH and Red Hat OpenShift AI | | | | |
140+
| Scorecard | Scorecard plugin for project health assessment | | | | |
141+
| Segment | Product telemetry collection and analytics integration | Yes | | | |
142+
| Tekton | Plugin for viewing and managing Tekton pipelines and tasks | | | | |
143+
| Test Framework | Shared test utilities and helpers | Yes | | | Yes |
144+
| Test Infrastructure | Issues related to the team's testing cluster(s) and infra | Yes | | | Yes |
145+
| Topology | Plugin to visualise Kubernetes workloads and relationships | | | | |
146+
| UI | RHDH frontend UI shell, theming, and layout | | | | |
147+
| UX | User experience design, research, and usability | Yes | | | |
148+
149+
**Backstage (upstream):**
150+
151+
| Component | Description | Excl FF | CF | Post CF | Excl RN |
152+
|-----------|-------------|---------|----|---------|---------|
153+
| Actions | Scaffolder actions for software template steps | | | | |
154+
| Audit Log | Audit logging and verification for compliance | | | | |
155+
| Catalog | Backstage software catalog (upstream) | | | | |
156+
| Community Plugin | Track updates to Community Plugin repository | | | | Yes |
157+
| Core Platform & Lifecycle | Backstage core framework, app lifecycle, and platform APIs | | | | |
158+
| Corporate Proxy | Proxy configuration for corporate/enterprise network environments | | | | |
159+
| Event Module | Backstage event module for plugin-to-plugin messaging | | | | |
160+
| Github | GitHub integration (SCM, actions, auth, discovery) | | | | |
161+
| Kubernetes | Kubernetes plugin for cluster and workload visibility | | | | |
162+
| Notifications | Email and in-app notification plugins | | | | |
163+
| On Behalf Of | On-behalf-of (OBO) token delegation for service-to-service auth | | | | |
164+
| Proxy | Backstage backend proxy for forwarding API requests to external services | | | | |
165+
| Redis | Redis caching and session store integration | | | | |
166+
| RHDH Plugin Repo | RHDH-specific plugin repository and distribution | Yes | Yes | Yes | |
167+
| Software Templates | Scaffolder templates for project and component creation | | | | |
168+
| TechDocs | Technical documentation generation and rendering | | | | |
169+
| Upstream & Community | Tracking Backstage contributions | Yes | Yes | Yes | |
170+
171+
**Extension Plugins:**
172+
173+
| Component | Description | Excl FF | CF | Post CF | Excl RN |
174+
|-----------|-------------|---------|----|---------|---------|
175+
| 3rd Party Plugin | Plugins for products not built by Red Hat | | | | Yes |
176+
| 3scale | 3scale API management plugin | | | | |
177+
| ACR | Azure Container Registry plugin | | | | |
178+
| Keycloak Provider | Keycloak auth provider and entity ingestion | | | | |
179+
| Nexus Repository Manager | Nexus Repository Manager plugin | | | | |
180+
| Open Cluster Management | OCM multi-cluster management plugin | | | | |
181+
| Regex | Regex-based entity provider plugin | | | | |
182+
| ServiceNow | ServiceNow integration plugin | | | | |
183+
184+
**Program (non-engineering):**
185+
186+
| Component | Description | Excl FF | CF | Post CF | Excl RN |
187+
|-----------|-------------|---------|----|---------|---------|
188+
| AEM Migration | Adobe Experience Manager to docs-as-code migration | Yes | Yes | Yes | Yes |
189+
| AI | Internal team initiatives leveraging AI for productivity and tooling | Yes | Yes | Yes | Yes |
190+
| Certification | Plugin certification process and compliance verification | Yes | | | Yes |
191+
| Conference | Conference talk preparation, demos, and booth materials | Yes | Yes | Yes | Yes |
192+
| Continuous Improvement | Tracks opportunities to improve team efficiency | Yes | Yes | Yes | Yes |
193+
| Documentation | Downstream product documentation (guides, API refs, release notes) | Yes | Yes | | |
194+
| JTBD | Jobs to Be Done - Doc team | Yes | Yes | Yes | Yes |
195+
| Knowledge | Blogs, articles, KCS artifacts to supplement downstream docs | Yes | Yes | Yes | Yes |
196+
| Performance | Performance and Scaling for RHDH | Yes | Yes | | |
197+
| PQC | Post-quantum cryptography readiness and compliance | Yes | Yes | | |
198+
| Quality | Quality Engineering for RHDH | Yes | | | |
199+
| Release | Release engineering, version management, and GA/z-stream processes | Yes | Yes | | Yes |
200+
| Security | Security related JIRAs & CVEs | Yes | Yes | Yes | |
201+
| Security Tooling | Security tooling like CVE status checker | Yes | Yes | Yes | Yes |
202+
| Serviceability | Surfacing internal diagnostics and catalog health info | Yes | | | |
203+
| Support | Customer support case tracking and engineering follow-up | Yes | Yes | | Yes |
204+
| Team Operations | Scrum ceremonies, team process improvements, and operational tasks | Yes | Yes | Yes | Yes |
205+
206+
### Component Inference
207+
208+
When suggesting components during issue creation or refinement:
209+
210+
1. **Chained from parent:** Inherit the parent Feature's or Epic's components as the starting point
211+
2. **Standalone:** Match keywords in the summary and description against the component catalog above
212+
3. **Validate** the proposed components exist in the target project (RHIDP vs RHDHPLAN have different component sets)
213+
4. **Flag mismatches** — if a component doesn't exist in the target project, suggest the closest match
214+
5. **Confirm** with the user before setting — never auto-set components without confirmation
215+
216+
If the issue involves documentation, set the `Documentation` component and invoke the Doc Epic automation (see `references/feature-exploration.md`).
217+
218+
### Component Validation (live)
219+
220+
The component catalog above is maintained manually. Components may be added or renamed in Jira without updating this file. Run the validation script to detect drift:
98221

99222
```bash
100-
# List all components for RHIDP
101-
curl -s -H "Authorization: Basic $(cat "$TOKEN_FILE")" \
102-
"https://redhat.atlassian.net/rest/api/3/project/RHIDP/components" | \
103-
python -c "import sys,json; [print(c['name']) for c in json.load(sys.stdin)]"
104-
105-
# List all components for RHDHPLAN
106-
curl -s -H "Authorization: Basic $(cat "$TOKEN_FILE")" \
107-
"https://redhat.atlassian.net/rest/api/3/project/RHDHPLAN/components" | \
108-
python -c "import sys,json; [print(c['name']) for c in json.load(sys.stdin)]"
223+
python scripts/validate_components.py # human-readable report
224+
python scripts/validate_components.py --json # structured output
109225
```
110226

111-
During creation grills:
227+
The script compares this catalog against live components in RHIDP and RHDHPLAN. It reports components that exist in Jira but are missing from this file (add them), and components listed here that no longer exist in Jira (remove them).
112228

113-
1. Infer likely components from the issue summary and description
114-
2. Validate the proposed components exist in the target project
115-
3. If a component doesn't exist, suggest the closest match
116-
4. Confirm with the user before setting
229+
Note: Jira may contain legacy or duplicate components that were never cleaned up. Not every Jira component needs to be in this catalog — only components that are actively used for issue routing and freeze queries.
117230

118231
See `references/feature-exploration.md` for the full Feature Exploration component checklist.
119232

skills/rhdh-jira/scripts/parse_issues.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ def _walk_adf(node, parts):
144144
"assignee",
145145
"team",
146146
"story_points",
147+
"size",
147148
"sprint",
148149
"summary",
149150
]

0 commit comments

Comments
 (0)