Skip to content

chore: bump sei-config to v0.0.24 (seed P2P reachability) - #240

Merged
bdchatham merged 1 commit into
mainfrom
chore/bump-sei-config-v0.0.24
Jul 27, 2026
Merged

chore: bump sei-config to v0.0.24 (seed P2P reachability)#240
bdchatham merged 1 commit into
mainfrom
chore/bump-sei-config-v0.0.24

Conversation

@bdchatham

Copy link
Copy Markdown
Contributor

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 / #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

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>
@cursor

cursor Bot commented Jul 27, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Dependency-only bump with no sidecar logic changes; risk is limited to sei-config v0.0.24 behavior for seed resolution and validation.

Overview
Bumps github.com/sei-protocol/sei-config from v0.0.23 to v0.0.24 so seed nodes resolved by the sidecar ConfigApplier get correct P2P defaults (reachable listen bind, required PEX) and validation behavior from upstream—no changes to sidecar production code beyond the dependency.

Adds two config-apply integration tests at the sidecar boundary: TestConfigApplier_SeedIsReachable asserts an applied seed config uses tcp://0.0.0.0:26656 and has PEX enabled after write/read; TestConfigApplier_SeedWithoutPexRejected asserts a seed with network.p2p.pex=false fails the task instead of writing boot-breaking config.

Reviewed by Cursor Bugbot for commit 24ac0c7. Bugbot is set up for automated code reviews on this repo. Configure here.

@bdchatham
bdchatham merged commit ddf348a into main Jul 27, 2026
3 checks passed
@bdchatham
bdchatham deleted the chore/bump-sei-config-v0.0.24 branch July 27, 2026 19:57
bdchatham added a commit that referenced this pull request Jul 27, 2026
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>
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