Skip to content

fix: race condition between Commit and CreateQueryContext#24392

Closed
beer-1 wants to merge 31 commits into
cosmos:mainfrom
initia-labs:fix/race-v0.53
Closed

fix: race condition between Commit and CreateQueryContext#24392
beer-1 wants to merge 31 commits into
cosmos:mainfrom
initia-labs:fix/race-v0.53

Conversation

@beer-1
Copy link
Copy Markdown
Contributor

@beer-1 beer-1 commented Apr 4, 2025

Description

replace: #22692


Author Checklist

All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.

I have...

  • included the correct type prefix in the PR title, you can find examples of the prefixes below:
  • confirmed ! in the type prefix if API or client breaking change
  • targeted the correct branch (see PR Targeting)
  • provided a link to the relevant issue or specification
  • reviewed "Files changed" and left comments if necessary
  • included the necessary unit and integration tests
  • added a changelog entry to CHANGELOG.md
  • updated the relevant documentation or specification, including comments for documenting Go code
  • confirmed all CI checks have passed

Reviewers Checklist

All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.

Please see Pull Request Reviewer section in the contributing guide for more information on how to review a pull request.

I have...

  • confirmed the correct type prefix in the PR title
  • confirmed all author checklist items have been addressed
  • reviewed state machine logic, API design and naming, documentation is accurate, tests and test coverage

Summary by CodeRabbit

  • New Features

    • Enabled default key configuration to simplify transaction signing.
    • Added support for unordered transactions.
    • Introduced enhanced governance proposal commands across multiple modules.
    • Integrated new modules into upgrade paths (e.g., protocol pool, epochs).
  • Improvements

    • Strengthened concurrency control for increased transaction robustness.
    • Refined CLI command usage with clearer instructions and practical examples.
  • Documentation

    • Updated upgrade guides, user manuals, and architectural references for a more streamlined experience.

mergify Bot and others added 10 commits April 1, 2025 17:21
…) (cosmos#24265)

Co-authored-by: Julián Toledano <JulianToledano@users.noreply.github.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
…osmos#24332) (cosmos#24351)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
cosmos#24361) (cosmos#24365)

Co-authored-by: julienrbrt <julien@rbrt.fr>
Co-authored-by: Alex | Interchain Labs <alex@interchainlabs.io>
mergify Bot and others added 2 commits April 4, 2025 15:09
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
…os#24388)

Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
@technicallyty technicallyty changed the title fix race condition fix: race condition between Commit and CreateQueryContext Apr 4, 2025
beer-1 and others added 9 commits April 5, 2025 12:54
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
…os#24418) (cosmos#24432)

Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
…stribution (backport cosmos#24398) (cosmos#24433)

Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
…s#24435)

Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
@technicallyty technicallyty changed the base branch from release/v0.53.x-legacy to main April 11, 2025 18:31
mergify Bot and others added 6 commits April 15, 2025 02:33
…s#24435)

Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 14, 2025

📝 Walkthrough

Walkthrough

The changes span multiple modules and components. Key updates include the addition of a new default key name for client configurations (eliminating the need for the “--from” flag), upgrades to governance proposal submission commands across several modules, and improvements in state management in BaseApp through the introduction of mutex locks and atomic pointers. Documentation and upgrade guides have been revised and expanded to reflect new modules (e.g., x/epochs, x/protocolpool) and command structures. Several proto files have been cleaned up by removing version comments and adding versioning metadata.

Changes

File(s) Change Summary
CHANGELOG.md, UPGRADE_GUIDE.md, UPGRADING.md Updated changelogs and upgrade guides with new feature entries (client keyring-default-keyname, x/epochs, x/protocolpool) and improvements (mutex locks in baseapp, governance proposal support in x/auth).
baseapp/abci.go, baseapp/baseapp.go, baseapp/abci_test.go, baseapp/test_helpers.go Refactored state handling by replacing direct state references with getState(), introduced stateMut (RWMutex) for concurrency, added tests for race conditions during block finalization and query.
client/config/config.go, client/config/toml.go, client/context.go, client/prompt_validation.go Added new field KeyringDefaultKeyName and corresponding TOML entry; updated context logic to use the default key when none is provided; minor comment fixes.
client/v2/... (including CHANGELOG.md, README.md, autocli/app.go, flag/*, msg.go, msg_test.go, and internal flags) Enhanced AutoCLI features: support for governance proposals, flattened field handling in flags, new scalar types and file resolvers, improved error messaging and test helpers, along with updated command examples.
crypto/keyring/keyring.go Added error handling for keys formatted with a “.info” suffix.
docs/... (architecture, building-apps, building-modules, learn, user, pre.sh, spec, etc.) Extensive documentation updates including grammatical corrections, URL updates, removal of deprecated ADR entries, diagram replacements with Mermaid diagrams, and new sections (e.g., “Using an External Community Pool,” “Unordered Transactions”).
proto/... (across cosmos/authz, consensus, crypto, epochs, feegrant, gov, group, staking, tx, upgrade, etc.) Removed legacy “Since” comment lines; updated import statements and method options with annotations (e.g., method_added_in, field_added_in) for clearer version metadata.
runtime/module.go, scripts/init-simapp.sh, simapp/app_config.go, store/rootmulti/store.go Modified store key provider functions to include a configuration parameter for skipping specific keys; set default keyring name and updated commit info handling using atomic pointers.
x/... (auth, bank, circuit, consensus, crisis, distribution, gov, mint, protocolpool, slashing, etc.) Updated AutoCLI command configurations to support governance proposal submissions and new command structures (detailed usage, examples, positional arguments, new flags like FlagExpedited); removed mandatory “From” flag in signing commands and adjusted flag handling accordingly; added a new interface for handling external community pool functions in distribution.
x/gov/client/cli/util.go Renamed and updated functions for reading governance proposal flags; introduced a deprecated wrapper for backward compatibility.

Sequence Diagram(s)

Governance Proposal Submission Flow

sequenceDiagram
    participant User as User
    participant CLI as CLI
    participant MsgBuilder as Message Builder
    participant GovHandler as handleGovProposal
    participant Tx as Transaction

    User->>CLI: Submits "update-params-proposal" command
    CLI->>MsgBuilder: Parses and validates command arguments
    MsgBuilder->>GovHandler: Invokes handleGovProposal()
    GovHandler->>Tx: Sets governance authority and proposer info
    Tx->>CLI: Returns constructed proposal message
    CLI->>User: Broadcasts transaction and displays response
Loading

BaseApp State Retrieval with Mutex

sequenceDiagram
    participant App as BaseApp
    participant Mutex as RWMutex
    participant State as getState()

    App->>Mutex: Acquire (read/write) lock
    App->>State: Retrieve state for specific execution mode
    State-->>App: Return state context
    App->>Mutex: Release lock
Loading

Tip

⚡💬 Agentic Chat (Pro Plan, General Availability)
  • We're introducing multi-step agentic chat in review comments and issue comments, within and outside of PR's. This feature enhances review and issue discussions with the CodeRabbit agentic chat by enabling advanced interactions, including the ability to create pull requests directly from comments and add commits to existing pull requests.
✨ Finishing Touches
  • 📝 Generate Docstrings

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

‼️ IMPORTANT
Auto-reply has been disabled for this repository in the CodeRabbit settings. The CodeRabbit bot will not respond to your replies unless it is explicitly tagged.

  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (30)
docs/docs/learn/learn.md (1)

7-8: Enhance Sentence Clarity with a Comma.
A static analysis hint suggests adding a comma after "finally" to improve readability. Consider updating the sentence as follows:

- laying the groundwork for understanding blockchain development. In this section we provide a High-Level Overview of the SDK, then dive deeper into Core concepts such as Application-Specific Blockchains, Blockchain Architecture, and finally we begin to explore the main components of the SDK.
+ laying the groundwork for understanding blockchain development. In this section we provide a High-Level Overview of the SDK, then dive deeper into core concepts such as Application-Specific Blockchains, Blockchain Architecture, and finally, we begin to explore the main components of the SDK.
🧰 Tools
🪛 LanguageTool

[typographical] ~7-~7: Consider adding a comma after ‘finally’ for more clarity.
Context: ...ockchains, Blockchain Architecture, and finally we begin to explore the main components...

(RB_LY_COMMA)

docs/docs/build/build.md (1)

8-8: Module List Revision

The updated modules list now includes "Epochs", "Group", and "Protocolpool" while removing "Crisis" and "Params". Please verify that corresponding documentation pages and links exist for the new modules and that the list is consistent with the overall documentation structure.

docs/architecture/adr-039-epoched-staking.md (1)

42-43: Clarify Slash Timing Consideration

The updated text clearly explains that a slash event should only apply to members actively staked during the infraction’s epoch and suggests delaying the weight update until the epoch boundary. Consider adding a brief rationale or example to further clarify why this delayed adjustment benefits the system’s design.

docs/pre.sh (2)

23-23: Modules Page List Update

The sed command has been updated to replace outdated module page links with the new /building-modules/intro.html URL. Please confirm that this transformation meets the documentation navigation requirements and that the output file appears as expected.


45-45: SDK Migration Documentation Update

Copying ../UPGRADING.md to ./docs/build/migrations/02-upgrade-reference.md correctly aligns with the new documentation structure. Verify that the migration guide’s content now serves as a proper upgrade reference.

docs/docs/user/run-node/06-run-production.md (1)

14-14: Improve Note Text Clarity

The note on server security could be more concise. Consider rephrasing the sentence to something like:
"There are various methods to secure your server and node; the steps provided here outline one effective approach. For an alternative method, refer to the run in production tutorial."
This will enhance readability and grammatical correctness.

🧰 Tools
🪛 LanguageTool

[style] ~14-~14: ‘many different ways’ might be wordy. Consider a shorter alternative.
Context: ...server up securely. :::note There are many different ways to secure a server and your node, the d...

(EN_WORDINESS_PREMIUM_MANY_DIFFERENT_WAYS)

docs/docs/user/run-node/00-keyring.md (1)

34-38: Minor grammatical improvements.

The text is now more grammatically correct with the addition of "the" before "default desktop environment" and restructuring of the sentence about the keyctl backend.

Consider isolating the adverbial phrase "in fact" with commas for improved readability:

-Whilst the former is in fact a `libsecret` convenient frontend, the latter is a `kwallet`
+Whilst the former is, in fact, a `libsecret` convenient frontend, the latter is a `kwallet`
🧰 Tools
🪛 LanguageTool

[typographical] ~37-~37: Consider isolating this adverbial phrase with commas.
Context: ...DE_Wallet_Manager). Whilst the former is in fact a libsecret convenient frontend, the ...

(IN_FACT_COMMA_2)

docs/docs/build/abci/00-introduction.md (1)

22-22: Grammar improvement needed

The sentence is missing the article "an" before "application developer".

-To perform this manipulation on the application side, a custom handler must be implemented. By default, the Cosmos SDK provides `PrepareProposalHandler`, used in conjunction with an application specific mempool. A custom handler can be written by application developer, if a noop handler provided, all transactions are considered valid.
+To perform this manipulation on the application side, a custom handler must be implemented. By default, the Cosmos SDK provides `PrepareProposalHandler`, used in conjunction with an application specific mempool. A custom handler can be written by an application developer, if a noop handler provided, all transactions are considered valid.
🧰 Tools
🪛 LanguageTool

[style] ~22-~22: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...provides PrepareProposalHandler, used in conjunction with an application specific mempool. A cust...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[uncategorized] ~22-~22: You might be missing the article “an” here.
Context: ...ool. A custom handler can be written by application developer, if a noop handler provided, ...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

client/v2/README.md (1)

129-132: Helpful new tip about gov proposal generation

This tip adds valuable information about AutoCLI's ability to create governance proposals and the --no-proposal flag option.

Consider adding commas around "however" for better readability:

-AutoCLI can create a gov proposal of any tx by simply setting the `GovProposal` field to `true` in the `autocli.RpcCommandOptions` struct.
-Users can however use the `--no-proposal` flag to disable the proposal creation (which is useful if the authority isn't the gov module on a chain).
+AutoCLI can create a gov proposal of any tx by simply setting the `GovProposal` field to `true` in the `autocli.RpcCommandOptions` struct.
+Users can, however, use the `--no-proposal` flag to disable the proposal creation (which is useful if the authority isn't the gov module on a chain).
🧰 Tools
🪛 LanguageTool

[typographical] ~131-~131: Consider adding two commas here.
Context: ...cli.RpcCommandOptionsstruct. Users can however use the--no-proposal` flag to disable...

(HOWEVER_COMMA)

CHANGELOG.md (1)

59-60: Fix indentation for markdown compliance.
The bullet item at line 59 is indented by four spaces instead of two, triggering the markdown lint rule (MD007).

Here is a diff correcting the indentation:

-    * x/distribution can now utilize an externally managed community pool. NOTE: ...
+  * x/distribution can now utilize an externally managed community pool. NOTE: ...
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

59-59: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

docs/docs/learn/beginner/00-app-anatomy.md (1)

53-56: Resolve unordered list indentation (MD007).
Lines 54 and 55 are indented by four spaces, but the lint rule expects two spaces.

Apply this diff to align with common Markdown style:

-    * `Runtime` wraps `BaseApp`, meaning...
-    * It automatically configures the **[module manager]...
+  * `Runtime` wraps `BaseApp`, meaning...
+  * It automatically configures the **[module manager]...
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

54-54: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


55-55: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

docs/docs/learn/advanced/01-transactions.md (1)

131-131: Minor grammar improvement suggestion.

Consider changing "related with" to "related to" for better grammar.

-The `TxBuilder` interface contains data closely related with the generation of transactions, which an end-user can set to generate the desired transaction:
+The `TxBuilder` interface contains data closely related to the generation of transactions, which an end-user can set to generate the desired transaction:
🧰 Tools
🪛 LanguageTool

[uncategorized] ~131-~131: The preposition “to” seems more likely in this position.
Context: ...interface contains data closely related with the generation of transactions, which a...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)

docs/docs/user/run-node/01-run-node.md (1)

189-189: Fixed spelling error and removed bare URL.

Corrected "afromentioned" to "aforementioned" for proper spelling.

The static analysis tool flagged a bare URL on this line. Consider updating the format to follow markdown best practices.

-1. As mentioned in https://docs.cometbft.com/v0.37/core/state-sync, one must set a height and hash in the config.toml along with a few rpc servers (the aforementioned link has instructions on how to do this). 
+1. As mentioned in [CometBFT state sync documentation](https://docs.cometbft.com/v0.37/core/state-sync), one must set a height and hash in the config.toml along with a few rpc servers (the aforementioned link has instructions on how to do this).
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

189-189: Bare URL used
null

(MD034, no-bare-urls)

UPGRADING.md (1)

84-141: Comprehensive documentation of new modules.

The documentation for the new modules is detailed and includes important warnings about store upgrades and potential breaking changes. The list of required wiring components for each module is particularly helpful.

There's a minor grammatical issue in the description of the x/epochs module:

-The new, supplemental `x/epochs` module provides Cosmos SDK modules functionality to register and execute custom logic at fixed time-intervals.
+The new, supplemental `x/epochs` module provides Cosmos SDK modules' functionality to register and execute custom logic at fixed time-intervals.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~93-~93: It seems likely that a singular genitive (’s) apostrophe is missing.
Context: ...l x/epochs module provides Cosmos SDK modules functionality to register and execute c...

(AI_HYDRA_LEO_APOSTROPHE_S_XS)

x/protocolpool/README.md (1)

13-26: Important usage limitations documented

This section clearly explains which x/distribution handlers will return errors when using the protocolpool module, helping users avoid unexpected behavior.

Consider using actual markdown headings (### or ####) instead of bold text for "QueryService" and "MsgService" to improve document structure and accessibility:

-**QueryService**
+### QueryService

-**MsgService**
+### MsgService
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

17-17: Emphasis used instead of a heading
null

(MD036, no-emphasis-as-heading)


21-21: Emphasis used instead of a heading
null

(MD036, no-emphasis-as-heading)

docs/docs/build/building-apps/03-app-upgrade.md (1)

25-25: Fix the abbreviation format

The abbreviation "eg." should be written as "e.g." with two periods (stands for exempli gratia).

-and then install a specially named upgrade handler (eg. "testnet-v2" or even "v0.40.0"). An upgrade
+and then install a specially named upgrade handler (e.g., "testnet-v2" or even "v0.40.0"). An upgrade
🧰 Tools
🪛 LanguageTool

[uncategorized] ~25-~25: The abbreviation “e.g.” (= for example) requires two periods.
Context: ...tall a specially named upgrade handler (eg. "testnet-v2" or even "v0.40.0"). An upg...

(E_G)

client/v2/autocli/app.go (1)

65-75: Improved file resolution with proper fallback

The code now attempts to use a merged registry of protocol buffer files through proto.MergedRegistry() with a proper fallback mechanism if the call fails. This enhances the autocli functionality by providing more comprehensive file resolution capabilities.

However, the comment could be more explicit about when/why this error might occur and in what circumstances it's safe to ignore.

  if err != nil {
-    // we can safely ignore this error, as this should have been called somewhere earlier
-    // in the app's lifecycle.
+    // We can safely ignore this error. proto.MergedRegistry() may fail if called before
+    // the protobuf registry is fully initialized, but since we've already called it elsewhere
+    // in the app's lifecycle, we can fall back to the interface registry.
    mergedFiles = appOptions.ClientCtx.InterfaceRegistry
  }
docs/docs/build/building-apps/00-runtime.md (5)

41-47: Refine punctuation in bullet points.

Lines 41–47 contain bullet points introduced immediately after the colon. Consider adding a line break or punctuation for clarity.

Example fix:

- The runtime module is configured using App Wiring. The main configuration object is the [`Module` message](...), which supports the following key settings:
-* `app_name`: The name of the application
-* `begin_blockers`: List of module names...
+The runtime module is configured using App Wiring. The main configuration object is the [`Module` message](...), which supports the following key settings:
+
+• `app_name`: The name of the application
+• `begin_blockers`: List of module names...
🧰 Tools
🪛 LanguageTool

[uncategorized] ~41-~41: Loose punctuation mark.
Context: ...he following key settings: * app_name: The name of the application * `begin_bl...

(UNLIKELY_OPENING_PUNCTUATION)


52-52: Add a comma after "However".

Include a comma after "However" to improve readability and conform to standard grammar.

-By default, the runtime module uses the module name as the store key. However it provides a flexible store key configuration through:
+By default, the runtime module uses the module name as the store key. However, it provides a flexible store key configuration through:
🧰 Tools
🪛 LanguageTool

[uncategorized] ~52-~52: A comma may be missing after the conjunctive/linking adverb ‘However’.
Context: ... uses the module name as the store key. However it provides a flexible store key config...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


55-56: Refine punctuation around this list.

The punctuation after the colon should be followed by a line break or additional wording.

-However it provides a flexible store key configuration through:
-* `override_store_keys`: Allows customizing module store keys
-* `skip_store_keys`: Specifies store keys to skip...
+However, it provides a flexible store key configuration through:
+
+• `override_store_keys`: Allows customizing module store keys
+• `skip_store_keys`: Specifies store keys to skip...
🧰 Tools
🪛 LanguageTool

[uncategorized] ~55-~55: Loose punctuation mark.
Context: ...ration through: * override_store_keys: Allows customizing module store keys * ...

(UNLIKELY_OPENING_PUNCTUATION)


95-97: Add missing article "the".

For improved clarity, add the definite article before "core services" and "services" in lines 95 and 97.

- Runtime registers all [core services](...) required by modules.
- These services include `store`, `event manager`, `context`, and `logger`. Runtime ensures that services are scoped...
+ Runtime registers all the [core services](...) required by modules.
+ These services include the `store`, `event manager`, `context`, and `logger`. Runtime ensures that the services are scoped...
🧰 Tools
🪛 LanguageTool

[uncategorized] ~95-~95: You might be missing the article “the” here.
Context: ...possible. ### 3. Service Registration Runtime registers all [core services](https://p...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~97-~97: You might be missing the article “the” here.
Context: ...vent manager, context, and logger`. Runtime ensures that services are scoped to the...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


104-104: Refine usage of "other essential services".

Add “the” or “some” before “other essential services” to improve phrasing.

-Additionally, runtime provides automatic registration of other essential (i.e., gRPC routes) services available to the App:
+Additionally, runtime provides automatic registration of some other essential (i.e., gRPC routes) services available to the App:
🧰 Tools
🪛 LanguageTool

[grammar] ~104-~104: Use the plural noun, or add a word such as ‘the’ or ‘some’ in front of ‘other’.
Context: ...time provides automatic registration of other essential (i.e., gRPC routes) services available ...

(OTHER_NN)

client/v2/autocli/msg.go (1)

190-227: handleGovProposal function is logical and well-structured.

This method accurately sets the gov module address as authority, reads governance-related flags, and uses dynamic protobuf messages for final submission. Error handling is deliberate. No immediate concerns about concurrency or security.

Consider verifying that a signer always exists and surfaces a clear error message if the fromAddress is empty.

client/v2/autocli/flag/messager_binder.go (2)

72-81: Consider edge cases for empty or unexpected paths.
While the logic correctly branches between a direct bind vs. a nested bind, there may be cases where arg.path is empty or malformed (e.g., ".", leading to strings.Split producing empty tokens). If such edge cases are possible, consider handling or validating them before calling bindNestedField.


94-125: Potential enhancement for repeated fields with multiple elements.
This function reliably handles a single-element list by always operating on index 0. If a repeated field can hold multiple items, you might consider whether the logic should handle multiple appended items instead of just the first element. Otherwise, it’s acceptable if the design only anticipates a single repeated field entry.

docs/docs/build/building-apps/01-app-go-di.md (3)

41-44: Grammar nitpick: Prefer “in which” over “at which.”
To improve readability, consider changing:

"In this configuration, the order in which the modules are defined..."

-    In this configuration, the order at which the modules are defined
+    In this configuration, the order in which the modules are defined
🧰 Tools
🪛 LanguageTool

[uncategorized] ~43-~43: The preposition ‘in’ seems more likely in this position.
Context: ...: In this configuration, the order at which the modules are defined in PreBlo...

(AI_HYDRA_LEO_REPLACE_AT_IN)


70-70: Grammar nitpick: Use “embedded.”
For clarity, replace “embed with go:embed” with “embedded with go:embed.”

- The configuration can then be embed with `go:embed`
+ The configuration can then be embedded with `go:embed`
🧰 Tools
🪛 LanguageTool

[grammar] ~70-~70: Consider using either the past participle “embedded” or the present participle “embedding” here.
Context: ...r JSON. The configuration can then be embed with go:embed and read with [`appconf...

(BEEN_PART_AGREEMENT)


152-152: Grammar nitpick: Insert a comma after “Otherwise.”
The conjunctive adverb “Otherwise” typically requires a comma.

- Otherwise it will miss the non depinject modules
+ Otherwise, it will miss the non depinject modules
🧰 Tools
🪛 LanguageTool

[uncategorized] ~152-~152: A comma may be missing after the conjunctive/linking adverb ‘Otherwise’.
Context: ...nually constructed instead of injected. Otherwise it will miss the non depinject modules ...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)

x/distribution/README.md (2)

241-248: Use spaces instead of hard tabs in code blocks.

According to markdownlint (MD010), hard tabs may cause inconsistent formatting across different environments. Consider replacing tabs with spaces in these lines for better readability.

 239 type ExternalCommunityPoolKeeper interface {
 240     // ...
-241	// ...
-242	// ...
-243	// ...
-244	// ...
-245	// ...
-246	// ...
-247	// ...
-248	// ...
+241    // ...
+242    // ...
+243    // ...
+244    // ...
+245    // ...
+246    // ...
+247    // ...
+248    // ...
 249 }
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

241-241: Hard tabs
Column: 1

(MD010, no-hard-tabs)


242-242: Hard tabs
Column: 1

(MD010, no-hard-tabs)


243-243: Hard tabs
Column: 1

(MD010, no-hard-tabs)


244-244: Hard tabs
Column: 1

(MD010, no-hard-tabs)


245-245: Hard tabs
Column: 1

(MD010, no-hard-tabs)


246-246: Hard tabs
Column: 1

(MD010, no-hard-tabs)


247-247: Hard tabs
Column: 1

(MD010, no-hard-tabs)


248-248: Hard tabs
Column: 1

(MD010, no-hard-tabs)


269-269: Fix Markdown heading and bullet list style.

Based on markdownlint checks (MD036, MD004), headings should use hash characters (e.g., ##) rather than bold/emphasis, and unordered lists should use * instead of -. This improves consistency with typical Markdown standards.

-269 When using an external community pool with `x/distribution`, the following handlers will return an error:
+269 #### External Community Pool Handlers

-271 - `CommunityPool`
+271 * `CommunityPool`

-273 **MsgService**
+273 #### MsgService

-275 - `CommunityPoolSpend`
-276 - `FundCommunityPool`
+275 * `CommunityPoolSpend`
+276 * `FundCommunityPool`

Also applies to: 271-271, 273-273, 275-276

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

269-269: Emphasis used instead of a heading
null

(MD036, no-emphasis-as-heading)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3037346 and 1850cd4.

⛔ Files ignored due to path filters (60)
  • api/cosmos/authz/v1beta1/authz.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/authz/v1beta1/event.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/authz/v1beta1/genesis.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/authz/v1beta1/query.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/authz/v1beta1/query_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/authz/v1beta1/tx.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/authz/v1beta1/tx_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/base/reflection/v2alpha1/reflection.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/base/reflection/v2alpha1/reflection_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/consensus/v1/query.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/consensus/v1/query_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/consensus/v1/tx.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/consensus/v1/tx_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/crypto/hd/v1/hd.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/crypto/keyring/v1/record.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/crypto/secp256r1/keys.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/epochs/module/v1/module.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/epochs/v1beta1/events.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/epochs/v1beta1/genesis.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/epochs/v1beta1/query.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/epochs/v1beta1/query_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/feegrant/v1beta1/feegrant.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/feegrant/v1beta1/genesis.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/feegrant/v1beta1/query.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/feegrant/v1beta1/query_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/feegrant/v1beta1/tx.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/feegrant/v1beta1/tx_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/gov/v1/genesis.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/gov/v1/gov.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/gov/v1/query.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/gov/v1/query_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/gov/v1/tx.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/gov/v1/tx_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/group/v1/events.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/group/v1/genesis.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/group/v1/query.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/group/v1/query_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/group/v1/tx.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/group/v1/tx_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • api/cosmos/group/v1/types.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/staking/v1beta1/authz.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/tx/v1beta1/service.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/upgrade/v1beta1/tx.pulsar.go is excluded by !**/*.pulsar.go
  • api/cosmos/upgrade/v1beta1/tx_grpc.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • client/v2/go.mod is excluded by !**/*.mod
  • client/v2/go.sum is excluded by !**/*.sum, !**/*.sum
  • go.mod is excluded by !**/*.mod
  • go.sum is excluded by !**/*.sum, !**/*.sum
  • simapp/example_app.yaml is excluded by !**/*.yaml
  • simapp/go.mod is excluded by !**/*.mod
  • simapp/go.sum is excluded by !**/*.sum, !**/*.sum
  • tests/go.mod is excluded by !**/*.mod
  • types/tx/service.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • x/consensus/types/query.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • x/epochs/types/query.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • x/feegrant/tx.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • x/gov/types/v1/tx.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • x/staking/types/authz.pb.go is excluded by !**/*.pb.go, !**/*.pb.go
  • x/tx/signing/aminojson/internal/aminojsonpb/aminojson.pulsar.go is excluded by !**/*.pulsar.go
  • x/tx/signing/aminojson/internal/buf.lock is excluded by !**/*.lock, !**/*.lock
📒 Files selected for processing (107)
  • CHANGELOG.md (2 hunks)
  • UPGRADE_GUIDE.md (1 hunks)
  • UPGRADING.md (1 hunks)
  • baseapp/abci.go (27 hunks)
  • baseapp/abci_test.go (2 hunks)
  • baseapp/baseapp.go (8 hunks)
  • baseapp/test_helpers.go (1 hunks)
  • client/config/config.go (2 hunks)
  • client/config/toml.go (1 hunks)
  • client/context.go (3 hunks)
  • client/prompt_validation.go (1 hunks)
  • client/v2/CHANGELOG.md (2 hunks)
  • client/v2/README.md (3 hunks)
  • client/v2/autocli/app.go (2 hunks)
  • client/v2/autocli/flag/builder.go (6 hunks)
  • client/v2/autocli/flag/legacy_dec.go (1 hunks)
  • client/v2/autocli/flag/messager_binder.go (4 hunks)
  • client/v2/autocli/msg.go (3 hunks)
  • client/v2/autocli/msg_test.go (3 hunks)
  • client/v2/autocli/testdata/flatten-output.golden (1 hunks)
  • client/v2/internal/flags/flags.go (1 hunks)
  • crypto/keyring/keyring.go (1 hunks)
  • docs/architecture/PROCESS.md (2 hunks)
  • docs/architecture/README.md (1 hunks)
  • docs/architecture/adr-039-epoched-staking.md (1 hunks)
  • docs/docs/build/abci/00-introduction.md (3 hunks)
  • docs/docs/build/abci/01-prepare-proposal.md (1 hunks)
  • docs/docs/build/abci/02-process-proposal.md (1 hunks)
  • docs/docs/build/abci/03-vote-extensions.md (2 hunks)
  • docs/docs/build/build.md (1 hunks)
  • docs/docs/build/building-apps/00-runtime.md (1 hunks)
  • docs/docs/build/building-apps/01-app-go-di.md (5 hunks)
  • docs/docs/build/building-apps/02-app-mempool.md (3 hunks)
  • docs/docs/build/building-apps/03-app-upgrade.md (3 hunks)
  • docs/docs/build/building-apps/05-app-testnet.md (1 hunks)
  • docs/docs/build/building-modules/00-intro.md (2 hunks)
  • docs/docs/build/building-modules/01-module-manager.md (0 hunks)
  • docs/docs/build/building-modules/15-depinject.md (1 hunks)
  • docs/docs/build/tooling/README.md (0 hunks)
  • docs/docs/learn/advanced/01-transactions.md (4 hunks)
  • docs/docs/learn/advanced/05-encoding.md (4 hunks)
  • docs/docs/learn/beginner/00-app-anatomy.md (1 hunks)
  • docs/docs/learn/intro/03-sdk-design.md (2 hunks)
  • docs/docs/learn/learn.md (1 hunks)
  • docs/docs/user/run-node/00-keyring.md (4 hunks)
  • docs/docs/user/run-node/01-run-node.md (9 hunks)
  • docs/docs/user/run-node/03-txs.md (2 hunks)
  • docs/docs/user/run-node/05-run-testnet.md (1 hunks)
  • docs/docs/user/run-node/06-run-production.md (2 hunks)
  • docs/docs/user/user.md (1 hunks)
  • docs/pre.sh (2 hunks)
  • docs/spec/SPEC_MODULE.md (1 hunks)
  • docs/spec/SPEC_STANDARD.md (3 hunks)
  • docs/spec/addresses/bech32.md (1 hunks)
  • docs/spec/fee_distribution/f1_fee_distr.tex (1 hunks)
  • proto/cosmos/authz/v1beta1/authz.proto (0 hunks)
  • proto/cosmos/authz/v1beta1/event.proto (0 hunks)
  • proto/cosmos/authz/v1beta1/genesis.proto (0 hunks)
  • proto/cosmos/authz/v1beta1/query.proto (0 hunks)
  • proto/cosmos/authz/v1beta1/tx.proto (0 hunks)
  • proto/cosmos/base/reflection/v2alpha1/reflection.proto (0 hunks)
  • proto/cosmos/consensus/v1/query.proto (1 hunks)
  • proto/cosmos/consensus/v1/tx.proto (0 hunks)
  • proto/cosmos/crypto/hd/v1/hd.proto (0 hunks)
  • proto/cosmos/crypto/keyring/v1/record.proto (0 hunks)
  • proto/cosmos/crypto/secp256r1/keys.proto (0 hunks)
  • proto/cosmos/epochs/module/v1/module.proto (0 hunks)
  • proto/cosmos/epochs/v1beta1/events.proto (0 hunks)
  • proto/cosmos/epochs/v1beta1/genesis.proto (0 hunks)
  • proto/cosmos/epochs/v1beta1/query.proto (1 hunks)
  • proto/cosmos/feegrant/v1beta1/feegrant.proto (0 hunks)
  • proto/cosmos/feegrant/v1beta1/genesis.proto (0 hunks)
  • proto/cosmos/feegrant/v1beta1/query.proto (0 hunks)
  • proto/cosmos/feegrant/v1beta1/tx.proto (2 hunks)
  • proto/cosmos/gov/v1/genesis.proto (0 hunks)
  • proto/cosmos/gov/v1/gov.proto (0 hunks)
  • proto/cosmos/gov/v1/query.proto (0 hunks)
  • proto/cosmos/gov/v1/tx.proto (1 hunks)
  • proto/cosmos/group/v1/events.proto (0 hunks)
  • proto/cosmos/group/v1/genesis.proto (0 hunks)
  • proto/cosmos/group/v1/query.proto (0 hunks)
  • proto/cosmos/group/v1/tx.proto (0 hunks)
  • proto/cosmos/group/v1/types.proto (0 hunks)
  • proto/cosmos/staking/v1beta1/authz.proto (0 hunks)
  • proto/cosmos/tx/v1beta1/service.proto (1 hunks)
  • proto/cosmos/upgrade/v1beta1/tx.proto (0 hunks)
  • runtime/module.go (4 hunks)
  • scripts/init-simapp.sh (1 hunks)
  • simapp/app_config.go (1 hunks)
  • store/rootmulti/store.go (7 hunks)
  • x/README.md (1 hunks)
  • x/auth/autocli.go (1 hunks)
  • x/auth/client/cli/tx_multisign.go (1 hunks)
  • x/auth/client/cli/tx_sign.go (2 hunks)
  • x/bank/autocli.go (3 hunks)
  • x/circuit/autocli.go (1 hunks)
  • x/consensus/autocli.go (2 hunks)
  • x/crisis/autocli.go (1 hunks)
  • x/distribution/README.md (2 hunks)
  • x/distribution/autocli.go (4 hunks)
  • x/gov/autocli.go (1 hunks)
  • x/gov/client/cli/prompt.go (1 hunks)
  • x/gov/client/cli/tx.go (1 hunks)
  • x/gov/client/cli/util.go (2 hunks)
  • x/mint/autocli.go (2 hunks)
  • x/protocolpool/README.md (1 hunks)
  • x/slashing/autocli.go (1 hunks)
⛔ Files not processed due to max files limit (4)
  • x/staking/autocli.go
  • x/staking/client/cli/tx.go
  • x/tx/signing/aminojson/internal/aminojsonpb/aminojson.proto
  • x/upgrade/autocli.go
💤 Files with no reviewable changes (28)
  • proto/cosmos/feegrant/v1beta1/query.proto
  • proto/cosmos/feegrant/v1beta1/feegrant.proto
  • proto/cosmos/authz/v1beta1/event.proto
  • proto/cosmos/feegrant/v1beta1/genesis.proto
  • proto/cosmos/gov/v1/genesis.proto
  • proto/cosmos/group/v1/query.proto
  • proto/cosmos/crypto/hd/v1/hd.proto
  • proto/cosmos/upgrade/v1beta1/tx.proto
  • proto/cosmos/group/v1/events.proto
  • proto/cosmos/crypto/secp256r1/keys.proto
  • proto/cosmos/gov/v1/gov.proto
  • docs/docs/build/tooling/README.md
  • proto/cosmos/group/v1/types.proto
  • proto/cosmos/authz/v1beta1/query.proto
  • proto/cosmos/authz/v1beta1/authz.proto
  • proto/cosmos/authz/v1beta1/tx.proto
  • proto/cosmos/crypto/keyring/v1/record.proto
  • proto/cosmos/group/v1/genesis.proto
  • proto/cosmos/epochs/module/v1/module.proto
  • proto/cosmos/epochs/v1beta1/events.proto
  • proto/cosmos/gov/v1/query.proto
  • proto/cosmos/consensus/v1/tx.proto
  • proto/cosmos/staking/v1beta1/authz.proto
  • proto/cosmos/epochs/v1beta1/genesis.proto
  • docs/docs/build/building-modules/01-module-manager.md
  • proto/cosmos/authz/v1beta1/genesis.proto
  • proto/cosmos/base/reflection/v2alpha1/reflection.proto
  • proto/cosmos/group/v1/tx.proto
🧰 Additional context used
🧬 Code Graph Analysis (17)
baseapp/test_helpers.go (1)
types/context.go (1)
  • NewContext (125-142)
client/context.go (4)
client/cometbft.go (1)
  • CometRPC (12-36)
crypto/keyring/keyring.go (1)
  • Keyring (59-106)
client/tx_config.go (1)
  • TxConfig (30-37)
client/account_retriever.go (1)
  • AccountRetriever (19-24)
x/auth/autocli.go (2)
testutil/integration/example_test.go (1)
  • Example (30-116)
version/version.go (1)
  • AppName (33-33)
x/slashing/autocli.go (2)
version/version.go (1)
  • AppName (33-33)
testutil/integration/example_test.go (1)
  • Example (30-116)
x/gov/client/cli/util.go (1)
x/gov/client/utils/query.go (1)
  • Proposer (21-24)
baseapp/abci_test.go (3)
baseapp/baseapp_test.go (1)
  • NewBaseAppSuite (64-94)
baseapp/options.go (1)
  • SetChainID (111-113)
store/rootmulti/store.go (1)
  • Store (60-83)
x/gov/autocli.go (2)
version/version.go (1)
  • AppName (33-33)
testutil/integration/example_test.go (1)
  • Example (30-116)
x/auth/client/cli/tx_sign.go (1)
x/auth/client/tx.go (1)
  • SignTx (34-66)
client/v2/autocli/flag/builder.go (4)
x/tx/signing/context.go (1)
  • TypeResolver (19-22)
client/v2/autocli/builder.go (1)
  • Builder (11-22)
client/v2/autocli/flag/messager_binder.go (1)
  • MessageBinder (25-37)
client/v2/autocli/flag/interface.go (1)
  • Type (11-17)
client/v2/autocli/msg.go (4)
client/v2/internal/flags/flags.go (1)
  • FlagNoProposal (19-19)
x/gov/client/cli/util.go (2)
  • AddGovPropFlagsToCmd (129-135)
  • ReadGovPropCmdFlags (141-178)
x/auth/types/account.go (1)
  • NewModuleAddress (158-160)
client/tx/tx.go (1)
  • GenerateOrBroadcastTxCLI (26-33)
x/bank/autocli.go (2)
testutil/integration/example_test.go (1)
  • Example (30-116)
version/version.go (2)
  • AppName (33-33)
  • Name (31-31)
x/circuit/autocli.go (2)
testutil/integration/example_test.go (1)
  • Example (30-116)
version/version.go (1)
  • AppName (33-33)
x/consensus/autocli.go (2)
testutil/integration/example_test.go (1)
  • Example (30-116)
version/version.go (1)
  • AppName (33-33)
x/distribution/autocli.go (2)
testutil/integration/example_test.go (1)
  • Example (30-116)
version/version.go (1)
  • AppName (33-33)
client/v2/autocli/flag/legacy_dec.go (3)
client/v2/autocli/flag/builder.go (1)
  • Builder (42-62)
client/v2/autocli/flag/interface.go (2)
  • Value (20-23)
  • Type (11-17)
math/legacy_dec.go (1)
  • LegacyNewDecFromStr (158-206)
runtime/module.go (3)
runtime/builder.go (1)
  • AppBuilder (17-19)
store/types/store.go (2)
  • TransientStoreKey (414-416)
  • NewTransientStoreKey (420-424)
core/store/service.go (1)
  • TransientStoreService (24-27)
x/mint/autocli.go (2)
version/version.go (1)
  • AppName (33-33)
testutil/integration/example_test.go (1)
  • Example (30-116)
🪛 markdownlint-cli2 (0.17.2)
docs/docs/build/building-apps/05-app-testnet.md

79-79: Hard tabs
Column: 1

(MD010, no-hard-tabs)

docs/docs/user/run-node/03-txs.md

203-203: Hard tabs
Column: 1

(MD010, no-hard-tabs)

x/protocolpool/README.md

17-17: Emphasis used instead of a heading
null

(MD036, no-emphasis-as-heading)


21-21: Emphasis used instead of a heading
null

(MD036, no-emphasis-as-heading)

docs/architecture/adr-039-epoched-staking.md

47-47: Bare URL used
null

(MD034, no-bare-urls)

docs/docs/learn/beginner/00-app-anatomy.md

54-54: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


55-55: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

CHANGELOG.md

59-59: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

docs/docs/user/run-node/01-run-node.md

189-189: Bare URL used
null

(MD034, no-bare-urls)

x/distribution/README.md

241-241: Hard tabs
Column: 1

(MD010, no-hard-tabs)


242-242: Hard tabs
Column: 1

(MD010, no-hard-tabs)


243-243: Hard tabs
Column: 1

(MD010, no-hard-tabs)


244-244: Hard tabs
Column: 1

(MD010, no-hard-tabs)


245-245: Hard tabs
Column: 1

(MD010, no-hard-tabs)


246-246: Hard tabs
Column: 1

(MD010, no-hard-tabs)


247-247: Hard tabs
Column: 1

(MD010, no-hard-tabs)


248-248: Hard tabs
Column: 1

(MD010, no-hard-tabs)


269-269: Emphasis used instead of a heading
null

(MD036, no-emphasis-as-heading)


271-271: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


273-273: Emphasis used instead of a heading
null

(MD036, no-emphasis-as-heading)


275-275: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


276-276: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)

🪛 LanguageTool
docs/docs/learn/learn.md

[typographical] ~7-~7: Consider adding a comma after ‘finally’ for more clarity.
Context: ...ockchains, Blockchain Architecture, and finally we begin to explore the main components...

(RB_LY_COMMA)

docs/docs/user/run-node/00-keyring.md

[typographical] ~37-~37: Consider isolating this adverbial phrase with commas.
Context: ...DE_Wallet_Manager). Whilst the former is in fact a libsecret convenient frontend, the ...

(IN_FACT_COMMA_2)

docs/docs/build/building-apps/03-app-upgrade.md

[uncategorized] ~25-~25: The abbreviation “e.g.” (= for example) requires two periods.
Context: ...tall a specially named upgrade handler (eg. "testnet-v2" or even "v0.40.0"). An upg...

(E_G)

docs/docs/build/abci/02-process-proposal.md

[uncategorized] ~10-~10: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...ans if ProcessProposal panics or fails and we reject, all honest validator process...

(COMMA_COMPOUND_SENTENCE)

client/v2/README.md

[typographical] ~131-~131: Consider adding two commas here.
Context: ...cli.RpcCommandOptionsstruct. Users can however use the--no-proposal` flag to disable...

(HOWEVER_COMMA)

docs/docs/user/run-node/06-run-production.md

[style] ~14-~14: ‘many different ways’ might be wordy. Consider a shorter alternative.
Context: ...server up securely. :::note There are many different ways to secure a server and your node, the d...

(EN_WORDINESS_PREMIUM_MANY_DIFFERENT_WAYS)

docs/docs/build/abci/00-introduction.md

[style] ~22-~22: ‘in conjunction with’ might be wordy. Consider a shorter alternative.
Context: ...provides PrepareProposalHandler, used in conjunction with an application specific mempool. A cust...

(EN_WORDINESS_PREMIUM_IN_CONJUNCTION_WITH)


[uncategorized] ~22-~22: You might be missing the article “an” here.
Context: ...ool. A custom handler can be written by application developer, if a noop handler provided, ...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)

docs/architecture/PROCESS.md

[uncategorized] ~47-~47: Loose punctuation mark.
Context: ... ABANDONED ``` * DRAFT: [optional] an ADR which is a work in pr...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~48-~48: Loose punctuation mark.
Context: ... a Draft Pull Request form. * PROPOSED: an ADR covering a full solution archite...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~49-~49: Loose punctuation mark.
Context: .... * LAST CALL <date for the last call>: [optional] Notify that we are close to ...

(UNLIKELY_OPENING_PUNCTUATION)


[style] ~49-~49: Consider replacing ‘give’ with a different word to let your writing stand out.
Context: ... has been reached, and we still want to give it a time to let the community react or an...

(GIVE_TIME_STYLE)


[uncategorized] ~50-~50: Loose punctuation mark.
Context: ...community react or analyze. * ACCEPTED: ADR which will represent a currently im...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~51-~51: Loose punctuation mark.
Context: ...mented architecture design. * REJECTED: ADR can go from PROPOSED or ACCEPTED to...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~52-~52: Loose punctuation mark.
Context: ...ill decide so. * SUPERSEDED by ADR-xxx: ADR which has been superseded by a new ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/architecture/adr-039-epoched-staking.md

[uncategorized] ~46-~46: This expression is usually spelled with a hyphen.
Context: ...d to avoid problems, as follows: * For threshold based cryptography, this setting will have th...

(BASED_HYPHEN)


[uncategorized] ~46-~46: This expression is usually spelled with a hyphen.
Context: ...enefit from additional security. If the threshold based cryptography blocks liveness of the cha...

(BASED_HYPHEN)


[style] ~48-~48: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...thub.com/tendermint/spec/issues/199). * For fairness of deterministic leader electi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~48-~48: Generally speaking, “themself” is only acceptable when referring to a singular entity (such as the singular usage of “they”, which is the preferred pronoun for many non-binary people). If “themself” refers to a plural entity (such as “everybody”, or the standard usage of “they”), you should use “themselves”.
Context: ...ators can adversarially elect to remove themself from the set of proposers. From a secur...

(THEMSELF)


[misspelling] ~48-~48: Did you mean “side effects” (=adverse effect, unintended consequence)? Open compounds are not hyphenated.
Context: ...g a proposer can have many advantageous side-effects in chains with complex state machines. ...

(AFFECT_EFFECT)

docs/docs/build/building-modules/00-intro.md

[grammar] ~43-~43: There seems to be a noun/verb agreement error. Did you mean “does not” or “did not”?
Context: ...needed for their specific use case that do not exist yet, and will use existing module...

(SINGULAR_NOUN_AGREEMENT_WHO_DO_NOT)


[uncategorized] ~58-~58: A punctuation mark might be missing here.
Context: ...sing the store(s) of the module via the keeper. * **Specializa...

(AI_EN_LECTOR_MISSING_PUNCTUATION)

docs/docs/build/building-apps/00-runtime.md

[uncategorized] ~41-~41: Loose punctuation mark.
Context: ...he following key settings: * app_name: The name of the application * `begin_bl...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~52-~52: A comma may be missing after the conjunctive/linking adverb ‘However’.
Context: ... uses the module name as the store key. However it provides a flexible store key config...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)


[uncategorized] ~55-~55: Loose punctuation mark.
Context: ...ration through: * override_store_keys: Allows customizing module store keys * ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~95-~95: You might be missing the article “the” here.
Context: ...possible. ### 3. Service Registration Runtime registers all [core services](https://p...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~97-~97: You might be missing the article “the” here.
Context: ...vent manager, context, and logger`. Runtime ensures that services are scoped to the...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[grammar] ~104-~104: Use the plural noun, or add a word such as ‘the’ or ‘some’ in front of ‘other’.
Context: ...time provides automatic registration of other essential (i.e., gRPC routes) services available ...

(OTHER_NN)

docs/docs/build/building-apps/01-app-go-di.md

[uncategorized] ~43-~43: The preposition ‘in’ seems more likely in this position.
Context: ...: In this configuration, the order at which the modules are defined in PreBlo...

(AI_HYDRA_LEO_REPLACE_AT_IN)


[grammar] ~70-~70: Consider using either the past participle “embedded” or the present participle “embedding” here.
Context: ...r JSON. The configuration can then be embed with go:embed and read with [`appconf...

(BEEN_PART_AGREEMENT)


[uncategorized] ~152-~152: A comma may be missing after the conjunctive/linking adverb ‘Otherwise’.
Context: ...nually constructed instead of injected. Otherwise it will miss the non depinject modules ...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)

docs/docs/learn/beginner/00-app-anatomy.md

[style] ~57-~57: Consider a shorter alternative to avoid wordiness.
Context: ...rialize and deserialize data structures in order to store them, as stores can only persist ...

(IN_ORDER_TO_PREMIUM)


[uncategorized] ~60-~60: Possible missing comma found.
Context: ...ion from simapp, the Cosmos SDK's own app used for demo and testing purposes: ``...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/spec/addresses/bech32.md

[uncategorized] ~19-~19: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ... form. To convert between other binary representation of addresses and keys, it is important ...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)

docs/docs/user/run-node/01-run-node.md

[locale-violation] ~158-~158: In American English, “take a look” is more commonly used.
Context: ...n localnet with Docker Compose, you can have a look at the Cosmos SDK's [`docker-compose.ym...

(HAVE_A_LOOK)

UPGRADING.md

[uncategorized] ~93-~93: It seems likely that a singular genitive (’s) apostrophe is missing.
Context: ...l x/epochs module provides Cosmos SDK modules functionality to register and execute c...

(AI_HYDRA_LEO_APOSTROPHE_S_XS)

docs/docs/learn/advanced/01-transactions.md

[uncategorized] ~131-~131: The preposition “to” seems more likely in this position.
Context: ...interface contains data closely related with the generation of transactions, which a...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)


[uncategorized] ~138-~138: Loose punctuation mark.
Context: ...ncluded in the transaction. * GasLimit, option chosen by the users for how to c...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~139-~139: Loose punctuation mark.
Context: ...much gas they will need to pay. * Memo, a note or comment to send with the tran...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~140-~140: Loose punctuation mark.
Context: ...send with the transaction. * FeeAmount, the maximum amount the user is willing ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~141-~141: Loose punctuation mark.
Context: ...illing to pay in fees. * TimeoutHeight, block height until which the transactio...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~142-~142: Loose punctuation mark.
Context: ... the transaction is valid. * Unordered, an option indicating this transaction m...

(UNLIKELY_OPENING_PUNCTUATION)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Summary
🔇 Additional comments (183)
proto/cosmos/epochs/v1beta1/query.proto (3)

7-7: New Import for Versioning Metadata
The addition of import "cosmos_proto/cosmos.proto"; correctly brings in versioning metadata support. Please ensure that the dependency is available in your build system and that its versioning semantics are in line with your project requirements.


15-16: Add RPC Version Annotation for EpochInfos
The new option option (cosmos_proto.method_added_in) = "cosmos-sdk 0.53"; for the EpochInfos RPC method is a clear way to document when the method was added. Verify that the version string reflects the intended API version and that it remains in sync with related documentation.


20-21: Version Annotation for CurrentEpoch RPC Method
Similarly, the added option for the CurrentEpoch RPC method reinforces documentation consistency. Ensure that this annotation is maintained across future modifications and that any changes in API versions are appropriately updated in both code and documentation.

docs/spec/addresses/bech32.md (1)

19-19: Fixed typographical error.

Corrected the spelling error from "covert" to "convert" for improved documentation clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~19-~19: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ... form. To convert between other binary representation of addresses and keys, it is important ...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)

docs/spec/fee_distribution/f1_fee_distr.tex (1)

105-105: Fixed typographical error.

Corrected the spelling error from "occured" to "occurred" in the slashing example description.

scripts/init-simapp.sh (1)

10-10: Added default keyring key name configuration.

This line sets "alice" as the default key name for the keyring, eliminating the need to use the --from flag when signing transactions in the simapp environment. This is part of a broader effort to improve the user experience by reducing command verbosity.

x/gov/client/cli/tx.go (1)

30-31: Added expedited proposal flag constant.

The new FlagExpedited constant supports the expedited proposal feature in the governance module. This allows proposals to be processed more quickly through the governance pipeline when needed.

The flag is already referenced in the proposal example JSON on line 116, so this addition properly defines the constant that was previously being used.

docs/docs/user/run-node/05-run-testnet.md (1)

37-37: Typo Correction in "gentxs" Section.
The description now correctly uses "initialization" (instead of the previously misspelled version) to explain how genesis transactions are handled.

docs/docs/build/building-modules/15-depinject.md (1)

124-124: Updated Hyperlink for App Wiring Documentation.
The link has been modified to point to [overview of app_go_di] instead of the old reference, ensuring users are directed to the correct documentation page.

x/README.md (1)

43-45: Absolute URL Update for Release Process.
The relative link for the release process has been replaced with an absolute URL, improving accessibility and ensuring that the reference remains valid regardless of context.

x/gov/client/cli/prompt.go (1)

56-57: Clarifying Future Enhancements in Prompt.
The newly added TODO comments regarding using a proto message for autocli integration and simplifying the address logic provide useful guidance for future improvements.

x/crisis/autocli.go (1)

25-25: Documentation update reflects module deprecation status

The comment update clearly indicates that the Crisis module is deprecated, which helps developers understand why the UpdateParams RPC method is skipped.

client/prompt_validation.go (1)

50-50: Improved documentation clarity

The comment now more accurately describes what the function does - it validates that the input string contains valid sdk.Coins rather than suggesting it validates that the input itself is sdk.Coins.

docs/spec/SPEC_MODULE.md (2)

27-27: Standardized American English spelling

Changed "marshalled" to "marshaled" to maintain consistent American English spelling throughout the documentation.


29-29: Standardized American English spelling

Changed "behaviour(s)" to "behavior(s)" to maintain consistent American English spelling throughout the documentation.

x/auth/client/cli/tx_multisign.go (1)

76-77:

Details

❓ Verification inconclusive

Auto-setting the --from flag to the multisig key name

This change improves usability by automatically setting the --from flag to match the multisig key name (args[1]) provided in the command arguments.

While this change is useful, it's ignoring error handling. Let's verify if this is acceptable by checking how similar patterns are handled elsewhere:


🏁 Script executed:

#!/bin/bash
# Check how error handling is done for Flags().Set elsewhere in the codebase
rg "Flags\(\)\.Set.*_\s*=" -A 2 -B 2

Length of output: 38


Manual Verification Recommended: Assessing Error Ignorance in Flag Setting

The change to automatically set the --from flag (using _ = cmd.Flags().Set(flags.FlagFrom, args[1])) clearly improves usability by aligning the flag with the multisig key name from the command arguments. In my verification, I attempted to locate similar usages of Flags().Set that handle errors explicitly, but no instances were found—even with broader searches—indicating that error handling for this operation may not be consistently applied in the codebase.

  • File: x/auth/client/cli/tx_multisign.go (Lines 76–77)
  • Observation: The error returned from cmd.Flags().Set is discarded.
  • Inference: Since no alternative error-handling patterns were detected for flag settings, this practice appears to be in line with the existing code.

Action:
Please perform a manual review to confirm that ignoring errors from cmd.Flags().Set is acceptable under all expected circumstances. If there’s any potential for failure that could impact command execution, consider adding appropriate error handling.

docs/architecture/adr-039-epoched-staking.md (1)

48-48: Stake Derivative Design Note

The note regarding staking derivative design concisely states that no additional state is introduced by querying the slash occurrence. This is clear and aligns with the ADR’s context.

🧰 Tools
🪛 LanguageTool

[style] ~48-~48: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...thub.com/tendermint/spec/issues/199). * For fairness of deterministic leader electi...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~48-~48: Generally speaking, “themself” is only acceptable when referring to a singular entity (such as the singular usage of “they”, which is the preferred pronoun for many non-binary people). If “themself” refers to a plural entity (such as “everybody”, or the standard usage of “they”), you should use “themselves”.
Context: ...ators can adversarially elect to remove themself from the set of proposers. From a secur...

(THEMSELF)


[misspelling] ~48-~48: Did you mean “side effects” (=adverse effect, unintended consequence)? Open compounds are not hyphenated.
Context: ...g a proposer can have many advantageous side-effects in chains with complex state machines. ...

(AFFECT_EFFECT)

docs/docs/user/user.md (2)

1-3: YAML Front Matter Validation

The YAML front matter is correctly defined with a sidebar_position set to 0, ensuring proper ordering in the documentation sidebar.


4-11: User Guides Content Review

The new "User Guides" section is well structured and provides clear, actionable links for topics like key management, node deployment, and CLI usage. Please ensure that all referenced markdown files (e.g., 00-keyring.md, 01-run-node.md, 02-interact-node.md) exist and are correctly linked.

docs/pre.sh (1)

47-47: Adding New Upgrade Guide Documentation

The new step to copy ../UPGRADE_GUIDE.md to ./docs/build/migrations/03-upgrade-guide.md enhances clarity by separating upgrade instructions into distinct references. This change appears consistent with the revised docs structure.

docs/docs/user/run-node/06-run-production.md (1)

51-51: Firewall Section Update

The updated Firewall section clearly warns against leaving all ports open and recommends best practices as suggested by CometBFT. Ensure that the URL (https://github.com/cometbft/cometbft) is fully qualified and clickable.

client/config/toml.go (1)

22-23: LGTM! Clear enhancement to client configuration.

Adding a default key name option to the client configuration is a useful feature that will improve user experience by eliminating the need to specify the --from flag repeatedly.

proto/cosmos/tx/v1beta1/service.proto (1)

101-101: Good improvement to field versioning metadata.

Replacing the comment-based version annotation with a formal protocol buffer option is a cleaner approach that enables programmatic detection of field versioning.

docs/docs/build/abci/03-vote-extensions.md (2)

10-11: Documentation improvements for ABCI reference.

The text clarification and updated version reference improve the documentation accuracy.


31-31: Updated link to appropriate documentation.

The link to the vote extensions walkthrough now points to a more appropriate documentation page.

docs/docs/user/run-node/00-keyring.md (2)

11-11: Improved terminology clarity.

The use of "key pairs" instead of "keypairs" is more precise and consistent with common terminology.


100-100: Fixed spacing issue.

Removed extra space after "Kernel Key Retention Service*".

docs/docs/learn/intro/03-sdk-design.md (3)

42-53: Great improvement to the visualization!

The updated Mermaid flowchart provides a much clearer visual representation of the transaction processing flow compared to the previous text-based diagram. The flowchart clearly shows how transactions move from CometBFT through the application's various modules and back.


62-62: Correct grammatical update

The change from "Proof-Of-Stake" to "Proof-of-Stake" follows proper capitalization conventions.


64-64: Improved phrasing for clarity

The rephrasing of this sentence makes it clearer that users can build their own custom modules in addition to using the existing ones.

client/config/config.go (3)

16-16: Good default for new configuration field

The empty string is an appropriate default value for the new KeyringDefaultKeyName field, making it an optional configuration parameter.


26-26: Useful new configuration option

Adding the KeyringDefaultKeyName field to the ClientConfig struct is a good enhancement that will allow users to specify a default key name, eliminating the need to use the --from flag in many cases.


100-101: Proper integration of new configuration option

The update to ReadFromClientConfig correctly integrates the new KeyringDefaultKeyName field into the client context, ensuring it's properly passed along to the appropriate components.

docs/architecture/README.md (2)

39-39: Grammar correction

The addition of commas when listing the RFC 2119 keywords improves the readability and follows proper grammatical rules.


63-89:

Details

❓ Verification inconclusive

ADR entries removed from the list

The removal of entries for ADR 067, ADR 069, and ADR 074 from the list of proposed ADRs suggests these ADRs might have been merged, rejected, or moved elsewhere. This is a legitimate update to the documentation.


🏁 Script executed:

#!/bin/bash
# Check the status of the removed ADRs to understand why they were removed from the list

# Check if the ADR files still exist in the repository
echo "Checking if the ADR files still exist:"
fd --type f "adr-067-simulator-v2.md|adr-069-gov-improvements.md|adr-074-implicit-msg-signers.md" docs/architecture/

# If they exist, check if they've been moved or possibly marked with a different status
echo "Checking if the ADRs might have been accepted (moved from 'Proposed' to 'Accepted'):"
grep -A 5 -B 5 "ADR 067\|ADR 069\|ADR 074" docs/architecture/README.md

Length of output: 469


Documentation Update: Confirmed Removal of ADR 067, ADR 069, and ADR 074

The updated documentation in docs/architecture/README.md no longer lists ADR 067, ADR 069, and ADR 074, which supports the notion that these proposals have been merged, rejected, or relocated. A preliminary search in the repository did not reveal any remaining references to these ADRs, indicating that the removals are intentional.

Please ensure a manual verification to confirm that these changes were deliberate and that no residual references exist elsewhere.

crypto/keyring/keyring.go (1)

952-954: Improved error message for better user experience

Adding a more specific error message when no key name or address is provided is a user-friendly enhancement. The message clearly indicates what might be wrong (missing the --from flag) which helps users troubleshoot the issue more easily.

This change aligns well with the addition of the KeyringDefaultKeyName field in the client configuration, creating a more cohesive user experience around key management.

baseapp/test_helpers.go (1)

63-67: Good fix for addressing race conditions in state access.

The changes to NewContextLegacy replace direct access to state variables with calls to the synchronized getState method. This is a proper way to prevent race conditions by centralizing access through a synchronized accessor method.

This appears to directly address the PR's objective of fixing the "race condition between Commit and CreateQueryContext" by ensuring thread-safe access to application state.

docs/spec/SPEC_STANDARD.md (1)

3-78: Documentation improvements approved.

The changes improve grammar and consistency throughout the document by fixing article usage ("An SDK" instead of "A SDK"), standardizing terminology ("subsection" instead of "sub-section"), and making other minor grammatical corrections.

docs/architecture/PROCESS.md (1)

4-52: Documentation improvements approved.

The changes correct grammatical issues and improve clarity throughout the document, including fixing the spelling of "synchronous", improving sentence structure, and ensuring consistent punctuation.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~47-~47: Loose punctuation mark.
Context: ... ABANDONED ``` * DRAFT: [optional] an ADR which is a work in pr...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~48-~48: Loose punctuation mark.
Context: ... a Draft Pull Request form. * PROPOSED: an ADR covering a full solution archite...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~49-~49: Loose punctuation mark.
Context: .... * LAST CALL <date for the last call>: [optional] Notify that we are close to ...

(UNLIKELY_OPENING_PUNCTUATION)


[style] ~49-~49: Consider replacing ‘give’ with a different word to let your writing stand out.
Context: ... has been reached, and we still want to give it a time to let the community react or an...

(GIVE_TIME_STYLE)


[uncategorized] ~50-~50: Loose punctuation mark.
Context: ...community react or analyze. * ACCEPTED: ADR which will represent a currently im...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~51-~51: Loose punctuation mark.
Context: ...mented architecture design. * REJECTED: ADR can go from PROPOSED or ACCEPTED to...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~52-~52: Loose punctuation mark.
Context: ...ill decide so. * SUPERSEDED by ADR-xxx: ADR which has been superseded by a new ...

(UNLIKELY_OPENING_PUNCTUATION)

docs/docs/build/abci/01-prepare-proposal.md (3)

27-27: Text improvement approved.

Removing redundancy from "you must be sure to ensure" to simply "you must ensure" makes the instruction clearer.


32-36: Documentation reference updates approved.

The URL reference has been updated to point to a newer version of the SDK (v0.53.0-rc.2), and the file reference has been updated from app.go to app_di.go with the correct path. These updates help keep documentation in sync with code changes.


40-41: Code formatting improvement approved.

The indentation in the code example has been corrected, improving readability.

docs/docs/build/abci/02-process-proposal.md (4)

9-9: Clearer determinism requirement

The change from "MAY NOT be non-deterministic" to "MUST be deterministic" provides a clearer and more direct requirement for implementing ProcessProposal. This positive change eliminates any ambiguity around the determinism requirement.


11-12: Improved clarity on ProcessProposal failure consequences

The updated explanation better clarifies what happens when ProcessProposal fails, specifically mentioning that honest validators will prevote nil and CometBFT will initiate a new round.


17-17: Updated reference link

The reference link has been updated to point to a newer version of the code (v0.53.0-rc.2 instead of v0.50.0-alpha.0), which helps keep documentation in sync with the latest implementation.


20-21: Correct filename reference

The documentation now correctly references app_di.go instead of app.go, which aligns with the actual file structure where application developers should modify the implementation.

docs/docs/build/abci/00-introduction.md (4)

5-5: Fixed ABCI acronym and improved clarity

The correction from "ABC" to "ABCI" and restructuring of the sentence clarifies that CometBFT 0.38 included ABCI 2.0, which added several new methods.


7-7: Consistent phrasing

The change from "introduced during ABCI 2.0" to "introduced in ABCI 2.0" improves language consistency.


20-20: Clearer subject reference

Changing "Based on their voting power" to "Based on validator voting power" makes it explicitly clear who the voting power belongs to.


51-51: Added period for grammatical correctness

Adding a period at the end of the FinalizeBlock description makes the documentation grammatically consistent with other sections.

proto/cosmos/consensus/v1/query.proto (2)

6-6: Added import for cosmos_proto

The addition of the cosmos_proto import is necessary to support the new method versioning annotation.


14-15: Added method versioning metadata

The reformatted HTTP path option and new cosmos_proto annotation provide important versioning information, indicating this method was added in cosmos-sdk 0.47. This is valuable for compatibility and deprecation tracking.

client/context.go (3)

40-40: Added KeyringDefaultKeyName field to Context struct

This new field allows the Context to store a default key name, which is a valuable usability enhancement.


184-188: Added WithKeyringDefaultKeyName method

The new method follows the established pattern of all other "With" methods in the Context struct, allowing for a fluent interface when setting the default key name.


392-395: Enhanced GetFromFields to use default key name

This enhancement improves user experience by using the specified default key when no explicit key is provided. The notification to the user about using the default key is also helpful for transparency.

This change aligns with the PR objective of addressing race conditions between Commit and CreateQueryContext by providing a more stable default behavior when no key is specified.

docs/docs/user/run-node/03-txs.md (2)

182-214: Well-structured new section on unordered transactions!

This new section clearly explains the unordered transactions feature added in Cosmos SDK v0.53.0, including implementation details and important considerations like the additional gas cost and unique timestamp requirements. The code examples are helpful and well-documented.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

203-203: Hard tabs
Column: 1

(MD010, no-hard-tabs)


306-306: Minor text improvement for clarity

The change from "The preferred way..." to just "The preferred way..." improves the clarity of this statement about transaction broadcasting methods.

client/v2/README.md (2)

113-113: Minor capitalization change in header

The header capitalization has been updated from "Module Wiring & Customization" to "Module wiring & Customization" for consistency with document style.


162-203: Great addition explaining flattened fields in positional arguments

This new section clearly explains how to use dot notation to access nested message fields as positional arguments, making the CLI more user-friendly. The protobuf example and configuration samples are particularly helpful for understanding the implementation.

docs/docs/build/building-modules/00-intro.md (3)

26-41: Improved visualization with mermaid diagram

The replacement of a text-based flowchart with a mermaid diagram significantly improves the visualization of the transaction flow in Cosmos SDK applications. The diagram clearly shows how transactions are routed through the various modules and processed by the application.


46-46: Terminology update: "Modules as super-users"

The terminology has been updated from "Modules as Sudo" to "Modules as super-users" for clarity and to avoid technical jargon.


58-58: Updated reference link for consistency

The reference link has been updated from "#main-components-of-sdk-modules" to "#main-components-of-cosmos-sdk-modules" to match the actual section heading in the document.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~58-~58: A punctuation mark might be missing here.
Context: ...sing the store(s) of the module via the keeper. * **Specializa...

(AI_EN_LECTOR_MISSING_PUNCTUATION)

x/auth/autocli.go (1)

83-89: Enhanced UpdateParams command with governance proposal support

The UpdateParams RPC command has been significantly improved by adding detailed usage information and enabling it as a governance proposal. This change follows a pattern seen in other modules to provide a consistent approach to parameter updates through governance.

The example provided is clear and demonstrates the expected JSON format for the parameters. This will help users understand how to structure their parameter update proposals correctly.

docs/docs/learn/advanced/05-encoding.md (4)

94-94: Good reference update to ADR-020.
Linking directly to the release branch is helpful for ensuring users read the matching version of the documentation.


115-115: Clear improvement to referencing ADR-019.
Switching to the absolute link improves clarity for readers referencing Protobuf state encoding details.


184-184: Consistent usage of absolute links for ADR references.
No issues found; this aids in documentation maintainability.


249-249: Properly referencing ADR-023.
This is aligned with the other references and promotes consistent documentation.

baseapp/baseapp.go (6)

121-124: Helpful documentation note about accessing states.
Adding this comment clarifies how to avoid race conditions when manipulating states.


501-502: Locking and unlocking around setState.
Using a write lock here properly secures shared state updates.


523-543: New clearState function to reset states.
Ensuring we acquire the lock for setting these pointers to nil prevents race conditions when clearing states.


747-748: Ensuring concurrency safety in preBlock.
Using getState for concurrent access is aligned with the new mutex strategy.


774-774: Consistent usage of getState in beginBlock.
Locking the state before passing it to blockers further prevents data races.


129-129:

Details

✅ Verification successful

Introduction of RWMutex for concurrency control.
This is a solid approach to preventing data races on shared state.

Please verify that no direct accesses to these state fields bypass locking. You can run the following script to search for direct usage without getState/setState calls:


🏁 Script executed:

#!/bin/bash
# Search for direct references to checkState, prepareProposalState, processProposalState, finalizeBlockState
rg 'checkState|prepareProposalState|processProposalState|finalizeBlockState' -A 3 -B 3

Length of output: 45779


Focus: Verified proper encapsulation of state fields with RWMutex.

The grep output confirms that accesses to the volatile states (checkState, prepareProposalState, processProposalState, finalizeBlockState) occur exclusively via the getter and setter methods defined in baseapp/baseapp.go. The inline comments also reinforce that direct access is disallowed, ensuring that the stateMut lock is consistently used to protect these fields.

No instances were found where these state fields were accessed directly without locking.

x/bank/autocli.go (5)

4-4: Import of fmt is fine.
No concerns here; standard usage.


9-10: Import updates for bankv1beta1 and version.
These additions look correct, supporting reference to the app version in command examples.


94-94: EnhanceCustomCommand set to true.
Enabling custom command enhancements can help with CLI usability.


107-112: New RPC command definition for UpdateParams.
Great addition for governance proposals, providing a clear usage example with version-based placeholders.


115-124: SetSendEnabled command for governance.
This proposal-based approach, including flag options for deleting entries, is well-structured and user-friendly.

baseapp/abci_test.go (1)

2528-2574: Well-structured test for race condition between Commit and Query operations.

This test effectively simulates concurrent query creation during block finalization and committing, addressing a race condition scenario. The atomic counter and context cancellation provide a clean way to manage and track concurrent operations.

I would suggest adding a brief comment explaining the specific race condition this test is addressing to improve test documentation. Also, consider using t.Parallel() to allow this test to run concurrently with other tests for better test suite performance.

UPGRADE_GUIDE.md (1)

1-481: Comprehensive upgrade guide with clear instructions.

The guide effectively covers both the required change and optional features, with detailed instructions for manual and DI wiring approaches. The warning about x/protocolpool module's impact on x/distribution functionality is particularly important.

The document is well-structured and includes detailed examples. For additional clarity, you might consider adding a brief section explaining the benefits of each optional module to help users make informed decisions about which features to implement.

baseapp/abci.go (10)

67-68: Proper state access via getter method.

Using a centralized getter method ensures proper synchronization for state access.


85-86: Consistent pattern for state access.

Using the state getter method consistently throughout the code improves maintainability and ensures thread-safety.

Also applies to: 92-93


105-107: Consistent state access for context update.

Using the getter method to access final state context for updating with gas meter and passing to initChainer.


416-433: Consistent pattern for proposal context creation.

The state getter is consistently used for all context manipulations in PrepareProposal handler, properly maintaining state access patterns.


505-522: Thread-safe state access in ProcessProposal.

The refactoring ensures that all state access is properly synchronized through the getter method.


738-742: Protected state initialization.

Ensures proper state initialization is synchronized in internalFinalizeBlock.


765-773: Thread-safe gas meter handling.

Gas meter setup is synchronized via state getter methods, preventing potential race conditions.


798-800: Gas meter reset through proper state access.

Consistently uses the state getter for gas meter reset before transaction processing.


837-842: Consistent tracing context and endBlock handling.

The changes maintain the pattern of using state getters for all operations, ensuring thread safety.


943-984: Safe state access in Commit method.

The commit process now safely accesses state through getters and properly clears finalize state.

x/slashing/autocli.go (1)

49-56: Enhanced CLI command for UpdateParams governance proposals.

The improved command definition now includes detailed usage information, descriptions, and example formatting. This makes it more accessible for users to submit governance proposals to update slashing parameters.

The example could be more specific by providing a complete sample JSON instead of using ellipsis, which would make it easier for users to understand the expected format.

x/auth/client/cli/tx_sign.go (2)

272-272: Confirm usage of clientCtx.FromName.
This line now relies on the FromName field in the client context instead of the --from flag. Ensure that any logic that sets or populates clientCtx.FromName is correct and handles edge cases (e.g., default key name or no key name).


458-458: Double-check clientCtx.FromName usage for signing.
Replacing the previously retrieved from parameter with clientCtx.FromName may introduce unexpected behavior if no default key name is configured. Verify that the flow correctly populates FromName in all scenarios.

store/rootmulti/store.go (1)

13-13: LGTM on atomic pointer usage for lastCommitInfo.
These changes safely transition from a pointer to an atomic.Pointer, enhancing concurrency protection. The loading and storing mechanisms appear correctly applied.

Also applies to: 63-63, 300-300, 449-450, 458-458, 462-462, 467-467, 491-493, 495-495, 518-518

x/gov/client/cli/util.go (3)

137-141: Function signature refactored for better modularity

The function has been renamed from ReadGovPropFlags to ReadGovPropCmdFlags with a significant change in the parameter signature. Instead of accepting a client.Context, it now accepts a direct proposer string. This decouples the function from the client context dependency and makes it more flexible for various calling scenarios.


175-175: Simplification of proposer assignment

The code now directly assigns the proposer parameter to rv.Proposer instead of deriving it from the client context. This is more direct and aligns with the function signature change.


180-187: Good backward compatibility approach

Adding a deprecated version of the original function that calls the new implementation is a good practice for maintaining backward compatibility while encouraging migration to the new API.

x/circuit/autocli.go (2)

40-44: Improved command UX with structured parameters

The command signature has been restructured from using a complex JSON input to a more user-friendly format with separate parameters. The new design with specific level options (some-msgs, all-msgs, super-admin) and varargs for message type URLs provides a better user experience.

The updated example and long description also provide clearer guidance on how to use the command.


46-48: Enhanced command parameter structure

Breaking down the permissions into separate parameters (permissions.level and permissions.limit_type_urls) with varargs support for multiple message type URLs is a significant UX improvement. This change makes the command more intuitive by aligning the CLI interface more closely with the underlying data model.

x/mint/autocli.go (2)

3-10: Added necessary imports for enhanced command functionality

Added imports for fmt and version packages to support the enhanced command structure with formatted examples and descriptive help text.


38-45: Improved governance proposal command interface

The UpdateParams command has been enhanced with detailed usage instructions, short and long descriptions, and examples. This makes it easier for users to understand how to use the command correctly. The addition of the GovProposal: true flag properly categorizes this as a governance proposal command.

The long description now includes a helpful tip for users to learn about the required fields by running a query command.

proto/cosmos/feegrant/v1beta1/tx.proto (3)

24-26: Added version metadata for API management

The PruneAllowances RPC method now includes versioning information, indicating it was added in "cosmos-sdk v0.50.0". This helps with API versioning and compatibility tracking.


65-67: Added version metadata to message definition

The MsgPruneAllowances message now includes version information through the cosmos_proto.message_added_in option, properly documenting when this message was introduced.


73-75: Added version metadata to response message

The MsgPruneAllowancesResponse message now includes version information, completing the versioning metadata for the entire RPC call chain.

docs/docs/learn/advanced/01-transactions.md (2)

142-143: LGTM: New transaction options added for unordered transactions.

The new Unordered and TimeoutTimestamp options in the TxBuilder interface are well-documented and properly integrate with the new unordered transactions feature.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~142-~142: Loose punctuation mark.
Context: ... the transaction is valid. * Unordered, an option indicating this transaction m...

(UNLIKELY_OPENING_PUNCTUATION)


204-222: Well-documented feature for unordered transactions.

The new section provides clear and comprehensive documentation for the unordered transactions feature introduced in v0.53.0, explaining:

  • How timestamps are used as nonce values
  • Requirements for these timestamps
  • State management of unordered transactions
  • Link to the upgrade guide for implementation

This addition aligns well with the corresponding code changes and will be valuable for developers implementing this feature.

client/v2/CHANGELOG.md (1)

39-49: LGTM: Well-structured changelog entries.

The new entries for Features, Improvements, and Bug Fixes follow the prescribed changelog format and provide clear information about the changes made.

x/consensus/autocli.go (2)

4-10: LGTM: Added necessary imports.

The additions of the fmt and version packages are appropriate for supporting the new command structure with formatted examples.


33-44: Well-structured governance proposal command.

The update to the UpdateParams command transforms it into a proper governance proposal command with:

  • Clear usage pattern
  • Descriptive help text
  • Well-formatted example using the app name
  • Appropriate positional arguments for the consensus parameters
  • GovProposal flag set to true

This change improves the CLI interface and follows the pattern used in other modules for governance proposals.

x/gov/autocli.go (1)

134-141: Consistent governance proposal command structure.

The implementation of the UpdateParams command for the gov module follows the same pattern used in other modules:

  • Clear usage pattern
  • Comprehensive help text with instructions for viewing current parameters
  • Well-formatted example
  • Appropriate positional argument
  • GovProposal flag set to true

This consistency across modules improves the developer experience and makes the CLI more intuitive.

docs/docs/user/run-node/01-run-node.md (10)

24-24: Punctuation improvement.

Adding the comma after "most importantly" improves readability by properly setting off this phrase from the rest of the sentence.


34-34: Grammar correction.

Fixed plural form "commands" to singular "command" for proper subject-verb agreement.


102-102: Proper comma usage with abbreviation.

Adding a comma after "i.e." follows proper punctuation rules for abbreviations.


156-156: Fixed verb agreement.

Changed "allow" to "allows" to match the singular subject "command."


158-158: Improved sentence structure with proper comma usage.

Added a comma after "however" to properly separate the introductory clause.

The static analysis tool suggests using "take a look" instead of "have a look" for American English, but both phrases are acceptable and the current wording is clear.

🧰 Tools
🪛 LanguageTool

[locale-violation] ~158-~158: In American English, “take a look” is more commonly used.
Context: ...n localnet with Docker Compose, you can have a look at the Cosmos SDK's [`docker-compose.ym...

(HAVE_A_LOOK)


169-169: Clarified logging level description.

Rewording this sentence improves clarity by directly stating the default logging level rather than implying it.


187-187: Fixed verb agreement.

Changed "work" to "works" to maintain proper subject-verb agreement with "state sync."


191-191: Improved sentence conciseness.

Simplified the sentence for better readability by removing the redundant phrase "in order to."


211-211: Added missing article.

Added "the" before "following commands" for grammatical correctness.


216-216: Fixed spacing.

Removed extra space in "Export app state to snapshot store" for consistency.

UPGRADING.md (4)

1-16: Clear and concise upgrade introduction.

The title change to "Upgrade Reference" and the concise introduction effectively communicate the purpose of this document. The inclusion of a "TLDR" section provides a quick overview of major new features, which helps users get a high-level understanding before diving into details.


17-65: Well-structured unordered transactions documentation.

The documentation for unordered transactions is clear and detailed:

  1. It explicitly states this is an opt-in feature
  2. It explains the client requirements (setting unordered flag and timeout_timestamp)
  3. It provides implementation details with code examples
  4. It outlines the default configuration values

This section provides all the necessary information for developers to understand and implement this feature.


67-83: Critical app wiring changes clearly highlighted.

This section properly emphasizes the mandatory change of setting the PreBlocker in the module manager. The code example is straightforward and the "That's it" closing statement makes it clear that this is the only required change.


142-155: Clear documentation of flag changes.

This section clearly documents the changes to the testnet command's flags, which is important for users upgrading from previous versions who may have scripts or documentation referring to the old flags.

runtime/module.go (6)

6-6: Added import for slices package.

Added import for the standard library slices package to support the new slices.Contains check in the store key provider functions.


221-225: Added early return for skipped transient store keys.

Similar to the KVStoreKey function, this change adds a check to bypass transient store key creation when the key is included in the config.SkipStoreKeys list. The implementation is consistent with the KVStoreKey function.


231-235: Added early return for skipped memory store keys.

Similar to the other store key functions, this change adds a check to bypass memory store key creation when the key is included in the config.SkipStoreKeys list. The implementation is consistent across all three store key functions.


250-252: Updated ProvideMemoryStoreService function call.

Updated to pass the config parameter to the ProvideMemoryStoreKey function, maintaining consistency with the function signature changes.


255-257: Updated ProvideTransientStoreService function call.

Updated to pass the config parameter to the ProvideTransientStoreKey function, maintaining consistency with the function signature changes.


202-206:

Details

✅ Verification successful

Added early return for skipped store keys.

This change adds a check to bypass store key creation when the key is included in the config.SkipStoreKeys list. This is likely part of the fix for the race condition mentioned in the PR title, by preventing certain store keys from being created and accessed.


🏁 Script executed:

#!/bin/bash
# Check if there are any callers that might be affected by the updated function signature

# Look for direct calls to ProvideKVStoreKey
rg -A 3 "ProvideKVStoreKey\(" --type go

Length of output: 700


Early Return Confirmed for Skipped Store Keys

  • The updated ProvideKVStoreKey in runtime/module.go now correctly bypasses store key creation by returning nil when the key exists in config.SkipStoreKeys.
  • A search for call sites (in both runtime/module.go and depinject/container_test.go) confirms that the change is localized and that callers are already set up to handle the nil return.
  • This early exit should help address the race condition by avoiding unnecessary creation and access of specific store keys.
  • Please double-check that any downstream processing of the returned key safely handles a nil value.
simapp/app_config.go (1)

139-141:

Details

✅ Verification successful

Added configuration to skip "tx" store key.

This change configures the application to skip creating a store key for the "tx" module. This works in conjunction with the changes in runtime/module.go and is likely a key part of the race condition fix mentioned in the PR title.

The "tx" module is configured with SkipAnteHandler: true on line 228, suggesting these changes are coordinated to address the race condition.


🏁 Script executed:

#!/bin/bash
# Check if there are other usages of "tx" store key in the codebase that might be affected

# Look for references to tx store key
rg -A 3 "\"tx\".*StoreKey" --type go

# Check for any direct usage of the tx module that might be affected
rg -A 5 "\btx\b.*[sS]tore" --type go

Length of output: 596


Final Verification: "tx" Store Key Configuration Confirmed

The new configuration in simapp/app_config.go correctly skips creating a store key for the "tx" module. Our repository search did not reveal any adverse dependencies or missing updates—only incidental usage in server/mock/tx.go that is isolated from production code. The configuration appears coordinated with the adjustments in runtime/module.go and the usage of SkipAnteHandler: true in the tx module (line 228), effectively addressing the intended race condition.

proto/cosmos/gov/v1/tx.proto (3)

20-22: Metadata improvements: Well-documented API versions

Adding version metadata is a good practice for backward compatibility and documentation purposes.


26-28: Consistent version metadata added

Good approach to consistently document when methods were added across all RPCs.


31-33: Version tracking complete for all Gov RPCs

The version annotations complete the documentation for these methods, maintaining consistency with other methods in the file that already had the version metadata (like UpdateParams and CancelProposal).

Also applies to: 36-38, 41-43

docs/docs/build/building-apps/05-app-testnet.md (1)

79-79: Fixed typo in comment

Corrected spelling: "valdiators" → "validators"

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

79-79: Hard tabs
Column: 1

(MD010, no-hard-tabs)

client/v2/internal/flags/flags.go (1)

14-19: New flag constants enhance CLI flexibility

The added flags provide useful options:

  • FlagNoPrompt allows commands to run without interactive prompts
  • FlagNoProposal enables direct command execution without requiring governance proposal submission

These improvements help chains with custom authority models to have more flexibility in command execution.

docs/docs/build/building-apps/03-app-upgrade.md (3)

24-25: Good grammatical improvements

The changes from "First of all" to "First" and "there install" to "then install" improve the readability and flow of the text.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~25-~25: The abbreviation “e.g.” (= for example) requires two periods.
Context: ...tall a specially named upgrade handler (eg. "testnet-v2" or even "v0.40.0"). An upg...

(E_G)


38-38: Correct grammatical fix

Adding "the" before "existence" is grammatically correct.


66-66: Fixed comment typo

Removing the duplicated "return" keyword in the comment is correct.

docs/docs/build/building-apps/02-app-mempool.md (3)

8-8: Grammatical correction

Changing "This sections describes" to "This section describes" correctly fixes the singular/plural agreement.


19-19: Good addition to prerequisites

Adding ABCI to the prerequisite readings is helpful since mempool functionality is closely related to ABCI.


32-32: Improved clarity

The rewording from "the default SDK is a [No-op Mempool]" to "By default, the SDK uses the [No-op Mempool]" improves clarity and readability.

client/v2/autocli/testdata/flatten-output.golden (1)

1-1: Appropriate test fixture for autocli

This new test fixture contains a properly formatted JSON representation of a bank module MsgUpdateParams message, which is useful for testing the flattening functionality in autocli.

client/v2/autocli/app.go (1)

80-81: Updated FileResolver to use merged registry

Updating the FileResolver field to use the newly retrieved mergedFiles variable is the proper way to utilize the enhanced file resolution capability.

client/v2/autocli/msg_test.go (6)

4-9: Imports are logical and clear.

Adding these imports (“bytes”, “encoding/json”, “os”, “path/filepath”) looks appropriate for golden file loading and JSON normalization.


124-125: Great use of specialized assertion for JSON output.

Switching to assertNormalizedJSONEqual clarifies JSON comparisons and reduces noise from whitespace differences.


127-152: Comprehensive test coverage with flattened fields.

This new test verifies multi-field commands and flattened parameter usage, enhancing reliability for specialized message structures.


154-159: Good helper function for loading golden files.

goldenLoad neatly encapsulates file reading, improving readability and maintainability of tests.


161-168: JSON normalization approach is sound.

assertNormalizedJSONEqual ensures consistent comparisons and handles edge cases (e.g., extra whitespace).


170-178: Helper function for JSON normalization is well-implemented.

normalizeJSON properly compacts JSON content. No issues detected with error handling or concurrency.

client/v2/autocli/msg.go (2)

7-23: New imports facilitate governance proposals.

Imports for gogoproto, internal flags, addresscodec, and gov modules are necessary for the new governance logic.


132-136: Properly gating governance proposals with a skip flag.

The condition if options.GovProposal && !skipProposal elegantly handles normal TX routes versus proposal flows without clutter.

client/v2/autocli/flag/messager_binder.go (3)

5-5: No immediate concerns for this new import.
Importing "strings" is appropriate for the subsequent usage of strings.Split.


69-69: Variable naming is clear.
Assigning msg.Descriptor().Name() to msgName is straightforward and improves readability when comparing the message name to nested fields.


136-136: Field usage is consistent.
The new path field in fieldBinding is referenced in the nested binding logic to split and traverse message fields. This is correctly integrated and aligns with the reflection-based approach.

docs/docs/build/building-apps/01-app-go-di.md (7)

5-5: Title update looks appropriate.
Renaming the document to reference app_di.go clarifies that this doc refers to dependency injection–based app construction.


9-9: Clearer mention of the runtime package.
Stating that the Cosmos SDK “allows much easier wiring of an app.go thanks to runtime and app wiring” is consistent with the shift away from purely depinject references.


16-20: Ordering is logical.
Updating the pre-requisite readings to place runtime documentation before depinject helps guide new readers in a progressive manner.


23-23: Reference to SimApp app_di.go is helpful.
This clarifies which file the user should examine when exploring how the application is wired.


108-111: Clarification of the wiring process.
Stating that depinject.Inject automatically wires modules and keepers is helpful. Ensure that any custom logic or manual overrides are documented nearby if the user’s setup deviates from the default injection behavior.


134-134: Readable explanation for combining wiring approaches.
Combining depinject-enabled modules and manual registration is clearly explained. This encourages flexible usage scenarios.


160-160: Separation of testing utilities.
Noting that testing utilities can reside in separate files helps maintain a clean separation of concerns for production code vs. test code.

client/v2/autocli/flag/legacy_dec.go (6)

1-9: New file creation is straightforward.
All necessary imports (context, math, protoreflect) are in place, and the package name is consistent with the rest of the flag module.


11-19: Default decimal value is logically set to "0".
Both decType and its DefaultValue() method are consistent with the typical default for decimals.


21-28: The decValue structure and Get method look correct.
Storing the raw string representation and returning it via protoreflect.Value is a valid approach for reflection-based usage.


29-31: String method reads well.
Returning the internal value mirrors typical String() usage in standard library value types.


33-44: Accurate decimal handling and error checking.

  1. LegacyNewDecFromStr ensures the decimal string is valid.
  2. Storing dec.BigInt().String() removes any fractional notation and ensures consistent internal representation.
  3. The error handling is properly returned.

46-48: Type method naming.
Returning "cosmos.Dec" clarifies the underlying type for introspection or tooling.

client/v2/autocli/flag/builder.go (9)

8-8: Looks good.

The import of "strings" is appropriate for handling the new field splitting logic.


32-32: New scalar constant definition.

Defining DecScalarType = "cosmos.Dec" cleanly extends scalar type support for decimal values.


35-40: New FileResolver interface.

The FileResolver interface is well-defined and enables resolving protobuf file descriptors. No issues found.


79-79: Adding decType to scalarFlagTypes.

Registering decType{} under DecScalarType extends functionality for decimal fields. LGTM.


172-184: Flattening nested fields for positional args.

Splitting ProtoField by '.' and recursively binding nested fields is a robust approach for handling deeply nested fields. Implementation is straightforward and logically sound.


187-198: Positional argument range handling improvement.

Setting CobraArgs and mandatoryArgUntil depending on varargs or optional arguments is a clean approach. No issues found.


253-253: Flag options indexing.

Storing the FlagOptions in flagOptsByFlagName is clear and helps final adjustments (e.g., deprecation, hiding). Good practice.


277-301: Recursive binding for nested message fields.

The addFlattenFieldBindingToArgs method properly handles sub-message cases by looking up the next level and recursing. This design is concise and maintainable.


302-326: Helper for positional argument field bindings.

addFieldBindingToArgs integrates seamlessly with the new flattening logic, ensuring single-level fields are appended correctly. Implementation aligns well with the rest of the file.

x/distribution/autocli.go (6)

7-7: Correct package import.

Replacing the misspelled distirbuitonv1beta1 with distributionv1beta1 prevents potential runtime issues.


16-16: Fixing Query service name reference.

Using distributionv1beta1.Query_ServiceDesc.ServiceName ensures queries map to the correct distribution service.


91-91: Fixing Msg service name reference.

Updating the Msg_ServiceDesc.ServiceName also aligns the transaction commands with the corrected import.


138-144: Enabling UpdateParams for governance proposals.

Addition of Use, Short, and Example clarifies usage. Marking it as a GovProposal is consistent with other modules.


146-155: Reinstating CommunityPoolSpend as a gov proposal.

Exposing the required fields and marking GovProposal supports a comprehensive CLI for distribution proposals.


157-157: Enhance custom commands.

Changing EnhanceCustomCommand to true is appropriate, allowing these proposals to be fully integrated with the enhanced CLI framework.

Comment thread store/rootmulti/store.go
func (rs *Store) Commit() types.CommitID {
var previousHeight, version int64
if rs.lastCommitInfo.GetVersion() == 0 && rs.initialVersion > 1 {
if cInfo := rs.lastCommitInfo.Load(); cInfo.Version == 0 && rs.initialVersion > 1 {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Potential nil-pointer dereference.
Using cInfo.Version directly might panic if cInfo is nil. Consider checking for cInfo == nil before referencing cInfo.Version.

 if cInfo := rs.lastCommitInfo.Load(); cInfo != nil && cInfo.Version == 0 && rs.initialVersion > 1 {
     ...
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if cInfo := rs.lastCommitInfo.Load(); cInfo.Version == 0 && rs.initialVersion > 1 {
if cInfo := rs.lastCommitInfo.Load(); cInfo != nil && cInfo.Version == 0 && rs.initialVersion > 1 {
...
}

Comment thread store/rootmulti/store.go
Comment on lines +769 to +771
cInfo := rs.lastCommitInfo.Load()
if res.Height == cInfo.Version {
commitInfo = cInfo
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Check for nil before referencing cInfo.Version.
Accessing cInfo.Version may panic if cInfo == nil. Insert a nil check to safeguard the condition.

cInfo := rs.lastCommitInfo.Load()
+ if cInfo == nil {
+   // handle nil scenario
+ } else if res.Height == cInfo.Version {
    commitInfo = cInfo
}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
cInfo := rs.lastCommitInfo.Load()
if res.Height == cInfo.Version {
commitInfo = cInfo
cInfo := rs.lastCommitInfo.Load()
if cInfo == nil {
// handle nil scenario
} else if res.Height == cInfo.Version {
commitInfo = cInfo
}

Comment thread x/gov/client/cli/util.go
Comment on lines +170 to +174
// rv.Expedited, err = flagSet.GetBool(FlagExpedited)
// if err != nil {
// return nil, fmt.Errorf("could not read expedited: %w", err)
// }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Commented-out code for expedited flag

These commented lines handle the expedited flag that apparently cannot be enabled due to conflicts with other commands. Consider adding more context in the comments about when this conflict might be resolved or if there are plans to address it in the future.


🏁 Script executed:

#!/bin/bash
# Check if there are other occurrences of FlagExpedited in the codebase
# to understand where conflicts might occur

echo "Searching for FlagExpedited usage in the codebase:"
rg "FlagExpedited" --type go

Length of output: 474


Clarify expedited flag conflict and provide future guidance

The expedited flag is currently disabled because IBC redefines it in the upgrade-channels command (see usage in x/gov/client/cli/tx.go). Please update the inline comments in x/gov/client/cli/util.go to include this context and, if available, note any plans or a TODO reference for when the conflict might be resolved.

  • Update the comment for the commented-out expedited flag to mention the conflict with IBC's override.
  • Optionally, add a TODO or reference indicating if/when this might be re-evaluated.

Comment thread client/v2/CHANGELOG.md
### Improvements

* [#21712](https://github.com/cosmos/cosmos-sdk/pull/21712) Marshal `type` field as proto message url in queries instead of amino name.
* [#21936](https://github.com/cosmos/cosmos-sdk/pull/21936) Print possible enum values in error message after an invalid input was provided.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Duplicate changelog entry.

This entry appears to be a duplicate of line 66 in the v2.0.0-beta.6 section. Both entries reference the same PR (#21936) and have identical descriptions. Please verify if this is intentional or if the entry should be removed from one of the versions.

@beer-1
Copy link
Copy Markdown
Contributor Author

beer-1 commented Apr 14, 2025

I think it would be better to reopen this PR over main branch, seems hard to resolve all conflict

@beer-1
Copy link
Copy Markdown
Contributor Author

beer-1 commented Apr 14, 2025

created replace PR #24508

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants