chore: bump sei-config to v0.0.24 (seed P2P reachability) - #240
Conversation
The sidecar's ConfigApplier is what calls ResolveIntent, so this module's sei-config version is what a seed node actually boots on. On v0.0.23 a seed resolved the baseDefaults loopback P2P bind and accepted no external peers -- silently, since it boots clean and logs nothing. v0.0.24 binds 0.0.0.0, bounds the PEX recv path, and rejects a seed config with pex disabled. No sidecar code changes: config-apply is mode-agnostic by construction, so a new node mode costs it nothing. Adds two tests at the boundary the bump exists to fix -- that an applied seed config is reachable and pex-enabled, and that one reaching the sidecar with pex stripped fails the task rather than writing a config seid rejects at startup. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PR SummaryLow Risk Overview Adds two Reviewed by Cursor Bugbot for commit 24ac0c7. Bugbot is set up for automated code reviews on this repo. Configure here. |
Patch bump `version.json` v0.0.68 → v0.0.69 to cut a release. On merge, the Releaser workflow tags and publishes v0.0.69, and Containerize pushes `ghcr.io/sei-protocol/seictl:v0.0.69` for amd64/arm64. ## Includes since v0.0.68 - **#240** — sei-config v0.0.23 → v0.0.24, which fixes seed mode's config defaults. ## Why this cut matters more than a usual dependency bump **The sidecar resolves `ConfigIntent`, so the sidecar's sei-config version — not the controller's — is what a node actually boots on.** Seed support in [sei-k8s-controller#499](sei-protocol/sei-k8s-controller#499) / [#500](sei-protocol/sei-k8s-controller#500) is merged and released, but it stays inert until this image ships. The failure mode if it doesn't is quiet. On sei-config v0.0.23, seed mode inherits the base default of a **loopback** P2P listen address, so a seed binds `127.0.0.1:26656` and is reachable by nobody — while booting clean, passing its TCP readiness probe against localhost, and reporting healthy. A seed that no peer can dial looks identical to a working one from inside the cluster. v0.0.24 also disables the listeners a seed has no business running (REST, gRPC, gRPC-web, EVM HTTP+WS), sets the tx indexer to `null`, turns off StateStore with pruning everything, and adds a validation guard rejecting seed mode with pex disabled — a seed exists to exchange peer addresses, and seid will not start without it. ## Sidecar code changes **None.** The bump carries only `go.mod`/`go.sum` plus two tests (`sidecar/tasks/config_apply_test.go`) asserting a seed resolves to a reachable listen address and that a pex-disabled seed is rejected. That the sidecar needed no changes to support an entirely new node mode is the mode-config layering working as designed: the controller emits `{Mode, Overrides}`, the sidecar calls `ResolveIntent`, and sei-config owns every per-mode default. ## Verification `go build ./...` clean; `go test ./...` green across all 16 packages. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Why this repo matters here
The sidecar's
ConfigApplieris what callsseiconfig.ResolveIntent, so this module's sei-config version is what a seed node actually boots on — not the controller's. On v0.0.23 a seed resolved thebaseDefaultsloopback P2P bind and accepted zero external peers, silently: it boots clean and logs nothing. This bump is the step that makes seed config correct in a running cluster.What v0.0.24 brings
From sei-config #43 / #44:
network.p2p.listen_addressto0.0.0.0:26656max_packet_msg_payload_sizeat 102400, bounding PEX recv-path allocationmakeSeedNodeat bootNodePortsForModegains a seed arm; port names exported as constantsNo sidecar code changes
config-applyis mode-agnostic by construction — it deserializes aConfigIntentand callsResolveIntent, with all per-mode knowledge living in sei-config. A new node mode therefore costs the sidecar nothing. The diff isgo.mod/go.sumplus tests.Tests
Two added at the boundary this bump exists to fix, rather than re-testing sei-config's own defaults:
TestConfigApplier_SeedIsReachable— an applied seed config binds0.0.0.0:26656and has pex enabled, asserted after a real write/read round-trip through the applierTestConfigApplier_SeedWithoutPexRejected— a seed reaching the sidecar withnetwork.p2p.pex=falsefails the task, rather than writing a config seid rejects at startup. This exercises the new validation rule through the task handler, which is the last gate before seid boots.go build ./...,go test ./...,go vet ./...,gofmt -s -lall clean.Next in the chain
sei-k8s-controller bumps to v0.0.24 and adds the
seedSeiNode mode.🤖 Generated with Claude Code