Skip to content

chore: release v0.0.27 (node freeze height) - #50

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

chore: release v0.0.27 (node freeze height)#50
bdchatham merged 1 commit into
mainfrom
chore/release-v0.0.27

Conversation

@bdchatham

Copy link
Copy Markdown
Collaborator

Bumps version.json to v0.0.27. One line; no source change.

What it carries

#49 (fc2d1ef), which threads freeze_height through both schema layers, both
legacy mapping directions, field metadata, and validation.

The key is unreachable until it ships in a tagged version. sei-k8s-controller
pins v0.0.22, which predates it, so a SeiNode setting freeze_height today
has ApplyOverrides reject it as an unknown key.

Why the key matters

seid reads freeze-height from app.toml to stop executing at a height while
still serving query RPC. The config file is the only route in:
sei-k8s-controller builds a fixed seid start --home <dataDir> argv with no
flag escape hatch, and carries no CRD field for freeze. Without this key there
is no declarative way to stand up a frozen node at all.

Different from v0.0.26: the consuming build already exists

The accept-interval release staged a knob ahead of its seid build. This one
does not. Freeze mode is already on release/v6.6:

  • the flag is registered in the vendored sei-cosmos (server/start.go),
  • sei-tendermint refuses to freeze a validator, forcing full-node mode,
  • sei-chain#4006 disables mempool traffic in freeze mode.

So this release closes the half of the delivery path that was missing.

Consumed next

Consumer Why
sei-sidecar The load-bearing one. It resolves and validates overrides during config-apply, so it is what makes this real on a running node.
sei-k8s-controller Pin hygiene only. It uses this library for types and constants, merges spec.overrides, and forwards the map verbatim — no code change, no CRD change.

Behaviour

Releasing the key changes no node's behaviour on its own. freeze_height
defaults to 0, which means disabled. Validation rejects combining it with
halt_height or halt_time, matching seid's own ValidateFreeze.

make test passes on this branch.

🤖 Generated with Claude Code

Carries #49, which threads `freeze_height` through both schema layers, both
legacy mapping directions, field metadata, and validation. The key is
unreachable until it ships in a tagged version: sei-k8s-controller pins
v0.0.22, which predates it, so a SeiNode setting freeze_height today has
ApplyOverrides reject it as an unknown key.

The key matters because seid reads `freeze-height` from app.toml to stop
executing at a height while still serving query RPC, and the config file is the
only route in. sei-k8s-controller builds a fixed `seid start --home <dataDir>`
argv with no flag escape hatch, and carries no CRD field for freeze. So without
this key there is no declarative way to stand up a frozen node at all.

Unlike v0.0.26, the consuming seid build already exists. Freeze mode is on
release/v6.6: the flag is registered in the vendored sei-cosmos
(server/start.go), sei-tendermint refuses to freeze a validator, and
sei-chain#4006 disables mempool traffic in freeze mode. This release closes the
half of the path that was missing, rather than staging a knob ahead of its
build.

Consumed next by sei-sidecar, which resolves and validates overrides during
config-apply and is therefore what makes this real on a running node, and then
by sei-k8s-controller to keep its pin in sync. The controller needs no code or
CRD change: it uses this library for types and constants, merges
spec.overrides, and forwards the map verbatim.

Releasing the key does not by itself change any node's behaviour. freeze_height
defaults to 0, which means disabled, and validation rejects combining it with
halt_height or halt_time.

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

cursor Bot commented Aug 27, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Single-line version bump with no runtime code changes in this PR.

Overview
Only change: version.json is bumped from v0.0.26 to v0.0.27. There is no source diff in this PR.

The tag marks a release that already includes freeze_height support (from #49): schema, overrides, and validation so nodes can set a stop-execute height while keeping query RPC. Until consumers pin v0.0.27, tools like sei-sidecar can still treat freeze_height as an unknown override key. Default remains 0 (disabled); validation still blocks using it together with halt_height or halt_time.

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

@github-actions

Copy link
Copy Markdown

Suggested version: v0.0.27

Comparing to: v0.0.26 (diff)

Changes in go.mod file(s):

(empty)

gorelease says:

panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x645412]

goroutine 15 [running]:
go/types.(*Checker).handleBailout(0x258f0535ac00, 0x258f05371bf8)
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/check.go:404 +0x91
panic({0x9bc3f8?, 0xa0fd50?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/runtime/panic.go:859 +0x125
go/types.(*StdSizes).Sizeof(0x0, {0x9f34e8, 0xa13dc0})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/sizes.go:229 +0x312
go/types.(*Config).sizeof(...)
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/sizes.go:334
go/types.representableConst.func1(...)
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/const.go:89
go/types.representableConst({0x9f52d8, 0x72e940}, 0x258f0535ac00, 0xa13dc0, 0x258f0536ef60)
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/const.go:105 +0x1d9
go/types.(*Checker).representation(0x258f0535ac00, 0x258f058ce200, 0xa13dc0)
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/const.go:269 +0x57
go/types.(*Checker).implicitTypeAndValue(0x258f0535ac00, 0x258f058ce200, {0x9f34e8?, 0xa13dc0?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/expr.go:405 +0x3dc
go/types.(*Checker).assignment(0x258f0535ac00, 0x258f058ce200, {0x9f34e8, 0xa13dc0}, {0x708a05, 0x10})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/assignments.go:70 +0x445
go/types.(*Checker).initVar(0x258f0535ac00?, 0xa13dc0?, 0x258f058ce200?, {0x708a05?, 0x258f058a1980?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/assignments.go:180 +0x352
go/types.(*Checker).initVars(0x258f0535ac00, {0x258f05312aa8, 0x1, 0x258f0536f4e0?}, {0x258f05724f00, 0x258f0536f2d0?, 0x100004825dc?}, {0x9f4a38, 0x258f058a58a0})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/assignments.go:414 +0x646
go/types.(*Checker).stmt(0x258f0535ac00, 0x0, {0x9f4a38, 0x258f058a58a0})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:565 +0x6ec
go/types.(*Checker).stmtList(0x258f0535ac00, 0x0, {0x258f05724f10?, 0x70489e?, 0x5?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:125 +0x8e
go/types.(*Checker).stmt(0x258f0535ac00, 0x0, {0x9f4a98, 0x258f058a19b0})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:603 +0x5ae
go/types.(*Checker).stmt(0x258f0535ac00, 0x0, {0x9f4ac8, 0x258f058a6800})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:615 +0x26b8
go/types.(*Checker).stmtList(0x258f0535ac00, 0x0, {0x258f058a5900?, 0x70489e?, 0x5?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:125 +0x8e
go/types.(*Checker).stmt(0x258f0535ac00, 0x0, {0x9f4a98, 0x258f058a1a10})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:603 +0x5ae
go/types.(*Checker).stmt(0x258f0535ac00, 0x0, {0x9f4ac8, 0x258f058a6840})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:615 +0x26b8
go/types.(*Checker).stmtList(0x258f0535ac00, 0x0, {0x258f053acb00?, 0x0?, 0x10?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:125 +0x8e
go/types.(*Checker).funcBody(0x258f0535ac00, 0x9f4528?, {0x258f052aba38?, 0x258f0575fa40?}, 0x258f058a7300, 0x258f058a1bf0, {0x0?, 0x0?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/stmt.go:42 +0x37b
go/types.(*Checker).funcDecl.func1()
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/decl.go:790 +0x3a
go/types.(*Checker).processDelayed(0x258f0535ac00, 0x0)
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/check.go:512 +0x1e2
go/types.(*Checker).checkFiles(0x258f0535ac00, {0x258f0529a008?, 0x200?, 0x9ee4f0?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/check.go:454 +0x325
go/types.(*Checker).Files(0x10?, {0x258f0529a008?, 0x1?, 0x6?})
	/opt/hostedtoolcache/go/1.27.0/x64/src/go/types/check.go:422 +0x75
golang.org/x/tools/go/packages.(*loader).loadPackage(0x258f053fe0e0, 0x258f05331ad0)
	/home/runner/go/pkg/mod/golang.org/x/tools@v0.2.0/go/packages/packages.go:1037 +0xaa7
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 +0x1c5
sync.(*Once).doSlow(0x0?, 0x0?)
	/opt/hostedtoolcache/go/1.27.0/x64/src/sync/once.go:78 +0xab
sync.(*Once).Do(...)
	/opt/hostedtoolcache/go/1.27.0/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 67
	/home/runner/go/pkg/mod/golang.org/x/tools@v0.2.0/go/packages/packages.go:841 +0x99

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 fe8f4a5 into main Aug 27, 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