feat(state-store): default evm-ss-split=true for new nodes#40
Conversation
Adds StateStoreConfig.EVMSSSplit (renders app.toml [state-store] evm-ss-split) and defaults it true, so newly generated node configs run the giga SS-store layout (EVM state in the SeiDB state-store). ss-enable/sc-enable already default true, so this is the one extra flag distinguishing a giga SS node from a plain one, per protocol guidance. Safety: - Additive optional field; no schema-version bump. Existing v2 configs load the zero value (false) and, via `,omitempty`, render no evm-ss-split key at all — their app.toml is byte-unchanged. Only newly generated configs carry it true. - Switching an existing node still requires a state-sync (enabling the split over an unsplit data dir fails seid's startup safety check); this change does not migrate existing configs. - Decoupled from the Giga parallel-execution engine (giga_executor.*), untouched. Round-trip + default render guarded by TestWriteConfigToDir_EVMSSSplit. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
PR SummaryMedium Risk Overview Mode defaults: full nodes get Validation rejects Reviewed by Cursor Bugbot for commit 4b1dcaa. Bugbot is set up for automated code reviews on this repo. Configure here. |
Addresses xreview: baseDefaults=true rendered a contradictory ss-enable=false + evm-ss-split=true on validator/seed. Per giga_store_migration.md the split is for RPC nodes only (validator/seed run no SS store; archive unsupported). So set the default in applyFullOverrides only, reset it in applyArchiveOverrides, and add a validateStateStore guard (evm_ss_split requires state_store.enable). Test broadened to a per-mode matrix; comments trimmed to house style. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Ships the full/RPC-mode evm-ss-split=true default (#40). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bumps `github.com/sei-protocol/sei-config` v0.0.22 → **v0.0.23**, which defaults `evm-ss-split=true` for full/RPC-mode nodes (sei-protocol/sei-config#40). seictl resolves node config via sei-config (`ResolveIntent`/`DefaultForMode`), so this bump is what actually renders `[state-store] evm-ss-split = true` into a fresh RPC node's `app.toml`. Build + full sidecar test suite pass on the bump. Reviewed GO by platform + kubernetes xreview on the sei-config change; controller-side rollout gates (retained-PVC re-bootstrap wipe, replayer-mode applicability, giga-capable seid images) tracked separately for the controller import — they are not addressed by this dependency bump. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds
StateStoreConfig.EVMSSSplitand defaults it true, so newly generated node configs renderapp.toml[state-store] evm-ss-split = true— the giga SS-store layout.ss-enable/sc-enablealready default true, so this is the single extra flag distinguishing a giga SS node from a plain one (per protocol guidance; decoupled from the Giga executor,giga_executor.*, which is untouched).Changes
config.go: newEVMSSSplitfield onStateStoreConfig(unified tagevm_ss_split).legacy.go: renders the bareevm-ss-splitkey under[state-store](siblings aress--prefixed; the binary reads this one unprefixed), mapped both directions for round-trip fidelity.defaults.go:EVMSSSplit: truein the baseline.enrichments.go: field description.io_write_test.go:TestWriteConfigToDir_EVMSSSplitguards default-on render + the bare-key form + omit-when-false.Safety / blast radius
false) and, via,omitempty, render noevm-ss-splitkey — theirapp.tomlis byte-unchanged. Only newly generated configs carry ittrue.Review focus (the one integration risk)
Does any consumer regenerate a node's config from
DefaultForModeon reconcile (rather than load-and-preserve)? If so, existing nodes could pick upevm-ss-split=truewithout a state-sync and fail to boot. I believe the render path preserves on-disk values (henceomitempty), but flagging for the platform/controller experts to confirm before merge.🤖 Generated with Claude Code