Skip to content

chore(orchestrator): promote NFS plugins from /alpha to stable - #4247

Open
ciiay wants to merge 1 commit into
redhat-developer:mainfrom
ciiay:feat/orchestrator-RHIDP-14417-promote-nfs-stable
Open

chore(orchestrator): promote NFS plugins from /alpha to stable#4247
ciiay wants to merge 1 commit into
redhat-developer:mainfrom
ciiay:feat/orchestrator-RHIDP-14417-promote-nfs-stable

Conversation

@ciiay

@ciiay ciiay commented Aug 10, 2026

Copy link
Copy Markdown
Member

Description

Promotes the Orchestrator and Orchestrator Form Widgets New Frontend System (NFS) plugins from the ./alpha subpath to the stable primary entry point, following the same graduation pattern used by bulk-import, quickstart, theme, and scorecard.

NFS createFrontendPlugin exports are now the default . entry. Legacy OFS exports move to ./legacy. For orchestrator, ./alpha retains translations only; for form-widgets, ./alpha is removed. Dynamic plugin Scalprum config now requires module: Legacy for OFS consumers.

Fixed

  • RHIDP-14417 — Promote orchestrator NFS plugin from /alpha to stable

Checklist

  • A changeset describing the change and affected packages. (more info)
  • Added or Updated documentation
  • Tests for new functionality and regression tests for bug fixes
  • Screenshots attached (for UI changes)

Verified on rhdh pr redhat-developer/rhdh#5115

rhidp_14417.mp4

Fixes: https://redhat.atlassian.net/browse/RHIDP-14417
Signed-off-by: Yi Cai <yicai@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@rhdh-gh-app

rhdh-gh-app Bot commented Aug 10, 2026

Copy link
Copy Markdown

Important

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

Changed Packages

Package Name Package Path Changeset Bump Current Version
app-legacy workspaces/orchestrator/packages/app-legacy none v0.0.3
app workspaces/orchestrator/packages/app none v0.0.4
@red-hat-developer-hub/backstage-plugin-orchestrator-form-widgets workspaces/orchestrator/plugins/orchestrator-form-widgets major v1.12.0
@red-hat-developer-hub/backstage-plugin-orchestrator workspaces/orchestrator/plugins/orchestrator major v5.10.0

@sonarqubecloud

Copy link
Copy Markdown

@rhdh-qodo-merge

Copy link
Copy Markdown

PR Summary by Qodo

Promote orchestrator NFS plugins from /alpha to stable entry points

✨ Enhancement ⚙️ Configuration changes 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Promote orchestrator and form-widgets NFS plugins to the default package entry point.
• Move legacy (OFS) exports to a new /legacy subpath and Scalprum Legacy module.
• Update docs, sample apps, and API reports to reflect the new import paths.
Diagram

graph TD
  NFS["NFS consumers"] --> OrchStable["orchestrator '.' (NFS)"] --> OrchAlpha["orchestrator '/alpha' (translations)"]
  NFS --> WidgetsStable["form-widgets '.' (NFS)"]
  OFS["OFS consumers"] --> OrchLegacy["orchestrator '/legacy'"]
  OFS --> WidgetsLegacy["form-widgets '/legacy'"]
  Cfg["Scalprum dynamic config\nmodule: Legacy"] --> OrchLegacy
  Cfg --> WidgetsLegacy
Loading
High-Level Assessment

This follows the established graduation pattern used by other plugins (move NFS to . and relocate OFS to /legacy). Alternatives like keeping /alpha indefinitely or introducing an intermediate /beta would prolong migration complexity without clear benefit, given the goal is a breaking, major-version promotion.

Files changed (28) +670 / -303 · 1 not counted

Enhancement (2) +33 / -9
index.tsMake NFS plugin the default export +29/-4

Make NFS plugin the default export

• Moves the NFS plugin implementation (previously under 'alpha.tsx') into the default entry point. Marks the plugin as '@public' and keeps the same 'ApiBlueprint' wiring for the form API.

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/index.ts

index.tsxPromote NFS orchestrator exports to '@public' stable entry point +4/-5

Promote NFS orchestrator exports to '@public' stable entry point

• Updates package docs/comments to reflect stable NFS usage and removes '@alpha' tags from key exported APIs. Keeps NFS plugin and translations module exports on the default entry point.

workspaces/orchestrator/plugins/orchestrator/src/index.tsx

Refactor (8) +28 / -13
App.tsxMigrate legacy app imports to '/legacy' entry points +3/-3

Migrate legacy app imports to '/legacy' entry points

• Updates legacy app usage to import 'OrchestratorPage', 'orchestratorFormWidgetsPlugin', and 'orchestratorTranslations' from '/legacy' subpaths to match the new export layout.

workspaces/orchestrator/packages/app-legacy/src/App.tsx

Root.tsxMigrate legacy sidebar icon import to '/legacy' +1/-1

Migrate legacy sidebar icon import to '/legacy'

• Updates 'OrchestratorIcon' import to come from '@.../backstage-plugin-orchestrator/legacy'.

workspaces/orchestrator/packages/app-legacy/src/components/Root/Root.tsx

EntityPage.tsxMigrate legacy entity tab helper imports to '/legacy' +1/-1

Migrate legacy entity tab helper imports to '/legacy'

• Switches catalog tab helper imports to '@.../backstage-plugin-orchestrator/legacy' to align with the moved OFS exports.

workspaces/orchestrator/packages/app-legacy/src/components/catalog/EntityPage.tsx

App.tsxSwitch NFS app imports from '/alpha' to default entry points +2/-2

Switch NFS app imports from '/alpha' to default entry points

• Updates NFS app wiring to import orchestrator and form-widgets plugins from the stable '.' entry points instead of '/alpha'.

workspaces/orchestrator/packages/app/src/App.tsx

index.tsxUpdate dev app wiring to use stable NFS entry points +2/-4

Update dev app wiring to use stable NFS entry points

• Switches dev app imports to consume orchestrator from '../src' (stable NFS) and form-widgets from the package default entry point instead of '/alpha'.

workspaces/orchestrator/plugins/orchestrator/dev/index.tsx

legacy.tsxUpdate legacy dev app to import from 'legacyExports' +1/-1

Update legacy dev app to import from 'legacyExports'

• Changes the legacy dev app to import 'OrchestratorPage' and 'orchestratorPlugin' from '../src/legacyExports', keeping translations import unchanged.

workspaces/orchestrator/plugins/orchestrator/dev/legacy.tsx

alpha.tsRepurpose '/alpha' to translations-only barrel +17/-0

Repurpose '/alpha' to translations-only barrel

• Adds a lightweight 'alpha' entry file that re-exports translations, aligning with the new contract that '/alpha' is translations-only.

workspaces/orchestrator/plugins/orchestrator/src/alpha.ts

orchestratorTranslationsModuleExport.tsExport translations module default from stable NFS entry point +1/-1

Export translations module default from stable NFS entry point

• Updates the translations module re-export to pull from './index' instead of './alpha', matching the new stable default entry point for NFS.

workspaces/orchestrator/plugins/orchestrator/src/orchestratorTranslationsModuleExport.ts

Tests (2) +4 / -4
nfsExports.test.tsxUpdate NFS export test to import from default entry +2/-2

Update NFS export test to import from default entry

• Adjusts the NFS export test to import the plugin from 'index' (default entry point) instead of the removed 'alpha' module and renames the describe block accordingly.

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/nfsExports.test.tsx

nfsExports.test.tsxUpdate orchestrator NFS export test to import from default entry +2/-2

Update orchestrator NFS export test to import from default entry

• Switches the test import from './alpha' to './index' and renames the suite to reflect NFS stability. Continues to validate both plugin type and translations module export.

workspaces/orchestrator/plugins/orchestrator/src/nfsExports.test.tsx

Documentation (11) +563 / -266
promote-nfs-stable.mdAdd breaking-change changeset and migration guidance +43/-0

Add breaking-change changeset and migration guidance

• Adds a major-version changeset for both orchestrator packages. Documents migration steps for NFS imports (drop '/alpha'), OFS imports (use '/legacy'), and dynamic plugin configs (set 'module: Legacy').

workspaces/orchestrator/.changeset/promote-nfs-stable.md

static-plugin-installation.mdUpdate installation docs to use '/legacy' for OFS and '.' for NFS +4/-4

Update installation docs to use '/legacy' for OFS and '.' for NFS

• Switches static app examples for legacy Backstage to import 'OrchestratorPage' and 'OrchestratorIcon' from '/legacy'. Updates NFS 'createApp' examples to import orchestrator and form-widgets from the default entry points.

workspaces/orchestrator/docs/static-plugin-installation.md

workflows-tab.mdUpdate workflows tab docs to import catalog helpers from '/legacy' +1/-1

Update workflows tab docs to import catalog helpers from '/legacy'

• Changes the entity page example to import 'OrchestratorCatalogTab' and 'IsOrchestratorCatalogTabAvailable' from the new '/legacy' entry point.

workspaces/orchestrator/docs/workflows-tab.md

README.mdDocument NFS default entry point and '/legacy' for OFS +19/-9

Document NFS default entry point and '/legacy' for OFS

• Reworks deployment instructions to explicitly separate NFS usage (default import) from legacy OFS usage ('/legacy'). Notes that dynamic plugin consumers of OFS should use 'module: Legacy'.

workspaces/orchestrator/plugins/orchestrator-form-widgets/README.md

report-legacy.api.mdAdd API extractor report for legacy entry point +25/-0

Add API extractor report for legacy entry point

• Introduces a legacy API report documenting OFS exports (including the plugin and API factory). Captures API Extractor warnings for missing/forgotten exports as generated output.

workspaces/orchestrator/plugins/orchestrator-form-widgets/report-legacy.api.md

report.api.mdUpdate main API report to reflect NFS default export +24/-11

Update main API report to reflect NFS default export

• Replaces the previously-reported OFS surface with the NFS 'createFrontendPlugin' default export shape (overridable frontend plugin and extension definitions).

workspaces/orchestrator/plugins/orchestrator-form-widgets/report.api.md

README.mdUpdate orchestrator entry point documentation for NFS promotion +3/-2

Update orchestrator entry point documentation for NFS promotion

• Documents that the default entry point is now NFS, introduces '/legacy' for OFS exports, and clarifies that '/alpha' is now translations-only.

workspaces/orchestrator/plugins/orchestrator/README.md

report-alpha.api.mdReduce alpha API report to translations-only surface +0/-214

Reduce alpha API report to translations-only surface

• Updates the alpha API report to remove the NFS plugin export and retain only translation-related exports, matching the new purpose of the '/alpha' subpath.

workspaces/orchestrator/plugins/orchestrator/report-alpha.api.md

report-legacy.api.mdAdd legacy API extractor report for '/legacy' entry point +239/-0

Add legacy API extractor report for '/legacy' entry point

• Introduces a legacy API report documenting OFS exports (page, icon, plugin, catalog helpers, translations). Preserves generated warnings about missing documentation/release tags as output.

workspaces/orchestrator/plugins/orchestrator/report-legacy.api.md

report-orchestrator-translations-module.api.mdMark translations module export as '@public' in API report +1/-1

Mark translations module export as '@public' in API report

• Updates the API report for the translations module entry to reflect that the translations module is now public API.

workspaces/orchestrator/plugins/orchestrator/report-orchestrator-translations-module.api.md

report.api.mdUpdate main API report to represent NFS default export +204/-24

Update main API report to represent NFS default export

• Replaces the reported OFS API surface with the NFS 'OverridableFrontendPlugin' default export and associated extension definitions. Adds the 'orchestratorTranslationsModule' export to the stable report output.

workspaces/orchestrator/plugins/orchestrator/report.api.md

Other (5) +42 / -11
package.jsonPromote NFS exports to '.' and add '/legacy' + Scalprum module +5/-4

Promote NFS exports to '.' and add '/legacy' + Scalprum module

• Removes the './alpha' export and adds './legacy' pointing at 'src/legacyExports.ts'. Updates 'typesVersions' accordingly and exposes a new Scalprum 'Legacy' module alongside 'PluginRoot'.

workspaces/orchestrator/plugins/orchestrator-form-widgets/package.json

legacyExports.tsAdd '/legacy' re-export barrel for OFS consumers +20/-0

Add '/legacy' re-export barrel for OFS consumers

• Adds a dedicated legacy entry point that re-exports the existing OFS 'plugin' exports ('orchestratorFormWidgetsPlugin', 'orchestratorFormApiFactory').

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/legacyExports.ts

app-config.yamlRequire Scalprum 'module: Legacy' for OFS dynamic routes/icons/translations +5/-0

Require Scalprum 'module: Legacy' for OFS dynamic routes/icons/translations

• Updates dynamic plugin configuration to mark translation resources, icons, routes, and mount points as coming from the 'Legacy' module. Adds an inline comment clarifying that legacy exports are not on the default module.

workspaces/orchestrator/plugins/orchestrator/app-config.yaml

package.jsonPromote NFS to default exports and add '/legacy' + Scalprum modules +12/-7

Promote NFS to default exports and add '/legacy' + Scalprum modules

• Switches 'main/types' and 'exports'.'.' to 'src/index.tsx' (NFS), repurposes './alpha' to point to 'src/alpha.ts' (translations), and adds './legacy'. Updates 'typesVersions' and Scalprum 'exposedModules' to provide 'Legacy' and a dedicated 'OrchestratorTranslationsModule'.

workspaces/orchestrator/plugins/orchestrator/package.json

legacyExports.tsLegacy export entry point retained for OFS consumers not counted

Legacy export entry point retained for OFS consumers

• No diff hunk was provided for this file, but it is now referenced as the '/legacy' entry point and exposed via package exports/Scalprum. Reviewers should verify it cleanly re-exports the intended OFS symbols.

workspaces/orchestrator/plugins/orchestrator/src/legacyExports.ts

@codecov

codecov Bot commented Aug 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 58.51%. Comparing base (258cfc7) to head (5f5e278).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4247      +/-   ##
==========================================
- Coverage   58.52%   58.51%   -0.01%     
==========================================
  Files        2447     2448       +1     
  Lines       97252    97256       +4     
  Branches    26994    27016      +22     
==========================================
  Hits        56913    56913              
- Misses      40146    40150       +4     
  Partials      193      193              
Flag Coverage Δ *Carryforward flag
adoption-insights 84.55% <ø> (ø) Carriedforward from 258cfc7
ai-integrations 69.76% <ø> (ø) Carriedforward from 258cfc7
app-defaults 69.79% <ø> (ø) Carriedforward from 258cfc7
augment 46.67% <ø> (ø) Carriedforward from 258cfc7
boost 77.63% <ø> (ø) Carriedforward from 258cfc7
bulk-import 72.79% <ø> (ø) Carriedforward from 258cfc7
cost-management 13.55% <ø> (ø) Carriedforward from 258cfc7
dcm 67.21% <ø> (ø) Carriedforward from 258cfc7
extensions 56.59% <ø> (ø) Carriedforward from 258cfc7
global-floating-action-button 71.18% <ø> (ø) Carriedforward from 258cfc7
global-header 66.50% <ø> (ø) Carriedforward from 258cfc7
homepage 47.59% <ø> (ø) Carriedforward from 258cfc7
install-dynamic-plugins 59.95% <ø> (ø) Carriedforward from 258cfc7
intelligent-assistant 75.24% <ø> (ø) Carriedforward from 258cfc7
konflux 91.98% <ø> (ø) Carriedforward from 258cfc7
lightspeed 69.02% <ø> (ø) Carriedforward from 258cfc7
mcp-integrations 83.40% <ø> (ø) Carriedforward from 258cfc7
orchestrator 68.07% <100.00%> (-0.04%) ⬇️
quickstart 63.74% <ø> (ø) Carriedforward from 258cfc7
sandbox 79.56% <ø> (ø) Carriedforward from 258cfc7
scorecard 86.23% <ø> (ø) Carriedforward from 258cfc7
theme 88.77% <ø> (ø) Carriedforward from 258cfc7
translations 5.12% <ø> (ø) Carriedforward from 258cfc7
x2a 79.20% <ø> (ø) Carriedforward from 258cfc7

*This pull request uses carry forward flags. Click here to find out more.


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 258cfc7...5f5e278. Read the comment docs.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rhdh-qodo-merge

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 🔗 Cross-repo conflicts (1) 📜 Skill insights (0)

Grey Divider


Action required

1. Missing legacy type export 🐞 Bug ≡ Correctness
Description
@red-hat-developer-hub/backstage-plugin-orchestrator-form-widgets/legacy re-exports
orchestratorFormApiFactory, whose public type signature includes FormWidgetsApi, but
legacyExports.ts does not export FormWidgetsApi. This triggers an API Extractor
ae-forgotten-export warning and can fail API validation gates or produce an incomplete/undesirable
rolled-up .d.ts for the /legacy entrypoint.
Code

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/legacyExports.ts[R17-20]

+export {
+  orchestratorFormWidgetsPlugin,
+  orchestratorFormApiFactory,
+} from './plugin';
Relevance

●●● Strong

Deterministic API Extractor fix: missing public type export from entrypoint is typically addressed.

PR-#3753

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The legacy entrypoint re-exports the factory from plugin.ts, where the factory constructs `new
FormWidgetsApi(), which causes FormWidgetsApi` to appear in the factory’s exported type. API
Extractor confirms this mismatch with an ae-forgotten-export warning in the generated legacy API
report.

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/legacyExports.ts[17-20]
workspaces/orchestrator/plugins/orchestrator-form-widgets/src/plugin.ts[16-30]
workspaces/orchestrator/plugins/orchestrator-form-widgets/src/FormWidgetsApi.tsx[52-81]
workspaces/orchestrator/plugins/orchestrator-form-widgets/report-legacy.api.md[6-19]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new `/legacy` entrypoint re-exports `orchestratorFormApiFactory`, which is typed as `ApiFactory<OrchestratorFormApi, FormWidgetsApi, ...>`. Because `FormWidgetsApi` is not exported by the `/legacy` entrypoint, API Extractor emits an `ae-forgotten-export` warning.

## Issue Context
This PR introduces a new `/legacy` entrypoint for orchestrator-form-widgets and adds an API report file that already shows the warning.

## Fix Focus Areas
- workspaces/orchestrator/plugins/orchestrator-form-widgets/src/legacyExports.ts[17-20]

### Suggested fix
Either:
1) Re-export the symbol from the legacy entrypoint (recommended):
  - Add `export { FormWidgetsApi } from './FormWidgetsApi';` to `legacyExports.ts` (and ensure it has an appropriate release tag if needed).

OR
2) Hide the concrete implementation type from the public factory signature by explicitly typing the factory to return the public interface type (only if it actually removes `FormWidgetsApi` from the emitted type signature).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Form-widgets breaks OFS 🔗 Cross-repo conflict ≡ Correctness
Description
RHDH’s OFS dynamic-plugin loader only registers remote exports that match the BackstagePlugin
interface, and defaults plugin loading to module PluginRoot. This PR changes
orchestrator-form-widgets PluginRoot to export an NFS FrontendPlugin (while the OFS
BackstagePlugin export moves to Legacy), so RHDH Operator/Local orchestrator flavour may stop
registering the form-widgets plugin unless their generated dynamicPlugins.frontend config selects
pluginModule: Legacy (or equivalent).
Code

workspaces/orchestrator/plugins/orchestrator-form-widgets/package.json[R89-94]

  "scalprum": {
    "name": "red-hat-developer-hub.backstage-plugin-orchestrator-form-widgets",
    "exposedModules": {
-      "PluginRoot": "./src/index.ts"
+      "PluginRoot": "./src/index.ts",
+      "Legacy": "./src/legacyExports.ts"
    }
Relevance

●● Moderate

Change is intentional breaking pattern; unclear if they’ll also update downstream dynamic plugin
configs now.

PR-#3953
PR-#3954

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
In this PR, the orchestrator-form-widgets package’s PluginRoot module is mapped to src/index.ts,
which now default-exports an NFS FrontendPlugin. In RHDH, the dynamic-plugin runtime only adds
remote exports that look like BackstagePlugin objects to the OFS createApp({ plugins: [...] })
list, and the module defaults to PluginRoot unless overridden. Both rhdh-operator and rhdh-local
orchestrator profiles install orchestrator-form-widgets, so OFS deployments must explicitly select
the new Legacy module to continue loading the BackstagePlugin export.

workspaces/orchestrator/plugins/orchestrator-form-widgets/src/index.ts[17-45]
workspaces/orchestrator/plugins/orchestrator-form-widgets/package.json[89-95]
workspaces/orchestrator/plugins/orchestrator-form-widgets/src/legacyExports.ts[17-20]
External repo: redhat-developer/rhdh, packages/app/src/utils/dynamicUI/extractDynamicConfig.ts [255-263]
External repo: redhat-developer/rhdh, packages/app/src/components/DynamicRoot/DynamicRoot.tsx [209-228]
External repo: redhat-developer/rhdh, packages/app/src/components/DynamicRoot/DynamicRoot.tsx [581-607]
External repo: redhat-developer/rhdh-operator, docs/orchestrator.md [71-76]
External repo: redhat-developer/rhdh-operator, config/profile/rhdh/default-config/flavours/orchestrator/dynamic-plugins.yaml [7-17]
External repo: redhat-developer/rhdh-local, orchestrator/configs/dynamic-plugins/dynamic-plugins.yaml [5-21]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
RHDH (cross-repo: `redhat-developer/rhdh`) loads dynamic frontend plugins into an **OFS** Backstage app via `createApp({ plugins: [...] })`. It only adds remotely loaded exports that look like `BackstagePlugin` objects. After this PR, `@red-hat-developer-hub/backstage-plugin-orchestrator-form-widgets` exposes:
- `PluginRoot` → `./src/index.ts` (now an NFS `createFrontendPlugin` default export)
- `Legacy` → `./src/legacyExports.ts` (exports the OFS `orchestratorFormWidgetsPlugin`)

If RHDH’s generated `dynamicPlugins.frontend` config loads this plugin using the default `pluginModule` (`PluginRoot`), RHDH will not treat the NFS `FrontendPlugin` as a `BackstagePlugin`, and the form-widgets plugin won’t be registered in the OFS app.

## Issue Context
This is cross-repo impactful because `rhdh-operator` and `rhdh-local` orchestrator profiles install `red-hat-developer-hub-backstage-plugin-orchestrator-form-widgets` as part of the Orchestrator flavour.

## Fix Focus Areas
- workspaces/orchestrator/plugins/orchestrator-form-widgets/package.json[89-95]
- workspaces/orchestrator/plugins/orchestrator-form-widgets/src/index.ts[17-45]

### Recommended fix
1. Ensure OFS deployments load the plugin from the `Legacy` exposed module.
  - Preferred: add an `app-config.yaml` (or app-config fragment used by `install-dynamic-plugins`) for this package that sets:
    ```yaml
    dynamicPlugins:
      frontend:
        red-hat-developer-hub.backstage-plugin-orchestrator-form-widgets:
          pluginModule: Legacy
    ```
  - Alternative: keep `PluginRoot` exporting a `BackstagePlugin` for OFS compatibility and expose NFS via a different module name/subpath.
2. Coordinate with `rhdh-operator`/`rhdh-local` if they maintain any explicit `dynamicPlugins.frontend` overrides for this plugin, to add `pluginModule: Legacy` / `module: Legacy` there as well.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context used
⚠️ Tickets: not configured — ticket URL found in PR but could not be fetched — check ticket provider credentials
✅ Compliance rules (platform): 11 rules
✅ Cross-repo context
  Explored: repo: redhat-developer/rhdh (sha: 820e6260)
  Explored: repo: redhat-developer/rhdh-operator (sha: a425373c)
  Explored: repo: redhat-developer/rhdh-local (sha: a1776caa)
  Not relevant to this PR: redhat-developer/rhdh-chart

Grey Divider

Tip of the day
💡 Did you know, you can reply 'qodo' on any finding to push back, ask questions, or dig deeper

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@rhdh-qodo-merge rhdh-qodo-merge Bot added documentation Improvements or additions to documentation enhancement New feature or request Tests labels Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request Tests workspace/orchestrator

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant