You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Address review feedback: delimiter in digest, wording fix, whitespace normalization
- Add newline delimiter between objects in computePhaseDigest to prevent
ambiguous concatenation encodings
- Fix API doc: "first successful reconciliation" → "first successful
resolution" to match actual behavior
- Normalize whitespace in actual condition messages in e2e message
fragment comparisons to reduce flakiness
- Revert predicate rename to skipProgressDeadlineExceededPredicate
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: api/v1/clusterobjectset_types.go
+10-2Lines changed: 10 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -517,6 +517,8 @@ type ClusterObjectSetStatus struct {
517
517
// different content. Each entry covers all fully-resolved object
518
518
// manifests within a phase, making it source-agnostic.
519
519
//
520
+
// +kubebuilder:validation:XValidation:rule="self == oldSelf || oldSelf.size() == 0",message="observedPhases is immutable"
521
+
// +kubebuilder:validation:MaxItems=20
520
522
// +listType=map
521
523
// +listMapKey=name
522
524
// +optional
@@ -528,12 +530,18 @@ type ObservedPhase struct {
528
530
// name is the phase name matching a phase in spec.phases.
529
531
//
530
532
// +required
533
+
// +kubebuilder:validation:MinLength=1
534
+
// +kubebuilder:validation:MaxLength=63
535
+
// +kubebuilder:validation:XValidation:rule=`!format.dns1123Label().validate(self).hasValue()`,message="the value must consist of only lowercase alphanumeric characters and hyphens, and must start with an alphabetic character and end with an alphanumeric character."
531
536
Namestring`json:"name"`
532
537
533
-
// digest is the hex-encoded SHA-256 digest of the phase's resolved
534
-
// object content at first successful reconciliation.
538
+
// digest is the digest of the phase's resolved object content
539
+
// at first successful resolution, in the format "<algorithm>:<hex>".
535
540
//
536
541
// +required
542
+
// +kubebuilder:validation:MinLength=1
543
+
// +kubebuilder:validation:MaxLength=256
544
+
// +kubebuilder:validation:XValidation:rule=`self.matches('^[a-z0-9]+:[a-f0-9]+$')`,message="digest must be in the format '<algorithm>:<hex>'"
0 commit comments