Skip to content

docs(e2e): record why roadie-backstage-plugins has no app-next lane - #3327

Closed
gustavolira wants to merge 1 commit into
mainfrom
nfs-roadie-blocked
Closed

docs(e2e): record why roadie-backstage-plugins has no app-next lane#3327
gustavolira wants to merge 1 commit into
mainfrom
nfs-roadie-blocked

Conversation

@gustavolira

Copy link
Copy Markdown
Member

Closes RHIDP-16301.

The ticket asks for an app-next lane. Both projects in this workspace are blocked upstream, for two different reasons, so the deliverable is the finding rather than a lane that cannot pass. Docs-only.

1. backstage-plugin-github-pull-requests — NFS surface exists, but contributes no UI

The package does have an NFS surface. At the pinned ref, src/alpha.tsx:

const githubPullRequestsApi = ApiBlueprint.make({ /* ... */ });

export default createFrontendPlugin({
  extensions: [githubPullRequestsApi],
});

extensions contains an ApiBlueprint and nothing else — no EntityContentBlueprint, no EntityCardBlueprint, no PageBlueprint. So the "Pull/Merge Requests" entity tab this spec clicks cannot exist under the new frontend system. The surface registers an API; it renders nothing.

The package also declares no backstage.features and has no exports map, which is consistent with what the readiness data already showed for all six @roadiehq/* frontend packages: a servable module-federation remote with no NFS entry point.

2. scaffolder-backend-module-http-request — NFS does not apply, and the spec needs the global header

It is a backend module, so there is no frontend surface to migrate. Separately, its spec asserts verifyHeading("Self-service") — a global header element, and rhdh:packages/app-next ships no global header. (Same thing that broke one test in #3318.)

Checked against a newer ref too

Both findings hold at the ref source.json pins (c1b84e94) and on upstream main, 62 commits ahead, where alpha.tsx is byte-identical. Bumping the ref would not help — worth stating because that is the obvious first guess.

Why not add the lane anyway

It would fail on a missing tab, and the failure would read as a wiring bug rather than as an absent upstream extension. That is precisely the misattribution this epic keeps hitting.

And per the support levels in rhdh:docs/testing-requirements-matrix.md, every frontend package here is community — a tier that requires no E2E at all, only that the published artifact installs and boots. The strategy is also explicit that for third-party plugins we do not own we should have no coverage goals, only integration checks. So the remedy is an upstream contribution to RoadieHQ, or nothing — not a lane in this repo.

Where the note lives

playwright.config.ts, because that is the first file someone adding a lane opens, and the triage sheet's roadie-backstage-plugins row now carries the same finding so the epic's tracking artifact agrees.

Relevant to the in-flight "disable non-NFS-ready tests" work

This workspace is a concrete, evidenced member of that set. Worth noting for whoever builds the filter: keying it on the project filename will not classify this workspace correctly — neither project is named -app-next, and neither is NFS-ready. Conversely useNewFrontendSystem: true in rhdh.configure() already enables NFS without the suffix (see #3234 for homepage), so the name and the reality can diverge in both directions. The authoritative signal is rhdh.deploymentConfig.useNewFrontendSystem.

🤖 Generated with Claude Code

RHIDP-16301 asks for an app-next lane here. Both of this workspace's
projects are blocked upstream, for two different reasons, so the honest
deliverable is the finding rather than a lane that cannot pass.

backstage-plugin-github-pull-requests does have an NFS surface --
src/alpha.tsx with createFrontendPlugin -- but it registers
`extensions: [githubPullRequestsApi]`, an ApiBlueprint and nothing else.
There is no EntityContentBlueprint, so the "Pull/Merge Requests" entity tab
the spec clicks cannot exist under the new frontend system. The surface
contributes an API, no UI. The package also declares no backstage.features
and has no exports map.

scaffolder-backend-module-http-request is a backend module, so NFS does not
apply to it, and its spec asserts verifyHeading("Self-service") -- a global
header element, which packages/app-next does not ship.

Both were checked at the pinned ref (c1b84e94) and on upstream main, 62
commits ahead, where alpha.tsx is unchanged. Bumping the ref would not help.

Adding a lane anyway would fail on a missing tab and read as a wiring bug
rather than as an absent upstream extension -- the failure mode this epic
keeps running into. These packages are `community` in the support matrix,
which requires no E2E at all, so the remedy is an upstream contribution or
nothing, not a lane here.

The note lives in playwright.config.ts because that is where the next person
adding a lane will look first, and the triage sheet's roadie row now carries
the same finding.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gustavolira
gustavolira requested review from a team, gashcrumb and kadel as code owners August 19, 2026 13:51
@sonarqubecloud

Copy link
Copy Markdown

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 19, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 1:52 PM UTC · Completed 1:57 PM UTC

Commit: 6fca36f · View workflow run →

@gustavolira

Copy link
Copy Markdown
Member Author

Closing — there is no lane to add here, so there is no PR to make. The finding stands and is recorded on RHIDP-16301 instead:

  • backstage-plugin-github-pull-requests has an NFS surface (src/alpha.tsx) but registers only an ApiBlueprint — no EntityContentBlueprint — so the "Pull/Merge Requests" tab the spec clicks cannot exist under NFS.
  • scaffolder-backend-module-http-request is a backend module, so NFS does not apply, and its spec asserts verifyHeading("Self-service"), a global header element packages/app-next does not ship.
  • Both hold at the pinned ref c1b84e94 and on upstream main, 62 commits ahead, where alpha.tsx is byte-identical — bumping the ref would not help.

The remedy is an upstream contribution to RoadieHQ, and these packages are community, a tier the support matrix exempts from E2E entirely.

@gustavolira
gustavolira deleted the nfs-roadie-blocked branch August 19, 2026 13:55
@fullsend-ai-retro

fullsend-ai-retro Bot commented Aug 19, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 1:56 PM UTC · Completed 2:05 PM UTC

Commit: 6fca36f · View workflow run →

@fullsend-ai-review

Copy link
Copy Markdown

Review skipped — this PR is already closed.

The /fs-review command only reviews open pull requests.

Posted by fullsend post-review check

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #3327 — docs(e2e): record why roadie-backstage-plugins has no app-next lane

Workflow quality: Clean, no actionable improvements found. All identified waste is already tracked by existing issues.

Timeline

Time (UTC) Event
13:51:42 PR opened by gustavolira (human, with Claude Code assistance) — docs-only, 2 files, 28 additions
13:51:46 Review workflow triggered (run 32260547297)
13:52:20 SonarQube: Quality Gate passed
13:55:02 Author closes PR — finding belongs on Jira RHIDP-16301, not as a merged PR
13:57:29 Review agent completes with APPROVE verdict; post-review correctly skips posting since PR is closed

Assessment

Review quality — Excellent. The agent verified technical claims (NFS surface analysis, backend module classification, support tier lookup) against actual workspace metadata. The APPROVE verdict was correct. No false positives, no missed issues.

Token waste — The review agent spent $0.85 and 5.5 minutes reviewing a PR that was closed 3 minutes after opening. The work was thorough but produced no value. This is the only waste identified.

Rework — None. Single commit, no iterations.

Already-tracked issues (no new proposals needed)

  • Review running on closed PRs: Extensively tracked across fullsend-ai/fullsend #3010, #1870, #2388 and fullsend-ai/agents #337, #642. This retro provides another data point: $0.85 wasted on a 3-minute-lived PR.
  • Harness dispatch LoadWithBase errors: Three agents (code, fix, review) failed dispatch with "base field is set but harness was not loaded with LoadWithBase." This was fixed today in fullsend-ai/fullsend #6127 (PR #6367 merged 2026-08-19T12:09Z). The review still ran via the Route path, so the error was non-blocking here.

Why no proposals

The only waste (review on a quickly-closed PR) is a well-understood problem with 5+ open issues tracking it across the platform and agents repos. The harness dispatch error was fixed earlier today. The human's workflow was efficient — they opened a PR, realized the finding belonged elsewhere, and closed it promptly. No systemic improvement beyond what is already tracked.

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.

1 participant