chore: release v0.0.24 (seed P2P reachability) - #44
Conversation
Carries the seed-mode fixes in #43: applySeedOverrides binds P2P to 0.0.0.0 (a seed previously inherited the baseDefaults loopback and accepted no external peers, silently), bounds the PEX recv path via max_packet_msg_payload_size, and rejects a seed config with pex disabled. Also adds a seed arm to NodePortsForMode and exports the port-name constants. Consumed next by seictl, whose sidecar resolves ConfigIntent and is therefore what makes seed config correct in a running cluster. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PR SummaryLow Risk Overview This version is intended to ship seed-mode fixes already merged elsewhere (#43)—notably P2P bind to Reviewed by Cursor Bugbot for commit 1dc9b0e. Bugbot is set up for automated code reviews on this repo. Configure here. |
|
Suggested version: Changes in (empty)
Automatically created GitHub ReleaseA draft GitHub Release has been created. |
## Why this repo matters here The sidecar's `ConfigApplier` is what calls `seiconfig.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 the `baseDefaults` loopback 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](sei-protocol/sei-config#43) / [#44](sei-protocol/sei-config#44): - seed binds `network.p2p.listen_address` to `0.0.0.0:26656` - seed caps `max_packet_msg_payload_size` at 102400, bounding PEX recv-path allocation - a seed config with pex disabled now fails validation instead of hard-erroring in `makeSeedNode` at boot - `NodePortsForMode` gains a seed arm; port names exported as constants ## No sidecar code changes `config-apply` is mode-agnostic by construction — it deserializes a `ConfigIntent` and calls `ResolveIntent`, with all per-mode knowledge living in sei-config. A new node mode therefore costs the sidecar nothing. The diff is `go.mod`/`go.sum` plus 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 binds `0.0.0.0:26656` and has pex enabled, asserted after a real write/read round-trip through the applier - `TestConfigApplier_SeedWithoutPexRejected` — a seed reaching the sidecar with `network.p2p.pex=false` fails 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 -l` all clean. ## Next in the chain sei-k8s-controller bumps to v0.0.24 and adds the `seed` SeiNode mode. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cuts v0.0.24, carrying the seed-mode fixes from #43.
applySeedOverridesbinds P2P to0.0.0.0:26656. A seed previously inherited thebaseDefaultsloopback and accepted no external peers — silently, since it boots clean and logs nothing.max_packet_msg_payload_size(102400, down from the 1 MB baseline).makeSeedNodeat boot.NodePortsForModegains a seed arm; port names exported as constants.Why this release matters downstream
seictl's sidecar is what calls
ResolveIntentat runtime, so a seed created by the controller resolves its config against whatever sei-config version seictl was built with. Until seictl bumps to v0.0.24, a seed still gets the loopback binding. This release unblocks that bump, which is the step that actually makes seed config correct in a running cluster.🤖 Generated with Claude Code