chore: add iterate raw for multi#6
Conversation
WalkthroughAdded a new exported method IterateRaw to Multi[ReferenceKey, PrimaryKey, Value] in Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Client
participant Multi as Multi[RefKey, PrimaryKey, Value]
participant RefKeys as KeySet (refKeys)
Client->>Multi: IterateRaw(ctx, start, end, order)
note right of Multi #E6F4EA: Delegate to underlying key set
Multi->>RefKeys: IterateRaw(ctx, start, end, order)
RefKeys-->>Multi: Iterator[(RefKey, PrimaryKey)]
Multi-->>Client: Iterator[(RefKey, PrimaryKey)]
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
collections/indexes/multi.go (1)
122-126: Add GoDoc clarifying raw bounds and Close() requirement.Document that bounds are raw encoded key bytes for Pair[ReferenceKey, PrimaryKey], and that the iterator must be closed by the caller.
Apply:
+// IterateRaw exposes the underlying KeySet raw iterator for this Multi index. +// start and end are raw encoded key bounds for Pair[ReferenceKey, PrimaryKey] +// (see collections.KeySet.IterateRaw for bound and ordering semantics). +// The caller must Close() the returned iterator. func (m *Multi[ReferenceKey, PrimaryKey, Value]) IterateRaw( ctx context.Context, start, end []byte, order collections.Order, ) (collections.Iterator[collections.Pair[ReferenceKey, PrimaryKey], collections.NoValue], error) { return m.refKeys.IterateRaw(ctx, start, end, order) }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
collections/indexes/multi.go(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
collections/indexes/multi.go (3)
collections/iter.go (2)
Order(17-17)Iterator(211-218)collections/pair.go (1)
Pair(13-16)collections/keyset.go (4)
NoValue(122-122)NoValue(135-137)NoValue(139-144)NoValue(146-148)
🔇 Additional comments (1)
collections/indexes/multi.go (1)
122-126: Good addition: enables pagination over Multi via raw iteration.Thin passthrough to KeySet.IterateRaw looks correct.
Please confirm callers always Close() the returned iterator to avoid leaks and that expected start/end bound semantics (inclusive/exclusive) match KeySet.IterateRaw.
There was a problem hiding this comment.
Actionable comments posted: 9
🧹 Nitpick comments (5)
README.md (1)
68-69: Add a blank line after the headingInsert an empty line between the
## Documentation and Resourcesheading and the bold sentence to satisfy Markdown style (MD022) and keep formatting consistent.## Documentation and Resources -**View the Cosmos SDK documentation: https://docs.cosmos.network/** + +**View the Cosmos SDK documentation: https://docs.cosmos.network/**Makefile (4)
429-437: Avoid drift: pin CometBFT proto URLs to the module version you build againstYou’re fetching protos from hardcoded v0.38.0 while CMTVERSION is dynamic. This can desync generated code vs linked lib.
Apply:
-CMT_URL = https://raw.githubusercontent.com/cometbft/cometbft/v0.38.0/proto/tendermint +## Use module version (strip any prerelease metadata after '-') to fetch matching protos +CMT_TAG := $(shell echo $(CMTVERSION) | cut -d- -f1) +CMT_URL = https://raw.githubusercontent.com/cometbft/cometbft/$(CMT_TAG)/proto/tendermintOptionally add a guard to fail if CMT_TAG is empty.
Also applies to: 441-463
141-143: mockgen upgrade: verify generator path/flags compatibilityYou’re using go.uber.org/mock/mockgen@v0.6.0. Ensure scripts/mockgen.sh expects Uber’s mockgen (not github.com/golang/mock) and flags are compatible.
- If the script assumes golang/mock flags, switch module/path accordingly.
- Consider pinning via a tools.go and caching GOBIN to avoid reinstall on every run.
382-387: golangci-lint v2 migration: validate CI and wrapper scriptv2 changes flags/output. Verify ./scripts/go-lint-all.bash is compatible and CI runners have Go version meeting v2 requirements.
- Cache the linter binary to avoid reinstall on every lint (e.g., check version before install).
- Confirm --timeout and --fix behavior matches v2.
Also applies to: 390-397
15-15: Module path is correctly aligned; sed extraction can be simplified but is not required.The module
github.com/cometbft/cometbft(without/v2) and symbol pathgithub.com/cometbft/cometbft/version.TMCoreSemVeralign correctly; no link-time failure risk. The current sed-based extraction works. Switching to the format flag is a robustness improvement, not a fix:-export CMTVERSION := $(shell go list -m github.com/cometbft/cometbft | sed 's:.* ::') +export CMTVERSION := $(shell go list -m -f '{{.Version}}' github.com/cometbft/cometbft)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (21)
api/cosmos/circuit/v1/query_grpc.pb.gois excluded by!**/*.pb.goapi/cosmos/circuit/v1/tx_grpc.pb.gois excluded by!**/*.pb.goapi/cosmos/crisis/v1beta1/tx_grpc.pb.gois excluded by!**/*.pb.goapi/cosmos/feegrant/v1beta1/query_grpc.pb.gois excluded by!**/*.pb.goapi/cosmos/group/v1/query_grpc.pb.gois excluded by!**/*.pb.goapi/cosmos/group/v1/tx_grpc.pb.gois excluded by!**/*.pb.goapi/cosmos/nft/v1beta1/query_grpc.pb.gois excluded by!**/*.pb.goapi/cosmos/nft/v1beta1/tx_grpc.pb.gois excluded by!**/*.pb.goapi/go.sumis excluded by!**/*.sumclient/grpc/cmtservice/query.pb.gois excluded by!**/*.pb.goclient/grpc/cmtservice/types.pb.gois excluded by!**/*.pb.goclient/v2/go.sumis excluded by!**/*.sumcollections/go.sumis excluded by!**/*.sumcontrib/x/circuit/types/query.pb.gois excluded by!**/*.pb.gocontrib/x/circuit/types/query.pb.gw.gois excluded by!**/*.pb.gw.gocontrib/x/circuit/types/tx.pb.gois excluded by!**/*.pb.gocontrib/x/circuit/types/types.pb.gois excluded by!**/*.pb.gocontrib/x/crisis/types/genesis.pb.gois excluded by!**/*.pb.gocontrib/x/crisis/types/tx.pb.gois excluded by!**/*.pb.gocontrib/x/group/events.pb.gois excluded by!**/*.pb.gocontrib/x/group/genesis.pb.gois excluded by!**/*.pb.go
📒 Files selected for processing (62)
.github/CODEOWNERS(0 hunks).github/dependabot.yml(0 hunks).github/pr_labeler.yml(0 hunks).github/workflows/build-docs.yml(1 hunks).github/workflows/build.yml(1 hunks).github/workflows/changelog-reminder.yml(1 hunks).github/workflows/codeql-analysis.yml(2 hunks).github/workflows/consensuswarn.yml(0 hunks).github/workflows/dependabot-update-all.yml(1 hunks).github/workflows/dependencies-review.yml(1 hunks).github/workflows/docker.yml(1 hunks).github/workflows/enforce_signed.yml(1 hunks).github/workflows/gosec.yml(0 hunks).github/workflows/lint-pr.yml(1 hunks).github/workflows/lint.yml(1 hunks).github/workflows/md-link-checker.yml(1 hunks).github/workflows/pr-go-mod-tidy-mocks.yml(2 hunks).github/workflows/proto-docker.yml(1 hunks).github/workflows/proto-registry.yml(1 hunks).github/workflows/proto.yml(2 hunks).github/workflows/release-confix.yml(1 hunks).github/workflows/release-cosmovisor.yml(1 hunks).github/workflows/release-simd.yml(1 hunks).github/workflows/release.yml(1 hunks).github/workflows/sims-047.yml(5 hunks).github/workflows/sims-050.yml(5 hunks).github/workflows/sims-053.yml(5 hunks).github/workflows/sims-nightly.yml(2 hunks).github/workflows/sims.yml(5 hunks).github/workflows/systemtests.yml(3 hunks).github/workflows/test.yml(19 hunks).gitpod.yml(0 hunks)CHANGELOG.md(8 hunks)Makefile(6 hunks)README.md(2 hunks)RELEASE_NOTES.md(1 hunks)SECURITY.md(1 hunks)UPGRADE_GUIDE.md(4 hunks)UPGRADING.md(2 hunks)api/cometbft/p2p/v1/pex.pulsar.go(0 hunks)api/cosmos/app/v1alpha1/config.pulsar.go(1 hunks)api/cosmos/authz/v1beta1/event.pulsar.go(2 hunks)api/cosmos/authz/v1beta1/query.pulsar.go(6 hunks)api/cosmos/base/abci/v1beta1/abci.pulsar.go(27 hunks)api/cosmos/base/reflection/v2alpha1/reflection.pulsar.go(3 hunks)api/cosmos/base/tendermint/v1beta1/query.pulsar.go(24 hunks)api/cosmos/base/tendermint/v1beta1/types.pulsar.go(21 hunks)api/cosmos/base/v1beta1/coin.pulsar.go(1 hunks)api/cosmos/circuit/module/v1/module.pulsar.go(0 hunks)api/cosmos/circuit/v1/types.pulsar.go(0 hunks)api/cosmos/consensus/v1/query.pulsar.go(9 hunks)api/cosmos/consensus/v1/tx.pulsar.go(12 hunks)api/cosmos/crisis/module/v1/module.pulsar.go(0 hunks)api/cosmos/crisis/v1beta1/genesis.pulsar.go(0 hunks)api/cosmos/crisis/v1beta1/tx.pulsar.go(0 hunks)api/cosmos/crypto/multisig/v1beta1/multisig.pulsar.go(1 hunks)api/cosmos/feegrant/v1beta1/query.pulsar.go(5 hunks)api/cosmos/gov/v1/genesis.pulsar.go(1 hunks)api/cosmos/gov/v1/gov.pulsar.go(1 hunks)api/cosmos/gov/v1/query.pulsar.go(1 hunks)api/cosmos/group/module/v1/module.pulsar.go(0 hunks)api/cosmos/group/v1/genesis.pulsar.go(0 hunks)
💤 Files with no reviewable changes (14)
- .gitpod.yml
- .github/dependabot.yml
- .github/workflows/consensuswarn.yml
- api/cosmos/crisis/v1beta1/genesis.pulsar.go
- api/cosmos/crisis/module/v1/module.pulsar.go
- api/cosmos/circuit/v1/types.pulsar.go
- .github/CODEOWNERS
- api/cosmos/group/v1/genesis.pulsar.go
- .github/workflows/gosec.yml
- api/cometbft/p2p/v1/pex.pulsar.go
- api/cosmos/group/module/v1/module.pulsar.go
- api/cosmos/crisis/v1beta1/tx.pulsar.go
- .github/pr_labeler.yml
- api/cosmos/circuit/module/v1/module.pulsar.go
✅ Files skipped from review due to trivial changes (11)
- SECURITY.md
- RELEASE_NOTES.md
- api/cosmos/gov/v1/genesis.pulsar.go
- api/cosmos/app/v1alpha1/config.pulsar.go
- api/cosmos/authz/v1beta1/query.pulsar.go
- api/cosmos/gov/v1/query.pulsar.go
- api/cosmos/gov/v1/gov.pulsar.go
- api/cosmos/base/reflection/v2alpha1/reflection.pulsar.go
- api/cosmos/crypto/multisig/v1beta1/multisig.pulsar.go
- api/cosmos/feegrant/v1beta1/query.pulsar.go
- api/cosmos/authz/v1beta1/event.pulsar.go
🧰 Additional context used
🧬 Code graph analysis (5)
api/cosmos/consensus/v1/query.pulsar.go (2)
api/tendermint/types/params.pulsar.go (3)
ConsensusParams(3506-3516)ConsensusParams(3531-3531)ConsensusParams(3534-3536)x/consensus/types/query.pb.go (3)
QueryParamsResponse(71-76)QueryParamsResponse(80-80)QueryParamsResponse(81-83)
api/cosmos/base/abci/v1beta1/abci.pulsar.go (3)
api/tendermint/abci/types.pulsar.go (3)
Event(33441-33448)Event(33463-33463)Event(33466-33468)api/tendermint/types/block.pulsar.go (3)
Block(701-710)Block(725-725)Block(728-730)types/abci.pb.go (9)
TxResponse(34-67)TxResponse(70-70)TxResponse(71-73)Result(324-337)Result(340-340)Result(341-343)SearchBlocksResult(619-632)SearchBlocksResult(635-635)SearchBlocksResult(636-638)
api/cosmos/base/tendermint/v1beta1/types.pulsar.go (4)
api/tendermint/types/types.pulsar.go (12)
Data(10318-10327)Data(10342-10342)Data(10345-10347)Commit(10473-10482)Commit(10497-10497)Commit(10500-10502)BlockID(10129-10136)BlockID(10151-10151)BlockID(10154-10156)Header(10173-10197)Header(10212-10212)Header(10215-10217)api/tendermint/types/evidence.pulsar.go (6)
Evidence(2539-2549)Evidence(2564-2564)Evidence(2567-2569)EvidenceList(2744-2750)EvidenceList(2765-2765)EvidenceList(2768-2770)api/tendermint/version/types.pulsar.go (3)
Consensus(998-1005)Consensus(1020-1020)Consensus(1023-1025)api/tendermint/types/block.pulsar.go (3)
Block(701-710)Block(725-725)Block(728-730)
api/cosmos/base/tendermint/v1beta1/query.pulsar.go (4)
api/tendermint/types/types.pulsar.go (3)
BlockID(10129-10136)BlockID(10151-10151)BlockID(10154-10156)api/cosmos/base/tendermint/v1beta1/types.pulsar.go (3)
Block(2004-2013)Block(2028-2028)Block(2031-2033)api/tendermint/p2p/types.pulsar.go (3)
DefaultNodeInfo(2547-2560)DefaultNodeInfo(2575-2575)DefaultNodeInfo(2578-2580)client/grpc/cmtservice/query.pb.go (12)
GetBlockByHeightResponse(377-382)GetBlockByHeightResponse(386-386)GetBlockByHeightResponse(387-389)GetLatestBlockResponse(476-481)GetLatestBlockResponse(485-485)GetLatestBlockResponse(486-488)VersionInfo(710-719)VersionInfo(723-723)VersionInfo(724-726)GetNodeInfoResponse(657-660)GetNodeInfoResponse(664-664)GetNodeInfoResponse(665-667)
api/cosmos/consensus/v1/tx.pulsar.go (2)
api/tendermint/types/params.pulsar.go (12)
BlockParams(3574-3585)BlockParams(3600-3600)BlockParams(3603-3605)EvidenceParams(3622-3642)EvidenceParams(3657-3657)EvidenceParams(3660-3662)ValidatorParams(3687-3693)ValidatorParams(3708-3708)ValidatorParams(3711-3713)ABCIParams(3805-3820)ABCIParams(3835-3835)ABCIParams(3838-3840)x/consensus/types/tx.pb.go (3)
MsgUpdateParams(35-47)MsgUpdateParams(51-51)MsgUpdateParams(52-54)
🪛 actionlint (1.7.8)
.github/workflows/test.yml
197-197: label "depot-ubuntu-22.04-4" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-11-arm", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-26-xlarge", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
🪛 LanguageTool
README.md
[grammar] ~47-~47: There might be a mistake here.
Context: ...chain application. For more information on modules, see our [introduction doc](....
(QB_NEW_EN)
[grammar] ~68-~68: There might be a mistake here.
Context: ...N36) |** ## Documentation and Resources **View the Cosmos SDK documentation: https...
(QB_NEW_EN)
[grammar] ~74-~74: There might be a mistake here.
Context: ...nsfer any type of data encoded in bytes. - [Cosmos EVM](https://github.com/cosmos/ev...
(QB_NEW_EN)
UPGRADE_GUIDE.md
[grammar] ~9-~9: There might be a mistake here.
Context: ...ill have: * The x/protocolpool module * The x/epochs module * Unordered Transa...
(QB_NEW_EN)
[grammar] ~10-~10: There might be a mistake here.
Context: ...ocolpoolmodule * Thex/epochs` module * Unordered Transaction support ## Table ...
(QB_NEW_EN)
[grammar] ~15-~15: There might be a mistake here.
Context: ...ntents * App Wiring Changes (REQUIRED) * [Adding ProtocolPool Module (OPTIONAL)](#...
(QB_NEW_EN)
[grammar] ~16-~16: There might be a mistake here.
Context: ...* Adding ProtocolPool Module (OPTIONAL) * [ProtocolPool Manual Wiring](#protocolpoo...
(QB_NEW_EN)
[grammar] ~17-~17: There might be a mistake here.
Context: ...ional) * ProtocolPool Manual Wiring * [ProtocolPool DI Wiring](#protocolpool-di...
(QB_NEW_EN)
[grammar] ~18-~18: There might be a mistake here.
Context: ...al-wiring) * ProtocolPool DI Wiring * [Adding Epochs Module (OPTIONAL)](#adding...
(QB_NEW_EN)
[grammar] ~19-~19: There might be a mistake here.
Context: ...ring) * Adding Epochs Module (OPTIONAL) * [Epochs Manual Wiring](#epochs-manual-wir...
(QB_NEW_EN)
[grammar] ~20-~20: There might be a mistake here.
Context: ...le-optional) * Epochs Manual Wiring * Epochs DI Wiring * [...
(QB_NEW_EN)
[grammar] ~21-~21: There might be a mistake here.
Context: ...s-manual-wiring) * Epochs DI Wiring * [Enable Unordered Transactions (OPTIONAL)...
(QB_NEW_EN)
[grammar] ~22-~22: There might be a mistake here.
Context: ...Enable Unordered Transactions (OPTIONAL)](#enable-unordered-transactions-optional) * Upgrade Handler ## A...
(QB_NEW_EN)
UPGRADING.md
[grammar] ~18-~18: There might be a mistake here.
Context: ... the SDK baseapp. More information from the CometBFT repo can be found [here](ht...
(QB_NEW_EN)
[grammar] ~25-~25: There might be a mistake here.
Context: ...h can be passed to your application upon initialization in app.go. Setting thi...
(QB_NEW_EN)
[grammar] ~26-~26: There might be a mistake here.
Context: ...hat is set in validators' config.toml.
(QB_NEW_EN)
🪛 markdownlint-cli2 (0.18.1)
README.md
1-1: First line in a file should be a top-level heading
(MD041, first-line-heading, first-line-h1)
50-50: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
51-51: Link text should be descriptive
(MD059, descriptive-link-text)
57-57: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
68-68: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
CHANGELOG.md
45-45: Unordered list indentation
Expected: 4; Actual: 2
(MD007, ul-indent)
46-46: Unordered list indentation
Expected: 4; Actual: 2
(MD007, ul-indent)
47-47: Unordered list indentation
Expected: 4; Actual: 2
(MD007, ul-indent)
48-48: Unordered list indentation
Expected: 4; Actual: 2
(MD007, ul-indent)
UPGRADE_GUIDE.md
17-17: Link fragments should be valid
(MD051, link-fragments)
18-18: Link fragments should be valid
(MD051, link-fragments)
20-20: Link fragments should be valid
(MD051, link-fragments)
21-21: Link fragments should be valid
(MD051, link-fragments)
UPGRADING.md
9-9: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
19-19: Link text should be descriptive
(MD059, descriptive-link-text)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Summary
🔇 Additional comments (11)
.github/workflows/proto-docker.yml (1)
37-37: Upgrade looks good
actions/checkout@v5is compatible with the existing workflow configuration. No additional changes required.api/cosmos/base/v1beta1/coin.pulsar.go (1)
1888-1888: Typo fix looks good.Thanks for correcting the grammar in the comment.
.github/workflows/md-link-checker.yml (1)
10-10: Checkout v5 upgrade looks good.Thanks for keeping the workflow current—
actions/checkout@v5is the recommended major and works as a drop-in replacement here.api/cosmos/base/abci/v1beta1/abci.pulsar.go (1)
5-605: Migration totendermintprotobuf types looks solid.Imports, list helpers, and marshal/unmarshal paths consistently use
*abci.Eventand*types.Block, so the generated surface stays coherent with the new Tendermint packages. ✅Also applies to: 1270-8045
.github/workflows/proto-registry.yml (1)
19-19:actions/checkout@v5is a valid published tag.Verification confirms that
actions/checkout@v5exists and is available on the GitHub Marketplace. The workflow will not fail due to a missing version tag when re-enabled.README.md (1)
5-5: Banner assetdocs/static/img/banner.svgis present in the repository. No issues to address.Makefile (1)
465-466: Verify buf version in proto image supportsbuf mod update
Run locally to confirm the image includes a compatible buf CLI (v1.24.0+):docker run --rm ghcr.io/cosmos/proto-builder:0.17.1 buf --version docker run --rm ghcr.io/cosmos/proto-builder:0.17.1 buf mod update --helpapi/cosmos/base/tendermint/v1beta1/query.pulsar.go (4)
10770-10774: Wire format stable; Go API break is intentional and properly managedThe migration is complete with full backward compatibility:
- The deprecated
Blockfield (tendermint.types.Block) remains populated and serialized alongside the newSdkBlockfield- Test coverage in
tests/e2e/client/grpc/cmtservice/service_test.go(line 96) verifies both old and new accessors work- Conversion logic in
client/grpc/cmtservice/service.go(lines 75–78) populates all three fields:BlockId,Block, andSdkBlock- No stale cometbft v2 references detected; types are properly sourced from
tendermint.typesConsumers must update Go code to use
SdkBlockinstead ofBlock, but the wire format supports both old and new clients simultaneously. JSON/proto marshaling preserves all three fields.
7-9: Imports in query.pulsar.go are properly migrated; however, cometbft imports remain pervasive across the codebaseThe migration to tendermint public APIs in this file (lines 7–9) is correct. However, the verification found extensive remaining
cometbftimports across the codebase:
- x/genutil, x/slashing, x/staking, x/simulation, x/gov, x/bank, x/consensus, x/auth, testutil, server, client, baseapp, and contrib modules all retain direct cometbft dependencies.
Clarify whether this PR is a partial migration and these imports are intentional, or whether the broader codebase should also be migrated as part of this effort.
10913-10915: GetNodeInfoResponse DefaultNodeInfo migration verified
Client and server code, marshaling helpers, and tests now correctly use p2p.DefaultNodeInfo.
10690-10693: Migrate GetBlockByHeightResponse fields to tendermint/types
Wire format unchanged; Go getters now return tendermint/types.BlockID and tendermint/types.Block—update all callsites, conversion helpers and tests accordingly.
| uses: actions/checkout@v5 | ||
| with: | ||
| persist-credentials: false | ||
| fetch-depth: 0 | ||
|
|
||
| - name: Setup Node.js 🔧 | ||
| uses: actions/setup-node@v4 | ||
| uses: actions/setup-node@v5 | ||
| with: | ||
| node-version: "16.x" | ||
| node-version: "24.x" | ||
|
|
There was a problem hiding this comment.
Target a released Node.js version.
node-version: "24.x" will currently break this workflow—Node 24 hasn’t shipped yet, so actions/setup-node can’t resolve it. Please stick with a released channel (e.g., 20.x LTS or 22.x current) until Node 24 is actually available.
🤖 Prompt for AI Agents
In .github/workflows/build-docs.yml around lines 24 to 33 the workflow pins
actions/setup-node to node-version: "24.x", which is not yet released and causes
setup-node to fail; update node-version to a released, supported value (for
example "20.x" for LTS or "22.x" for current) so setup-node can resolve
successfully, and commit the updated workflow YAML.
| - uses: actions/checkout@v5 | ||
| - uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: "1.24" | ||
| go-version: "1.25" | ||
| check-latest: true |
There was a problem hiding this comment.
Build matrix can’t install Go 1.25 today.
The CI build will fail until Go 1.25 exists—actions/setup-go only serves released versions. Please pin this (and the other workflows) to an available Go toolchain instead.
🤖 Prompt for AI Agents
.github/workflows/build.yml around lines 23 to 27: the workflow currently
specifies go-version: "1.25", which isn’t a released toolchain and causes CI
failures; update the go-version value to a released Go version (for example
"1.21" or your project's supported release) and apply the same pin to any other
workflows/matrices that reference 1.25 so CI uses an available toolchain.
| uses: actions/checkout@v5 | ||
| - name: "Setup Go" | ||
| uses: actions/setup-go@v5 | ||
| uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: "1.24" | ||
| go-version: "1.25" | ||
| check-latest: true |
There was a problem hiding this comment.
Unreleased Go toolchain will break this job.
actions/setup-go@v6 can’t fetch Go 1.25 yet, so this dependency-review workflow will error out. Please revert to a released Go version and align the other updated workflows with that change.
🤖 Prompt for AI Agents
.github/workflows/dependencies-review.yml around lines 14 to 19: the workflow
pins Go to "1.25" which is not yet available for actions/setup-go@v6 and will
cause the job to fail; change go-version to the latest released Go (e.g.,
"1.24"), keep check-latest as needed, and then update any other workflow files
that were updated to 1.25 to the same released version to keep toolchain
versions consistent across workflows.
| on: | ||
| pull_request: | ||
| types: [opened, synchronize, reopened, ready_for_review] | ||
|
|
||
| permissions: | ||
| contents: read # needed to read commits | ||
| pull-requests: write # needed to close the PR | ||
| issues: write # needed to post a comment | ||
|
|
||
| jobs: | ||
| check-signed-commits: | ||
| # Skip drafts to avoid noise while a PR is still being prepared | ||
| if: github.event.pull_request.draft == false | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| - name: Verify all PR commits are signed | ||
| uses: actions/github-script@v8 | ||
| with: | ||
| script: | | ||
| const { owner, repo } = context.repo; | ||
| const prNumber = context.payload.pull_request.number; | ||
|
|
||
| // Get all commits in the PR (handles pagination) | ||
| const commits = await github.paginate( | ||
| github.rest.pulls.listCommits, | ||
| { owner, repo, pull_number: prNumber, per_page: 100 } | ||
| ); | ||
|
|
||
| // Any commit without a verified signature? | ||
| const unsigned = commits.filter(c => !(c.commit?.verification?.verified)); | ||
|
|
||
| if (unsigned.length === 0) { | ||
| core.info("All commits are verified-signed. ✅"); | ||
| return; | ||
| } | ||
|
|
||
| // Build a helpful message & list the offending commits | ||
| const list = unsigned | ||
| .map(c => `- ${c.sha.substring(0,7)} — ${c.commit.message.split('\n')[0]}`) | ||
| .join('\n'); | ||
|
|
||
| const msg = [ | ||
| "🔒 **PR closed: unsigned commits detected**", | ||
| "", | ||
| `This pull request contains **${unsigned.length}** commit(s) without a *verified* signature.`, | ||
| "", | ||
| "**How to fix:**", | ||
| "1. Set up commit signing (GPG or SSH).", | ||
| "2. Amend/rebase so **every** commit in this PR is verified-signed.", | ||
| "3. Push the updated branch and open a new PR, or ask a maintainer to reopen once fixed.", | ||
| "", | ||
| "Docs: https://docs.github.com/authentication/managing-commit-signature-verification", | ||
| "", | ||
| "**Unsigned commits:**", | ||
| list | ||
| ].join("\n"); | ||
|
|
||
| // Post the explanation as a PR comment (PRs are Issues in the API) | ||
| await github.rest.issues.createComment({ | ||
| owner, repo, issue_number: prNumber, body: msg | ||
| }); | ||
|
|
||
| // Close the PR | ||
| await github.rest.pulls.update({ | ||
| owner, repo, pull_number: prNumber, state: "closed" | ||
| }); | ||
|
|
||
| // Mark the job as failed so it’s obvious in checks | ||
| core.setFailed(`Closed PR: found ${unsigned.length} unsigned commit(s).`); |
There was a problem hiding this comment.
Workflow cannot comment/close fork PRs due to token permissions
When this runs on a PR from a fork, the pull_request-triggered workflow executes with a read-only GITHUB_TOKEN. The issues.createComment and pulls.update calls will 403, so the job fails but never posts guidance or closes the PR. The gate therefore does not work for the common forked contributor path. Please move this logic to a pull_request_target workflow (which runs with write perms but uses trusted repo code), or otherwise execute it with a token that has the necessary write scopes.
| - uses: actions/checkout@v5 | ||
| - uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: "1.24" | ||
| go-version: "1.25" | ||
| check-latest: true |
There was a problem hiding this comment.
Go 1.25 isn’t available yet.
This workflow will fail for the same reason as the release jobs: actions/setup-go can’t install Go 1.25 today because that release doesn’t exist. Please pin to an actually published version (1.23.x/1.24.x) and update the rest of the PR accordingly.
🤖 Prompt for AI Agents
In .github/workflows/lint.yml around lines 17 to 21 the workflow pins
go-version: "1.25" which is not yet published and causes actions/setup-go to
fail; update the go-version to a currently released version (for example
"1.24.x" or "1.23.x") and ensure any other references in this PR (docs, matrix,
or release jobs) are updated to match the selected published Go version so the
workflow can install successfully.
| - uses: actions/checkout@v5 | ||
| - uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: "1.24" | ||
| go-version: "1.25" | ||
| check-latest: true |
There was a problem hiding this comment.
Revert to an available Go toolchain.
Setting go-version: "1.25" will make this workflow fail today—Go 1.25 hasn’t shipped yet, so actions/setup-go cannot install it. Please keep targeting a released version (e.g., 1.23.x/1.24.x) until 1.25 actually lands, and mirror that fix across the other workflows in this PR that were bumped to 1.25.
🤖 Prompt for AI Agents
.github/workflows/release-confix.yml lines 16-20: the workflow sets go-version:
"1.25" which is not released and will cause setup-go to fail; change the
go-version to a released toolchain (for example "1.24.x" or "1.23.x") and ensure
check-latest is set appropriately, then mirror the same replacement across any
other workflow files in this PR that were bumped to 1.25 so all CI workflows use
a released Go version.
| - uses: actions/checkout@v5 | ||
| - uses: actions/setup-go@v6 | ||
| with: | ||
| go-version: "1.24" | ||
| go-version: "1.25" | ||
| check-latest: true |
There was a problem hiding this comment.
Stick to a released Go version.
Like the other workflows, pointing go-version at "1.25" will cause setup-go to fail because Go 1.25 isn’t out yet. Please keep using a published release (e.g., 1.23.x/1.24.x) across all workflows in this PR.
🤖 Prompt for AI Agents
.github/workflows/release-cosmovisor.yml lines 16-20: the workflow sets
go-version to "1.25" which is not yet released; update the go-version to a
published release (e.g., "1.24" or "1.24.x" or match the repo’s existing
workflows like "1.23.x") so actions/setup-go succeeds, and make the value
consistent across all workflows in this PR.
| * (baseapp) [#24655](https://github.com/cosmos/cosmos-sdk/pull/24655) Add mutex locks for `state` and make `lastCommitInfo` atomic to prevent race conditions between `Commit` and `CreateQueryContext`. | ||
| * (proto) [#24161](https://github.com/cosmos/cosmos-sdk/pull/24161) Remove unnecessary annotations from `x/staking` authz proto. | ||
| * (x/bank) [#24660](https://github.com/cosmos/cosmos-sdk/pull/24660) Improve performance of the `GetAllBalances` and `GetAccountsBalances` keeper methods. | ||
| * (collections) [#25464](https://github.com/cosmos/cosmos-sdk/pull/25464) Add `IterateRaw` method to `Multi` index type to satisfty query `Collection` interface. |
There was a problem hiding this comment.
Correct “satisfty” spelling.
The new entry says “satisfty query Collection interface”; please change it to “satisfy” for clarity in the changelog.
🤖 Prompt for AI Agents
In CHANGELOG.md around line 66, fix the misspelling “satisfty” to “satisfy” in
the changelog entry so the sentence reads “Add `IterateRaw` method to `Multi`
index type to satisfy query `Collection` interface.” Update only that word to
correct the spelling.
| For SDK application developers and node runners, this means that the `timeout_commit` value in the `config.toml` file | ||
| is still used if `NextBlockDelay` is 0 (its default value). This means that when upgrading to Cosmos SDK v0.54.x, if | ||
| the existing `timout_commit` values that validators have been using will be maintained and have the same behavior. |
There was a problem hiding this comment.
Fix typo in timeout_commit.
The sentence introduces timout_commit, which should be timeout_commit. Please correct the spelling so the configuration key is documented accurately.
🤖 Prompt for AI Agents
In UPGRADING.md around lines 21 to 23, fix the typo "timout_commit" to the
correct configuration key "timeout_commit" so the document consistently and
accurately references the config key used in config.toml; update the misspelled
instance and run a quick scan of the surrounding paragraph to ensure no other
occurrences remain.
Description
This PR is required to make pagination working with multi indexes.
Closes: #XXXX
Summary by CodeRabbit
New Features
Improvements
Chores