Skip to content

chore(deps): bump seictl to v0.0.46#195

Merged
bdchatham merged 1 commit intomainfrom
chore/bump-seictl-v0.0.46
May 6, 2026
Merged

chore(deps): bump seictl to v0.0.46#195
bdchatham merged 1 commit intomainfrom
chore/bump-seictl-v0.0.46

Conversation

@bdchatham
Copy link
Copy Markdown
Collaborator

Summary

Picks up seictl#153 — drops the unused TaskMeta + applyMeta from client.*Task wrappers.

v0.0.45 → v0.0.46

Side benefit

PlannedTask.Params.Raw bytes shed the "ID":null suffix that came from json-marshaling the empty TaskMeta embed. Cosmetic-only — operators reading kubectl get snd -o yaml see slightly cleaner persisted task bytes.

No controller code changes

TaskMeta had zero references in this repo. Since #192's executor refactor, the controller sets TaskRequest.Id directly post-ToTaskRequest(), never touching TaskMeta.ID. The seictl deletion ripples through cleanly via the go.mod bump.

Mid-rollover safety

Pre-existing CRD Params.Raw bytes contain "ID":null (from prior versions of this controller persisting client.*Task with the empty embed). Post-upgrade controllers reading those bytes deserialize them into TaskMeta-less structs — Go's json.Unmarshal silently drops unknown keys. Safe.

Verification

  • GOWORK=off go get github.com/sei-protocol/seictl@v0.0.46 — clean 3-line diff (no go mod tidy workspace-induced churn)
  • GOWORK=off go build ./... — clean
  • GOWORK=off go test ./... — all packages pass (node, nodedeployment, noderesource, planner, task)

🤖 Generated with Claude Code

Picks up seictl#153 — drops the unused TaskMeta + applyMeta from
client.*Task wrappers. Side benefit: PlannedTask.Params.Raw bytes
shed the "ID":null suffix that came from json-marshaling the empty
embed.

No controller code changes — TaskMeta had zero references in this
repo (the executor sets TaskRequest.Id directly post-ToTaskRequest
since #192). Mid-rollover safe: pre-existing CRD bytes containing
"ID":null deserialize cleanly into TaskMeta-less structs (Go's
json.Unmarshal silently drops unknown keys).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bdchatham bdchatham merged commit 879015a into main May 6, 2026
2 checks passed
bdchatham added a commit that referenced this pull request May 6, 2026
…196)

Pulls in #195 — bumps seictl to v0.0.46, which dropped the unused
TaskMeta + applyMeta from client.*Task wrappers. Side benefit:
PlannedTask.Params.Raw bytes shed the "ID":null suffix.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
bdchatham added a commit that referenced this pull request May 6, 2026
Adds e.params.Validate() to sidecarExecution[T].Execute() before the
ToTaskRequest()/SubmitTask path. Catches malformed task params at
executor-time as a structured terminal failure instead of as an opaque
sidecar HTTP 400.

For most task types Validate() returns nil (empty struct or trivial
validation), so this is a no-op in practice. The two strict paths are:

  - sidecar.AssembleAndUploadGenesisTask.Validate() — required-field
    + bech32 checks. Already invoked at planner-time at group.go:45,
    so this catch is defense-in-depth.
  - configApplyTask.Validate() — delegates to seictl
    ConfigApplyTask.Validate(), which calls seiconfig.ValidateIntent.
    The planner doesn't currently call this; the executor now does.

Drive-by: drop a stale comment about overriding Id "rather than on
the wrapper's embedded TaskMeta" — TaskMeta no longer exists (removed
in seictl#153, consumed in #195). The comment was rot from #192.

Test fixture fix: TestExecuteGroupPlan_CompletesSuccessfully built
an AssembleAndUploadGenesisTask with only Nodes (missing required
AccountBalance and Namespace). It passed before only because Validate
wasn't invoked; now we populate the required fields, which is the
correct test intent for a happy-path submission test.

Closes the platform-engineer's deferred opportunity flagged in the
cross-review of #192.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
bdchatham added a commit that referenced this pull request May 6, 2026
* refactor(task): invoke Validate() in executor before submit

Adds e.params.Validate() to sidecarExecution[T].Execute() before the
ToTaskRequest()/SubmitTask path. Catches malformed task params at
executor-time as a structured terminal failure instead of as an opaque
sidecar HTTP 400.

For most task types Validate() returns nil (empty struct or trivial
validation), so this is a no-op in practice. The two strict paths are:

  - sidecar.AssembleAndUploadGenesisTask.Validate() — required-field
    + bech32 checks. Already invoked at planner-time at group.go:45,
    so this catch is defense-in-depth.
  - configApplyTask.Validate() — delegates to seictl
    ConfigApplyTask.Validate(), which calls seiconfig.ValidateIntent.
    The planner doesn't currently call this; the executor now does.

One test fixture fix: TestExecuteGroupPlan_CompletesSuccessfully built
an AssembleAndUploadGenesisTask with only Nodes (missing required
AccountBalance and Namespace). It passed before because Validate
wasn't invoked; now we populate the required fields, which is the
correct test intent for a happy-path submission test.

Closes the platform-engineer's deferred opportunity flagged in the
cross-review of #192.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* refactor(task): invoke Validate() in executor before submit

Adds e.params.Validate() to sidecarExecution[T].Execute() before the
ToTaskRequest()/SubmitTask path. Catches malformed task params at
executor-time as a structured terminal failure instead of as an opaque
sidecar HTTP 400.

For most task types Validate() returns nil (empty struct or trivial
validation), so this is a no-op in practice. The two strict paths are:

  - sidecar.AssembleAndUploadGenesisTask.Validate() — required-field
    + bech32 checks. Already invoked at planner-time at group.go:45,
    so this catch is defense-in-depth.
  - configApplyTask.Validate() — delegates to seictl
    ConfigApplyTask.Validate(), which calls seiconfig.ValidateIntent.
    The planner doesn't currently call this; the executor now does.

Drive-by: drop a stale comment about overriding Id "rather than on
the wrapper's embedded TaskMeta" — TaskMeta no longer exists (removed
in seictl#153, consumed in #195). The comment was rot from #192.

Test fixture fix: TestExecuteGroupPlan_CompletesSuccessfully built
an AssembleAndUploadGenesisTask with only Nodes (missing required
AccountBalance and Namespace). It passed before only because Validate
wasn't invoked; now we populate the required fields, which is the
correct test intent for a happy-path submission test.

Closes the platform-engineer's deferred opportunity flagged in the
cross-review of #192.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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