Skip to content

Add software-catalog catalog-info.yaml for overlay workspaces - #4

Merged
kadel merged 1 commit into
mainfrom
catalog/software-catalog-info
Sep 1, 2026
Merged

kadel merged 1 commit into
mainfrom
catalog/software-catalog-info

Conversation

@durandom

@durandom durandom commented Sep 1, 2026

Copy link
Copy Markdown

Summary

  • Generate Backstage kind: Component descriptors for the overlay repo root and every workspace (overlay-<name>).
  • Add scripts/generateCatalogInfo.py so the YAML stays generated from source.json + plugins-list.yaml.
  • Gate drift with python3 scripts/generateCatalogInfo.py --check in the catalog-scripts CI workflow.

This is Phase 1 of rhdh-parasol/rhdh-agentic-instance#1: the Parasol RHDH software catalog can discover overlay workspaces the same way it already discovers rhdh-plugins (GithubEntityProvider + /workspaces/*/catalog-info.yaml).

These files are software catalog Components, not Extensions Plugin/Package entities.

Details

  • Root entity: rhdh-plugin-export-overlays (type: repository), github.com/project-slug: rhdh-parasol/rhdh-plugin-export-overlays.
  • Workspace entities: overlay-<workspace>, type: rhdh-overlay-workspace, subcomponentOf: rhdh-plugin-export-overlays.
  • spec.dependsOn is set only when the source is rhdh-plugins and that workspace already has a Component in the Parasol catalog (e.g. overlay-bulk-import → red-hat-developer-hub-bulk-import). Community-plugin overlays have no dependsOn.
  • Do not edit the YAML by hand. Re-run python3 scripts/generateCatalogInfo.py.

Test plan

  • cd scripts && python -m pytest tests/test_generateCatalogInfo.py -v
  • python3 scripts/generateCatalogInfo.py --check exits 0
  • Spot-check workspaces/bulk-import/catalog-info.yaml (dependsOn present) and workspaces/github/catalog-info.yaml (no dependsOn)
  • After the companion provider PR in rhdh-agentic-instance syncs, catalog shows rhdh-plugin-export-overlays and overlay-*

Made with Cursor

Generate Backstage Component descriptors so the Parasol RHDH instance
can discover overlay workspaces via GithubEntityProvider, without
importing Extensions Plugin/Package YAML into /catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ❌ Failure · Started 7:36 AM UTC · Completed 7:37 AM UTC

Commit: 7b713a9 · View workflow run →

- 'scripts/requirements-dev.txt'
- '.github/workflows/validate-catalog-scripts.yaml'
- 'catalog-info.yaml'
- 'workspaces/*/catalog-info.yaml'

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The drift check does not run when its actual inputs change. Please add workspaces/*/source.json and workspaces/*/plugins-list.yaml to this path filter; otherwise routine source-ref or package-list updates can merge with stale generated catalog YAML.

log_info(f"wrote {path}")


def check_files(files: list[tuple[Path, str]]) -> int:

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

--check only validates files in the current generation plan. If a workspace stops qualifying—for example, its source.json is removed—an existing generated catalog-info.yaml is neither checked nor removed and may continue to be ingested. Please compare existing generated workspace catalog files against the planned paths, fail --check for unexpected files, and remove them during normal generation.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

this can be addressed in followup PR

@kadel

kadel commented Sep 1, 2026

Copy link
Copy Markdown

/fs-review

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ❌ Failure · Started 9:20 AM UTC · Completed 9:22 AM UTC

Commit: 7b713a9 · View workflow run →

@kadel

kadel commented Sep 1, 2026

Copy link
Copy Markdown

/fs-review

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ❌ Failure (validation failed after 2 iteration(s)) · Started 11:51 AM UTC · Completed 11:53 AM UTC

Commit: 7b713a9 · View workflow run →

Runtime: claude · Model: claude-opus-4-8

@kadel

kadel commented Sep 1, 2026

Copy link
Copy Markdown

The review findings are tracked in fullsend-ai/fullsend#11 and fullsend-ai/fullsend#12 and can be addressed in follow-up PRs. They do not need to block this PR, so I’m proceeding with the merge.

@kadel
kadel merged commit 6abe032 into main Sep 1, 2026
40 of 41 checks passed
@fullsend-ai-retro

fullsend-ai-retro Bot commented Sep 1, 2026 •

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 1:09 PM UTC · Completed 1:22 PM UTC

Commit: 7b713a9 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.95

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR fullsend-ai/fullsend#4 — Add software-catalog catalog-info.yaml for overlay workspaces

What happened

PR #4 was a human-authored PR (by durandom with Cursor co-authoring) adding 69 files — 65 generated catalog-info.yaml files, a Python generator script, tests, and a CI drift-check workflow.

Timeline:

  • 07:34 UTC — PR opened
  • 07:36 — Review agent auto-triggered → Failed (policy_denied API error, 0 tokens consumed)
  • 09:08–09:10 — Human reviewer kadel left 2 inline review comments identifying real issues
  • 09:20 — kadel manually triggered /fs-review → Failed (same policy_denied)
  • 09:54 — kadel acknowledged findings can be addressed in follow-ups
  • 11:50 — kadel triggered /fs-review a third time → Failed (same policy_denied, even after PR Add CODEOWNERS fullsend-ai/fullsend#6 pinned model to claude-opus-4-8)
  • 13:07 — kadel filed issues #11 and #12 for his review findings
  • 13:08 — kadel merged the PR, noting review findings are tracked and don't block the merge

Root cause

All 3 review agent runs failed because the Claude API returned policy_denied before any tokens were processed. The Vertex AI project (rhdh-sidekick-167988) configured for this org does not have the requested Claude models enabled. Between runs 2 and 3, PR fullsend-ai/fullsend#6 was merged to pin the model from opus (which resolved to claude-opus-5) to claude-opus-4-8, but policy_denied persisted — indicating the project lacks access to both model variants.

Impact

  • Zero agent review coverage on this PR — the agent never executed
  • ~4 hours of user friction as kadel retried the review agent before giving up
  • 2 actionable human findings that the agent never had a chance to evaluate: incomplete CI path triggers (#11) and missing stale-file detection (#12)

Existing issues covering all identified improvements

Autonomy readiness

Cannot be assessed — the review agent never produced output. All review was performed by the human reviewer (kadel), who identified 2 real issues now tracked in #11 and #12.

No new proposals

All identified improvement opportunities map to existing open issues. No novel proposals are warranted.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants