Skip to content

Retire the unused Backstage scaffold #4266

Open
6 of 7 issues completed
Open

Description

@devantler

🤖 Generated by the Agentic Engineer

User Story

As a portfolio maintainer,
I want to retire the unused Backstage scaffold and its associated platform resources,
So that we stop maintaining a demo portal after choosing GitHub as the internal developer platform.

Acceptance Criteria

  • Verify current usage and dependencies before removal; record any genuine consumer that needs a migration path.
  • Remove the Backstage deployment and resources owned solely by it, including its database, route, authentication wiring, policy, and obsolete documentation, without disturbing shared services.
  • Update platform guidance to point to the GitHub-based application catalog, templates, scorecards presented as badges at the top of repository README.md files and evaluated by GitHub Actions, and workflow self-service.
  • Validate the platform configuration and read back the real environment after rollout to confirm the retired workload and its owned resources are gone and unrelated services remain healthy.
  • Do not provision Port or another replacement portal.

Context

The Backstage scaffold is documented as a demo in this repository. #2637 combined its removal with adopting Port; the latter direction is superseded. This issue preserves the independently useful removal work.

Delivered on: 2026-10-11 — the source removal in #4639 merged at 9537b5cf1c1a03284aa91f42c40da880dba791e7. This date records source delivery, not completion of this issue.

Remaining acceptance

The stateless retirement and retained-storage protection are accepted in completed child #4819, including the terminal completion receipt from run 39161262289. That result explicitly leaves data retirement unassessed.

The remaining independent backup and retained-data decision is now owned by native child #5122. Protection from deletion does not establish a recoverable retained copy. This parent stays open with its original acceptance criteria and work history intact.

Resume condition: complete #5122 with accepted retained-data recovery evidence, then deliver and verify the separately reviewed remaining retirement work and shared-service health. The native dependency records this queued continuation. Moving the parent to Ready does not accept retention, remove resources or reset its original start clock.

Activity

  1. added theissue type on Sep 30, 2026
  2. self-assigned this
    on Oct 7, 2026
  3. added a commit that references this issue on Oct 7, 2026
  4. devantler commented on Oct 7, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Usage and dependency inspection found no genuine consumer needing migration. The shipped application is the demo scaffold, and no owning portfolio repository depends on its catalog or service. This is an observed usage/dependency result; it does not claim a database-content inspection.

    The prepared change removes the application and its dedicated database, route, authentication entries, monitoring policies and obsolete documentation. Shared services remain in place. The replacement guidance uses GitHub repositories, templates, README scorecard badges and approved workflow self-service; no replacement portal is introduced.

    Retirement follows the required two-stage process: the existing deployed protection stays in force until the source removal has merged and deployed, then the protected runtime orphans are explicitly removed. Database contents will be retained offline before claims are removed. This issue will remain open until the merged rollout and live cleanup have been verified.

  5. devantler commented on Oct 8, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    The removal is implemented in PR #4639. Signed head 415aa0cba77efda11cccf93bcae65094ab470d30 integrates current main, preserves its newer storage repair, and passes the local retirement, authorization, generated-exception and storage checks. Current-head CI now passes, including manifest and production authorization validation; all 33 check contexts are settled with no failures. The earlier green review does not cover this head. A fresh review request was not posted because the shared GitHub REST quota is exhausted and the required atomic request reservation could not be verified.

    The preceding rollout and protected recovery both failed. Recovery selected current main but stopped at a required service-readiness guard before publication, so a successful main restore has not been established. Fresh live readback still confirms incomplete readiness. The PR is parked on the existing actively owned recovery repair #4652; the safe-upgrade prerequisite #4391 also remains open. The retirement has not merged or returned to the queue.

    This issue remains open. After actual merge and deployed-source verification, the two database volumes will be retained before explicitly removing the protected runtime resources. Completion requires a successful fresh orphan check, disappearance of the retired route and its owned DNS records, and healthy shared services. No retirement deletion or elevated credential retrieval has occurred yet.

  6. devantler commented on Oct 11, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    New bounded production readback during the protected retirement merge-group run: the Backstage route remains present and reports ResolvedRefs=False / RefNotPermitted. That condition began at 2026-10-11 05:22:32 UTC. The portfolio health check exits 1 on this route.

    The scoped follow-up reads find the Flux layers resumed and Ready. The applications inventory no longer contains Backstage, and the live backend reference grant no longer permits its namespace. PR #4639 removes that grant entry while this runtime route is still present. This is concrete evidence of a source/runtime retirement split; it does not establish why the route survived pruning or prove the initiating cause from timing alone.

    The deployment job was still in progress at the closing job read. Its protected restore-main path has not yet been observed completing for this attempt. No deployment was cancelled, no cluster resource was modified or deleted, and no retained data was touched by this run. This issue remains open: retirement requires the actual merged/deployed source, verified orphan cleanup and a fresh healthy-platform read. Dependent merges remain held while this health failure persists.

  7. devantler commented on Oct 11, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Live readback from the Claude lane at 16:22 UTC, 32 minutes after #4639 merged. No change made; the final live cleanup stays with the lane that owns it.

    • The Backstage namespace still holds the portal pod, the Helm release and the database with both instances.
    • The database has been failing over since 15:44 UTC and has not finished. The old primary restarts in a loop (8 restarts) because it cannot reach the cluster API from inside the namespace; the other instance is running.
    • The portfolio live-health check therefore reports the platform as unhealthy on that one pod. Nothing else is failing.

    The stuck failover looks like a consequence of the retirement removing the namespace's access rules before its workloads, not a separate fault. It clears when the remaining resources are removed. If the old database contents must be kept offline first, note that only one of the two instances is currently healthy.

  8. added a commit that references this issue on Oct 11, 2026
  9. devantler commented on Oct 11, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    The portal retirement in #4639 is merged, but this issue remains open for verified data retention and explicit cleanup. The retained database lost a required coordination path during retirement; #4759 restores only its temporary database control and replication connections. Its regression checks pass, and native CI is running.

    Completion still requires deployment verification, evidence that the retained data can be kept safely, and the separately reviewed cleanup. Bound volumes alone do not establish that retention acceptance criterion.

  10. 12 remaining items

  11. devantler commented on Oct 13, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Fresh Coroot UI verification at 16:37 UTC on 13 October connects the current init log errors to the leftover retired portal, not just historical rollout noise. Two messages at 16:27:42 UTC show the kubelet and container runtime repeatedly trying to start the retired backend without its already-removed application credential. This matches the failing portal pod in the OIDC health check. The separate source-controller error remains tied to the orphaned release.

    The root-cause completion path remains storage protection #4838, then native-proof fidelity #4841 and separately confirmed stateless cleanup. Do not recreate the retired application credential or disable log checks to erase these signals. Both repairs have test-first controls; hosted current-head checks and semantic review remain in progress. No production mutation or retirement dispatch has run.

  12. added 3 commits that reference this issue on Oct 15, 2026
  13. added 2 commits that reference this issue on Oct 20, 2026
  14. added 2 commits that reference this issue on Oct 20, 2026
  15. moved this from 👀 In Review to 🫴 Ready in 🌊 Project Boardon Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Fields

Priority

None yet

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions