From dda623267f17fd40cb4248bf2b29eccc75fff278 Mon Sep 17 00:00:00 2001 From: "Per G. da Silva" Date: Tue, 20 Oct 2026 18:00:10 +0200 Subject: [PATCH] Stop stamping owner-name on ClusterObjectSet managed objects The ClusterObjectSet controller copied the owner-name label off the COS onto every managed object. That label is redundant and fragile: managed objects are already labeled app.kubernetes.io/managed-by by the boxcutter revision engine, the controller never reads owner-name (revision lookups use the spec.group index and teardown uses owner references), and copying it off the COS breaks for standalone ClusterObjectSets created without the label. Remove the propagation; managed-object labeling is now just the managed-by label (matching orb-operator). Co-Authored-By: Claude Opus 4.8 Signed-off-by: Per G. da Silva --- .../controllers/clusterobjectset_controller.go | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/internal/object-controller/controllers/clusterobjectset_controller.go b/internal/object-controller/controllers/clusterobjectset_controller.go index 94ffca3e4e..89174880ff 100644 --- a/internal/object-controller/controllers/clusterobjectset_controller.go +++ b/internal/object-controller/controllers/clusterobjectset_controller.go @@ -42,7 +42,6 @@ import ( ocv1 "github.com/operator-framework/operator-controller/api/v1" "github.com/operator-framework/operator-controller/internal/object-controller/status" - "github.com/operator-framework/operator-controller/internal/shared/labels" ) const ( @@ -645,15 +644,9 @@ func (c *ClusterObjectSetReconciler) buildBoxcutterPhases(ctx context.Context, c } observedPhases = append(observedPhases, ocv1.ObservedPhase{Name: specPhase.Name, Digest: digest}) - // Apply controller mutations after digest computation. + // Managed objects are labeled app.kubernetes.io/managed-by by the boxcutter + // revision engine; the controller does not add owner labels of its own. for i, obj := range objs { - objLabels := obj.GetLabels() - if objLabels == nil { - objLabels = map[string]string{} - } - objLabels[labels.OwnerNameKey] = cos.Labels[labels.OwnerNameKey] - obj.SetLabels(objLabels) - switch cp := EffectiveCollisionProtection(cos.Spec.CollisionProtection, specPhase.CollisionProtection, specPhase.Objects[i].CollisionProtection); cp { case ocv1.CollisionProtectionIfNoController, ocv1.CollisionProtectionNone: opts = append(opts, boxcutter.WithObjectReconcileOptions(