Skip to content

feat(snd): accept updateStrategy as an optional, ignored field#408

Merged
bdchatham merged 1 commit into
mainfrom
plt451/updatestrategy-optional
Jun 13, 2026
Merged

feat(snd): accept updateStrategy as an optional, ignored field#408
bdchatham merged 1 commit into
mainfrom
plt451/updatestrategy-optional

Conversation

@bdchatham

Copy link
Copy Markdown
Collaborator

What

Re-adds the updateStrategy schema removed in #395 — now as an optional field the controller ignores (in-place remains the only rollout behavior). Schema-only; no consuming code returns.

Why

This is the migration-safe intermediate for retiring updateStrategy from the ~50 live SeiNodeDeployments. The field is a required → removed change with no optional step:

There is no single schema under which the field is both present (on live objects) and absent (in purged manifests). An optional field is valid under both — so the eventual controller rollout's CRD accepts the existing objects with no pre-purge, dissolving the trap. (We hit the live form of this: a harbor manifest purge broke Flux and was reverted.)

Both the kubernetes-specialist and platform-engineer independently recommended this optional-intermediate over an atomic CRD-bump+purge (which races the apiserver's structural-schema propagation non-deterministically).

Scope

  • +optional field + the UpdateStrategy/UpdateStrategyType types, regenerated CRD + deepcopy.
  • Field is inert: nothing reads it; make manifests generate confirms it is not in spec.required.

Deferred (separate, unpressured)

Manifest cleanup (all cell manifests and seictl/nodedeployment/presets/*) and final field removal — tracked separately; no rollout pressure once the field is optional.

Re-adds the updateStrategy schema dropped in #395, now as an optional
field the controller ignores (in-place is the only rollout behavior).

This is the migration-safe intermediate for removing the field from the
~50 live SeiNodeDeployments: the deployed CRD requires updateStrategy, the
post-#395 CRD rejects it, and there is no schema under which the field can
be both present (on live objects) and absent (in purged manifests). An
optional field is valid under both — the rollout's CRD accepts the existing
objects without a pre-purge. Manifest cleanup and final field removal follow
as separate, unpressured steps.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@cursor

cursor Bot commented Jun 13, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Schema-only CRD/API change with no controller logic; rollout behavior stays in-place.

Overview
Re-introduces spec.updateStrategy on SeiNodeDeployment as an optional, controller-ignored field so live clusters and GitOps manifests can coexist while the field is retired.

The API adds UpdateStrategy / UpdateStrategyType (InPlace only), documents that rollouts stay in-place, and regenerates CRD YAML and deepcopy. updateStrategy is not in spec.required, so manifests can omit it while existing objects that still set type: InPlace remain valid after the CRD update.

No reconciler or planner code reads this field; behavior is unchanged.

Reviewed by Cursor Bugbot for commit 10fdf1d. Bugbot is set up for automated code reviews on this repo. Configure here.

@bdchatham bdchatham merged commit 73701f1 into main Jun 13, 2026
5 checks passed
@bdchatham bdchatham deleted the plt451/updatestrategy-optional branch June 13, 2026 18:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant