Skip to content

chore: release v0.0.26 (configurable p2p accept-interval) - #48

Merged
bdchatham merged 1 commit into
mainfrom
chore/release-v0.0.26
Aug 14, 2026
Merged

chore: release v0.0.26 (configurable p2p accept-interval)#48
bdchatham merged 1 commit into
mainfrom
chore/release-v0.0.26

Conversation

@bdchatham

Copy link
Copy Markdown
Collaborator

Cuts v0.0.26, carrying #47 — the only commit since v0.0.25.

What ships

#47 threads accept-interval through both schema layers and the legacy mapping in each direction:

Site Change
config.go:216 P2PConfig.AcceptIntervaltoml:"accept_interval"
legacy.go:78 legacyP2P.AcceptIntervaltoml:"accept-interval"
legacy.go:433 modern → legacy mapping
legacy.go:770 legacy → modern mapping
defaults.go:72 default 10ms

Why cut it now

The key is unreachable until it ships in a tagged version. sei-k8s-controller pins v0.0.25 (#501), which predates #47, so a SeiNode setting accept_interval today has it silently dropped by the schema — no error, no warning.

The key matters because seid's inbound accept limiter defaults to 1/s and has never been reachable from config (sei-protocol/sei-chain#3899). At that rate the kernel keeps completing three-way handshakes into the listen backlog faster than the accept loop drains it, so arriving peers wait past handshake-timeout and never finish. From the dialer's side that looks like a node which accepts TCP and then does nothing — which is the observed state of our three prod-cell seeds.

Behaviour

This release changes no node's behaviour on its own. The value only takes effect on a seid build carrying sei-chain#3899, which is not yet merged and not yet backported to release/v6.6. This is the half of the delivery path that can move now, so the knob exists when that build lands rather than trailing it.

Verification

go build ./... and go test ./... clean on the branch. #47's own coverage in config_test.go came with it.

🤖 Generated with Claude Code

Carries #47, which threads `accept-interval` through both schema layers and the
legacy mapping in each direction. That key is unreachable until it ships in a
tagged version: sei-k8s-controller pins v0.0.25 (#501), which predates it, so a
SeiNode setting accept_interval today has it silently dropped by the schema.

The key matters because seid's inbound accept limiter defaults to 1/s and has
never been reachable from config (sei-chain#3899). At that rate the kernel keeps
completing handshakes into the listen backlog faster than the loop drains it,
and arriving peers wait past handshake-timeout — from the dialer's side, a node
that accepts TCP and then says nothing. Our three prod-cell seeds are in exactly
that state.

Releasing the key does not by itself change any node's behaviour: the value only
takes effect on a seid build carrying sei-chain#3899, which is not yet merged and
not yet in release/v6.6. This is the half of the delivery path that can move now,
so the knob exists when that build lands rather than after.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@cursor

cursor Bot commented Aug 14, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Only the release version string changes; no logic or config schema edits in this diff.

Overview
This PR is a version-only release cut: version.json moves from v0.0.26v0.0.26.

It tags work already on the branch (not changed in this diff), especially #47, which wires accept_interval through modern and legacy config (accept_interval / accept-interval) with a 10ms default. Downstream pins (e.g. sei-k8s-controller on v0.0.25) could not see that field until a new tag ships.

Runtime behavior does not change from this bump alone; the knob only matters once a seid build reads it (sei-chain#3899). This release unblocks operators and controllers to set the value in config ahead of that binary.

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

@github-actions

Copy link
Copy Markdown

Suggested version: v0.0.26

Comparing to: v0.0.25 (diff)

Changes in go.mod file(s):

(empty)

gorelease says:

The following panic happened checking types near:
	/opt/hostedtoolcache/go/1.26.6/x64/src/internal/godebugs/table.go:28:5
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x60b112]

goroutine 163 [running]:
go/types.(*Checker).handleBailout(0x27a8d96c2400, 0x27a8d96ffc30)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/check.go:473 +0x91
panic({0x6ea840?, 0x98eba0?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/runtime/panic.go:860 +0x13a
go/types.(*Checker).objDecl.func1()
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/decl.go:55 +0x5c
panic({0x6ea840?, 0x98eba0?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/runtime/panic.go:860 +0x13a
go/types.(*StdSizes).Sizeof(0x0, {0x759c88, 0x992360})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/sizes.go:229 +0x312
go/types.(*Config).sizeof(...)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/sizes.go:334
go/types.representableConst.func1(...)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/const.go:77
go/types.representableConst({0x75ba80, 0x7679d8}, 0x27a8d96c2400, 0x992360, 0x27a8d96fe7c8)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/const.go:93 +0x1e9
go/types.(*Checker).representation(0x27a8d96c2400, 0x27a8d96f67c0, 0x992360)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/const.go:257 +0x5f
go/types.(*Checker).implicitTypeAndValue(0x27a8d96c2400, 0x27a8d96f67c0, {0x759c88?, 0x992360?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/expr.go:404 +0x3ed
go/types.(*Checker).assignment(0x27a8d96c2400, 0x27a8d96f67c0, {0x759c88, 0x992360}, {0x73f045, 0xe})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/assignments.go:70 +0x445
go/types.(*Checker).compositeLit(0x27a8d96c2400, 0x27a8d96f67c0, 0x27a8d96264c0, {0x759c10?, 0x27a8d96e6380?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/literals.go:189 +0x1325
go/types.(*Checker).exprInternal(0x27a8d96c2400, 0x0, 0x27a8d96f67c0, {0x75ae18, 0x27a8d96264c0}, {0x759c10?, 0x27a8d96e6380?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/expr.go:1076 +0x20f
go/types.(*Checker).rawExpr(0x27a8d96c2400, 0x0, 0x27a8d96f67c0, {0x75ae18?, 0x27a8d96264c0?}, {0x759c10?, 0x27a8d96e6380?}, 0x0)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/expr.go:982 +0x18c
go/types.(*Checker).exprWithHint(0x27a8d96c2400, 0x27a8d96f67c0, {0x75ae18, 0x27a8d96264c0}, {0x759c10, 0x27a8d96e6380})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/expr.go:1326 +0x65
go/types.(*Checker).indexedElts(0x27a8d96c2400, {0x27a8d96c4488, 0x37, 0x27a8d96891d8?}, {0x759c10, 0x27a8d96e6380}, 0xffffffffffffffff)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/literals.go:362 +0x12a
go/types.(*Checker).compositeLit(0x27a8d96c2400, 0x27a8d96f6680, 0x27a8d9627c00, {0x0?, 0x0?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/literals.go:246 +0x42a
go/types.(*Checker).exprInternal(0x27a8d96c2400, 0x0, 0x27a8d96f6680, {0x75ae18, 0x27a8d9627c00}, {0x0?, 0x0?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/expr.go:1076 +0x20f
go/types.(*Checker).rawExpr(0x27a8d96c2400, 0x0, 0x27a8d96f6680, {0x75ae18?, 0x27a8d9627c00?}, {0x0?, 0x0?}, 0x0)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/expr.go:982 +0x18c
go/types.(*Checker).expr(0x27a8d96c2400, 0x0?, 0x27a8d96f6680, {0x75ae18?, 0x27a8d9627c00?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/expr.go:1276 +0x30
go/types.(*Checker).varDecl(0x27a8d96c2400, 0x27a8d95bc960, {0x27a8d954a218, 0x1, 0x1}, {0x0, 0x0}, {0x75ae18, 0x27a8d9627c00})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/decl.go:482 +0x178
go/types.(*Checker).objDecl(0x27a8d96c2400, {0x761550, 0x27a8d95bc960})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/decl.go:156 +0xa7d
go/types.(*Checker).packageObjects(0x27a8d96c2400)
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/resolver.go:690 +0x412
go/types.(*Checker).checkFiles(0x27a8d96c2400, {0x27a8d954a008?, 0x5c4d85?, 0x993280?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/check.go:534 +0x385
go/types.(*Checker).Files(0x27a8d9a3e000?, {0x27a8d954a008?, 0x27a8d95bc720?, 0x6?})
	/opt/hostedtoolcache/go/1.26.6/x64/src/go/types/check.go:491 +0x75
golang.org/x/tools/go/packages.(*loader).loadPackage(0x27a8d9a3e000, 0x27a8d9a145a0)
	/home/runner/go/pkg/mod/golang.org/x/tools@v0.2.0/go/packages/packages.go:1037 +0x8f2
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1()
	/home/runner/go/pkg/mod/golang.org/x/tools@v0.2.0/go/packages/packages.go:847 +0x1a7
sync.(*Once).doSlow(0x0?, 0x0?)
	/opt/hostedtoolcache/go/1.26.6/x64/src/sync/once.go:78 +0xac
sync.(*Once).Do(...)
	/opt/hostedtoolcache/go/1.26.6/x64/src/sync/once.go:69
golang.org/x/tools/go/packages.(*loader).loadRecursive(0x0?, 0x0?)
	/home/runner/go/pkg/mod/golang.org/x/tools@v0.2.0/go/packages/packages.go:835 +0x3b
golang.org/x/tools/go/packages.(*loader).loadRecursive.func1.1(0x0?)
	/home/runner/go/pkg/mod/golang.org/x/tools@v0.2.0/go/packages/packages.go:842 +0x26
created by golang.org/x/tools/go/packages.(*loader).loadRecursive.func1 in goroutine 6
	/home/runner/go/pkg/mod/golang.org/x/tools@v0.2.0/go/packages/packages.go:841 +0x8c

gocompat says:

Your branch is up to date with 'origin/main'.

Automatically created GitHub Release

A draft GitHub Release has been created.
It is going to be published when this PR is merged.
You can modify its' body to include any release notes you wish to include with the release.

@bdchatham
bdchatham merged commit d6b7783 into main Aug 14, 2026
5 checks passed
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