Skip to content

✨ report superseded ClusterObjectSet as Ready=False/Superseded - #3011

Merged
openshift-merge-bot[bot] merged 1 commit into
operator-framework:mainfrom
perdasilva:cos-ready-superseded-2
Oct 14, 2026
Merged

openshift-merge-bot[bot] merged 1 commit into
operator-framework:mainfrom
perdasilva:cos-ready-superseded-2

Conversation

@perdasilva

@perdasilva perdasilva commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Description

Part 3/5 of a series completing the ClusterObjectSet (COS) Ready condition vocabulary.

When one or more of a revision's objects have been adopted by a newer sibling revision (boxcutter reports machinery.ActionProgressed), the superseded (older) revision reports Ready=False/Superseded instead of ObjectsNotReady. boxcutter emits ActionProgressed only for a newer-sibling adoption (a foreign owner is an ObjectCollision), so no revision comparison is needed here.

Changes

  • Add ClusterObjectSetReasonSuperseded; detect via a hasSupersededObject helper (Action() == ActionProgressed).
  • A partial hand-off counts. Precedence in the not-complete branch: ProgressDeadlineExceeded → Superseded → ObjectsNotReady.
  • CE reconstruction: progressingFromReady maps Superseded → Progressing=True/RollingOut; determineFailureReason treats it as non-error (Absent), so a superseded old revision never drives Installed=Failed.

Scope

Experimental API only. Adds unit tests (Superseded-over-ObjectsNotReady, deadline-over-Superseded, CE mapping), updates the concept doc, regenerates CRD/manifests/API reference.
🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Cluster object set revisions now report a Superseded status when one or more of their objects have been adopted by a newer revision.
    • A superseded revision is not reported as successfully completed. If its progress deadline has expired, the deadline-exceeded status takes precedence.
  • Documentation

    • Added descriptions of the Superseded status to the cluster object set condition reference.

When one or more objects have been adopted by a newer sibling revision
(machinery.ActionProgressed), report Superseded instead of ObjectsNotReady.
boxcutter emits ActionProgressed only for a newer sibling (a foreign owner is a
collision), so no revision comparison is needed. A partial hand-off counts, and
the progress deadline still takes precedence (ProgressDeadlineExceeded >
Superseded > ObjectsNotReady). ClusterExtension Progressing maps Superseded to
RollingOut and determineFailureReason treats it as non-error (Absent).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Per G. da Silva <pegoncal@redhat.com>
@netlify

netlify Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for olmv1 ready!

Name Link
🔨 Latest commit 6e74fea
🔍 Latest deploy log https://app.netlify.com/projects/olmv1/deploys/6acf6c7ce7373b92b55a17c5
😎 Deploy Preview https://deploy-preview-3011--olmv1.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: b7f31ca9-203b-4bf0-9c62-48e4fb849436
📥 Commits

Reviewing files that changed from the base of the PR and between e1d695f and 6e74fea.

📒 Files selected for processing: 9
  • api/v1/clusterobjectset_types.go
  • applyconfigurations/api/v1/clusterobjectsetstatus.go
  • docs/draft/concepts/clusterobjectsets.md
  • helm/olmv1/base/object-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml
  • internal/object-controller/controllers/clusterobjectset_controller.go
  • internal/object-controller/controllers/clusterobjectset_controller_test.go
  • internal/operator-controller/controllers/common_controller_test.go
  • manifests/experimental-e2e.yaml
  • manifests/experimental.yaml

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.

📝 Walkthrough

The change adds a Superseded Ready-condition reason for ClusterObjectSet revisions whose objects were adopted by a newer sibling. The controller reports this outcome, with progress-deadline failures taking precedence, and does not mark superseded revisions complete.

Changes: Superseded revision status

Layer / File(s) Summary
Document the Superseded condition
api/v1/clusterobjectset_types.go, applyconfigurations/api/v1/clusterobjectsetstatus.go, docs/draft/concepts/clusterobjectsets.md, helm/olmv1/base/object-controller/crd/experimental/olm.operatorframework.io_clusterobjectsets.yaml, manifests/experimental*.yaml
The API declarations, apply configuration, concept documentation, and CRD descriptions add Superseded as a false Ready-condition reason when a newer revision adopts objects.
Report superseded revisions
internal/object-controller/controllers/clusterobjectset_controller.go, internal/object-controller/controllers/clusterobjectset_controller_test.go, internal/operator-controller/controllers/common_controller_test.go
The controller detects progressed objects and reports Superseded instead of completing the revision. An exceeded progress deadline takes precedence. Tests cover these outcomes and operator-controller condition mapping.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Suggested reviewers: fao89, tmshort

Merge Risk: ⚪ Minimal · up to 6e74f

The superseded-status change is mergeable after normal checks; no concrete outstanding risk was identified.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 5 files. (4 skipped: 4… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title is concise, specific, and accurately describes the primary change: reporting superseded ClusterObjectSet revisions as Ready=False/Superseded. It also uses the required ✨ prefix.
Description check Passed The description provides the change summary, motivation, behavior and precedence rules, scope, test coverage, and generated documentation updates. It does not include the reviewer checklist or related…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 5 files. (4 skipped: 4 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@tmshort

tmshort commented Oct 14, 2026

Copy link
Copy Markdown
Member

/approve

@openshift-ci

openshift-ci Bot commented Oct 14, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: tmshort

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 14, 2026

@fao89 fao89 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Oct 14, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit d1a85d1 into operator-framework:main Oct 14, 2026
35 of 37 checks passed

@fgiudici fgiudici left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

/lgtm

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants