Skip to content

refactor: remove MarkNodesReady from deployment — SeiNode owns sidecar lifecycle#95

Merged
bdchatham merged 1 commit intomainfrom
refactor/deployment-boundary
Apr 16, 2026
Merged

refactor: remove MarkNodesReady from deployment — SeiNode owns sidecar lifecycle#95
bdchatham merged 1 commit intomainfrom
refactor/deployment-boundary

Conversation

@bdchatham
Copy link
Copy Markdown
Collaborator

Summary

Enforces the boundary between the SeiNodeDeployment and SeiNode controllers. The deployment controller no longer reaches into node sidecars — the SeiNode controller owns the full update lifecycle via its NodeUpdate plan.

Before: Deployment plan was UpdateNodeSpecs → AwaitSpecUpdate → MarkNodesReady (3 tasks). The deployment controller submitted mark-ready directly to each node's sidecar.

After: Deployment plan is UpdateNodeSpecs → AwaitSpecUpdate (2 tasks). AwaitSpecUpdate polls status.currentImage, which the SeiNode controller only stamps after its NodeUpdate plan completes — including mark-ready.

Boundary model

Controller Responsibility
SeiNodeDeployment Updates spec.image on child nodes, waits for status.currentImage to converge
SeiNode Detects drift, builds NodeUpdate plan, applies StatefulSet, waits for rollout, re-inits sidecar, stamps currentImage

Removed

  • MarkNodesReady task implementation, params, constant, registry entry, tests (-138 lines)

Test plan

  • make build && make test && make lint — all green

🤖 Generated with Claude Code

…r lifecycle

The SeiNodeDeployment controller no longer reaches into node sidecars to
submit mark-ready tasks. The SeiNode controller's NodeUpdate plan handles
the full update lifecycle (apply-statefulset, observe-image, mark-ready).

The deployment controller observes completion via AwaitSpecUpdate, which
polls status.currentImage — a signal that is only set after the SeiNode's
NodeUpdate plan fully completes, including sidecar re-initialization.

Removed:
- MarkNodesReady from in-place deployment plan (UpdateNodeSpecs → AwaitSpecUpdate)
- MarkNodesReady task implementation, params type, constant, registry entry
- MarkNodesReady tests

Updated:
- AwaitSpecUpdate comment documenting the boundary contract
- Deployment plan test (2 tasks, not 3)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@bdchatham bdchatham merged commit da0ae1b into main Apr 16, 2026
2 checks passed
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