From 2efbafb99aee1444c5fc0c9d894eee6d363c248c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 18:49:52 +0000 Subject: [PATCH] Sync kubex charts from automation-controller main @ a9e49dc --- charts/kubex-automation-engine/BREAKING.md | 27 +++++++++++++++++++ .../docs/Automation-Strategies.md | 11 ++++++-- .../docs/Cluster-Automation-Strategies.md | 9 ++++++- .../docs/Configuration-Reference.md | 2 +- .../docs/GPU-Sharing-with-KAI.md | 10 +++---- .../docs/Global-Configuration.md | 2 +- .../docs/Rollback-Policies.md | 2 ++ .../docs/gpu-consolidation-policy.md | 8 +++--- .../docs/gpu-rebalancing-policies.md | 6 ++--- charts/kubex-automation-engine/values.yaml | 2 +- ...tsizing.kubex.ai_automationstrategies.yaml | 14 +++++----- ....kubex.ai_clusterautomationstrategies.yaml | 14 +++++----- ...ubex.ai_clustergpurebalancingpolicies.yaml | 2 +- ...zing.kubex.ai_clusterrollbackpolicies.yaml | 9 +++++++ ...ing.kubex.ai_gpuconsolidationpolicies.yaml | 2 +- ...izing.kubex.ai_gpurebalancingpolicies.yaml | 2 +- ...rightsizing.kubex.ai_rollbackpolicies.yaml | 9 +++++++ 17 files changed, 96 insertions(+), 35 deletions(-) create mode 100644 charts/kubex-automation-engine/BREAKING.md diff --git a/charts/kubex-automation-engine/BREAKING.md b/charts/kubex-automation-engine/BREAKING.md new file mode 100644 index 0000000..6df0389 --- /dev/null +++ b/charts/kubex-automation-engine/BREAKING.md @@ -0,0 +1,27 @@ +# Breaking Changes + +## 2026-07-20 - GPU enablement defaults and experimental contract + +GPU request actions now default to disabled. The following fields changed from `true` to `false`: + +- `spec.enablement.gpu.requests.downsize` +- `spec.enablement.gpu.requests.upsize` +- `spec.enablement.gpu.requests.setFromUnspecified` + +The GPU/KAI experimental contract changed to `v1alpha1-2026-07`. The previous contract is no longer accepted. + +Affected resources: + +- `AutomationStrategy` +- `ClusterAutomationStrategy` +- `GpuRebalancingPolicy` +- `ClusterGpuRebalancingPolicy` +- `GpuConsolidationPolicy` + +### Migration + +After upgrading the CRDs: + +1. Replace the existing `spec.experimental.gpuKaiContract` value with `v1alpha1-2026-07` in every affected resource. +2. For `AutomationStrategy` and `ClusterAutomationStrategy`, explicitly set each desired GPU action under `spec.enablement.gpu.requests` to `true`. The GPU policy kinds only require the contract update in step 1. +3. Reapply affected resources. diff --git a/charts/kubex-automation-engine/docs/Automation-Strategies.md b/charts/kubex-automation-engine/docs/Automation-Strategies.md index c0b44fd..f64d5c5 100644 --- a/charts/kubex-automation-engine/docs/Automation-Strategies.md +++ b/charts/kubex-automation-engine/docs/Automation-Strategies.md @@ -1,6 +1,6 @@ # Automation Strategies -> Experimental: GPU/KAI-related fields in this resource are subject to breaking changes. When using them, set `spec.experimental.gpuKaiContract: v1alpha1-2026-04`. +> Experimental: GPU/KAI-related fields in this resource are subject to breaking changes. When using them, set `spec.experimental.gpuKaiContract: v1alpha1-2026-07`. `AutomationStrategy` defines how resizing is allowed to happen within a namespace. @@ -58,6 +58,13 @@ Usage-level `floor` and `ceiling` values apply to all containers by default. Add | `spec.enablement.memory.limits.ceiling` | none | Maximum memory limit target. | | `spec.enablement.memory.limits.containers..floor` | none | Container-specific memory limit minimum that overrides the usage-level floor for that container only. | | `spec.enablement.memory.limits.containers..ceiling` | none | Container-specific memory limit maximum that overrides the usage-level ceiling for that container only. | +| `spec.enablement.gpu.requests.downsize` | `false` | EXPERIMENTAL. Allows reducing GPU requests. | +| `spec.enablement.gpu.requests.upsize` | `false` | EXPERIMENTAL. Allows increasing GPU requests. | +| `spec.enablement.gpu.requests.setFromUnspecified` | `false` | EXPERIMENTAL. Allows setting GPU requests when currently unset. | +| `spec.enablement.gpu.requests.floor` | none | EXPERIMENTAL. Minimum GPU request target. | +| `spec.enablement.gpu.requests.ceiling` | none | EXPERIMENTAL. Maximum GPU request target. | +| `spec.enablement.gpu.requests.containers..floor` | none | EXPERIMENTAL. Container-specific GPU request minimum that overrides the usage-level floor for that container only. | +| `spec.enablement.gpu.requests.containers..ceiling` | none | EXPERIMENTAL. Container-specific GPU request maximum that overrides the usage-level ceiling for that container only. | | `spec.kai.queue` | `kubex-unlimited-gpu-queue` | EXPERIMENTAL. Default KAI queue label applied for KAI GPU admission mutation. | | `spec.kai.setQueueWhenSpecified` | `false` | EXPERIMENTAL. Allows strategy queue value to overwrite an existing `kai.scheduler/queue` label. | | `spec.kai.vllm` | none | EXPERIMENTAL. Enables admission-time vLLM tuning for KAI GPU-sharing workloads. Requires `spec.experimental.gpuKaiContract`. | @@ -180,7 +187,7 @@ Example: ```yaml spec: experimental: - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 kai: vllm: gpuMemoryUtilizationBufferPercent: 10 diff --git a/charts/kubex-automation-engine/docs/Cluster-Automation-Strategies.md b/charts/kubex-automation-engine/docs/Cluster-Automation-Strategies.md index 079b61c..208d7ce 100644 --- a/charts/kubex-automation-engine/docs/Cluster-Automation-Strategies.md +++ b/charts/kubex-automation-engine/docs/Cluster-Automation-Strategies.md @@ -1,6 +1,6 @@ # Cluster Automation Strategies -> Experimental: GPU/KAI-related fields in this resource are subject to breaking changes. When using them, set `spec.experimental.gpuKaiContract: v1alpha1-2026-04`. +> Experimental: GPU/KAI-related fields in this resource are subject to breaking changes. When using them, set `spec.experimental.gpuKaiContract: v1alpha1-2026-07`. `ClusterAutomationStrategy` defines how resizing is allowed to happen for cluster-scoped policy flows. @@ -52,6 +52,13 @@ Usage-level `floor` and `ceiling` values apply to all containers by default. Add | `spec.enablement.memory.limits.ceiling` | none | Maximum memory limit target. | | `spec.enablement.memory.limits.containers..floor` | none | Container-specific memory limit minimum that overrides the usage-level floor for that container only. | | `spec.enablement.memory.limits.containers..ceiling` | none | Container-specific memory limit maximum that overrides the usage-level ceiling for that container only. | +| `spec.enablement.gpu.requests.downsize` | `false` | EXPERIMENTAL. Allows reducing GPU requests. | +| `spec.enablement.gpu.requests.upsize` | `false` | EXPERIMENTAL. Allows increasing GPU requests. | +| `spec.enablement.gpu.requests.setFromUnspecified` | `false` | EXPERIMENTAL. Allows setting GPU requests when currently unset. | +| `spec.enablement.gpu.requests.floor` | none | EXPERIMENTAL. Minimum GPU request target. | +| `spec.enablement.gpu.requests.ceiling` | none | EXPERIMENTAL. Maximum GPU request target. | +| `spec.enablement.gpu.requests.containers..floor` | none | EXPERIMENTAL. Container-specific GPU request minimum that overrides the usage-level floor for that container only. | +| `spec.enablement.gpu.requests.containers..ceiling` | none | EXPERIMENTAL. Container-specific GPU request maximum that overrides the usage-level ceiling for that container only. | | `spec.inPlaceResize.enabled` | `true` | Enables the in-place resize execution path. | | `spec.inPlaceResize.containerRestart` | `false` | Allows in-place resize operations that require container restart. | | `spec.podEviction.enabled` | `true` | Enables eviction-based fallback. | diff --git a/charts/kubex-automation-engine/docs/Configuration-Reference.md b/charts/kubex-automation-engine/docs/Configuration-Reference.md index 32c0705..90b7d65 100644 --- a/charts/kubex-automation-engine/docs/Configuration-Reference.md +++ b/charts/kubex-automation-engine/docs/Configuration-Reference.md @@ -290,7 +290,7 @@ Use [Global Configuration Reference](./Global-Configuration.md) for the CR field | `globalConfiguration.webhookProbe.resources` | `{}` | Resource requests and limits for the dry-run webhook probe container | | `globalConfiguration.webhookProbe.podSecurityContext` | `{}` | Pod security context for the dry-run webhook probe Pod | | `globalConfiguration.webhookProbe.securityContext` | `{}` | Container security context for the dry-run webhook probe container | -| `experimental.gpuKaiContract` | `v1alpha1-2026-04` | Required acknowledgement token for experimental GPU/KAI CR fields rendered by the chart | +| `experimental.gpuKaiContract` | `v1alpha1-2026-07` | Required acknowledgement token for experimental GPU/KAI CR fields rendered by the chart | Webhook behavior notes: diff --git a/charts/kubex-automation-engine/docs/GPU-Sharing-with-KAI.md b/charts/kubex-automation-engine/docs/GPU-Sharing-with-KAI.md index 22d27bd..4edfe4a 100644 --- a/charts/kubex-automation-engine/docs/GPU-Sharing-with-KAI.md +++ b/charts/kubex-automation-engine/docs/GPU-Sharing-with-KAI.md @@ -5,7 +5,7 @@ This guide shows how to configure GPU sharing with KAI and Kubex Automation Engi Tested with KAI `v0.12.16`. > [!IMPORTANT] -> GPU/KAI fields and related custom resources are experimental and subject to breaking changes. Set `spec.experimental.gpuKaiContract: v1alpha1-2026-04` on GPU/KAI resources. +> GPU/KAI fields and related custom resources are experimental and subject to breaking changes. Set `spec.experimental.gpuKaiContract: v1alpha1-2026-07` on GPU/KAI resources. ## Prerequisites @@ -84,7 +84,7 @@ metadata: spec: experimental: # Required contract version for the current experimental GPU/KAI integration. - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 enablement: # Convert matching workloads to the KAI GPU-sharing flow. overrideScheduler: "kai" @@ -137,7 +137,7 @@ metadata: spec: experimental: # Required contract version for the current experimental GPU/KAI integration. - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 scope: namespaceSelector: operator: In @@ -229,7 +229,7 @@ Example math: Behavior: -- requires experimental contract: `spec.experimental.gpuKaiContract: v1alpha1-2026-04` +- requires experimental contract: `spec.experimental.gpuKaiContract: v1alpha1-2026-07` - only runs for KAI GPU request admission mutation - only mutates detected vLLM containers - updates existing `--gpu-memory-utilization=` @@ -266,7 +266,7 @@ metadata: name: gpu-consolidation-pool-a spec: experimental: - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 nodeSelector: matchLabels: cloud.google.com/gke-accelerator: nvidia-tesla-t4 diff --git a/charts/kubex-automation-engine/docs/Global-Configuration.md b/charts/kubex-automation-engine/docs/Global-Configuration.md index e1f911b..79b454d 100644 --- a/charts/kubex-automation-engine/docs/Global-Configuration.md +++ b/charts/kubex-automation-engine/docs/Global-Configuration.md @@ -1,6 +1,6 @@ # Global Configuration -> Experimental: GPU/KAI-related fields in this resource are subject to breaking changes. When using them, set `spec.experimental.gpuKaiContract: v1alpha1-2026-04`. +> Experimental: GPU/KAI-related fields in this resource are subject to breaking changes. When using them, set `spec.experimental.gpuKaiContract: v1alpha1-2026-07`. `GlobalConfiguration` defines cluster-wide controller behavior that applies across strategies and policies. diff --git a/charts/kubex-automation-engine/docs/Rollback-Policies.md b/charts/kubex-automation-engine/docs/Rollback-Policies.md index 3332d64..afb5f38 100644 --- a/charts/kubex-automation-engine/docs/Rollback-Policies.md +++ b/charts/kubex-automation-engine/docs/Rollback-Policies.md @@ -27,6 +27,7 @@ Use them when you want the controller to monitor workloads after a resize is app | `spec.backoff.multiplyByTurn` | none (required) | Scales the base duration by the current turn number. Example: with `timePeriod: 1m` and `multiplyByTurn: 2`, turn 1 waits 2m and turn 2 waits 4m. | | `spec.backoff.maxAttempts` | none (required) | Maximum number of turns before the controller marks the rollback as permanently failed. | | `spec.weight` | `0` | Higher weight wins when multiple rollback policies match. When weights are equal, older policies win. | +| `spec.enableMonitoringReopen` | `true` | Set to `false` to stop reopening a completed (`monitoringSucceeded`) turn when a newer replacement pod appears carrying the same recommendation and resources. When disabled, only a genuinely new recommendation starts a fresh monitoring turn for an owner that has already succeeded. | ## `ClusterRollbackPolicy.spec` @@ -43,6 +44,7 @@ Use them when you want the controller to monitor workloads after a resize is app | `spec.backoff.multiplyByTurn` | none (required) | Scales the base duration by the current turn number. Example: with `timePeriod: 1m` and `multiplyByTurn: 2`, turn 1 waits 2m and turn 2 waits 4m. | | `spec.backoff.maxAttempts` | none (required) | Maximum number of turns before the controller marks the rollback as permanently failed. | | `spec.weight` | `0` | Higher weight wins when multiple rollback policies match. When weights are equal, older policies win. | +| `spec.enableMonitoringReopen` | `true` | Set to `false` to stop reopening a completed (`monitoringSucceeded`) turn when a newer replacement pod appears carrying the same recommendation and resources. When disabled, only a genuinely new recommendation starts a fresh monitoring turn for an owner that has already succeeded. | ## Example: Namespaced Rollback Policy diff --git a/charts/kubex-automation-engine/docs/gpu-consolidation-policy.md b/charts/kubex-automation-engine/docs/gpu-consolidation-policy.md index 72aaa47..e7fcb12 100644 --- a/charts/kubex-automation-engine/docs/gpu-consolidation-policy.md +++ b/charts/kubex-automation-engine/docs/gpu-consolidation-policy.md @@ -1,6 +1,6 @@ # GPU Consolidation Policy -> Experimental: GPU/KAI fields and related custom resources are subject to breaking changes. Set `spec.experimental.gpuKaiContract: v1alpha1-2026-04`. +> Experimental: GPU/KAI fields and related custom resources are subject to breaking changes. Set `spec.experimental.gpuKaiContract: v1alpha1-2026-07`. `GpuConsolidationPolicy` is a cluster-scoped controller that looks at scheduled pods carrying the `gpu-fraction` annotation and tries to consolidate them off an underutilized node. @@ -30,7 +30,7 @@ metadata: name: gpu-consolidation-pool-a spec: experimental: - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 nodeSelector: matchLabels: kubex.ai/gpu-pool: pool-a @@ -47,7 +47,7 @@ metadata: name: gpu-consolidation-l40s spec: experimental: - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 nodeSelector: matchExpressions: - key: kubex.ai/gpu-pool @@ -67,7 +67,7 @@ metadata: name: gpu-consolidation-h100 spec: experimental: - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 nodeSelector: matchLabels: kubex.ai/gpu-pool: training-h100 diff --git a/charts/kubex-automation-engine/docs/gpu-rebalancing-policies.md b/charts/kubex-automation-engine/docs/gpu-rebalancing-policies.md index 251c374..377ff62 100644 --- a/charts/kubex-automation-engine/docs/gpu-rebalancing-policies.md +++ b/charts/kubex-automation-engine/docs/gpu-rebalancing-policies.md @@ -1,6 +1,6 @@ # GPU Rebalancing Policies -> Experimental: GPU/KAI fields and related custom resources are subject to breaking changes. Set `spec.experimental.gpuKaiContract: v1alpha1-2026-04`. +> Experimental: GPU/KAI fields and related custom resources are subject to breaking changes. Set `spec.experimental.gpuKaiContract: v1alpha1-2026-07`. `GpuRebalancingPolicy` and `ClusterGpuRebalancingPolicy` emit GPU rebalancing recommendations (upsize and downsize) from Prometheus utilization. @@ -37,7 +37,7 @@ metadata: namespace: default spec: experimental: - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 scope: labelSelector: matchLabels: @@ -89,7 +89,7 @@ metadata: name: gpu-rebalance-cluster spec: experimental: - gpuKaiContract: v1alpha1-2026-04 + gpuKaiContract: v1alpha1-2026-07 scope: namespaceSelector: operator: In diff --git a/charts/kubex-automation-engine/values.yaml b/charts/kubex-automation-engine/values.yaml index b46f29e..46f9556 100644 --- a/charts/kubex-automation-engine/values.yaml +++ b/charts/kubex-automation-engine/values.yaml @@ -323,7 +323,7 @@ crds: {} # Experimental feature acknowledgements for unstable APIs. experimental: # -- Required acknowledgement token for GPU/KAI experimental fields. - gpuKaiContract: "v1alpha1-2026-04" + gpuKaiContract: "v1alpha1-2026-07" # Global configuration defaults # These will be used to create the default GlobalConfiguration CR diff --git a/charts/kubex-crds/templates/rightsizing.kubex.ai_automationstrategies.yaml b/charts/kubex-crds/templates/rightsizing.kubex.ai_automationstrategies.yaml index 5e97f2b..fc772d5 100644 --- a/charts/kubex-crds/templates/rightsizing.kubex.ai_automationstrategies.yaml +++ b/charts/kubex-crds/templates/rightsizing.kubex.ai_automationstrategies.yaml @@ -180,8 +180,8 @@ spec: Any bound omitted for a specific container falls back to the usage-level floor/ceiling. type: object downsize: - default: true - description: downsize controls whether resource downsizing + default: false + description: downsize controls whether GPU request downsizing actions are permitted. type: boolean floor: @@ -189,13 +189,13 @@ spec: for this usage. type: string setFromUnspecified: - default: true + default: false description: setFromUnspecified controls whether an unspecified - resource value may be set. + GPU request may be set. type: boolean upsize: - default: true - description: upsize controls whether resource upsizing + default: false + description: upsize controls whether GPU request upsizing actions are permitted. type: boolean type: object @@ -330,7 +330,7 @@ spec: EXPERIMENTAL: this acknowledgement value is required for unstable GPU/KAI behavior. enum: - none - - v1alpha1-2026-04 + - v1alpha1-2026-07 type: string required: - gpuKaiContract diff --git a/charts/kubex-crds/templates/rightsizing.kubex.ai_clusterautomationstrategies.yaml b/charts/kubex-crds/templates/rightsizing.kubex.ai_clusterautomationstrategies.yaml index 2fb8ed0..9361b67 100644 --- a/charts/kubex-crds/templates/rightsizing.kubex.ai_clusterautomationstrategies.yaml +++ b/charts/kubex-crds/templates/rightsizing.kubex.ai_clusterautomationstrategies.yaml @@ -180,8 +180,8 @@ spec: Any bound omitted for a specific container falls back to the usage-level floor/ceiling. type: object downsize: - default: true - description: downsize controls whether resource downsizing + default: false + description: downsize controls whether GPU request downsizing actions are permitted. type: boolean floor: @@ -189,13 +189,13 @@ spec: for this usage. type: string setFromUnspecified: - default: true + default: false description: setFromUnspecified controls whether an unspecified - resource value may be set. + GPU request may be set. type: boolean upsize: - default: true - description: upsize controls whether resource upsizing + default: false + description: upsize controls whether GPU request upsizing actions are permitted. type: boolean type: object @@ -330,7 +330,7 @@ spec: EXPERIMENTAL: this acknowledgement value is required for unstable GPU/KAI behavior. enum: - none - - v1alpha1-2026-04 + - v1alpha1-2026-07 type: string required: - gpuKaiContract diff --git a/charts/kubex-crds/templates/rightsizing.kubex.ai_clustergpurebalancingpolicies.yaml b/charts/kubex-crds/templates/rightsizing.kubex.ai_clustergpurebalancingpolicies.yaml index ca86f32..7d380a8 100644 --- a/charts/kubex-crds/templates/rightsizing.kubex.ai_clustergpurebalancingpolicies.yaml +++ b/charts/kubex-crds/templates/rightsizing.kubex.ai_clustergpurebalancingpolicies.yaml @@ -62,7 +62,7 @@ spec: EXPERIMENTAL: this acknowledgement value is required for unstable GPU/KAI behavior. enum: - none - - v1alpha1-2026-04 + - v1alpha1-2026-07 type: string required: - gpuKaiContract diff --git a/charts/kubex-crds/templates/rightsizing.kubex.ai_clusterrollbackpolicies.yaml b/charts/kubex-crds/templates/rightsizing.kubex.ai_clusterrollbackpolicies.yaml index b19a9b0..8b8d64d 100644 --- a/charts/kubex-crds/templates/rightsizing.kubex.ai_clusterrollbackpolicies.yaml +++ b/charts/kubex-crds/templates/rightsizing.kubex.ai_clusterrollbackpolicies.yaml @@ -72,6 +72,15 @@ spec: - multiplyByTurn - timePeriod type: object + enableMonitoringReopen: + default: true + description: |- + enableMonitoringReopen controls whether a completed (monitoringSucceeded) rollback + turn reopens when a newer replacement pod appears carrying the same recommendation + fingerprint and matching resources. Enabled by default; set to false to require a + genuinely new recommendation before monitoring resumes for an owner that has + already succeeded. + type: boolean monitoringPeriod: description: monitoringPeriod bounds how long the controller observes an active resize attempt before declaring failure. diff --git a/charts/kubex-crds/templates/rightsizing.kubex.ai_gpuconsolidationpolicies.yaml b/charts/kubex-crds/templates/rightsizing.kubex.ai_gpuconsolidationpolicies.yaml index d35fc96..e08d221 100644 --- a/charts/kubex-crds/templates/rightsizing.kubex.ai_gpuconsolidationpolicies.yaml +++ b/charts/kubex-crds/templates/rightsizing.kubex.ai_gpuconsolidationpolicies.yaml @@ -51,7 +51,7 @@ spec: EXPERIMENTAL: this acknowledgement value is required for unstable GPU/KAI behavior. enum: - none - - v1alpha1-2026-04 + - v1alpha1-2026-07 type: string required: - gpuKaiContract diff --git a/charts/kubex-crds/templates/rightsizing.kubex.ai_gpurebalancingpolicies.yaml b/charts/kubex-crds/templates/rightsizing.kubex.ai_gpurebalancingpolicies.yaml index 60b272a..49dda42 100644 --- a/charts/kubex-crds/templates/rightsizing.kubex.ai_gpurebalancingpolicies.yaml +++ b/charts/kubex-crds/templates/rightsizing.kubex.ai_gpurebalancingpolicies.yaml @@ -62,7 +62,7 @@ spec: EXPERIMENTAL: this acknowledgement value is required for unstable GPU/KAI behavior. enum: - none - - v1alpha1-2026-04 + - v1alpha1-2026-07 type: string required: - gpuKaiContract diff --git a/charts/kubex-crds/templates/rightsizing.kubex.ai_rollbackpolicies.yaml b/charts/kubex-crds/templates/rightsizing.kubex.ai_rollbackpolicies.yaml index f95bacd..a48c2d6 100644 --- a/charts/kubex-crds/templates/rightsizing.kubex.ai_rollbackpolicies.yaml +++ b/charts/kubex-crds/templates/rightsizing.kubex.ai_rollbackpolicies.yaml @@ -71,6 +71,15 @@ spec: - multiplyByTurn - timePeriod type: object + enableMonitoringReopen: + default: true + description: |- + enableMonitoringReopen controls whether a completed (monitoringSucceeded) rollback + turn reopens when a newer replacement pod appears carrying the same recommendation + fingerprint and matching resources. Enabled by default; set to false to require a + genuinely new recommendation before monitoring resumes for an owner that has + already succeeded. + type: boolean monitoringPeriod: description: monitoringPeriod bounds how long the controller observes an active resize attempt before declaring failure.