Skip to content

Recognize controller-completed stateless retirement after fencing #5039

Closed

Description

@devantler

🤖 Generated by the Agentic Engineer

Problem

The protected stateless-retirement workflow can install its exact operation journal and fence, then race with the already-authorized Flux and Helm controllers. If those controllers begin the assessed uninstall while the workflow is still running its admission probes, a disappearing target makes the workflow report HOLD_ADMISSION even though the guarded retirement is already progressing.

That false failure obscures the real lifecycle state and makes a replay look tempting even though the original operation is consumed.

Outcome

Recognize this one-way, controller-owned transition and move into postcondition-only verification when the exact fenced targets begin disappearing after the accepted journal is installed. Never resubmit a deletion, clear the journal, or weaken retained-data checks.

Acceptance criteria

  • Reproduce a target disappearing during admission verification.
  • Do not submit the native HelmRelease deletion after controller-owned retirement begins.
  • Report success only after the stored Helm release is uninstalled, every assessed stateless target is absent, and separated retained-data projections remain unchanged.
  • Keep partial disappearance, retained-data drift, source drift, foreign identities, and ambiguous transport as holds.
  • Preserve first-attempt and exact-source/deployment bindings.

Parent: #4819

Activity

  1. self-assigned this
    on Oct 17, 2026
  2. added a commit that references this issue on Oct 17, 2026
  3. moved this to 📥 Backlog in 🌊 Project Boardon Oct 17, 2026
  4. added theissue type on Oct 17, 2026
  5. moved this from 📥 Backlog to 👀 In Review in 🌊 Project Boardon Oct 17, 2026
  6. devantler commented on Oct 19, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Resolved by the terminal retirement delivery rather than by merging #5041.

    The original retirement attempt is consumed and cannot be replayed. #5044 and #5070 delivered the separate protected completion path; run 39161262289 removed the exact journal and reported two preservation samples with Flux Ready. A separated OIDC production readback confirmed no Backstage stateless objects remain, the retained database is healthy at 2/2 with continuous archiving, both claims remain Bound, and the full platform health gate is OK.

    Because the controller-transition branch now changes a dead one-time path, #5041 is closed unmerged instead of carrying unnecessary operational code.

  7. moved this from 👀 In Review to ✅ Done in 🌊 Project Boardon Oct 19, 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

Effort

None yet

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions