feat(giga): bump sei-config to v0.0.23 + refuse non-RPC workflow targets#493
Conversation
…lows The giga SS-store migration (and state-sync generally) is valid only for a full/RPC node: validators and archive nodes block-sync and never restore from a snapshot, and a replayer is an ephemeral restore workload a wipe-and-resync would destroy. Generalize the prior validator-only refusal into an allowlist (ineligibleWorkflowRole → eligible iff spec.FullNode), at both the adoption gate and the planner's belt-and-braces Validate (kept in lockstep — the plan-rebuild recovery path skips the adoption gate). Fails closed for a future node mode. Refuses validator/archive/replayer with ReasonWorkflowTargetRejected; role in the message, reason enum unchanged. Tests cover all three modes at both layers. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The controller validates the config-apply ConfigIntent (including spec.overrides) against its own sei-config before dispatching to the sidecar, so it must know the storage.state_store.evm_ss_split field — otherwise a node carrying that override stalls at config-apply with 'unknown config field'. Bumps the controller in lockstep with the sidecar (seictl v0.0.67) so the override validates end to end. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PR SummaryMedium Risk Overview State-sync / giga-migration workflows now allowlist targets to Reviewed by Cursor Bugbot for commit 3625cf7. Bugbot is set up for automated code reviews on this repo. Configure here. |
Two coupled giga-safety changes for the controller.
1. Bump sei-config v0.0.22 → v0.0.23 (
3625cf7)The controller validates the config-apply
ConfigIntent(includingspec.overrides) against its own sei-config before dispatching to the sidecar. Empirically confirmed on harbor: a node carryingoverrides: {storage.state_store.evm_ss_split: "true"}stalls forever atconfig-applywithinvalid intent: unknown config field "storage.state_store.evm_ss_split"— because the controller was still on v0.0.22. So the controller must be bumped in lockstep with the sidecar (seictl v0.0.67); a sidecar-only bump is insufficient. This unblocks the giga SS-store split for RPC nodes end to end.2. Refuse non-full/RPC workflow targets (
e56d6e3)Generalizes the prior validator-only refusal into an allowlist: a state-sync / giga-migration workflow may target only
spec.fullNode(the RPC role). Validators and archive nodes block-sync (never restore from a snapshot); a replayer is an ephemeral restore workload a wipe-and-resync would destroy. Enforced at both the adoption gate and the planner's belt-and-bracesValidate(kept in lockstep — the plan-rebuild recovery path skips the adoption gate). Fails closed for a future node mode. Reviewed GO by kubernetes-specialist + idiomatic-reviewer + prose-steward.Tests: validator/archive/replayer refusal at both layers; full suite (19 pkgs) green with v0.0.23.
Follow-ups (tracked, not in this PR)
ModeFullso its config still renders the split — confirm with owner whether that's intended or force it off inreplay.go.validate.go: rejectevm_ss_spliton non-full modes (blocks an explicit override on an archive node).🤖 Generated with Claude Code