This is a patch release on top of v0.29.1-arabica.
Key highlights: bridge DASer gossip fix that eliminates noisy WARN logs on bridge nodes, new delegation rewards API, core endpoint network verification on startup, go-header upgrade with per-peer timeout and Head() optimizations, and new cel-shed tools for sample erasure and ODS recovery.
Bridge & DAS
- Fix bridge DASer gossip race (#4820) — Bridge nodes were receiving gossip headers before the local
core.Listenerfinished storing EDS, causing a flood ofWARN das requesting data from peer failedmessages. Fixed by addingFanoutOnlymode to the bridge's header subscriber so it can broadcast but never receives incoming gossip.
API & State
- Delegation rewards API (#4800) — Added
WithdrawDelegatorRewardandQueryDelegationRewardsto the state module API.
Networking & Header Sync
- go-header v0.8.4-rc (#4837) — Includes per-peer timeout in
performRequest,Head()early return optimization, and go-libp2p fork update. - Fix header store head height metric (#4806) — Bumped go-header to v0.8.1 to fix the
hdr_store_head_height_gaugemetric. - Core endpoint network verification (#4781) — Nodes now verify that the core endpoint belongs to the expected network on startup, preventing misconfiguration.
- Fix inverted gRPC readiness check (#4793) — The gRPC connection readiness check was inverted, causing incorrect connection state reporting.
Bug Fixes
- Fix pruner race condition (#4792) — Fixed race condition in
TestFindPruneableHeaders. - Pyroscope basic auth (#4811) — Added basic auth support for Pyroscope continuous profiling.
Tooling (cel-shed)
- cel-shed: erase samples (#4146) — Added
datastore erase-samplescommand to cel-shed. - cel-shed: ODS verification and recovery (#4780) — Added ODS storage verification and recovery tool to cel-shed.
Dependencies
What's Changed
- store: close accessor in GetRow and GetRangeNamespaceData by @phrwlk in #4575
- feat(cel-shed): datastore: erase samples by @Wondertan in #4146
- feat(cel-shed): add ODS storage verification and recovery tool by @walldiss in #4780
- feat(core): verify core endpoint network on startup by @walldiss in #4781
- chore: bump celestia-app to v7.0.2-mocha by @walldiss in #4791
- fix(pruner): fix race condition in TestFindPruneableHeaders by @walldiss in #4792
- fix(nodebuilder/core): fix inverted gRPC connection readiness check by @walldiss in #4793
- feat(state): add WithdrawDelegatorReward and QueryDelegationRewards by @walldiss in #4800
- docs: add CLAUDE.md for Claude Code guidance by @rootulp in #4805
- fix: bump go-header to v0.8.1 to fix
hdr_store_head_height_gaugemetric by @rootulp in #4806 - ci: add assign random reviewer workflow by @tty47 in #4808
- fix(shrex): fix off-by-one in GetRangeNamespaceData test by @walldiss in #4810
- feat(observability): add basic auth support for Pyroscope by @walldiss in #4811
- fix(das): prevent bridge DASer from receiving gossip headers before EDS is stored by @walldiss in #4820
- chore(deps): bump go-header to v0.8.4-rc by @walldiss in #4837
- fix(core): retry test network start on port-in-use errors by @walldiss in #4790
- chore(deps): go mod parity for tastora by @walldiss in #4787
- chore(ci): pin golangci-lint to v2.10.0 and fix new gosec warnings by @walldiss in #4788
- fix(shrex): return valid samples from empty EDS instead of empty slice by @walldiss in #4789
- chore: add tastora submodule to dependabot config by @walldiss in #4826
- chore(deps): bump actions/setup-node from 5 to 6 by @dependabot in #4647
- chore(deps): bump golangci/golangci-lint-action from 8.0.0 to 9.2.0 by @dependabot in #4730
- chore(deps): bump actions/upload-artifact from 4 to 6 by @dependabot in #4742
- chore(deps): bump alpine from 3.20.2 to 3.23.3 by @dependabot in #4784
- chore(deps): bump github.com/ethereum/go-ethereum from 1.16.8 to 1.17.0 by @dependabot in #4796
Full Changelog: v0.29.1-arabica...v0.29.2-arabica