Skip to content

feat(extensions-schema): allow production support level for plugin metadata#2407

Open
polasudo wants to merge 11 commits intoredhat-developer:mainfrom
polasudo:chore/allow-production-support-level
Open

feat(extensions-schema): allow production support level for plugin metadata#2407
polasudo wants to merge 11 commits intoredhat-developer:mainfrom
polasudo:chore/allow-production-support-level

Conversation

@polasudo
Copy link
Member

@polasudo polasudo commented Feb 27, 2026

Jira: https://issues.redhat.com/browse/RHIDP-12372

User description

Summary

  • add production to the allowed enum values for spec.support.level in workspaces/extensions/json-schema/plugins.json
  • keep existing allowed values unchanged for backward compatibility

Why

Overlays metadata is being normalized to use production consistently. This schema update ensures plugin metadata validates correctly when that value is used.

Test plan

  • schema includes production in support.level enum
  • existing values (generally-available, tech-preview, dev-preview, community, none) remain supported

Made with Cursor


PR Type

Enhancement


Description

  • Add production to allowed enum values for spec.support.level

  • Enables plugin metadata to use production support level consistently

  • Maintains backward compatibility with existing support level values


Diagram Walkthrough

flowchart LR
  schema["plugins.json schema"] -- "add production enum value" --> support["support.level enum"]
  support -- "includes" --> values["production, generally-available, tech-preview, dev-preview, community, none"]
Loading

File Walkthrough

Relevant files
Enhancement
plugins.json
Add production to support level enum                                         

workspaces/extensions/json-schema/plugins.json

  • Added production to the spec.support.level enum values
  • Positioned as first enum value in the list
  • All existing support level values remain unchanged and supported
+1/-0     

…tadata

Add `production` to the allowed values for `spec.support.level` in the extensions plugins schema so downstream metadata can consistently use production without schema validation errors.

Made-with: Cursor
@rhdh-qodo-merge
Copy link

rhdh-qodo-merge bot commented Feb 27, 2026

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
🟢
No codebase code duplication found No new components were introduced in the PR code
Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@rhdh-qodo-merge
Copy link

rhdh-qodo-merge bot commented Feb 27, 2026

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
General
Clarify potentially confusing enum values
Suggestion Impact:Instead of adding a descriptive text to clarify the enum values, the commit removed the "generally-available" enum option from the schema, reducing the ambiguity the suggestion called out but not implementing the proposed description field.

code diff:

@@ -129,7 +129,6 @@
                   "type": "string",
                   "enum": [
                     "production",
-                    "generally-available",
                     "tech-preview",
                     "dev-preview",
                     "community",

Add a description field to the level property in the JSON schema to clarify the
meaning of each support level, especially the distinction between production and
generally-available.

workspaces/extensions/json-schema/plugins.json [128-135]

                 "level": {
                   "type": "string",
+                  "description": "Defines the support level of the plugin. 'production' is for fully supported, production-ready plugins. 'generally-available' is for stable releases that are not yet at full production support. 'tech-preview' and 'dev-preview' are for pre-release versions. 'community' is for community-supported plugins.",
                   "enum": [
                     "production",
                     "generally-available",
                     "tech-preview",
                     "dev-preview",
                     "community",
 ...

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies that the terms production and generally-available can be ambiguous and proposes adding a description to the JSON schema, which is a good practice for clarity and usability.

Low
  • Update

…uction

Remove remaining generally-available usage across extensions schema, types, examples, docs, and e2e references so production is the single support-level term used consistently.

Made-with: Cursor
@rhdh-gh-app
Copy link

rhdh-gh-app bot commented Feb 27, 2026

Important

This PR includes changes that affect public-facing API. Please ensure you are adding/updating documentation for new features or behavior.

Missing Changesets

The following package(s) are changed by this PR but do not have a changeset:

  • @red-hat-developer-hub/backstage-plugin-extensions

See CONTRIBUTING.md for more information about how to add changesets.

Changed Packages

Package Name Package Path Changeset Bump Current Version
@red-hat-developer-hub/backstage-plugin-extensions-common workspaces/extensions/plugins/extensions-common minor v0.14.4
@red-hat-developer-hub/backstage-plugin-extensions workspaces/extensions/plugins/extensions none v0.14.4

Add missing changeset for @red-hat-developer-hub/backstage-plugin-extensions-common so the PR includes the required version bump metadata.

Made-with: Cursor
Replace outdated GENERALLY_AVAILABLE enum checks with PRODUCTION in extensions UI filtering and badge logic to match the renamed support level enum.

Made-with: Cursor
Remove unused React runtime import and disable legacy react-in-jsx-scope lint rule for this file so TypeScript and lint checks both pass with modern JSX transform.

Made-with: Cursor
Regenerate and commit API extractor report files after support-level and translation surface changes so API report checks pass in CI.

Made-with: Cursor
The report was generated by build:api-reports internal compilation
which produces a different key ordering than tsc:full. CI runs tsc:full
first, then build:api-reports:only --ci, so the committed report must
match the tsc:full declaration output ordering.

Made-with: Cursor
Copy link
Member

@dzemanov dzemanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested this works correctly:

Image Image Image

polasudo and others added 3 commits March 2, 2026 13:49
Record the production terminology migration as a breaking change for extensions-common and document migration guidance for generally-available metadata.

Made-with: Cursor
Change support-level terminology from 'generally-available' to 'production' in various schemas and documentation.
Copy link
Member

@dzemanov dzemanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/approve
/lgtm

Thank you!

@openshift-ci openshift-ci bot added the lgtm label Mar 2, 2026
@polasudo polasudo requested a review from nickboldt March 2, 2026 15:24
Copy link
Member

@christoph-jerolimov christoph-jerolimov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like to understand this (to me) ad hoc change of an API before we continue.

@nickboldt
Copy link
Member

I like to understand this (to me) ad hoc change of an API before we continue.

Well, to quote myself in RHIDP-12372:

we want to be consistent with the metadata, because obvious reasons.

If you would prefer to use generally-available everywhere instead of production, I'm fine with that. The point was to be CONSISTENT, not to force an API change.

cc: @kim-tsao

@openshift-ci openshift-ci bot removed the lgtm label Mar 3, 2026
@openshift-ci
Copy link

openshift-ci bot commented Mar 3, 2026

New changes are detected. LGTM label has been removed.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Mar 3, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants