Skip to content

chore(repo): remove remaining Scalprum backend - #5452

Open
hopehadfield wants to merge 3 commits into
redhat-developer:mainfrom
hopehadfield:chore/rhidp-17024-remove-scalprum
Open

hopehadfield wants to merge 3 commits into
redhat-developer:mainfrom
hopehadfield:chore/rhidp-17024-remove-scalprum

Conversation

@hopehadfield

@hopehadfield hopehadfield commented Sep 18, 2026

Copy link
Copy Markdown
Member

Summary

  • remove the obsolete Scalprum backend and its backend registration
  • remove Scalprum build, container, ignore, Renovate, lockfile, and E2E references
  • update plugin bundle validation and dependency inventory for current module-federation-only frontend plugins

Verification

  • yarn --cwd e2e-tests test:unit
  • yarn --cwd e2e-tests fmt:check
  • yarn workspace backend tsc --noEmit
  • git diff --check

Closes RHIDP-17024

Co-authored-by: OpenAI <noreply@openai.com>
@rhdh-qodo-merge

Copy link
Copy Markdown

PR Summary by Qodo

Remove obsolete Scalprum backend and legacy bundle support

✨ Enhancement 🧪 Tests ⚙️ Configuration changes 🕐 20-40 Minutes

Grey Divider

AI Description

• Removes obsolete Scalprum backend, registration, packaging, and dependency references.
• Standardizes frontend plugin discovery and validation on module federation bundles.
• Deletes Scalprum endpoint checks and refreshes dependency inventory outputs.
Diagram

graph TD
  A["Installed Plugins"] --> B["Plugin Scanner"] --> C{"Frontend Role?"}
  C -->|Yes| D["remoteEntry.js"] --> E["Bundle Validation"]
  C -->|No| F["Backend Plugin"]
  A -.->|Removed| G["Scalprum Backend"]
  style G fill:#f8d7da,stroke:#842029,stroke-dasharray: 5 5
Loading
High-Level Assessment

Directly removing the obsolete backend and converging validation on module federation is the appropriate approach. Retaining a compatibility shim or dual-format validation would preserve unused endpoints, dependencies, and test complexity without supporting the current frontend plugin model.

Files changed (14) +16 / -283

Enhancement (1) +5 / -32
installed-plugins.tsRequire module federation bundles for frontend plugins +5/-32

Require module federation bundles for frontend plugins

• Removes Scalprum manifest discovery and frontend-name extraction. Role fallback and bundle validation now rely exclusively on dist/remoteEntry.js.

e2e-tests/playwright/utils/installed-plugins.ts

Refactor (1) +0 / -23
dynamic-plugins-api.tsRemove the Scalprum endpoint client +0/-23

Remove the Scalprum endpoint client

• Deletes response parsing and unauthenticated fetching for /api/scalprum/plugins while retaining the dynamic plugins information API.

e2e-tests/playwright/support/api/dynamic-plugins-api.ts

Tests (3) +8 / -152
plugin-dynamic-loading.spec.tsRemove Scalprum serving verification +1/-36

Remove Scalprum serving verification

• Deletes the cluster-free check that compared installed Scalprum bundles with names served by the former backend endpoint. Existing dynamic loading and frontend bundle validation remain.

e2e-tests/playwright/cluster-free/plugin-dynamic-loading.spec.ts

dynamic-plugins-api.test.tsRemove tests for the deleted Scalprum API helper +1/-31

Remove tests for the deleted Scalprum API helper

• Deletes endpoint collection and unauthenticated request tests associated with fetchScalprumPluginNames.

e2e-tests/unit/dynamic-plugins-api.test.ts

installed-plugins.test.tsAlign plugin utility tests with module federation +6/-85

Align plugin utility tests with module federation

• Removes Scalprum bundle, manifest-name, and payload parser coverage. Updates discovery and validation expectations to require dist/remoteEntry.js.

e2e-tests/unit/installed-plugins.test.ts

Documentation (1) +3 / -6
eol-dependency-inventory-report.mdRefresh dependency health totals after Scalprum removal +3/-6

Refresh dependency health totals after Scalprum removal

• Removes Scalprum workspace dependency findings and reduces the reported unmaintained totals accordingly.

scripts/eol-inventory/eol-dependency-inventory-report.md

Other (8) +0 / -70
.dockerignoreStop preserving the Scalprum plugin in container contexts +0/-1

Stop preserving the Scalprum plugin in container contexts

• Removes the exception that included the deleted Scalprum backend beneath the otherwise ignored plugins directory.

.dockerignore

renovate.jsonRemove obsolete Scalprum update policy +0/-5

Remove obsolete Scalprum update policy

• Deletes the package rule that disabled automated updates for synchronized @scalprum packages.

.github/renovate.json

.gitignoreRemove the legacy Scalprum build output pattern +0/-1

Remove the legacy Scalprum build output pattern

• Stops ignoring dist-scalprum artifacts now that the bundle format is unsupported.

.gitignore

ContainerfileRemove Scalprum workspace metadata from container builds +0/-1

Remove Scalprum workspace metadata from container builds

• Stops copying the deleted plugin's package manifest into the container dependency layer.

build/containerfiles/Containerfile

package.jsonDrop the Scalprum backend workspace dependency +0/-1

Drop the Scalprum backend workspace dependency

• Removes @internal/plugin-scalprum-backend from the backend application's dependencies.

packages/backend/package.json

index.tsStop registering the Scalprum backend plugin +0/-1

Stop registering the Scalprum backend plugin

• Removes the backend feature import that mounted the obsolete Scalprum service.

packages/backend/src/index.ts

eol-dependency-inventory.csvRemove Scalprum dependencies from the inventory dataset +0/-18

Remove Scalprum dependencies from the inventory dataset

• Deletes runtime, build, and test dependency records belonging to the removed workspace.

scripts/eol-inventory/eol-dependency-inventory.csv

yarn.lockPrune the Scalprum workspace and exclusive dependencies +0/-42

Prune the Scalprum workspace and exclusive dependencies

• Removes the deleted workspace resolution, its backend dependency reference, and lock entries used only by its tests.

yarn.lock

@codecov

codecov Bot commented Sep 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.04%. Comparing base (b4eab29) to head (56dc8ca).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@             Coverage Diff             @@
##             main    #5452       +/-   ##
===========================================
- Coverage   74.21%   64.04%   -10.17%     
===========================================
  Files          69       57       -12     
  Lines         799      573      -226     
  Branches      125       99       -26     
===========================================
- Hits          593      367      -226     
  Misses        205      205               
  Partials        1        1               
Flag Coverage Δ
rhdh 64.04% <ø> (-10.17%) ⬇️
Components Coverage Δ
Backend plugins ∅ <ø> (∅)
Backend app 71.91% <ø> (ø)
Frontend app 60.50% <ø> (ø)
Plugin utils ∅ <ø> (∅)

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 b4eab29...56dc8ca. 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

rhdh-qodo-merge Bot commented Sep 18, 2026

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. Documentation link checks fail ✓ Resolved 🐞 Bug ≡ Correctness
Description
docs/testing.md still links to the two deleted Scalprum router test files as its worked examples.
This PR deletes both targets while also changing Markdown files, so the workflow that scans every
file under docs/ reports those relative links as broken.
Code

plugins/scalprum-backend/src/service/router.test.ts[1]

-import {
Relevance

●●● Strong

Deleted targets remain linked from documentation, and recent precedent accepts correcting stale
documentation links.

PR-#4490
PR-#4680

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The documentation contains relative links to the deleted unit and integration test files, and the
workflow checks the entire documentation directory whenever Markdown changes in the PR.

docs/testing.md[42-42]
docs/testing.md[64-64]
.github/workflows/link-checker.yaml[5-20]

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

## Issue description
`docs/testing.md` links to two Scalprum test files deleted by this PR, causing the Markdown link-check workflow to fail.

## Fix Focus Areas
- docs/testing.md[42-64]

## Recommended Fix
Replace both Scalprum worked-example links with equivalent surviving unit and backend integration tests, or remove the worked-example references if no suitable replacements exist.

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


2. Community plugins stop loading 🔗 Cross-repo conflict ≡ Correctness
Description
packages/backend/src/index.ts removes the only Scalprum backend registration even though RHDH
still configures the Red Hat Argo CD and Quay community plugins through their legacy import names.
Enabling either current community package reaches its scalprum.exposedModules entrypoint without a
new frontend-system export, so its manifest and assets are no longer served and the plugin cannot
load.
Code

packages/backend/src/index.ts[136]

-backend.add(import('@internal/plugin-scalprum-backend'));
Relevance

●●● Strong

Explicitly documents legacy Scalprum community plugins still requiring the removed backend
registration.

PR-#5258

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
RHDH still contains import-name wiring for the Red Hat Argo CD plugin while the new validator
accepts only dist/remoteEntry.js. The community repository declares Red Hat Argo CD and Quay as
frontend plugins whose loadable entrypoints are defined exclusively through
scalprum.exposedModules, and its Red Hat Argo CD documentation explicitly states that dynamic
export produces dist-scalprum assets for installation.

app-config.dynamic-plugins.yaml[347-366]
e2e-tests/playwright/utils/installed-plugins.ts[166-175]
External repo: redhat-appstudio/backstage-community-plugins, workspaces/redhat-argocd/plugins/argocd/package.json [11-20]
External repo: redhat-appstudio/backstage-community-plugins, workspaces/redhat-argocd/plugins/argocd/package.json [84-90]
External repo: redhat-appstudio/backstage-community-plugins, workspaces/redhat-argocd/plugins/argocd/README.md [224-240]
External repo: redhat-appstudio/backstage-community-plugins, workspaces/quay/plugins/quay/package.json [11-20]
External repo: redhat-appstudio/backstage-community-plugins, workspaces/quay/plugins/quay/package.json [99-104]

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

## Issue description
Removing the Scalprum backend breaks configured community frontend plugins that still publish the legacy Scalprum contract, including Red Hat Argo CD and Quay.

## Fix Focus Areas
- packages/backend/src/index.ts[135-136]
- e2e-tests/playwright/utils/installed-plugins.ts[166-174]
- app-config.dynamic-plugins.yaml[347-366]

## Recommended Fix
Restore the Scalprum backend registration and legacy bundle validation until compatible releases of the affected community plugins provide new frontend-system exports and RHDH updates its catalog entries and configuration to those releases. Alternatively, coordinate those cross-repository migrations in the same release before removing the compatibility backend.

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



Remediation recommended

3. Dependency inventory reports false data 🐞 Bug ≡ Correctness
Description
eol-dependency-inventory-report.md retains the old healthy-row totals after fifteen healthy
Scalprum rows are removed, while the CSV still claims that the app and root declare five Scalprum
packages absent from both manifests. Because yarn eol-inventory derives these artifacts from
workspace manifests and counts rows directly, inventory consumers receive contradictory totals and
dependencies until the generated files are regenerated.
Code

scripts/eol-inventory/eol-dependency-inventory-report.md[8]

+- **Totals (CSV):** unmaintained: 124 · OK: 1612 · unknown: 0
Relevance

●●● Strong

Generated inventory artifacts contradict removed manifests; repository precedent accepts correcting
stale generated dependency data.

PR-#3271
PR-#4840

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The report says there are 1,612 healthy rows overall and 251 in core even though the diff removes
fifteen healthy core rows without replacements. The current CSV also lists three app Scalprum
packages and two root Scalprum resolutions, while the complete corresponding manifest sections
contain none; the generator computes counts directly from its row collection.

scripts/eol-inventory/eol-dependency-inventory-report.md[8-8]
scripts/eol-inventory/eol-dependency-inventory-report.md[40-42]
scripts/eol-inventory/eol-dependency-inventory.csv[1384-1386]
scripts/eol-inventory/eol-dependency-inventory.csv[1575-1576]
packages/app/package.json[52-117]
package.json[44-60]
scripts/eol-inventory/index.mjs[527-537]

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 generated dependency inventory was edited partially: its healthy-row totals were not reduced, and its CSV retains Scalprum dependencies that no longer exist in the app or root manifests.

## Fix Focus Areas
- scripts/eol-inventory/eol-dependency-inventory-report.md[8-42]
- scripts/eol-inventory/eol-dependency-inventory.csv[1384-1386]
- scripts/eol-inventory/eol-dependency-inventory.csv[1575-1576]

## Recommended Fix
Run `yarn eol-inventory` against the current workspace manifests and commit the fully regenerated CSV and Markdown report, ensuring the totals and all removed Scalprum dependency rows match the generated output.

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


Grey Divider

Context sources
⚠️ Tickets: not configured — ticket URL found in PR but could not be fetched — check ticket provider credentials
✅ Compliance rules (platform): 46 rules
✅ Cross-repo context — repo relationships
  Explored: repo: redhat-appstudio/backstage-community-plugins (sha: 7eb22666)
  Explored: repo: redhat-developer/rhdh-plugins (sha: c4e6305d)
Review mode: ⚖️ Balanced: This is a broad runtime and E2E behavior removal spanning backend registration, plugin discovery/validation, tests, build configuration, and dependency metadata, so a careful single-pass review is warranted.

Grey Divider

Tip of the day
💡 Did you know, you can type 'qodo, fix this' on a finding and the fix lands right on your PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@rhdh-qodo-merge

Copy link
Copy Markdown

Important

The /generate_labels command by Qodo is sunsetting on the 1st of October 2026 and will no longer be available. We recommend switching to the latest Qodo review capabilities. Learn more

@github-actions

Copy link
Copy Markdown
Contributor

The container image build workflow finished with status: cancelled.

@github-actions

Copy link
Copy Markdown
Contributor

Image was built and published successfully. It is available at:

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Image was built and published successfully. It is available at:

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.

1 participant