Skip to content

chore: link validity check #24718

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 8 commits into
base: main
Choose a base branch
from
Draft

chore: link validity check #24718

wants to merge 8 commits into from

Conversation

aljo242
Copy link
Contributor

@aljo242 aljo242 commented May 8, 2025

Summary by CodeRabbit

  • Documentation
    • Updated, corrected, or removed numerous documentation links for improved accuracy and consistency.
    • Improved wording, formatting, and section titles across various documentation files for clarity.
    • Removed several documentation files, including contribution and coding guidelines, release process, and project roadmap.
    • Added a new script to validate Markdown links and generate link status reports.
    • Fixed typos and enhanced readability in multiple documentation sections.
  • Chores
    • Updated the pull request template for clearer wording and simplified formatting.
    • Expanded .gitignore to include additional Python and documentation-related files.

Copy link

ironbird-prod bot commented May 8, 2025

Ironbird - launch a network To use Ironbird, you can use the following commands:
  • /ironbird start OR /ironbird start --load-test-config= - Launch a testnet with the specified chain and load test configuration.
  • /ironbird chains - List of chain images that ironbird can use to spin-up testnet
  • /ironbird loadtests - List of load test modes that ironbird can run against testnet
Custom Load Test Configuration You can provide a custom load test configuration using the `--load-test-config=` flag:
/ironbird start cosmos --load-test-config={
  "block_gas_limit_target": 0.75,
  "num_of_blocks": 50,
  "msgs": [
    {"weight": 0.3, "type": "MsgSend"},
    {"weight": 0.3, "type": "MsgMultiSend"},
	{"weight": 0.4, "type": "MsgArr", "ContainedType": "MsgSend", "NumMsgs": 3300}
  ]
}

Use /ironbird loadtests to see more examples.

Copy link
Contributor

coderabbitai bot commented May 8, 2025

📝 Walkthrough

Walkthrough

This change set primarily updates documentation, configuration, and auxiliary files across the project. It introduces a new Python script for validating Markdown links, corrects and updates numerous internal and external documentation links, removes several obsolete or redundant markdown files, and makes minor wording and formatting improvements throughout the documentation. No functional code changes or API modifications are present.

Changes

File(s) Change Summary
.github/PULL_REQUEST_TEMPLATE.md, CHANGELOG.md, README.md, UPGRADE_GUIDE.md, UPGRADING.md, crypto/bcrypt_readme.md, docs/README.md, proto/README.md, tools/cosmovisor/CHANGELOG.md, x/auth/README.md, x/authz/README.md, x/feegrant/README.md, x/gov/README.md, x/nft/README.md, x/slashing/README.md, x/staking/README.md, store/snapshots/README.md, store/streaming/abci/README.md, testutil/simsx/README.md Various documentation updates: corrected URLs, improved wording, updated or fixed internal/external links, and minor formatting changes.
.gitignore Added Python virtual environment and documentation scripting file ignore entries.
CODING_GUIDELINES.md, CONTRIBUTING.md, RELEASE_PROCESS.md, ROADMAP.md Deleted legacy or redundant documentation files.
docs/architecture/adr-009-evidence-module.md, docs/architecture/adr-019-protobuf-state-encoding.md, docs/architecture/adr-028-public-key-addresses.md, docs/architecture/adr-033-protobuf-inter-module-comm.md, docs/architecture/adr-038-state-listening.md, docs/architecture/adr-040-storage-and-smt-state-commitments.md, docs/architecture/adr-054-semver-compatible-modules.md, docs/architecture/adr-059-test-scopes.md, docs/architecture/adr-062-collections-state-layer.md Updated links and references to point to correct or current locations; minor textual improvements.
docs/docs/build/build.md, docs/docs/build/building-apps/00-runtime.md, docs/docs/build/building-apps/01-app-go-di.md, docs/docs/build/building-modules/03-msg-services.md, docs/docs/build/building-modules/13-upgrade.md, docs/docs/build/building-modules/15-depinject.md, docs/docs/build/building-modules/16-testing.md, docs/docs/build/packages/README.md, docs/docs/build/tooling/README.md, docs/docs/learn/advanced/00-baseapp.md, docs/docs/learn/advanced/01-transactions.md, docs/docs/learn/advanced/02-context.md, docs/docs/learn/advanced/05-encoding.md, docs/docs/learn/advanced/06-grpc_rest.md, docs/docs/learn/advanced/08-events.md, docs/docs/learn/advanced/11-runtx_middleware.md, docs/docs/learn/advanced/15-upgrade.md, docs/docs/learn/beginner/00-app-anatomy.md, docs/docs/learn/beginner/04-gas-fees.md, docs/docs/user/run-node/00-keyring.md, docs/spec/SPEC_STANDARD.md, docs/spec/addresses/bech32.md Fixed, updated, or clarified documentation links, references, and minor text.
scripts/valid-links.py Added a new Python script for validating Markdown links, including local and web link checks, anchor validation, caching, and reporting.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Script as valid-links.py
    participant FileSystem
    participant Web as WebServer

    User->>Script: Run valid-links.py
    Script->>FileSystem: Recursively find all .md files
    loop For each Markdown file
        Script->>FileSystem: Read file content
        Script->>Script: Extract links (ignore code blocks)
        loop For each link
            alt Local link
                Script->>FileSystem: Check file/anchor existence
            else Web link
                Script->>Web: HTTP HEAD/GET request (with retries/caching)
            end
        end
    end
    Script->>FileSystem: Write Markdown report with results
    Script->>FileSystem: Update cache file
    Script-->>User: Report valid and broken links
Loading
✨ 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.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

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 generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @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
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: 7

🔭 Outside diff range comments (5)
docs/docs/learn/advanced/02-context.md (2)

33-33: ⚠️ Potential issue

Broken VoteInfo link – update to versioned spec
The current link (master/spec/abci/abci.html#voteinfo) returns 404. Pin to a versioned path to ensure stability.

Proposed diff:

-* [VoteInfo](https://docs.cometbft.com/master/spec/abci/abci.html#voteinfo)
+* [VoteInfo](https://docs.cometbft.com/v1.0/spec/abci/#voteinfo)

44-45: ⚠️ Potential issue

Broken GitHub source links – pin to SDK version
Links to service.go on the main branch are being rate-limited (429). Reference a specific release tag (e.g., v0.53.0-rc.2) instead.

Proposed diff:

-* https://github.com/cosmos/cosmos-sdk/blob/main/core/comet/service.go#L14
+* https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/core/comet/service.go#L14

-* https://github.com/cosmos/cosmos-sdk/blob/main/core/header/service.go#L14
+* https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/core/header/service.go#L14
docs/README.md (1)

3-3: ⚠️ Potential issue

Fix CONTRIBUTING.md link to use blob
The link to CONTRIBUTING.md currently uses /tree/main/, which the Markdown checker flags as a dead link (429). It should point to /blob/main/.

Apply this diff:

-[`CONTRIBUTING.md`](https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation)
+[`CONTRIBUTING.md`](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#updating-documentation)
docs/architecture/adr-028-public-key-addresses.md (1)

36-37: ⚠️ Potential issue

Weave repository link is blocked
The link to the Weave conditions.go file (https://github.com/iov-one/weave/blob/master/conditions.go) returns a 429. To resolve, point to a specific branch or commit:

- https://github.com/iov-one/weave/blob/master/conditions.go
+ https://github.com/iov-one/weave/blob/main/conditions.go
docs/architecture/adr-059-test-scopes.md (1)

1-255: ⚠️ Potential issue

Fix broken links in the document.

The pipeline check shows that there are 16 dead links in the documentation, including links to ADR-053 and ADR-057 mentioned in this file. These failures might be due to GitHub's rate limiting (status 429).

You can run the new link validation script to identify and fix all broken links:

#!/bin/bash
# Identify broken links in this ADR file
python scripts/valid-links.py
cat docs_links_status.md | grep "docs/architecture/adr-059-test-scopes.md"
🧰 Tools
🪛 LanguageTool

[uncategorized] ~36-~36: Possible missing comma found.
Context: ...tutil/suite.go#L44-L49) for example. In code these are called integration tests, but...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~36-~36: Did you mean the adjective “end-to-end” (spelled with hyphens)?
Context: ...ation tests, but in reality function as end to end tests by starting up a tendermint node ...

(END_TO_END_HYPHEN)


[grammar] ~39-~39: Did you mean the adjective “end-to-end” (spelled with hyphens)?
Context: ...g mocks, but does not address the place end to end tests may have in the SDK. From here w...

(END_TO_END_HYPHEN)


[typographical] ~48-~48: Consider adding a comma here.
Context: ... from the rest of the code base. Within this we identify two levels of unit tests, *...

(TO_THAT_COMMA)


[uncategorized] ~52-~52: Possible missing comma found.
Context: ...part of a module in isolation - in this case we might do fixture setup/mocking of ot...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~60-~60: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...ject/binding_test.go) while maintaining high level readability. Example 2 [depinject tabl...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[uncategorized] ~62-~62: The adjective “table-driven” is spelled with a hyphen.
Context: ...evel readability. Example 2 [depinject table driven tests](https://github.com/cosmos/cosmos...

(DRIVEN_HYPHEN)


[uncategorized] ~73-~73: Possible missing comma found.
Context: ...hould be tested together in integration tests beyond mocked unit tests. In some case...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~75-~75: A comma might be missing here.
Context: ...ests beyond mocked unit tests. In some cases setting up a test case for a module wit...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~76-~76: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...ked dependencies can be quite cumbersome and the resulting test may only show that t...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~118-~118: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...sitions resulting from module operations but any error will halt and fail the simula...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~120-~120: A comma might be missing here.
Context: ...ion runs EndBlockers at the end of each block any module invariant violations will al...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[uncategorized] ~124-~124: A comma might be missing here.
Context: ...ns. Note that not all modules implement this which may indicate a gap in current sim...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)


[typographical] ~139-~139: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... A success may take a long time to run, 7-10 minutes per simulation in CI. * Timeout...

(HYPHEN_TO_EN)


[grammar] ~145-~145: Did you mean the adjective “End-to-end” (spelled with hyphens)?
Context: ...n locally to reproduce. ### E2E tests End to end tests exercise the entire system as we ...

(END_TO_END_HYPHEN)


[formatting] ~147-~147: Consider adding a comma after ‘Presently’ for more clarity.
Context: ...production environment as is practical. Presently these tests are located at [tests/e2e](...

(CONJUNCTIVE_LINKING_ADVERB_COMMA_PREMIUM)


[uncategorized] ~156-~156: Possible missing comma found.
Context: ...equired to start up and run a prod-like environment and the this process takes much longer ...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~156-~156: Two determiners in a row. Choose either “the” or “this”.
Context: ... up and run a prod-like environment and the this process takes much longer to start and ...

(DT_DT)


[uncategorized] ~189-~189: Possible missing comma found.
Context: ...complete rewrite of an integration test suite the test suite should be retained and m...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 GitHub Actions: Check Markdown links

[error] 1-1: Markdown link check failed: 16 dead links found. Examples: [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-053-go-module-refactoring.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-057-app-wiring.md (Status: 429), ... (see logs for all dead links)

🧹 Nitpick comments (20)
crypto/bcrypt_readme.md (1)

7-7: Consider simplifying phrasing.

The phrase “for the time being” can be streamlined for greater clarity.
E.g.,

Given our security model … this parameter choice seems sufficient for now.

🧰 Tools
🪛 LanguageTool

[style] ~7-~7: This phrasing can be wordy. For improved clarity, try opting for something more concise.
Context: ... this parameter choice seems sufficient for the time being. Bcrypt always generates a 448-bit key,...

(FOR_THE_TIME_BEING)

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

17-17: Fix typo: 'expos' should be 'expose'
There's a typo in the verb. Update as follows:

- While all user-facing interfaces to Cosmos software should expos Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
+ While all user-facing interfaces to Cosmos software should expose Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
🧰 Tools
🪛 LanguageTool

[grammar] ~17-~17: The word ‘expos’ is a noun or an adjective. A verb or adverb is missing or misspelled here, or maybe a comma is missing.
Context: ...ng interfaces to Cosmos software should expos Bech32 interfaces, many internal interf...

(PRP_MD_NN)


21-21: Add missing verb 'be'
The sentence is missing the verb “be” for grammatical correctness. Update as follows:

- Simply prepending bytes from this [table](https://github.com/cometbft/cometbft/blob/main/spec/core/encoding.md) to the byte string payload before Bech32 encoding will sufficient for compatible representation.
+ Simply prepending bytes from this [table](https://github.com/cometbft/cometbft/blob/main/spec/core/encoding.md) to the byte string payload before Bech32 encoding will be sufficient for compatible representation.
🧰 Tools
🪛 LanguageTool

[grammar] ~21-~21: Replace ‘sufficient’ with an appropriate verb.
Context: ...ing payload before Bech32 encoding will sufficient for compatible representation.

(MD_NN)

docs/architecture/adr-040-storage-and-smt-state-commitments.md (2)

273-273: Fix missing articles for clarity

The sentence is missing the article “a” before “record” and “the” before “SMT search” for better readability.

- Instead of saving an object as a single blob of bytes, we could save it as record in a table in the state storage layer, and as a `hash(key, protobuf(object))` in the SMT as outlined above. To verify that an object registered in RDBMS is same as the one committed to SMT, one will need to load it from RDBMS, marshal using protobuf, hash and do SMT search.
+ Instead of saving an object as a single blob of bytes, we could save it as a record in a table in the state storage layer, and as a `hash(key, protobuf(object))` in the SMT as outlined above. To verify that an object registered in RDBMS is the same as the one committed to SMT, one will need to load it from RDBMS, marshal using protobuf, hash and do the SMT search.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~273-~273: Possible missing article found.
Context: ...ngle blob of bytes, we could save it as record in a table in the state storage layer, ...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~273-~273: Possible missing article found.
Context: ...y that an object registered in RDBMS is same as the one committed to SMT, one will n...

(AI_HYDRA_LEO_MISSING_THE)


277-277: Add missing verb for correct grammar

Insert “be” to complete the verb phrase.

- Module will responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
+ Module will be responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
🧰 Tools
🪛 LanguageTool

[grammar] ~277-~277: The word ‘responsible’ is a noun or an adjective. A verb is missing or misspelled, or maybe a comma is missing.
Context: ...ot automatically committed. Module will responsible for having a sound storage model and ca...

(MD_JJ)

store/snapshots/README.md (1)

14-15: Duplicate URL for Spec and Method/Type Reference. Both links point to the same root path (https://docs.cometbft.com/v0.37/spec/), making the second link redundant. Consider updating the Method/Type Reference link to its specific section (e.g., /spec/abci/state-sync or /spec/abci/types), or consolidating into a single link.

README.md (1)

50-50: Placeholder for new contributing guide. The TODO NEW CONTRIBUTING GUIDE placeholder should be replaced with a link or reference to the actual contributing guide. Let me know if you’d like help drafting or linking to it.

docs/architecture/adr-009-evidence-module.md (2)

20-20: Use a versioned or tagged IBC docs link
Great update to point at the canonical IBC repo. For long-term stability, consider linking to a specific version or tag (e.g., a release tag) rather than the default branch to avoid future 404s.


181-181: Pin the IBC Architecture link to a stable release
Similarly, linking the IBC Architecture reference to a tagged release (e.g., https://github.com/cosmos/ibc/releases/tag/vX.Y.Z) will improve link stability and prevent breakage if the repo structure changes.

CHANGELOG.md (1)

287-287: Link GHSA advisories explicitly
By removing the markdown link for GHSA-4j93-fm92-rp4m, the advisory reference may become less discoverable. Consider reinstating a hyperlink to the full security advisory URL (https://github.com/cosmos/cosmos-sdk/security/advisories/GHSA-4j93-fm92-rp4m) for clarity.

docs/docs/learn/advanced/00-baseapp.md (2)

168-168: Re-add a link to custom mempool handlers
Removing the markdown link to custom mempool handlers may reduce discoverability. Consider adding a relative link to the section in the docs that covers custom mempool handlers so readers can easily navigate there.


179-179: Ensure navigation to custom mempool handlers
Similarly, this standalone mention of custom mempool handlers would benefit from an inline link or reference to the detailed docs to improve reader guidance.

proto/README.md (1)

9-9: Add missing comma for clarity
Inserting a comma after "package" improves readability:

- and in each protobuf package following the guidelines in https://docs.buf.build/bsr/documentation.
+ and in each protobuf package, following the guidelines in https://docs.buf.build/bsr/documentation.
docs/docs/build/build.md (1)

12-12: Nitpick: remove apostrophe in “ADR’s”.

While the link path is correct, consider changing the label from “ADR’s” to “ADRs” to avoid using an apostrophe for the plural.

docs/architecture/adr-059-test-scopes.md (1)

139-141: Improve clarity of simulation limitation descriptions.

These edits improve the clarity of the simulation limitations section by using more consistent formatting and removing redundant information.

Consider using an en dash instead of a hyphen in the time range:

-* A success may take a long time to run, 7-10 minutes per simulation in CI.
+* A success may take a long time to run, 7–10 minutes per simulation in CI.
🧰 Tools
🪛 LanguageTool

[typographical] ~139-~139: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... A success may take a long time to run, 7-10 minutes per simulation in CI. * Timeout...

(HYPHEN_TO_EN)

scripts/valid-links.py (5)

5-5: Remove unused import.

The urlparse function from urllib.parse is imported but not used in the code.

-from urllib.parse import urlparse
🧰 Tools
🪛 Ruff (0.8.2)

5-5: urllib.parse.urlparse imported but unused

Remove unused import: urllib.parse.urlparse

(F401)


106-107: Consider enhancing inline code detection.

The current approach of skipping lines with any backtick character might miss valid links that happen to be on the same line as inline code. A more robust approach would be to parse inline code segments correctly.

-            if '`' in line:
-                continue
+            # Skip inline code segments but process the rest of the line
+            parts = re.split(r'`[^`]+`', line)
+            line_without_code = ''.join(parts)
+            
+            for match in LINK_RE.finditer(line_without_code):

133-140: Consider adding parallel processing for web links.

Checking web links serially can be time-consuming, especially with a large number of links. Consider using a thread pool to process web links in parallel.

-        print(f"🌐 Checking {len(WEB_TASKS)} web links serially...")
-        for url, src, line in WEB_TASKS:
-            try:
-                link, status, detail = check_web_link(url)
-                REPORT.append((src, line, link, status, detail))
-            except Exception as e:
-                REPORT.append((src, line, url, "⚠️ Thread error", str(e)))
+        print(f"🌐 Checking {len(WEB_TASKS)} web links with parallel processing...")
+        from concurrent.futures import ThreadPoolExecutor
+        
+        def process_web_link(task):
+            url, src, line = task
+            try:
+                link, status, detail = check_web_link(url)
+                return (src, line, link, status, detail)
+            except Exception as e:
+                return (src, line, url, "⚠️ Thread error", str(e))
+        
+        with ThreadPoolExecutor(max_workers=10) as executor:
+            web_results = list(executor.map(process_web_link, WEB_TASKS))
+        
+        REPORT.extend(web_results)

147-152: Consider adding sorting to the broken links section.

Sorting the broken links by file and line number would make the report more organized and easier to navigate.

        f.write("| File | Line | Link | Status | Detail |\n")
        f.write("|------|------|------|--------|--------|\n")
+        broken_links = sorted([r for r in REPORT if not r[3].startswith("✅")], 
+                             key=lambda x: (x[0], x[1]))
-        for file, line, link, status, detail in REPORT:
-            if not status.startswith("✅"):
-                f.write(f"| `{file}` | `{line}` | `{link}` | {status} | {detail} |\n")
+        for file, line, link, status, detail in broken_links:
+            f.write(f"| `{file}` | `{line}` | `{link}` | {status} | {detail} |\n")

48-50: Consider expanding the list of special case domains.

LinkedIn is already handled as a special case. Consider adding other domains that might block automated requests, such as Twitter/X and Facebook.

-        if status == 999 or link.startswith("https://www.linkedin.com"):
+        special_domains = ["linkedin.com", "twitter.com", "x.com", "facebook.com"]
+        if status == 999 or any(domain in link for domain in special_domains):
            result = (link, "⚠️ Possibly valid (blocked)", status)
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 05ac584 and c4f68e7.

📒 Files selected for processing (56)
  • .github/PULL_REQUEST_TEMPLATE.md (2 hunks)
  • .gitignore (1 hunks)
  • CHANGELOG.md (1 hunks)
  • CODING_GUIDELINES.md (0 hunks)
  • CONTRIBUTING.md (0 hunks)
  • README.md (2 hunks)
  • RELEASE_PROCESS.md (0 hunks)
  • ROADMAP.md (0 hunks)
  • UPGRADE_GUIDE.md (4 hunks)
  • UPGRADING.md (3 hunks)
  • crypto/bcrypt_readme.md (1 hunks)
  • docs/README.md (2 hunks)
  • docs/architecture/adr-009-evidence-module.md (2 hunks)
  • docs/architecture/adr-019-protobuf-state-encoding.md (1 hunks)
  • docs/architecture/adr-028-public-key-addresses.md (1 hunks)
  • docs/architecture/adr-033-protobuf-inter-module-comm.md (2 hunks)
  • docs/architecture/adr-038-state-listening.md (1 hunks)
  • docs/architecture/adr-040-storage-and-smt-state-commitments.md (2 hunks)
  • docs/architecture/adr-054-semver-compatible-modules.md (2 hunks)
  • docs/architecture/adr-059-test-scopes.md (4 hunks)
  • docs/architecture/adr-062-collections-state-layer.md (1 hunks)
  • docs/docs/build/build.md (1 hunks)
  • docs/docs/build/building-apps/00-runtime.md (0 hunks)
  • docs/docs/build/building-apps/01-app-go-di.md (1 hunks)
  • docs/docs/build/building-modules/03-msg-services.md (1 hunks)
  • docs/docs/build/building-modules/13-upgrade.md (1 hunks)
  • docs/docs/build/building-modules/15-depinject.md (1 hunks)
  • docs/docs/build/building-modules/16-testing.md (2 hunks)
  • docs/docs/build/packages/README.md (1 hunks)
  • docs/docs/build/tooling/README.md (1 hunks)
  • docs/docs/learn/advanced/00-baseapp.md (3 hunks)
  • docs/docs/learn/advanced/01-transactions.md (1 hunks)
  • docs/docs/learn/advanced/02-context.md (1 hunks)
  • docs/docs/learn/advanced/05-encoding.md (1 hunks)
  • docs/docs/learn/advanced/06-grpc_rest.md (1 hunks)
  • docs/docs/learn/advanced/08-events.md (1 hunks)
  • docs/docs/learn/advanced/11-runtx_middleware.md (1 hunks)
  • docs/docs/learn/advanced/15-upgrade.md (1 hunks)
  • docs/docs/learn/beginner/00-app-anatomy.md (2 hunks)
  • docs/docs/learn/beginner/04-gas-fees.md (2 hunks)
  • docs/docs/user/run-node/00-keyring.md (1 hunks)
  • docs/spec/SPEC_STANDARD.md (1 hunks)
  • docs/spec/addresses/bech32.md (1 hunks)
  • proto/README.md (1 hunks)
  • scripts/valid-links.py (1 hunks)
  • store/snapshots/README.md (1 hunks)
  • store/streaming/abci/README.md (0 hunks)
  • testutil/simsx/README.md (4 hunks)
  • tools/cosmovisor/CHANGELOG.md (1 hunks)
  • x/auth/README.md (1 hunks)
  • x/authz/README.md (1 hunks)
  • x/feegrant/README.md (1 hunks)
  • x/gov/README.md (3 hunks)
  • x/nft/README.md (2 hunks)
  • x/slashing/README.md (1 hunks)
  • x/staking/README.md (2 hunks)
💤 Files with no reviewable changes (6)
  • docs/docs/build/building-apps/00-runtime.md
  • store/streaming/abci/README.md
  • ROADMAP.md
  • CONTRIBUTING.md
  • RELEASE_PROCESS.md
  • CODING_GUIDELINES.md
🧰 Additional context used
🪛 GitHub Actions: Check Markdown links
docs/docs/learn/advanced/06-grpc_rest.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/scripts/protoc-swagger-gen.sh (Status: 429)

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

[error] 1-1: Markdown link check failed: 3 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/proto/cosmos/tx/signing/v1beta1/signing.proto#L17 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/x/auth/tx/builder.go#L27-L44 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/x/auth/migrations/legacytx/stdtx_builder.go#L14-L17 (Status: 429)

docs/architecture/adr-009-evidence-module.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/tendermint/spec/blob/7b3138e69490f410768d9b1ffc7a17abc23ea397/spec/consensus/fork-accountability.md (Status: 429)

docs/docs/build/tooling/README.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md (Status: 429)

docs/architecture/adr-062-collections-state-layer.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-055-orm.md (Status: 429)

docs/architecture/adr-028-public-key-addresses.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/iov-one/weave/blob/master/conditions.go (Status: 429), [✖] https://www.linkedin.com/in/alan-szepieniec-7b1957142 (Status: 999)

docs/docs/learn/advanced/00-baseapp.md

[error] 1-1: Markdown link check failed: 17 dead links found. Examples: [✖] https://github.com/cometbft/cometbft/blob/v0.37.x/spec/abci/abci++_basic_concepts.md#mempool-methods (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/baseapp/options.go (Status: 429), ... (see logs for all dead links)

docs/docs/learn/advanced/05-encoding.md

[error] 1-1: Markdown link check failed: 5 dead links found. Examples: [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/x/auth/keeper/keeper.go#L239-L242 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/x/staking/types/staking.pb.go#L340-L375 (Status: 429), ... (see logs for all dead links)

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

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/simapp/app_config.go (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/release/v0.53.x/simapp/example_app.yaml (Status: 429)

docs/docs/learn/advanced/02-context.md

[error] 1-1: Markdown link check failed: 3 dead links found. [✖] https://docs.cometbft.com/master/spec/abci/abci.html#voteinfo (Status: 404), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/core/comet/service.go#L14 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/core/header/service.go#L14 (Status: 429)

docs/docs/learn/advanced/11-runtx_middleware.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/baseapp/recovery.go (Status: 429)

docs/docs/build/building-modules/15-depinject.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/scripts/protocgen-pulsar.sh (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/api/cosmos/group/module/v1/module.pulsar.go (Status: 429)

README.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/store/types/store.go (Status: 429), [✖] https://github.com/cosmos/iavl/blob/master/docs/overview.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/store/types/store.go (Status: 429), [✖] https://github.com/cosmos/iavl/blob/master/docs/overview.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://cosmos.network/whitepaper (Status: 404)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/RELEASE_PROCESS.md (Status: 429), [✖] https://docs.cosmos.network/main/architecture/adr-043-nft-module.html (Status: 404)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://cosmos.network/whitepaper (Status: 404), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-037-gov-split-vote.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-009-evidence-module.md (Status: 429), [✖] https://github.com/cometbft/cometbft/blob/main/spec/abci/abci%2B%2B_basic_concepts.md#evidence (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-043-nft-module.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/proto/cosmos/nft/v1beta1/event.proto (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://cosmos.network/whitepaper (Status: 404)


[error] 1-1: Markdown link check failed: 4 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-030-authz-module.md (Status: 429), [✖] #SendAuthorization (Status: 404), [✖] #GenericAuthorization (Status: 404), [✖] #StakeAuthorization (Status: 404)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-029-fee-grant-module.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/docs/spec/fee_distribution/f1_fee_distr.pdf (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-010-modular-antehandler.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation (Status: 429)

docs/docs/build/building-modules/13-upgrade.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/x/bank/migrations/v2/store.go#L55-L76 (Status: 429)

docs/README.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation (Status: 429)

docs/docs/learn/advanced/15-upgrade.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429)

docs/architecture/adr-059-test-scopes.md

[error] 1-1: Markdown link check failed: 16 dead links found. Examples: [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-053-go-module-refactoring.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-057-app-wiring.md (Status: 429), ... (see logs for all dead links)

docs/spec/SPEC_STANDARD.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/ibc/blob/main/spec/ics-001-ics-standard/README.md (Status: 429), [✖] https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md (Status: 429)

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

[error] 1-1: Markdown link check failed: 5 dead links found. Examples: [✖] #application-constructor (Status: 404), [✖] https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto (Status: 429), ... (see logs for all dead links)

docs/docs/learn/advanced/08-events.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/proto/cosmos/nft/v1beta1/event.proto#L21-L31 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/x/bank/types/events.go (Status: 429)

🪛 LanguageTool
proto/README.md

[uncategorized] ~8-~8: Possible missing comma found.
Context: ...d goes in buf.md and in each protobuf package following the guidelines in https://doc...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/architecture/adr-059-test-scopes.md

[typographical] ~139-~139: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... A success may take a long time to run, 7-10 minutes per simulation in CI. * Timeout...

(HYPHEN_TO_EN)

docs/spec/addresses/bech32.md

[grammar] ~17-~17: The word ‘expos’ is a noun or an adjective. A verb or adverb is missing or misspelled here, or maybe a comma is missing.
Context: ...ng interfaces to Cosmos software should expos Bech32 interfaces, many internal interf...

(PRP_MD_NN)


[grammar] ~21-~21: Replace ‘sufficient’ with an appropriate verb.
Context: ...ing payload before Bech32 encoding will sufficient for compatible representation.

(MD_NN)

docs/architecture/adr-040-storage-and-smt-state-commitments.md

[uncategorized] ~273-~273: Possible missing article found.
Context: ...ngle blob of bytes, we could save it as record in a table in the state storage layer, ...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~273-~273: Possible missing article found.
Context: ...y that an object registered in RDBMS is same as the one committed to SMT, one will n...

(AI_HYDRA_LEO_MISSING_THE)


[grammar] ~277-~277: The word ‘responsible’ is a noun or an adjective. A verb is missing or misspelled, or maybe a comma is missing.
Context: ...ot automatically committed. Module will responsible for having a sound storage model and ca...

(MD_JJ)

crypto/bcrypt_readme.md

[style] ~7-~7: This phrasing can be wordy. For improved clarity, try opting for something more concise.
Context: ... this parameter choice seems sufficient for the time being. Bcrypt always generates a 448-bit key,...

(FOR_THE_TIME_BEING)

x/gov/README.md

[uncategorized] ~13-~13: You might be missing the article “the” here.
Context: ...aper) in June 2016. The module enables Cosmos SDK-based blockchain to support an on-c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🪛 Ruff (0.8.2)
scripts/valid-links.py

5-5: urllib.parse.urlparse imported but unused

Remove unused import: urllib.parse.urlparse

(F401)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Summary
🔇 Additional comments (65)
docs/architecture/adr-054-semver-compatible-modules.md (2)

350-350: Approve updated Buf plugin reference link.
The remote‐plugins URL has been corrected to https://buf.build/docs/bsr/remote-plugins/overview/, matching the current Buf docs structure.


449-449: Approve corrected relative path to module.proto.
Adjusting the link from ../proto/... to ../../proto/... properly accounts for the ADR’s location under docs/architecture. It should now resolve to the intended cosmos.app.v1alpha1.module.proto.

crypto/bcrypt_readme.md (1)

5-5: External link update approved.

The new Auth0 blog link provides a more current and focused discussion on bcrypt security parameters, replacing the obsolete Stack Exchange reference.

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

9-13: Table formatting aligned properly
The updated HRP table is cleanly aligned and consistent, improving readability.

UPGRADE_GUIDE.md (4)

55-55: Improved clarity in section heading. Renaming to "ProtocolPool Manual Wiring" clearly aligns the section title with its content and distinguishes it from other wiring instructions. Ensure the Table of Contents entry #protocolpool-manual-wiring matches this new heading.


162-162: Consistent DI Wiring heading. Changing to "ProtocolPool DI Wiring" makes the section context explicit and maintains parallel structure with the manual wiring section. Confirm that the TOC link #protocolpool-di-wiring is updated accordingly.


265-265: Clarified Epochs manual wiring. The updated heading "Epochs Manual Wiring" improves specificity and mirrors the pattern used for ProtocolPool. Verify that the TOC anchor #epochs-manual-wiring correctly links here.


340-340: Explicit Epochs DI wiring heading. Renaming to "Epochs DI Wiring" ensures consistency across DI sections and enhances readability. Check that the Table of Contents entry #epochs-di-wiring reflects this change.

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

95-95:

✅ Verification successful

Verify updated kwallet link
Please ensure the new KWallet Handbook URL resolves correctly (200 OK) and points to the intended KDE Wallet Manager page.

Expected output: 200


🏁 Script executed:

#!/bin/bash
# Check HTTP status for the updated kwallet link
curl -o /dev/null -s -w "%{http_code}" https://apps.kde.org/kwalletmanager5/

Length of output: 82


Link Verified: KWallet Handbook URL returns 200 OK
The updated link (https://apps.kde.org/kwalletmanager5/) resolves correctly (HTTP 200). No further changes needed.

docs/docs/learn/advanced/02-context.md (1)

37-37: Approve updated link for Consensus Params
The new URL points to a versioned, stable endpoint (v1.0) instead of master, which aligns with the goal of link validity.

docs/architecture/adr-038-state-listening.md (1)

23-23:

❌ Incorrect review comment

Verify the updated link path for correctness.

The new URL contains docs/docs/build/..., which appears to duplicate the docs directory. In the Cosmos SDK repo, the correct path on the main branch should be:

https://github.com/cosmos/cosmos-sdk/blob/main/docs/build/building-modules/02-messages-and-queries.md#queries

Please confirm the directory hierarchy and adjust the link accordingly.


🏁 Script executed:

#!/bin/bash
# Verify the existence of both the duplicated-path and corrected-path URLs

echo "Checking incorrect URL:"
curl -s -o /dev/null -w "HTTP %{http_code}\n" https://raw.githubusercontent.com/cosmos/cosmos-sdk/main/docs/docs/build/building-modules/02-messages-and-queries.md

echo "Checking correct URL:"
curl -s -o /dev/null -w "HTTP %{http_code}\n" https://raw.githubusercontent.com/cosmos/cosmos-sdk/main/docs/build/building-modules/02-messages-and-queries.md

Length of output: 452


No action needed: current docs link is valid

Verified that the path with the duplicated docs/docs/build/... returns HTTP 200, whereas the suggested “correct” path without the extra docs/ returns 404. The existing link is accurate and should remain unchanged.

Likely an incorrect or invalid review comment.

UPGRADING.md (2)

15-15: Link updated to v0.53.0 changelog
The changelog link now points to the v0.53.0 tag, ensuring it references a stable release rather than a moving branch.


103-103: SimApp example link points to v0.53.0 tag
The SimApp wiring example correctly references the v0.53.0 tag. This is consistent with the other tag-based link updates.

docs/spec/SPEC_STANDARD.md (2)

55-55: Correct the internal anchor link to the History section
The link [below](#history) now correctly matches the "History" header ID, ensuring the reference navigates to the intended section.


114-115:

✅ Verification successful

Investigate CI link failures for external references
The Markdown link checker is reporting HTTP 429 (rate limited) for these URLs:

Please verify that these destinations are still valid and consider either:

  1. Switching to raw GitHub URLs (e.g., raw.githubusercontent.com)
  2. Adjusting the link-checker configuration to handle rate limits or retry failures

You can run this quick check locally:


🏁 Script executed:

#!/bin/bash
urls=(
  "https://github.com/cosmos/ibc/blob/main/spec/ics-001-ics-standard/README.md"
  "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md"
)
for url in "${urls[@]}"; do
  echo "Checking $url"
  curl -I -s "$url" | head -n 1
done

Length of output: 733


External GitHub links validated—HTTP 200
Both URLs in docs/spec/SPEC_STANDARD.md (lines 114–115) return HTTP 200 on manual checks. No changes to the Markdown links are required. If your CI still encounters 429 rate-limit errors, consider adding retries or ignoring 429 responses in your link-checker configuration, or switch to raw.githubusercontent.com URLs for greater stability.

x/auth/README.md (1)

35-35: Approve corrected relative link for authz module. The link now correctly points to ../authz/, improving navigation consistency.

x/authz/README.md (1)

41-41: Approve corrected relative link for auth module. The link now correctly points to ../auth/, aligning with x/auth README.

README.md (1)

33-33: Approve updated Go homepage link. The link correctly points to https://go.dev, which is more stable than the direct download page.

docs/docs/learn/advanced/00-baseapp.md (1)

230-230:

✅ Verification successful

Verify anchor updates after renaming heading
After renaming “Main ABCI 2.0 Messages” to “Main ABCI Messages”, please verify that all internal links and TOC references resolve correctly. For example, run:

and update any stale anchors.


🏁 Script executed:

#!/bin/bash
# Check for any remaining references to the old anchor
rg -n '#main-abci-2\.0-messages' docs/docs/learn/advanced/00-baseapp.md

Length of output: 73


🏁 Script executed:

#!/bin/bash
# Search for any references to the old anchor across all documentation
rg -n '#main-abci-2\.0-messages' docs

Length of output: 39


All references updated: no stale anchors detected
Ran rg -n '#main-abci-2\.0-messages' docs across the documentation and found no remaining matches. Internal links and TOC references should now resolve correctly.

x/staking/README.md (2)

10-10: Correct external Cosmos Whitepaper link

Updated the URL to point to https://cosmos.network/whitepaper instead of the outdated /about/whitepaper.


52-52: Fix internal End-Block anchor link

Removed the -1 suffix from the #queues anchor to match the actual section ID.

testutil/simsx/README.md (4)

6-6: Update Message Factory link to correct path

Link now points to testutil/simsx/msg_factory.go, reflecting the actual directory structure.


21-21: Fix Sims registry link path

Updated the URL to testutil/simsx/registry.go for accurate module location.


32-32: Adjust Reporter link to correct directory

Corrected the link target to testutil/simsx/reporter.go to align with the repository layout.


45-45: Correct Test data environment link target

Link now points to testutil/simsx/environment.go, ensuring consistency with the file path.

x/nft/README.md (3)

19-19: Fix Class anchor link

Removed the -1 suffix from #class anchor so it matches the corresponding section header.


20-20: Fix NFT anchor link

Removed the -1 suffix from #nft anchor to align with the actual section heading.


91-91: Update external Proto event link

Changed the URL to reference the versioned v0.53.0 path for event.proto, improving link stability.

x/feegrant/README.md (2)

24-24: Fix MsgGrantAllowance anchor link

Removed the erroneous -1 suffix from #msggrantallowance to match the section heading.


25-25: Fix MsgRevokeAllowance anchor link

Removed the -1 suffix from #msgrevokeallowance to align with the actual header.

docs/architecture/adr-019-protobuf-state-encoding.md (1)

153-153: Update GoGoproto Any link to use 'main' branch

Changed the link from master to main branch in the gogoproto URL for consistency with current default branch naming.

docs/architecture/adr-033-protobuf-inter-module-comm.md (1)

400-400: External link update looks good
The external URL now points to the canonical Object-Capabilities resource (https://decentralized-id.com/development/object-capabilities/), improving accuracy and consistency.

proto/README.md (1)

3-3: Streamlined phrasing is clear
Changing "All of the Cosmos SDK proto files" to "All Cosmos SDK proto files" enhances readability and conciseness.

x/gov/README.md (4)

10-10: Updated Cosmos Whitepaper link
The external link has been corrected to https://cosmos.network/whitepaper, resolving the broken URL and pointing to the current whitepaper.


13-13: Hyphenation correction
The term "Cosmos SDK-based blockchain" now includes proper hyphenation, enhancing clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~13-~13: You might be missing the article “the” here.
Context: ...aper) in June 2016. The module enables Cosmos SDK-based blockchain to support an on-c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


42-50: Verify internal anchor updates
Several anchor links were simplified (e.g., #deposit, #proposal-submission, #vote). Please confirm that the corresponding section headers match these new IDs to avoid broken internal references.


60-61: Verify metadata anchor updates
The metadata anchors (#proposal, #vote) were updated; ensure those headings exist exactly as referenced.

docs/README.md (2)

32-32: Improve phrasing for starting docs
Changing "For starting only the current documentation, run:" to "To start only the current documentation, run:" streamlines the instruction.


41-41: Correct verb agreement
Switching "only build the docs" to "only builds the docs" fixes subject-verb agreement.

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

9-9: Use official pkg.go.dev link for depinject

Switching from a relative markdown link to the absolute pkg.go.dev URL ensures readers are directed to the canonical Go package documentation, improving link stability and accuracy.

docs/architecture/adr-062-collections-state-layer.md (1)

81-81: Remove obsolete collections usage example

The update removes the outdated Nibiru x/perp example and retains only the relevant x/oracle usage link, keeping the ADR focused and up to date.

docs/docs/learn/advanced/11-runtx_middleware.md (1)

11-11: Fix ADR-022 relative link and verify recovery.go reference

The relative path to ADR-022 is now correctly deepened to ../../../architecture/adr-022-custom-panic-handling.md. Please also verify that the recovery.go GitHub link remains reachable (pipeline is flagging it as rate-limited).

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

12-13: Convert local tool links to absolute GitHub references

Updating the Cosmovisor and Confix links to absolute URLs improves cross-repo consistency. Please verify that these links resolve correctly and consider pointing to a stable release tag if the pipeline continues to report failures.

docs/docs/build/building-modules/03-msg-services.md (1)

22-22: Correct ADR-031 link path

The relative link to ADR-031 now uses the proper traversal depth (../../../architecture/adr-031-msg-service.md), ensuring the document navigates correctly.

docs/docs/learn/advanced/06-grpc_rest.md (1)

29-29: Approve removal of unnecessary hyperlink.

Stripping the Markdown link around “encoding” clarifies that Protobuf itself is the encoding library, without implying an external resource.

docs/docs/learn/beginner/04-gas-fees.md (2)

49-49: Approve fix to the main/block gas meter anchor.

Updating the anchor from #main-gas-metter to #main-gas-meter ensures the internal link resolves correctly.


61-61: Approve American-English spelling update.

Changing “initialisation” to “initialization” aligns with the rest of the documentation’s styling.

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

10-10: Approve deeper relative path for ADR-057 link.

Adjusting the link to ../../../architecture/adr-057-app-wiring.md matches the file’s directory depth and prevents 404s.


18-18: Approve ADR-057 link update in prerequisites.

The new relative path correctly points to the architecture ADR document.

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

8-8: Approve simplification of the Modules link.

Removing the .md suffix and pointing to ./modules is consistent with other section links.

docs/docs/learn/advanced/08-events.md (1)

36-36: Approve correction of ADR link path.

Updating the path to ../../../architecture/adr-032-typed-events.md ensures the link resolves from the current file’s location.

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

98-98: Correct ADR-050 link depth
The updated relative path now uses three levels of traversal (../../../architecture/adr-050-sign-mode-textual.md), which matches the repository structure and fixes the broken link to ADR-050.

.github/PULL_REQUEST_TEMPLATE.md (1)

13-13: Streamline checklist wording
Changing “follow up issues” to “followup issues” improves consistency and readability in the template copy.

docs/docs/build/building-modules/13-upgrade.md (1)

63-63: Fix ADR-028 link path
Updating the relative link to use ../../../architecture/adr-028-public-key-addresses.md correctly points to ADR-028 from this document’s location.

tools/cosmovisor/CHANGELOG.md (1)

176-176: Update first-release changelog entry link
Switching to the canonical main/tools/cosmovisor/README.md path ensures the link remains valid across versions and branches.

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

50-50: Standardize Collections link to pkg.go.dev
Replacing the local markdown link with the absolute https://pkg.go.dev/cosmossdk.io/collections directs readers to the authoritative API docs.

.gitignore (1)

61-63: Ignored status file for link-checking script.
The new docs_links_status.md report file generated by the scripts/valid-links.py should indeed be ignored to prevent spurious commits.

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

152-152: Verify relative ADR-019 link and external GitHub URL.
The added explanation links to ../../build/architecture/adr-019-protobuf-state-encoding.md and an external GitHub path for gogoproto details. Please confirm both paths resolve correctly and consider using a stable pkg.go.dev link for the gogoproto properties file if GitHub rate-limiting persists.


225-225: Phrasing improvement is clear and concise.
The refinement to "via the module interface" improves accuracy.

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

23-23: Approve Collections link update.
The link to the Collections package on pkg.go.dev is accurate and follows the project pattern.

docs/docs/build/building-modules/16-testing.md (2)

25-25: Approve mockgen reference link.
The link to the official go.uber.org/mock package on pkg.go.dev is correctly formatted and points to the appropriate documentation.


119-124: Verify ADR-59 documentation link consistency.
Multiple references to ADR-59 now point to https://docs.cosmos.network/main/build/architecture/adr-059-test-scopes. Please confirm this path resolves correctly, and update if the documentation has moved or uses a different branch/tag.

docs/architecture/adr-059-test-scopes.md (2)

59-59: Good approach pinning the link to a specific version.

Pinning the reference to a specific version tag (v0.50.0) instead of using the default branch improves stability and ensures the example remains valid regardless of future changes to the repository.


155-155: Clear description of E2E test limitations.

The simplified description of end-to-end test limitations is more precise and easier to understand.

scripts/valid-links.py (1)

1-166: Well-structured link validator with effective error handling and caching.

This script provides a comprehensive solution for checking links in markdown files, including both web URLs and local references. It implements smart features like:

  • Caching to avoid redundant checks
  • Rate-limiting fallback with exponential backoff
  • Special handling for potentially valid but blocked sites
  • Intra-document anchor validation
  • Detailed reporting

The implementation is clean and follows good practices with modular functions and clear error handling.

🧰 Tools
🪛 Ruff (0.8.2)

5-5: urllib.parse.urlparse imported but unused

Remove unused import: urllib.parse.urlparse

(F401)

@@ -23,7 +23,7 @@ Clients that use this feature may now submit their transactions in a fire-and-fo
To submit an unordered transaction, clients must set the `unordered` flag to
`true` and ensure a reasonable `timeout_timestamp` is set. The `timeout_timestamp` is
used as a TTL for the transaction and provides replay protection. Each transaction's `timeout_timestamp` must be
unique to the account; however, the difference may be as small as a nanosecond. See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-070-unordered-transactions.md) for more details.
unique to the account; however, the difference may be as small as a nanosecond. See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-070-unordered-account.md) for more details.
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

⚠️ Potential issue

Inconsistent ADR-070 link reference
The ADR link still points to the main branch, which could lead to mismatched content if the ADR changes upstream. It should reference the v0.53.0 tag for stability.

Please apply this diff:

- See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-070-unordered-account.md)
+ See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/docs/architecture/adr-070-unordered-account.md)
📝 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
unique to the account; however, the difference may be as small as a nanosecond. See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-070-unordered-account.md) for more details.
unique to the account; however, the difference may be as small as a nanosecond. See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/docs/architecture/adr-070-unordered-account.md) for more details.
🤖 Prompt for AI Agents (early access)
In UPGRADING.md at line 26, the ADR-070 link currently points to the main
branch, which risks linking to changing content. Update the URL to reference the
v0.53.0 tag instead of main to ensure the link points to a stable, versioned
document.

@@ -7,7 +7,7 @@ sidebar_position: 1
## Abstract

This section specifies the slashing module of the Cosmos SDK, which implements functionality
first outlined in the [Cosmos Whitepaper](https://cosmos.network/about/whitepaper) in June 2016.
first outlined in the [Cosmos Whitepaper](https://cosmos.network/whitepaper) in June 2016.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Broken external link to Cosmos Whitepaper. The updated URL (https://cosmos.network/whitepaper) returns 404. Please update to a valid whitepaper location, e.g.:

-[Cosmos Whitepaper](https://cosmos.network/whitepaper)
+[Cosmos Whitepaper](https://v1.cosmos.network/whitepaper)
📝 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
first outlined in the [Cosmos Whitepaper](https://cosmos.network/whitepaper) in June 2016.
first outlined in the [Cosmos Whitepaper](https://v1.cosmos.network/whitepaper) in June 2016.
🤖 Prompt for AI Agents (early access)
In x/slashing/README.md at line 10, the link to the Cosmos Whitepaper is broken
and returns a 404 error. Update the URL to a valid and current location of the
Cosmos Whitepaper, such as the official Cosmos documentation site or repository
where the whitepaper is hosted, ensuring the link is accessible and correct.

@@ -20,7 +20,7 @@ service definitions defined in [ADR 021](./adr-021-protobuf-query-encoding.md) a

## Context

In the current Cosmos SDK documentation on the [Object-Capability Model](../../learn/advanced/10-ocap.md), it is stated that:
In the current Cosmos SDK documentation on the [Object-Capability Model](../docs/learn/advanced/10-ocap.md), it is stated that:
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Broken relative link path
The updated relative path ../docs/learn/advanced/10-ocap.md from this ADR resolves to docs/docs/learn/..., which will 404. The correct relative path from docs/architecture/adr-033-... to the 10-ocap.md file is ../learn/advanced/10-ocap.md.

Apply this diff:

- In the current Cosmos SDK documentation on the [Object-Capability Model](../docs/learn/advanced/10-ocap.md)
+ In the current Cosmos SDK documentation on the [Object-Capability Model](../learn/advanced/10-ocap.md)
📝 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
In the current Cosmos SDK documentation on the [Object-Capability Model](../docs/learn/advanced/10-ocap.md), it is stated that:
- In the current Cosmos SDK documentation on the [Object-Capability Model](../docs/learn/advanced/10-ocap.md), it is stated that:
+ In the current Cosmos SDK documentation on the [Object-Capability Model](../learn/advanced/10-ocap.md), it is stated that:
🤖 Prompt for AI Agents (early access)
In docs/architecture/adr-033-protobuf-inter-module-comm.md at line 23, the
relative link path to the Object-Capability Model documentation is incorrect and
resolves to docs/docs/learn/..., causing a 404 error. Update the link path from
../docs/learn/advanced/10-ocap.md to ../learn/advanced/10-ocap.md to correctly
reference the target file relative to the ADR location.

@@ -289,7 +289,7 @@ More specifically, any special account address must not have a length equal to 2

## Appendix: Consulting session

End of Dec 2020 we had a session with [Alan Szepieniec](https://scholar.google.be/citations?user=4LyZn8oAAAAJ&hl=en) to consult the approach presented above.
End of Dec 2020 we had a session with [Alan Szepieniec](https://www.linkedin.com/in/alan-szepieniec-7b1957142) to consult the approach presented above.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

LinkedIn link triggers pipeline failure
The link to Alan Szepieniec’s LinkedIn profile (https://www.linkedin.com/in/alan-szepieniec-7b1957142) returns a 999 status in the Markdown link check. Consider replacing it with an accessible resource (e.g., his Google Scholar profile) or appending a trailing slash:

-[Alan Szepieniec](https://www.linkedin.com/in/alan-szepieniec-7b1957142)
+[Alan Szepieniec](https://www.linkedin.com/in/alan-szepieniec-7b1957142/)
📝 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
End of Dec 2020 we had a session with [Alan Szepieniec](https://www.linkedin.com/in/alan-szepieniec-7b1957142) to consult the approach presented above.
End of Dec 2020 we had a session with [Alan Szepieniec](https://www.linkedin.com/in/alan-szepieniec-7b1957142/) to consult the approach presented above.
🤖 Prompt for AI Agents (early access)
In docs/architecture/adr-028-public-key-addresses.md at line 292, the LinkedIn
URL for Alan Szepieniec causes the Markdown link check to fail with a 999
status. To fix this, replace the LinkedIn URL with an accessible alternative
such as his Google Scholar profile or add a trailing slash to the existing
LinkedIn URL to ensure it passes the link check.

Comment on lines +55 to +59
# python
.venv
bin
lib
pyvenv.cfg
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Avoid overly broad ignore patterns for common directories.
Ignoring bin and lib at the repo root can inadvertently hide legitimate files or folders named bin or lib. Since .venv already covers these subdirectories, remove the generic entries or scope them to the virtual environment.

Consider applying this diff:

@@ .gitignore
-# python
-.venv
-bin
-lib
-pyvenv.cfg
+# python
+.venv/
+# pyvenv.cfg (virtual environment metadata)
+pyvenv.cfg
📝 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
# python
.venv
bin
lib
pyvenv.cfg
# python
.venv/
# pyvenv.cfg (virtual environment metadata)
pyvenv.cfg
🤖 Prompt for AI Agents (early access)
In the .gitignore file around lines 55 to 59, the entries for ignoring 'bin' and
'lib' are too broad and may unintentionally exclude important files or
directories named 'bin' or 'lib' outside the virtual environment. Remove these
generic 'bin' and 'lib' ignore patterns or modify them to specifically target
the virtual environment subdirectories, since '.venv' already covers these
paths. This will prevent accidentally ignoring unrelated files.

@@ -159,4 +159,4 @@ You can sync a full node to an existing blockchain which has been upgraded using

To successfully sync, you must start with the initial binary that the blockchain started with at genesis. If all Software Upgrade Plans contain binary instruction, then you can run Cosmovisor with auto-download option to automatically handle downloading and switching to the binaries associated with each sequential upgrade. Otherwise, you need to manually provide all binaries to Cosmovisor.

To learn more about Cosmovisor, see the [Cosmovisor Quick Start](../../build/tooling/01-cosmovisor.md).
To learn more about Cosmovisor, see the [Cosmovisor Quick Start](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md).
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

External GitHub link fails link-checking.
The link to the Cosmovisor README on GitHub is currently returning a 429 (rate-limited) error in CI. To ensure the link passes the Markdown checker, consider switching to the raw content URL or use a canonical pkg.go.dev reference.

Example diff:

-To learn more about Cosmovisor, see the [Cosmovisor Quick Start](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md).
+To learn more about Cosmovisor, see the [Cosmovisor Quick Start](https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.53.0/tools/cosmovisor/README.md).
📝 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
To learn more about Cosmovisor, see the [Cosmovisor Quick Start](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md).
To learn more about Cosmovisor, see the [Cosmovisor Quick Start](https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.53.0/tools/cosmovisor/README.md).
🤖 Prompt for AI Agents (early access)
In docs/docs/learn/advanced/15-upgrade.md at line 162, the external GitHub link
to the Cosmovisor README causes a 429 rate-limit error during CI link-checking.
To fix this, replace the current GitHub URL with either the raw content URL of
the README file or a canonical reference such as the pkg.go.dev link for
Cosmovisor, ensuring the link is stable and passes the Markdown checker.


## Automation

* [Depinject](./01-depinject.md) - Dependency injection framework
* [Depinject]https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix Markdown link formatting for Depinject.
The Depinject link is missing an opening parenthesis. It currently reads:

* [Depinject]https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework

This breaks Markdown rendering. Apply this diff to correct it:

-* [Depinject]https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
+* [Depinject](https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
📝 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
* [Depinject]https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
* [Depinject](https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
🤖 Prompt for AI Agents (early access)
In docs/docs/build/packages/README.md at line 27, the Markdown link for
Depinject is missing an opening parenthesis before the URL, causing rendering
issues. Fix this by adding the opening parenthesis immediately after the link
text "Depinject" so the link is properly formatted as
[Depinject](https://pkg.go.dev/cosmossdk.io/depinject).

Copy link
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: 6

🔭 Outside diff range comments (5)
docs/README.md (1)

3-3: ⚠️ Potential issue

Broken link to CONTRIBUTING.md
The CONTRIBUTING.md file was removed in this PR, so this GitHub link is now dead (pipeline 429/404). Update or remove it. For example:

- If you want to open a PR in Cosmos SDK to update the documentation, please follow the guidelines in [`CONTRIBUTING.md`](https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation) and the [Documentation Writing Guidelines](./DOC_WRITING_GUIDELINES.md).
+ If you want to open a PR in Cosmos SDK to update the documentation, please follow the [Documentation Writing Guidelines](./DOC_WRITING_GUIDELINES.md#updating-documentation).
docs/docs/learn/beginner/00-app-anatomy.md (1)

1-280: 💡 Verification agent

🧩 Analysis chain

Note: Pipeline still detects broken links in this file.

The CI pipeline reports issues with some links in the file including #application-constructor (404) which doesn't appear to be fixed in this PR.

Verify whether these remaining link issues should be addressed as part of this PR:


🌐 Web query:

Are there common GitHub practices for addressing internal anchor links that return 404 errors in documentation?

💡 Result:

When dealing with internal anchor links in GitHub documentation that return 404 errors, there are several practices and considerations to keep in mind.

Understanding Anchor Links in GitHub

GitHub uses a specific approach to anchor links that requires attention to detail to prevent 404 errors. Internal anchor links in GitHub documentation can break for various reasons, leading to frustrating user experiences.

Custom Anchors

GitHub allows custom HTML anchor tags to create navigation anchor points anywhere in your document. To implement these properly:

  • Use standard HTML anchor tags like <a name="unique-anchor-name"></a>
  • Create unique naming schemes for anchor tags to avoid ambiguous references
  • Understand that custom anchors won't be included in document outlines or Tables of Contents[1]

You can link to these custom anchors using the standard markdown format: [link text](#my-custom-anchor-point)[1]

Heading Anchors

For heading-based anchors, GitHub automatically generates them by:

  • Adding hyphen (-) characters between each word in the heading
  • Converting all characters to lowercase
  • Removing special characters[2]

Common Causes of 404 Errors in Anchor Links

Several issues can lead to anchor links returning 404 errors:

Case Sensitivity

The index.html file and anchor names are case sensitive. For example, Index.html or anchor references with incorrect capitalization will not work properly[6].

Directory Structure Issues

Make sure your directory contents are properly organized in the root directory. Anchor links may fail if the file structure doesn't match what's expected[6].

Link Format Problems

When creating links between documents:

  • Use relative links rather than absolute paths
  • Link directly to Markdown files or real files in the docs directory (e.g., about.md, ../about.md, ../about/index.md)
  • Avoid linking to "imaginary destinations" like about.html or /about[8]

Link Maintenance

Links can become broken when documentation is restructured or URLs change. Regular link checking is essential:

  • Use a link checker regularly to find broken links to section titles or anchors
  • Note that broken anchor links might not be reported as errors during builds[4]

Best Practices for Addressing Anchor Link Errors

Link Formatting Guidelines

When creating links in documentation:

  • Use meaningful links that provide value to the user's journey
  • For links to other GitHub Docs pages, use the special keyword AUTOTITLE for link text
  • Don't apply styling to links or wrap them in quotation marks
  • Don't include punctuation marks within hyperlinks[5]

Proper Linking Syntax

For linking to sections in other pages:

  • Use the format: [AUTOTITLE](/PATH/TO/PAGE#SECTION-LINK)
  • Ensure anchor references match the automatically generated anchors from headings[5]

Maintaining Links Over Time

To prevent links from breaking:

  • Check logs and review 404 page analytics to identify common patterns of errors
  • Implement redirects for frequently accessed but moved content
  • When restructuring documentation, consider the impact on existing links[10]
  • Regularly audit and update documentation to fix broken links

By following these practices, you can significantly reduce the occurrence of 404 errors in your GitHub documentation's internal anchor links, improving the user experience for those navigating your content.

Citations:


Fix broken internal anchor links in 00-app-anatomy.md

The CI is still flagging 404s for internal anchors (e.g. #application-constructor), because those IDs don’t exist. The headings generate slugs like #constructor-function, not #application-constructor. Please update all incorrect anchors:

• docs/docs/learn/beginner/00-app-anatomy.md
– Replace any ](#application-constructor) with ](#constructor-function)
– Verify other anchors (e.g. #initchainer, #preblocker, #beginblocker-and-endblocker, etc.) match their corresponding heading slugs.

After updating, re-run the link checker to confirm no more broken anchors.

🧰 Tools
🪛 LanguageTool

[style] ~57-~57: Consider a more concise word here.
Context: ...rialize and deserialize data structures in order to store them, as stores can only persist ...

(IN_ORDER_TO_PREMIUM)


[style] ~68-~68: Consider a more concise word here.
Context: ...must fulfill the AppCreator signature in order to be used in the [start command](../adv...

(IN_ORDER_TO_PREMIUM)


[style] ~78-~78: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ..., and all the appropriate store keys. * Instantiate all the keeper objects def...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~81-~81: Did you mean ‘different from’? ‘Different than’ is often considered colloquial style.
Context: ...e module. Should the value be different than the predicted one, special logic define...

(DIFFERENT_THAN)


[style] ~81-~81: To elevate your writing, try using a synonym here.
Context: ...producing long-lasting effects that are hard to fix. * With the module manager, set ...

(HARD_TO)


[style] ~84-~84: This phrase is redundant. Consider writing “started”.
Context: ...o initialize the application when it is first started. * PreBlocker: cal...

(FIRST_BEGAN)


[uncategorized] ~85-~85: Loose punctuation mark.
Context: ...arted. * PreBlocker: called before BeginBlock. * [`Begin...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~86-~86: Loose punctuation mark.
Context: ...before BeginBlock. * [BeginBlocker, EndBlocker](#beginblocker-and-endbloc...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~87-~87: Loose punctuation mark.
Context: ...](../advanced/00-baseapp.md#antehandler): used to handle fees and signature verif...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~93-~93: You might be missing the article “an” here.
Context: ... for the first time. See an example of application constructor from simapp: ```go refer...

(AI_EN_LECTOR_MISSING_DETERMINER_AN)


[uncategorized] ~150-~150: Loose punctuation mark.
Context: ...our fields means: * InterfaceRegistry: The InterfaceRegistry is used by the ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~153-~153: Loose punctuation mark.
Context: ...9-protobuf-state-encoding.md). * Codec: The default codec used throughout the C...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~154-~154: Loose punctuation mark.
Context: ...K uses Protobuf as Codec. * TxConfig: TxConfig defines an interface a clien...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~155-~155: Loose punctuation mark.
Context: .../advanced/01-transactions.md). * Amino: Some legacy parts of the Cosmos SDK sti...

(UNLIKELY_OPENING_PUNCTUATION)


[style] ~166-~166: Consider a more concise word here.
Context: ...0-baseapp.md) to the appropriate module in order to be processed. This paradigm enables dev...

(IN_ORDER_TO_PREMIUM)


[uncategorized] ~184-~184: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: .... sdk.Msgs are encoded using Protobuf Anys. By analyzing each Any's `type...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[style] ~195-~195: Consider a more concise word here.
Context: ...3-L36 ``` Service methods use keeper in order to update the module state. Each module s...

(IN_ORDER_TO_PREMIUM)


[formatting] ~219-~219: If the ‘because’ clause is essential to the meaning, do not use a comma before the clause.
Context: ...to unmarshal them when it retrieves them, because stores only accept []bytes as value. ...

(COMMA_BEFORE_BECAUSE)


[uncategorized] ~232-~232: Possible missing preposition found.
Context: ... to the appropriate querier the queryRoute parameter supplied. #### ...

(AI_HYDRA_LEO_MISSING_OF)


[uncategorized] ~269-~269: A punctuation mark might be missing here.
Context: ...sed framework for versioning control is [go.mod](https://github.com/golang/go/w...

(AI_EN_LECTOR_MISSING_PUNCTUATION)

🪛 GitHub Actions: Check Markdown links

[error] 1-1: Markdown link check failed: 5 dead links found. Example: [✖] #application-constructor (Status: 404), [✖] https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto (Status: 429), ... (see logs for full list)

docs/architecture/adr-040-storage-and-smt-state-commitments.md (2)

26-27: ⚠️ Potential issue

Broken link: iavl node documentation is unreachable.
The link
https://github.com/cosmos/iavl/blob/master/docs/node/node.md
returns a 429. Please verify the correct path or replace with an archived or updated URL.


74-74: ⚠️ Potential issue

Broken link: Celestia spec "Sparse Merkle Tree" path invalid.
The URL
https://github.com/celestiaorg/celestia-specs/blob/ec98170398dfc6394423ee79b00b71038879e211/src/specs/data_structures.md#sparse-merkle-tree
returns a 429. Please confirm the repository path or link to an archived version.

docs/architecture/adr-028-public-key-addresses.md (1)

35-35: ⚠️ Potential issue

Broken link: weave conditions.go is unreachable.
The URL
https://github.com/iov-one/weave/blob/master/conditions.go
returns a 429. Please verify the repository location or use an archived copy.

🧰 Tools
🪛 LanguageTool

[misspelling] ~35-~35: This word is normally spelled with a hyphen.
Context: ... a condition to be a type and format as human readable string with some binary data appended. ...

(EN_COMPOUNDS_HUMAN_READABLE)


[uncategorized] ~35-~35: The abbreviation “e.g.” (= for example) requires two periods.
Context: ...ven address with a different condition (eg ed25519 vs secp256k1). > This is explai...

(E_G)

🧹 Nitpick comments (18)
crypto/bcrypt_readme.md (2)

5-5: Use descriptive link text for accessibility
Avoid using generic link text like "here". A more specific label helps all readers (including those using screen readers) understand the link’s destination.
Suggested change:

-For some background into security parameter considerations, see [here](https://auth0.com/blog/hashing-in-action-understanding-bcrypt/).
+For some background on security parameter considerations, see the [Auth0 blog post on bcrypt hashing](https://auth0.com/blog/hashing-in-action-understanding-bcrypt/).

7-7: Simplify phrasing by removing “for the time being”
The phrase “for the time being” is wordy. Condensing it improves clarity.
Suggested change:

-Given our security model, … this parameter choice seems sufficient for the time being.
+Given our security model, … this parameter choice is sufficient for now.
🧰 Tools
🪛 LanguageTool

[style] ~7-~7: This phrasing can be wordy. For improved clarity, try opting for something more concise.
Context: ... this parameter choice seems sufficient for the time being. Bcrypt always generates a 448-bit key,...

(FOR_THE_TIME_BEING)

docs/docs/learn/advanced/00-baseapp.md (2)

168-168: Consider re-adding a stable link for "custom mempool handlers"
You've converted the markdown link to plain text to avoid a dead link, which is valid for build stability. As an optional enhancement, if there’s a maintained reference (in-repo or external) for custom mempool handlers, linking to it could improve discoverability without risking future link rot.


179-179: Consider re-adding a stable link for "custom mempool handlers"
As above, removing the link prevents pipeline failures but reduces navigability. If a reliable anchor or canonical URL exists, consider updating the link to point there.

CHANGELOG.md (1)

287-287: Consider re-adding advisory hyperlink
Removing the link around GHSA-4j93-fm92-rp4m reduces discoverability of the security advisory. Consider linking the ID to the advisory page (https://github.com/cosmos/cosmos-sdk/security/advisories/GHSA-4j93-fm92-rp4m).

README.md (1)

50-50: Replace placeholder in Contributing section
The TODO NEW CONTRIBUTING GUIDE placeholder should be replaced with a link to the new contributing guidelines or removed before publishing.

proto/README.md (1)

7-9: Clean up formatting and punctuation
There's a stray | at the end of line 9 and a missing comma before "following". Consider this diff:

-All Cosmos SDK proto files are defined here. This folder should
-be synced regularly with buf.build/cosmos/cosmos-sdk regularly by
-a maintainer by running `buf push` in this folder.
-
-User-facing documentation should not be placed here but instead goes in
-`buf.md` and in each protobuf package following the guidelines in
-https://docs.buf.build/bsr/documentation. |
+All Cosmos SDK proto files are defined here. This folder should
+be synced regularly with buf.build/cosmos/cosmos-sdk by a maintainer
+running `buf push` in this folder.
+
+User-facing documentation should not be placed here but instead goes in
+`buf.md`, and in each protobuf package, following the guidelines in
+https://docs.buf.build/bsr/documentation.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~8-~8: Possible missing comma found.
Context: ...d goes in buf.md and in each protobuf package following the guidelines in https://doc...

(AI_HYDRA_LEO_MISSING_COMMA)

scripts/valid-links.py (1)

5-5: Remove unused import.

The urlparse function from urllib.parse is imported but never used in the code.

-from urllib.parse import urlparse
🧰 Tools
🪛 Ruff (0.8.2)

5-5: urllib.parse.urlparse imported but unused

Remove unused import: urllib.parse.urlparse

(F401)

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

17-17: Fix typo: "expos" should be "expose".
The verb "expose" is missing an 'e'.

- While all user-facing interfaces to Cosmos software should expos Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
+ While all user-facing interfaces to Cosmos software should expose Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
🧰 Tools
🪛 LanguageTool

[grammar] ~17-~17: The word ‘expos’ is a noun or an adjective. A verb or adverb is missing or misspelled here, or maybe a comma is missing.
Context: ...ng interfaces to Cosmos software should expos Bech32 interfaces, many internal interf...

(PRP_MD_NN)


21-21: Add missing verb "be" for correctness.
Change "will sufficient" to "will be sufficient" and pluralize "representation."

- Simply prepending bytes from this [table](https://github.com/cometbft/cometbft/blob/main/spec/core/encoding.md) to the byte string payload before Bech32 encoding will sufficient for compatible representation.
+ Simply prepending bytes from this [table](https://github.com/cometbft/cometbft/blob/main/spec/core/encoding.md) to the byte string payload before Bech32 encoding will be sufficient for compatible representations.
🧰 Tools
🪛 LanguageTool

[grammar] ~21-~21: Replace ‘sufficient’ with an appropriate verb.
Context: ...ing payload before Bech32 encoding will sufficient for compatible representation.

(MD_NN)

docs/architecture/adr-040-storage-and-smt-state-commitments.md (2)

273-273: Add missing article and improve clarity.
Insert "the" and adjust phrasing.

- To verify that an object registered in RDBMS is same as the one committed to SMT, one will need to load it from RDBMS, marshal using protobuf, hash and do SMT search.
+ To verify that an object registered in the RDBMS is the same as the one committed to SMT, one will need to load it from the RDBMS, marshal it using protobuf, hash it, and perform the SMT search.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~273-~273: You might be missing the article “the” here.
Context: ...y that an object registered in RDBMS is same as the one committed to SMT, one will n...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


277-277: Fix grammatical error: missing verb and article.
Change phrasing for correctness.

- Module will responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
+ The module will be responsible for having a sound storage model and can optionally use the feature discussed in the __Committing to an object without saving it__ section.
🧰 Tools
🪛 LanguageTool

[grammar] ~277-~277: The word ‘responsible’ is a noun or an adjective. A verb is missing or misspelled, or maybe a comma is missing.
Context: ...ot automatically committed. Module will responsible for having a sound storage model and ca...

(MD_JJ)


[uncategorized] ~277-~277: You might be missing the article “the” here.
Context: ...optionally use the feature discussed in __Committing to an object without saving ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

docs/architecture/adr-062-collections-state-layer.md (1)

81-81: Verify and pin the example link to a specific commit or release.
The link [x/oracle](https://github.com/NibiruChain/nibiru/blob/master/x/oracle/keeper/keeper.go#L32) uses the default branch (master) which may change over time and lead to broken links or rate-limiting errors. Consider pinning it to a known release tag or commit SHA to ensure long-term stability.

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

9-9: Consider version-pinning the pkg.go.dev reference.
Switching to the absolute https://pkg.go.dev/cosmossdk.io/depinject URL improves link stability over a relative path. To guard against future API or path changes, you may want to append a version query (e.g., ?tab=doc&version=v0.50.0) or reference a specific release.

docs/docs/learn/advanced/15-upgrade.md (1)

162-162: Validate and possibly update the Cosmovisor link.
The new URL points to github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md. GitHub links can be rate-limited (429) or moved. Consider linking to the official Cosmos SDK docs site (e.g. docs.cosmos.network) or pinning to a specific release tag to improve reliability.

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

50-50: Pin the Collections pkg.go.dev link to a release version.
The link https://pkg.go.dev/cosmossdk.io/collections is correct, but it defaults to the latest; pinning to the SDK version used (e.g., ?tab=doc&version=v0.53.0) will ensure the documentation corresponds exactly to the code in this release.

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

27-27: Fix markdown link syntax for Depinject.

The link is missing an opening parenthesis. Apply this diff:

-* [Depinject]https://pkg.go.dev/cosmossdk.io/depinject)
+* [Depinject](https://pkg.go.dev/cosmossdk.io/depinject)
docs/architecture/adr-059-test-scopes.md (1)

139-140: Use en dash for range notation.

Replace the hyphen in the time range with an en dash for typographical accuracy:

-* A success may take a long time to run, 7-10 minutes per simulation in CI.
+* A success may take a long time to run, 7–10 minutes per simulation in CI.
🧰 Tools
🪛 LanguageTool

[typographical] ~139-~139: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... A success may take a long time to run, 7-10 minutes per simulation in CI. * Timeout...

(HYPHEN_TO_EN)

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 05ac584 and c4f68e7.

📒 Files selected for processing (56)
  • .github/PULL_REQUEST_TEMPLATE.md (2 hunks)
  • .gitignore (1 hunks)
  • CHANGELOG.md (1 hunks)
  • CODING_GUIDELINES.md (0 hunks)
  • CONTRIBUTING.md (0 hunks)
  • README.md (2 hunks)
  • RELEASE_PROCESS.md (0 hunks)
  • ROADMAP.md (0 hunks)
  • UPGRADE_GUIDE.md (4 hunks)
  • UPGRADING.md (3 hunks)
  • crypto/bcrypt_readme.md (1 hunks)
  • docs/README.md (2 hunks)
  • docs/architecture/adr-009-evidence-module.md (2 hunks)
  • docs/architecture/adr-019-protobuf-state-encoding.md (1 hunks)
  • docs/architecture/adr-028-public-key-addresses.md (1 hunks)
  • docs/architecture/adr-033-protobuf-inter-module-comm.md (2 hunks)
  • docs/architecture/adr-038-state-listening.md (1 hunks)
  • docs/architecture/adr-040-storage-and-smt-state-commitments.md (2 hunks)
  • docs/architecture/adr-054-semver-compatible-modules.md (2 hunks)
  • docs/architecture/adr-059-test-scopes.md (4 hunks)
  • docs/architecture/adr-062-collections-state-layer.md (1 hunks)
  • docs/docs/build/build.md (1 hunks)
  • docs/docs/build/building-apps/00-runtime.md (0 hunks)
  • docs/docs/build/building-apps/01-app-go-di.md (1 hunks)
  • docs/docs/build/building-modules/03-msg-services.md (1 hunks)
  • docs/docs/build/building-modules/13-upgrade.md (1 hunks)
  • docs/docs/build/building-modules/15-depinject.md (1 hunks)
  • docs/docs/build/building-modules/16-testing.md (2 hunks)
  • docs/docs/build/packages/README.md (1 hunks)
  • docs/docs/build/tooling/README.md (1 hunks)
  • docs/docs/learn/advanced/00-baseapp.md (3 hunks)
  • docs/docs/learn/advanced/01-transactions.md (1 hunks)
  • docs/docs/learn/advanced/02-context.md (1 hunks)
  • docs/docs/learn/advanced/05-encoding.md (1 hunks)
  • docs/docs/learn/advanced/06-grpc_rest.md (1 hunks)
  • docs/docs/learn/advanced/08-events.md (1 hunks)
  • docs/docs/learn/advanced/11-runtx_middleware.md (1 hunks)
  • docs/docs/learn/advanced/15-upgrade.md (1 hunks)
  • docs/docs/learn/beginner/00-app-anatomy.md (2 hunks)
  • docs/docs/learn/beginner/04-gas-fees.md (2 hunks)
  • docs/docs/user/run-node/00-keyring.md (1 hunks)
  • docs/spec/SPEC_STANDARD.md (1 hunks)
  • docs/spec/addresses/bech32.md (1 hunks)
  • proto/README.md (1 hunks)
  • scripts/valid-links.py (1 hunks)
  • store/snapshots/README.md (1 hunks)
  • store/streaming/abci/README.md (0 hunks)
  • testutil/simsx/README.md (4 hunks)
  • tools/cosmovisor/CHANGELOG.md (1 hunks)
  • x/auth/README.md (1 hunks)
  • x/authz/README.md (1 hunks)
  • x/feegrant/README.md (1 hunks)
  • x/gov/README.md (3 hunks)
  • x/nft/README.md (2 hunks)
  • x/slashing/README.md (1 hunks)
  • x/staking/README.md (2 hunks)
💤 Files with no reviewable changes (6)
  • store/streaming/abci/README.md
  • docs/docs/build/building-apps/00-runtime.md
  • CONTRIBUTING.md
  • ROADMAP.md
  • CODING_GUIDELINES.md
  • RELEASE_PROCESS.md
🧰 Additional context used
🪛 GitHub Actions: Check Markdown links
docs/docs/learn/advanced/05-encoding.md

[error] 1-1: Markdown link check failed: 5 dead links found. Example: [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/x/auth/keeper/keeper.go#L239-L242 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/x/staking/types/staking.pb.go#L340-L375 (Status: 429), ... (see logs for full list)

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

[error] 1-1: Markdown link check failed: 3 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/proto/cosmos/tx/signing/v1beta1/signing.proto#L17 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/x/auth/tx/builder.go#L27-L44 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/x/auth/migrations/legacytx/stdtx_builder.go#L14-L17 (Status: 429)

docs/spec/SPEC_STANDARD.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/ibc/blob/main/spec/ics-001-ics-standard/README.md (Status: 429), [✖] https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md (Status: 429)

docs/README.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation (Status: 429)

docs/docs/build/tooling/README.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md (Status: 429)

README.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/store/types/store.go (Status: 429), [✖] https://github.com/cosmos/iavl/blob/master/docs/overview.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/store/types/store.go (Status: 429), [✖] https://github.com/cosmos/iavl/blob/master/docs/overview.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://cosmos.network/whitepaper (Status: 404)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/RELEASE_PROCESS.md (Status: 429), [✖] https://docs.cosmos.network/main/architecture/adr-043-nft-module.html (Status: 404)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://cosmos.network/whitepaper (Status: 404), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-037-gov-split-vote.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-009-evidence-module.md (Status: 429), [✖] https://github.com/cometbft/cometbft/blob/main/spec/abci/abci%2B%2B_basic_concepts.md#evidence (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-043-nft-module.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/proto/cosmos/nft/v1beta1/event.proto (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://cosmos.network/whitepaper (Status: 404)


[error] 1-1: Markdown link check failed: 4 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-030-authz-module.md (Status: 429), [✖] #SendAuthorization (Status: 404), [✖] #GenericAuthorization (Status: 404), [✖] #StakeAuthorization (Status: 404)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-029-fee-grant-module.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/docs/spec/fee_distribution/f1_fee_distr.pdf (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-010-modular-antehandler.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation (Status: 429)

docs/docs/learn/advanced/11-runtx_middleware.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/baseapp/recovery.go (Status: 429)

docs/architecture/adr-028-public-key-addresses.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/iov-one/weave/blob/master/conditions.go (Status: 429), [✖] https://www.linkedin.com/in/alan-szepieniec-7b1957142 (Status: 999)

docs/docs/build/building-modules/15-depinject.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/scripts/protocgen-pulsar.sh (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/api/cosmos/group/module/v1/module.pulsar.go (Status: 429)

docs/architecture/adr-062-collections-state-layer.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-055-orm.md (Status: 429)

docs/docs/build/building-modules/13-upgrade.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/x/bank/migrations/v2/store.go#L55-L76 (Status: 429)

docs/docs/learn/advanced/02-context.md

[error] 1-1: Markdown link check failed: 3 dead links found. [✖] https://docs.cometbft.com/master/spec/abci/abci.html#voteinfo (Status: 404), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/core/comet/service.go#L14 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/core/header/service.go#L14 (Status: 429)

docs/architecture/adr-038-state-listening.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/docs/build/building-modules/02-messages-and-queries.md#queries (Status: 429)

docs/architecture/adr-059-test-scopes.md

[error] 1-1: Markdown link check failed: 16 dead links found. Example: [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-053-go-module-refactoring.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-057-app-wiring.md (Status: 429), ... (see logs for full list)

docs/docs/learn/advanced/15-upgrade.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429)

docs/docs/learn/advanced/08-events.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/proto/cosmos/nft/v1beta1/event.proto#L21-L31 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/x/bank/types/events.go (Status: 429)

docs/docs/learn/advanced/00-baseapp.md

[error] 1-1: Markdown link check failed: 17 dead links found. Example: [✖] https://github.com/cometbft/cometbft/blob/v0.37.x/spec/abci/abci++_basic_concepts.md#mempool-methods (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/baseapp/options.go (Status: 429), ... (see logs for full list)

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

[error] 1-1: Markdown link check failed: 5 dead links found. Example: [✖] #application-constructor (Status: 404), [✖] https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/any.proto (Status: 429), ... (see logs for full list)

docs/architecture/adr-009-evidence-module.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/tendermint/spec/blob/7b3138e69490f410768d9b1ffc7a17abc23ea397/spec/consensus/fork-accountability.md (Status: 429)

docs/docs/learn/advanced/06-grpc_rest.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/scripts/protoc-swagger-gen.sh (Status: 429)

docs/architecture/adr-040-storage-and-smt-state-commitments.md

[error] 1-1: Markdown link check failed: 5 dead links found. Example: [✖] https://github.com/cosmos/iavl/blob/master/docs/node/node.md (Status: 429), [✖] https://github.com/celestiaorg/celestia-specs/blob/ec98170398dfc6394423ee79b00b71038879e211/src/specs/data_structures.md#sparse-merkle-tree (Status: 429), ... (see logs for full list)

🪛 LanguageTool
crypto/bcrypt_readme.md

[style] ~7-~7: This phrasing can be wordy. For improved clarity, try opting for something more concise.
Context: ... this parameter choice seems sufficient for the time being. Bcrypt always generates a 448-bit key,...

(FOR_THE_TIME_BEING)

docs/spec/addresses/bech32.md

[grammar] ~17-~17: The word ‘expos’ is a noun or an adjective. A verb or adverb is missing or misspelled here, or maybe a comma is missing.
Context: ...ng interfaces to Cosmos software should expos Bech32 interfaces, many internal interf...

(PRP_MD_NN)


[grammar] ~21-~21: Replace ‘sufficient’ with an appropriate verb.
Context: ...ing payload before Bech32 encoding will sufficient for compatible representation.

(MD_NN)

docs/architecture/adr-059-test-scopes.md

[typographical] ~139-~139: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... A success may take a long time to run, 7-10 minutes per simulation in CI. * Timeout...

(HYPHEN_TO_EN)

proto/README.md

[uncategorized] ~8-~8: Possible missing comma found.
Context: ...d goes in buf.md and in each protobuf package following the guidelines in https://doc...

(AI_HYDRA_LEO_MISSING_COMMA)

x/gov/README.md

[uncategorized] ~13-~13: You might be missing the article “the” here.
Context: ...aper) in June 2016. The module enables Cosmos SDK-based blockchain to support an on-c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

docs/architecture/adr-040-storage-and-smt-state-commitments.md

[uncategorized] ~273-~273: You might be missing the article “the” here.
Context: ...y that an object registered in RDBMS is same as the one committed to SMT, one will n...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[grammar] ~277-~277: The word ‘responsible’ is a noun or an adjective. A verb is missing or misspelled, or maybe a comma is missing.
Context: ...ot automatically committed. Module will responsible for having a sound storage model and ca...

(MD_JJ)


[uncategorized] ~277-~277: You might be missing the article “the” here.
Context: ...optionally use the feature discussed in __Committing to an object without saving ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🪛 Ruff (0.8.2)
scripts/valid-links.py

5-5: urllib.parse.urlparse imported but unused

Remove unused import: urllib.parse.urlparse

(F401)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Summary
🔇 Additional comments (63)
docs/docs/learn/beginner/04-gas-fees.md (2)

49-49: Fixed broken anchor link for main gas meter
The link now correctly points to the "Main Gas Meter" section via the #main-gas-meter anchor, matching the header on line 51.


61-61: Standardized spelling to American English
Changed "initialisation" to "initialization" for consistency across documentation.

docs/spec/SPEC_STANDARD.md (1)

55-55: Fix internal link to the History section
The anchor has been updated from #history-1 to #history, which correctly matches the ### History header. Please verify in the rendered preview that clicking “below” jumps to the intended section.

docs/docs/learn/advanced/06-grpc_rest.md (1)

29-29: Approve removal of hyperlink around “encoding”
Converting “encoding” to plain text eliminates a redundant or potentially stale link and improves readability, aligning perfectly with the PR’s goal of ensuring link validity.

UPGRADE_GUIDE.md (4)

55-55: Heading rename for clarity is correct
The new “### ProtocolPool Manual Wiring” heading clearly disambiguates this section and matches the TOC anchor (#protocolpool-manual-wiring).


162-162: DI wiring heading update is consistent
Renaming to “### ProtocolPool DI Wiring” aligns with dependency-injection terminology and matches the TOC link (#protocolpool-di-wiring).


265-265: Epochs manual wiring heading aligned with TOC
Switching to “### Epochs Manual Wiring” avoids duplicate “Manual Wiring” headings and correctly matches the TOC anchor (#epochs-manual-wiring).


340-340: Epochs DI Wiring heading matches documentation structure
The “### Epochs DI Wiring” heading follows the same pattern as ProtocolPool’s DI section and links to #epochs-di-wiring as intended.

docs/docs/learn/advanced/02-context.md (1)

37-37: External link updated to versioned docs. The new URL https://docs.cometbft.com/v1.0/spec/consensus/ correctly points to the Consensus Parameters specification and aligns with the rest of the project’s versioned documentation.

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

95-95: Update KWallet backend link to current KDE Apps page
The previous KDE API docs link was outdated; the new URL points to the official KDE Apps KWallet Manager page, ensuring users land on the active, maintained resource.

docs/architecture/adr-054-semver-compatible-modules.md (2)

350-350: Confirm Buf URL update
The link has been adjusted to point to Buf’s remote-plugins overview (https://buf.build/docs/bsr/remote-plugins/overview/), which supersedes the old remote-generation path. This aligns with the current Buf documentation.


449-449: Adjust relative path to proto file
The link’s relative path is now ../../proto/cosmos/app/v1alpha1/module.proto, which correctly navigates two levels up from this ADR. This ensures the module proto reference resolves properly.

docs/docs/learn/advanced/00-baseapp.md (1)

230-230: Heading updated to match in-page anchors
Renaming "Main ABCI 2.0 Messages" to "Main ABCI Messages" aligns the heading slug with existing links like #main-abci-messages, fixing the broken anchor.

docs/architecture/adr-009-evidence-module.md (2)

20-20: Generalize link to the IBC repository
Good catch updating the IBC link to point at the authoritative cosmos/ibc repo. This makes the documentation more stable and maintainable.


181-181: Update reference to IBC Architecture repo
Aligning the “IBC Architecture” link to the cosmos/ibc repository ensures consistency with other IBC references in the docs.

x/auth/README.md (1)

35-35: Corrected internal link to authz module
The relative reference [authz module](../authz/) now points correctly to the x/authz documentation, improving link integrity.

README.md (1)

33-33: Update Go landing page link
Changing the recommended URL to https://go.dev is correct and directs users to the official Go site.

x/authz/README.md (1)

41-41: Corrected internal link to auth module
The link [auth (authentication)](../auth/) now correctly references the x/auth README, ensuring accurate cross-module documentation.

x/feegrant/README.md (1)

24-25: Corrected anchors for Msg Server section
The trailing “-1” suffix has been removed to match the actual heading IDs (#msggrantallowance and #msgrevokeallowance). This ensures internal links navigate correctly.

store/snapshots/README.md (1)

14-15: Generalized CometBFT state sync links
The external links now point to the root of the CometBFT spec (/v0.37/spec/) rather than the deeper /state-sync path, improving link stability and future-proofing.

docs/docs/build/building-modules/03-msg-services.md (1)

22-22: Fixed relative ADR-031 link
Updated the path to ../../../architecture/adr-031-msg-service.md so the ADR reference correctly resolves from the building-modules directory.

docs/docs/learn/advanced/11-runtx_middleware.md (1)

11-11: Fixed relative ADR-022 link
Adjusted the ADR-022 reference to ../../../architecture/adr-022-custom-panic-handling.md to ensure it resolves correctly from the learn/advanced directory.

x/nft/README.md (2)

19-20: Removed redundant “-1” suffix from State anchors
Updated the State section links (#class and #nft) to match the actual heading anchors.


91-91: Updated NFT events protobuf reference to versioned URL
The link now points directly to the v0.53.0 tag for event.proto, improving precision and avoiding branch drift.

x/staking/README.md (2)

10-10: Correct Cosmos Whitepaper link
Updated the URL from the old path to the direct /whitepaper endpoint, which is the current correct location for the Cosmos Whitepaper.


52-52: Standardize internal anchor for Queues
Changed the markdown anchor from #queues-1 to #queues to match the header ID generated by the “## Queues” section.

docs/architecture/adr-019-protobuf-state-encoding.md (1)

153-153: Update gogo protobuf Any registration link
The link now points to the main branch location of the global type registration logic in properties.go, ensuring the reference stays up-to-date.

docs/docs/build/build.md (2)

8-8: Use directory link for Modules
Changed the link target from a specific README file to the module directory, which will resolve to the default README.md and simplify maintenance.


12-12: Fix relative path for ADRs
Adjusted the path to go up two levels (../../architecture/README.md), correctly pointing to the ADR index from within docs/docs/build.

.github/PULL_REQUEST_TEMPLATE.md (2)

13-13: Grammar: “followup” instead of “follow up”
Merged “follow up” into “followup” for consistency across the template.


33-33: Simplify test checklist item
Removed the inline link to testing guidelines and clarified the requirement to include necessary unit and integration tests.

tools/cosmovisor/CHANGELOG.md (1)

176-176: Clarify initial release wording & update README link
Reworded to “first release since we started this changelog” and pointed the README link at the main branch path for stability.

testutil/simsx/README.md (4)

6-6: Corrected Message factory link
The URL now correctly points to testutil/simsx/msg_factory.go instead of the root simsx directory.


21-21: Corrected Sims registry link
The link has been updated to reference testutil/simsx/registry.go, reflecting the correct package layout.


32-32: Corrected Reporter link
The link now correctly targets testutil/simsx/reporter.go under the testutil/simsx path.


45-45: Corrected Test data environment link
The URL has been fixed to point at testutil/simsx/environment.go in the right directory.

docs/architecture/adr-033-protobuf-inter-module-comm.md (2)

400-400:

✅ Verification successful

Verify external Object-Capability Model URL
Check that the external link https://decentralized-id.com/development/object-capabilities/ is live and returns a 200 status.


🏁 Script executed:

#!/bin/bash
# Check HTTP status of the external Object-Capability Model URL
curl -Is https://decentralized-id.com/development/object-capabilities/ | head -n1

Length of output: 95


External Object-Capability Model URL Verified

  • The URL https://decentralized-id.com/development/object-capabilities/ returns HTTP/2 200, confirming it is live and accessible.

23-23:

✅ Verification successful

Verify relative path for Object-Capability Model link
Please confirm that [Object-Capability Model](../docs/learn/advanced/10-ocap.md) resolves correctly from docs/architecture/adr-033-protobuf-inter-module-comm.md.


🏁 Script executed:

#!/bin/bash
# Verify the target file exists for the relative link
if [ -f docs/learn/advanced/10-ocap.md ]; then
  echo "OK: docs/learn/advanced/10-ocap.md found"
  exit 0
else
  echo "ERROR: docs/learn/advanced/10-ocap.md not found"
  exit 1
fi

Length of output: 157


🏁 Script executed:

#!/bin/bash
# Search for any markdown files related to "ocap" to determine the correct path
find docs -type f | grep -i ocap

Length of output: 70


Confirmed relative link is correct
The target file docs/docs/learn/advanced/10-ocap.md exists and matches the link from docs/architecture/adr-033-protobuf-inter-module-comm.md. No update needed.

proto/README.md (1)

3-3: Streamline wording in proto README
The phrasing "All Cosmos SDK proto files" is concise and clear.

UPGRADING.md (3)

15-15: Update Changelog link to v0.53.0 tag
The link now points to the fixed CHANGELOG.md at tag v0.53.0, improving stability over a branch reference.


103-103: Update SimApp example link to versioned tag
The SimApp link now references v0.53.0, ensuring consistency with other versioned docs.


26-26:

✅ Verification successful

Verify ADR-070 link points to the correct file
Please ensure [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-070-unordered-account.md) matches the intended ADR filename.


🏁 Script executed:

#!/bin/bash
# Confirm ADR-070 filename
if [ -f docs/architecture/adr-070-unordered-account.md ]; then
  echo "OK: ADR-070 file exists"
  exit 0
else
  echo "ERROR: ADR-070 file not found"
  exit 1
fi

Length of output: 125


ADR-070 link is correct: Verified that docs/architecture/adr-070-unordered-account.md exists, so the link is valid.

docs/README.md (2)

32-32: Refine instruction wording
The revised phrasing "To start only the current documentation, run:" is clear and user-friendly.


41-41: Approve note about build limitations
The note clearly warns that redirections won't work in this mode.

x/gov/README.md (3)

10-10: URL correction looks good.

The updated Cosmos whitepaper URL points to the correct location, matching the current website structure.


13-13: Good grammar improvement.

Properly hyphenating the compound adjective "SDK-based" improves readability and follows correct English grammar rules.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~13-~13: You might be missing the article “the” here.
Context: ...aper) in June 2016. The module enables Cosmos SDK-based blockchain to support an on-c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


42-42: Anchor reference standardization.

Good cleanup of internal Markdown anchor references by removing redundant suffixes. This makes the links more consistent and easier to maintain.

Also applies to: 48-50, 60-61

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

152-152: Repository branch name update.

Good update changing the link from master to main, reflecting GitHub's branch naming conventions.


231-231: Improved clarity in CLI documentation.

Better wording that clarifies one command should be created for each message, rather than each "message type".

scripts/valid-links.py (1)

1-166: Well-designed link validation tool.

This script provides a comprehensive solution for validating links in Markdown files, with several excellent features:

  • Caching results to avoid redundant network calls
  • Handling rate limiting with exponential backoff
  • Proper detection of Markdown headings for anchor validation
  • Comprehensive report generation

Great addition to the project's tooling.

🧰 Tools
🪛 Ruff (0.8.2)

5-5: urllib.parse.urlparse imported but unused

Remove unused import: urllib.parse.urlparse

(F401)

.gitignore (1)

56-62: Appropriate .gitignore updates.

Good additions to ignore Python environment files and the generated docs link report. These ensure that only the script itself gets committed, not any of its artifacts or environment files.

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

9-13: Approve HRP table formatting improvements.
The updates align columns and remove extra spaces, enhancing readability.

docs/docs/build/building-modules/16-testing.md (3)

25-25: Approve updated mockgen reference link.
The URL now correctly points to pkg.go.dev documentation for go.uber.org/mock.


119-119: Approve corrected ADR-59 E2E tests link.
The note now references the correct ADR path under /main/build/architecture/adr-059-test-scopes.


124-124: Approve updated ADR-59 "Learn More" link.
The URL correctly points to the ADR for test scopes.

docs/architecture/adr-040-storage-and-smt-state-commitments.md (1)

261-261: Approve revised "state commitments and storage report" reference.
Link to the GitHub discussion is accurate and relevant.

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

98-98: Verify the updated relative path to ADR-050.
The link [ADR-050](../../../architecture/adr-050-sign-mode-textual.md) should resolve to docs/architecture/adr-050-sign-mode-textual.md. Please confirm the path is correct in the built site and update if the directory structure changes.

docs/docs/learn/advanced/08-events.md (1)

36-36: Approve corrected relative path for typed events ADR link.

The updated link now correctly points to the ADR under docs/architecture/adr-032-typed-events.md.

docs/docs/build/building-modules/13-upgrade.md (1)

63-63: Approve corrected relative path for ADR-028 link.

The new relative path properly resolves to docs/architecture/adr-028-public-key-addresses.md.

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

10-10: Approve corrected ADR-057 link in synopsis note.

The updated link accurately points to docs/architecture/adr-057-app-wiring.md via the correct relative path.


18-18: Approve corrected ADR-057 link in pre-requisites.

This change ensures the ADR reference resolves correctly from this file's location.

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

23-23: Approve absolute URL for Collections package.

Switching from a local markdown file to the pkg.go.dev URL improves documentation consistency and correctness.

docs/architecture/adr-059-test-scopes.md (1)

59-59: Approve pinned depinject BDD tests link.

The URL correctly references the v0.50.0 tag for depinject's BDD-style tests.

@@ -20,7 +20,7 @@ This ADR defines a set of changes to enable listening to state changes of indivi

## Context

Currently, KVStore data can be remotely accessed through [Queries](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules/messages-and-queries.md#queries)
Currently, KVStore data can be remotely accessed through [Queries](https://github.com/cosmos/cosmos-sdk/blob/main/docs/docs/build/building-modules/02-messages-and-queries.md#queries)
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Broken link: duplicate docs/docs in the URL.

The updated link points to
https://github.com/cosmos/cosmos-sdk/blob/main/docs/docs/build/building-modules/02-messages-and-queries.md#queries
which the link checker flags as dead (429). It appears the path has an extra docs/ segment. Please correct it, for example:

-[Queries](https://github.com/cosmos/cosmos-sdk/blob/main/docs/docs/build/building-modules/02-messages-and-queries.md#queries)
+[Queries](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules/02-messages-and-queries.md#queries)

Ensure the revised URL resolves successfully.

📝 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
Currently, KVStore data can be remotely accessed through [Queries](https://github.com/cosmos/cosmos-sdk/blob/main/docs/docs/build/building-modules/02-messages-and-queries.md#queries)
Currently, KVStore data can be remotely accessed through [Queries](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules/02-messages-and-queries.md#queries)
🤖 Prompt for AI Agents (early access)
In docs/architecture/adr-038-state-listening.md at line 23, the URL for the
Queries documentation contains a duplicated 'docs/' segment causing a broken
link. Remove the extra 'docs/' from the path so the URL correctly points to
'https://github.com/cosmos/cosmos-sdk/blob/main/docs/build/building-modules/02-messages-and-queries.md#queries'.
Verify the updated link resolves successfully.

@@ -178,5 +178,5 @@ type GenesisState struct {
## References

* [ICS](https://github.com/cosmos/ics)
* [IBC Architecture](https://github.com/cosmos/ics/blob/master/ibc/1_IBC_ARCHITECTURE.md)
* [IBC Architecture](https://github.com/cosmos/ibc)
* [Tendermint Fork Accountability](https://github.com/tendermint/spec/blob/7b3138e69490f410768d9b1ffc7a17abc23ea397/spec/consensus/fork-accountability.md)
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix broken Tendermint spec link
The current link to the Tendermint spec is returning a 429 error in CI link checks. To avoid rate-limiting or dead links, switch to the main branch path:

-* [Tendermint Fork Accountability](https://github.com/tendermint/spec/blob/7b3138e69490f410768d9b1ffc7a17abc23ea397/spec/consensus/fork-accountability.md)
+* [Tendermint Fork Accountability](https://github.com/tendermint/spec/blob/main/spec/consensus/fork-accountability.md)
📝 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
* [Tendermint Fork Accountability](https://github.com/tendermint/spec/blob/7b3138e69490f410768d9b1ffc7a17abc23ea397/spec/consensus/fork-accountability.md)
* [Tendermint Fork Accountability](https://github.com/tendermint/spec/blob/main/spec/consensus/fork-accountability.md)
🤖 Prompt for AI Agents (early access)
In docs/architecture/adr-009-evidence-module.md at line 182, the Tendermint spec
link is causing a 429 error due to rate limiting. Update the URL to point to the
'main' branch instead of the specific commit hash to prevent broken links and
avoid rate-limiting issues in CI checks.

@@ -7,7 +7,7 @@ sidebar_position: 1
## Abstract

This section specifies the slashing module of the Cosmos SDK, which implements functionality
first outlined in the [Cosmos Whitepaper](https://cosmos.network/about/whitepaper) in June 2016.
first outlined in the [Cosmos Whitepaper](https://cosmos.network/whitepaper) in June 2016.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Broken link: verify Cosmos Whitepaper URL
The updated link https://cosmos.network/whitepaper currently returns 404. Please update this to the canonical whitepaper location (e.g., the documentation site or GitHub-hosted PDF) to ensure the link is valid.

🤖 Prompt for AI Agents (early access)
In x/slashing/README.md at line 10, the link to the Cosmos Whitepaper is broken
and returns a 404 error. Update the URL to point to the current canonical
location of the Cosmos Whitepaper, such as the official documentation site or
the GitHub-hosted PDF, to ensure the link is valid and accessible.

@@ -8,7 +8,7 @@ sidebar_position: 1
Depending on the panic type different handler is used, for instance the default one prints an error log message.
Recovery middleware is used to add custom panic recovery for Cosmos SDK application developers.

More context can found in the corresponding [ADR-022](../../build/architecture/adr-022-custom-panic-handling.md) and the implementation in [recovery.go](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/baseapp/recovery.go).
More context can found in the corresponding [ADR-022](../../../architecture/adr-022-custom-panic-handling.md) and the implementation in [recovery.go](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/baseapp/recovery.go).
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Fix broken external link to recovery.go
The link check is failing (status 429). Consider using the raw content URL or pointing to a stable release tag to avoid rate-limiting issues.

Apply this diff:

-[recovery.go](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/baseapp/recovery.go)
+[recovery.go](https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.53.0-rc.2/baseapp/recovery.go)
📝 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
More context can found in the corresponding [ADR-022](../../../architecture/adr-022-custom-panic-handling.md) and the implementation in [recovery.go](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/baseapp/recovery.go).
More context can found in the corresponding [ADR-022](../../../architecture/adr-022-custom-panic-handling.md) and the implementation in [recovery.go](https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.53.0-rc.2/baseapp/recovery.go).
🤖 Prompt for AI Agents (early access)
In docs/docs/learn/advanced/11-runtx_middleware.md at line 11, the external link
to recovery.go is causing a link check failure due to status 429 rate-limiting.
To fix this, update the URL to use a raw content link or point it to a stable
release tag in the GitHub repository, ensuring the link is stable and avoids
rate-limiting issues.

Comment on lines +12 to +13
* [Cosmovisor](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md)
* [Confix](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md)
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Broken links: CLI tool references unreachable.
Both Cosmovisor and Confix README URLs return 429. Please update to correct versioned paths or use pkg.go.dev links (e.g., https://pkg.go.dev/github.com/cosmos/cosmos-sdk/tools/cosmovisor).

🤖 Prompt for AI Agents (early access)
In docs/docs/build/tooling/README.md around lines 12 to 13, the links to
Cosmovisor and Confix README files are broken and return HTTP 429 errors. Update
these URLs to use the correct versioned paths that are accessible or replace
them with stable pkg.go.dev links such as
https://pkg.go.dev/github.com/cosmos/cosmos-sdk/tools/cosmovisor and the
equivalent for Confix to ensure the links are reachable.

@@ -289,7 +289,7 @@ More specifically, any special account address must not have a length equal to 2

## Appendix: Consulting session

End of Dec 2020 we had a session with [Alan Szepieniec](https://scholar.google.be/citations?user=4LyZn8oAAAAJ&hl=en) to consult the approach presented above.
End of Dec 2020 we had a session with [Alan Szepieniec](https://www.linkedin.com/in/alan-szepieniec-7b1957142) to consult the approach presented above.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Broken link: Alan Szepieniec LinkedIn profile unreachable.
The LinkedIn URL returns a 999. Consider using an alternate reference (e.g., a personal website or archived profile).

🤖 Prompt for AI Agents (early access)
In docs/architecture/adr-028-public-key-addresses.md at line 292, the LinkedIn
URL for Alan Szepieniec is broken and returns a 999 error. Replace the current
LinkedIn URL with an alternate reference such as a personal website, an archived
version of the profile, or another reliable source to ensure the link is
accessible.

Copy link
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: 10

🔭 Outside diff range comments (1)
docs/README.md (1)

3-3: ⚠️ Potential issue

Broken CONTRIBUTING.md link causes pipeline failure
The link uses tree instead of blob, so the Markdown checker reports it as dead.

Update the URL to point to the blob path:

- If you want to open a PR in Cosmos SDK to update the documentation, please follow the guidelines in [`CONTRIBUTING.md`](https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation) and the [Documentation Writing Guidelines](./DOC_WRITING_GUIDELINES.md).
+ If you want to open a PR in Cosmos SDK to update the documentation, please follow the guidelines in [`CONTRIBUTING.md`](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#updating-documentation) and the [Documentation Writing Guidelines](./DOC_WRITING_GUIDELINES.md).
🧹 Nitpick comments (14)
crypto/bcrypt_readme.md (1)

7-7: Refine wording for clarity
The phrase "for the time being" is redundant and can be removed to improve conciseness. Consider rewriting to:
"Bcrypt key generation time with parameter 12 (~0.25 s) on midrange hardware aligns with our threat model, given that an attacker must access a user's ~/.gaia directory."

🧰 Tools
🪛 LanguageTool

[style] ~7-~7: This phrasing can be wordy. For improved clarity, try opting for something more concise.
Context: ... this parameter choice seems sufficient for the time being. Bcrypt always generates a 448-bit key,...

(FOR_THE_TIME_BEING)

CHANGELOG.md (1)

287-287: Re-add hyperlink for GHSA advisory for consistency

The plain [GHSA-4j93-fm92-rp4m] reference is no longer clickable, while other GHSA entries remain linked. To maintain consistency and improve navigability, consider re-adding the hyperlink:

- * (x/auth/vesting) [GHSA-4j93-fm92-rp4m] Add `BlockedAddr` check in `CreatePeriodicVestingAccount`.
+ * (x/auth/vesting) [GHSA-4j93-fm92-rp4m](https://github.com/cosmos/cosmos-sdk/security/advisories/GHSA-4j93-fm92-rp4m) Add `BlockedAddr` check in `CreatePeriodicVestingAccount`.
README.md (1)

50-50: Placeholder for contributing guide requires update
The TODO NEW CONTRIBUTING GUIDE placeholder should be replaced with the actual link or instructions once the new contributing guidelines are published to avoid confusion for prospective contributors.

.github/PULL_REQUEST_TEMPLATE.md (1)

13-13: Consider hyphenating “followup issues”
The term “followup issues” is more commonly styled as “follow-up issues” when used as a noun. Adding the hyphen can improve readability and align with standard English usage.

proto/README.md (2)

7-8: Add comma for improved readability

Consider adding a comma after buf.md to read:
"User-facing documentation should not be placed here but instead goes in buf.md, and in each protobuf package following the guidelines in ..."
This will improve sentence flow.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~8-~8: Possible missing comma found.
Context: ...d goes in buf.md and in each protobuf package following the guidelines in https://doc...

(AI_HYDRA_LEO_MISSING_COMMA)


9-9: Remove trailing pipe in link

The trailing | at the end of this line appears to be unintended and can break Markdown rendering. Please remove it.

x/gov/README.md (1)

13-13: Add missing article in sentence
The sentence should read "a Cosmos SDK-based blockchain".
Apply this diff:

- The module enables Cosmos SDK-based blockchain to support an on-chain governance system.
+ The module enables a Cosmos SDK-based blockchain to support an on-chain governance system.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~13-~13: You might be missing the article “the” here.
Context: ...aper) in June 2016. The module enables Cosmos SDK-based blockchain to support an on-c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

scripts/valid-links.py (3)

34-47: Prefer a shared requests.Session() for connection reuse

Creating a new TCP connection for every HEAD/GET is slow when thousands of links are scanned. Wrap the logic in a module-level SESSION = requests.Session() and use that for all requests; you’ll see a noticeable speed-up without extra concurrency code.


127-131: Exclude ignored directories to keep runtime reasonable

Path('.').rglob('*.md') will descend into .git/, virtual-envs, built artefacts, etc. Since .gitignore already lists .venv, vendor, dist, etc., mirror that list here to avoid tens-of-thousands of unnecessary IO calls.

Example snippet:

EXCLUDE_DIRS = {'.git', '.venv', 'vendor', 'dist', 'build', 'node_modules'}
...
for root, dirs, files in os.walk('.'):
    dirs[:] = [d for d in dirs if d not in EXCLUDE_DIRS]
    ...

141-160: Cache miss still counts as failure

Only results starting with “✅” are considered passes, but transient network errors (⚠️) are lumped into failures.
You may wish to separate “soft-failures” so that CI fails only on confirmed 4xx/5xx responses.

failed = sum(1 for r in REPORT if r[3].startswith("❌"))
soft  = sum(1 for r in REPORT if r[3].startswith("⚠️"))
passed = len(REPORT) - failed - soft
tools/cosmovisor/CHANGELOG.md (1)

176-176: Use a Version-Stable Link for the README.

This link points to main, which can drift over time. To ensure the changelog remains accurate for v0.1.0, consider pinning to a specific tag or release branch (e.g., v0.1.0) instead of main:

- See the [README](https://github.com/cosmos/cosmos-sdk/blob/main/tools/cosmovisor/README.md)
+ See the [README](https://github.com/cosmos/cosmos-sdk/blob/v0.1.0/tools/cosmovisor/README.md)
docs/docs/learn/advanced/05-encoding.md (1)

50-50: Polish sentence for clarity.

The current phrasing is a bit long and could be split for readability. For example:

- If modules use [Collections](https://pkg.go.dev/cosmossdk.io/collections), encoding and decoding are handled, marshal and unmarshal should not be handled manually unless for specific cases identified by the developer.
+ If modules use [Collections](https://pkg.go.dev/cosmossdk.io/collections), encoding and decoding are handled automatically.  
+ Avoid manually marshaling or unmarshaling—do so only in well-justified, edge-case scenarios.
docs/architecture/adr-059-test-scopes.md (1)

139-140: Use an en dash for ranges.

Typographically, ranges should use an en dash. For example:

- * A success may take a long time to run, 7-10 minutes per simulation in CI.
+ * A success may take a long time to run, 7–10 minutes per simulation in CI.
🧰 Tools
🪛 LanguageTool

[typographical] ~139-~139: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... A success may take a long time to run, 7-10 minutes per simulation in CI. * Timeout...

(HYPHEN_TO_EN)

docs/README.md (1)

41-41: Refine wording & grammar in note about current version build
Minor grammar tweaks will improve clarity and consistency.

Proposed diff:

- Note, the command above only builds the docs for the current versions.
- With the drawback that none of the redirections works. So, you'll need to go to /main to see the docs.
+ Note: the command above only builds the docs for the current version, so none of the redirections work. You’ll need to navigate to `/main` to view the documentation.
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 05ac584 and c4f68e7.

📒 Files selected for processing (56)
  • .github/PULL_REQUEST_TEMPLATE.md (2 hunks)
  • .gitignore (1 hunks)
  • CHANGELOG.md (1 hunks)
  • CODING_GUIDELINES.md (0 hunks)
  • CONTRIBUTING.md (0 hunks)
  • README.md (2 hunks)
  • RELEASE_PROCESS.md (0 hunks)
  • ROADMAP.md (0 hunks)
  • UPGRADE_GUIDE.md (4 hunks)
  • UPGRADING.md (3 hunks)
  • crypto/bcrypt_readme.md (1 hunks)
  • docs/README.md (2 hunks)
  • docs/architecture/adr-009-evidence-module.md (2 hunks)
  • docs/architecture/adr-019-protobuf-state-encoding.md (1 hunks)
  • docs/architecture/adr-028-public-key-addresses.md (1 hunks)
  • docs/architecture/adr-033-protobuf-inter-module-comm.md (2 hunks)
  • docs/architecture/adr-038-state-listening.md (1 hunks)
  • docs/architecture/adr-040-storage-and-smt-state-commitments.md (2 hunks)
  • docs/architecture/adr-054-semver-compatible-modules.md (2 hunks)
  • docs/architecture/adr-059-test-scopes.md (4 hunks)
  • docs/architecture/adr-062-collections-state-layer.md (1 hunks)
  • docs/docs/build/build.md (1 hunks)
  • docs/docs/build/building-apps/00-runtime.md (0 hunks)
  • docs/docs/build/building-apps/01-app-go-di.md (1 hunks)
  • docs/docs/build/building-modules/03-msg-services.md (1 hunks)
  • docs/docs/build/building-modules/13-upgrade.md (1 hunks)
  • docs/docs/build/building-modules/15-depinject.md (1 hunks)
  • docs/docs/build/building-modules/16-testing.md (2 hunks)
  • docs/docs/build/packages/README.md (1 hunks)
  • docs/docs/build/tooling/README.md (1 hunks)
  • docs/docs/learn/advanced/00-baseapp.md (3 hunks)
  • docs/docs/learn/advanced/01-transactions.md (1 hunks)
  • docs/docs/learn/advanced/02-context.md (1 hunks)
  • docs/docs/learn/advanced/05-encoding.md (1 hunks)
  • docs/docs/learn/advanced/06-grpc_rest.md (1 hunks)
  • docs/docs/learn/advanced/08-events.md (1 hunks)
  • docs/docs/learn/advanced/11-runtx_middleware.md (1 hunks)
  • docs/docs/learn/advanced/15-upgrade.md (1 hunks)
  • docs/docs/learn/beginner/00-app-anatomy.md (2 hunks)
  • docs/docs/learn/beginner/04-gas-fees.md (2 hunks)
  • docs/docs/user/run-node/00-keyring.md (1 hunks)
  • docs/spec/SPEC_STANDARD.md (1 hunks)
  • docs/spec/addresses/bech32.md (1 hunks)
  • proto/README.md (1 hunks)
  • scripts/valid-links.py (1 hunks)
  • store/snapshots/README.md (1 hunks)
  • store/streaming/abci/README.md (0 hunks)
  • testutil/simsx/README.md (4 hunks)
  • tools/cosmovisor/CHANGELOG.md (1 hunks)
  • x/auth/README.md (1 hunks)
  • x/authz/README.md (1 hunks)
  • x/feegrant/README.md (1 hunks)
  • x/gov/README.md (3 hunks)
  • x/nft/README.md (2 hunks)
  • x/slashing/README.md (1 hunks)
  • x/staking/README.md (2 hunks)
💤 Files with no reviewable changes (6)
  • docs/docs/build/building-apps/00-runtime.md
  • ROADMAP.md
  • store/streaming/abci/README.md
  • CONTRIBUTING.md
  • RELEASE_PROCESS.md
  • CODING_GUIDELINES.md
🧰 Additional context used
🪛 LanguageTool
crypto/bcrypt_readme.md

[style] ~7-~7: This phrasing can be wordy. For improved clarity, try opting for something more concise.
Context: ... this parameter choice seems sufficient for the time being. Bcrypt always generates a 448-bit key,...

(FOR_THE_TIME_BEING)

docs/spec/addresses/bech32.md

[grammar] ~17-~17: The word ‘expos’ is a noun or an adjective. A verb or adverb is missing or misspelled here, or maybe a comma is missing.
Context: ...ng interfaces to Cosmos software should expos Bech32 interfaces, many internal interf...

(PRP_MD_NN)


[grammar] ~21-~21: Replace ‘sufficient’ with an appropriate verb.
Context: ...ing payload before Bech32 encoding will sufficient for compatible representation.

(MD_NN)

docs/docs/build/build.md

[uncategorized] ~9-~9: Possible missing comma found.
Context: ...md) - See what has been updated in each release the process of the transition between v...

(AI_HYDRA_LEO_MISSING_COMMA)

proto/README.md

[uncategorized] ~8-~8: Possible missing comma found.
Context: ...d goes in buf.md and in each protobuf package following the guidelines in https://doc...

(AI_HYDRA_LEO_MISSING_COMMA)

docs/architecture/adr-059-test-scopes.md

[typographical] ~139-~139: If specifying a range, consider using an en dash instead of a hyphen.
Context: ... A success may take a long time to run, 7-10 minutes per simulation in CI. * Timeout...

(HYPHEN_TO_EN)

docs/architecture/adr-040-storage-and-smt-state-commitments.md

[uncategorized] ~273-~273: You might be missing the article “the” here.
Context: ...y that an object registered in RDBMS is same as the one committed to SMT, one will n...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[grammar] ~277-~277: The word ‘responsible’ is a noun or an adjective. A verb is missing or misspelled, or maybe a comma is missing.
Context: ...ot automatically committed. Module will responsible for having a sound storage model and ca...

(MD_JJ)


[uncategorized] ~277-~277: You might be missing the article “the” here.
Context: ...optionally use the feature discussed in __Committing to an object without saving ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

x/gov/README.md

[uncategorized] ~13-~13: You might be missing the article “the” here.
Context: ...aper) in June 2016. The module enables Cosmos SDK-based blockchain to support an on-c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🪛 GitHub Actions: Check Markdown links
docs/docs/build/tooling/README.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md (Status: 429)

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

[error] 1-1: Markdown link check failed: 3 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/proto/cosmos/tx/signing/v1beta1/signing.proto#L17 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/x/auth/tx/builder.go#L27-L44 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/x/auth/migrations/legacytx/stdtx_builder.go#L14-L17 (Status: 429)

docs/spec/SPEC_STANDARD.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/ibc/blob/main/spec/ics-001-ics-standard/README.md (Status: 429), [✖] https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md (Status: 429)

docs/docs/learn/advanced/11-runtx_middleware.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/baseapp/recovery.go (Status: 429)

docs/architecture/adr-028-public-key-addresses.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/iov-one/weave/blob/master/conditions.go (Status: 429), [✖] https://www.linkedin.com/in/alan-szepieniec-7b1957142 (Status: 999)

docs/docs/learn/advanced/08-events.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/proto/cosmos/nft/v1beta1/event.proto#L21-L31 (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/x/bank/types/events.go (Status: 429)

docs/docs/learn/advanced/15-upgrade.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429)

docs/architecture/adr-038-state-listening.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/docs/build/building-modules/02-messages-and-queries.md#queries (Status: 429)

docs/docs/build/building-modules/13-upgrade.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/x/bank/migrations/v2/store.go#L55-L76 (Status: 429)

docs/architecture/adr-062-collections-state-layer.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-055-orm.md (Status: 429)

docs/docs/build/building-modules/15-depinject.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/scripts/protocgen-pulsar.sh (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.50.0-alpha.0/api/cosmos/group/module/v1/module.pulsar.go (Status: 429)

docs/docs/learn/advanced/02-context.md

[error] 1-1: Markdown link check failed: 3 dead links found. See log for details.

README.md

[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/store/types/store.go (Status: 429), [✖] https://github.com/cosmos/iavl/blob/master/docs/overview.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/store/types/store.go (Status: 429), [✖] https://github.com/cosmos/iavl/blob/master/docs/overview.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://cosmos.network/whitepaper (Status: 404)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/RELEASE_PROCESS.md (Status: 429), [✖] https://docs.cosmos.network/main/architecture/adr-043-nft-module.html (Status: 404)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://cosmos.network/whitepaper (Status: 404), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-037-gov-split-vote.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-009-evidence-module.md (Status: 429), [✖] https://github.com/cometbft/cometbft/blob/main/spec/abci/abci%2B%2B_basic_concepts.md#evidence (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-043-nft-module.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/proto/cosmos/nft/v1beta1/event.proto (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://cosmos.network/whitepaper (Status: 404)


[error] 1-1: Markdown link check failed: 4 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-030-authz-module.md (Status: 429), [✖] #SendAuthorization (Status: 404), [✖] #GenericAuthorization (Status: 404), [✖] #StakeAuthorization (Status: 404)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-029-fee-grant-module.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/docs/spec/fee_distribution/f1_fee_distr.pdf (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-010-modular-antehandler.md (Status: 429)


[error] 1-1: Markdown link check failed: 2 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md (Status: 429)


[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation (Status: 429)

docs/architecture/adr-009-evidence-module.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/tendermint/spec/blob/7b3138e69490f410768d9b1ffc7a17abc23ea397/spec/consensus/fork-accountability.md (Status: 429)

docs/docs/learn/advanced/06-grpc_rest.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0-rc.2/scripts/protoc-swagger-gen.sh (Status: 429)

docs/docs/build/building-modules/16-testing.md

[error] 1-1: Markdown link check failed: 3 dead links found. [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/x/gov/keeper/keeper_test.go (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/main/testutil/integration (Status: 429), [✖] https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/x/slashing/app_test.go#L54-L62 (Status: 429)

docs/README.md

[error] 1-1: Markdown link check failed: 1 dead link found. [✖] https://github.com/cosmos/cosmos-sdk/tree/main/CONTRIBUTING.md#updating-documentation (Status: 429)

docs/architecture/adr-059-test-scopes.md

[error] 1-1: Markdown link check failed: 16 dead links found. See log for details.

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

[error] 1-1: Markdown link check failed: 5 dead links found. See log for details.

🪛 Ruff (0.8.2)
scripts/valid-links.py

5-5: urllib.parse.urlparse imported but unused

Remove unused import: urllib.parse.urlparse

(F401)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Summary
🔇 Additional comments (57)
docs/spec/SPEC_STANDARD.md (1)

55-55: Correct internal anchor link for History section
The link now correctly references the ## History section with #history instead of the obsolete #history-1.

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

98-98: Correct relative path to ADR-050 link
The updated reference (../../../architecture/adr-050-sign-mode-textual.md) now properly points to the sign mode ADR from this document’s location.

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

95-95: Update external URL for KDE Wallet Manager
The new link (https://apps.kde.org/kwalletmanager5/) accurately points to the KWallet Manager page.

crypto/bcrypt_readme.md (1)

5-5: Add external reference for Bcrypt security considerations
The Auth0 blog link provides authoritative background on Bcrypt security parameters.

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

12-13:

✅ Verification successful

Link Validity Check Failure – GitHub Rate Limit

The CI Markdown link checker reports HTTP 429 for these GitHub URLs, likely due to rate limiting. To ensure stable link validation, consider switching to the raw content endpoints or another mirror. For example:

- * [Cosmovisor](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md)
+ * [Cosmovisor](https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.53.0/tools/cosmovisor/README.md)

- * [Confix](https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md)
+ * [Confix](https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.53.0/tools/confix/README.md)

You can also verify HTTP status codes with this script:


🏁 Script executed:

#!/usr/bin/env bash
# Verify link accessibility
for url in \
  https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md \
  https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/confix/README.md; do
  echo "$url -> $(curl -L -s -o /dev/null -w '%{http_code}' "$url")"
done

Length of output: 911


No action required: GitHub links are accessible

Both URLs now return HTTP 200 when fetched, so they won’t be blocked by rate-limiting in CI. You can keep the current links as-is.

x/auth/README.md (1)

35-35: Corrected module link – Good catch

The relative link to the authz module was updated from ../modules/authz/ to ../authz/, which correctly points to x/authz/README.md. This fix aligns internal references with the directory structure.

x/authz/README.md (1)

41-41: Corrected module link – Good catch

The relative link to the auth module was updated from ../modules/auth/ to ../auth/, which correctly points to x/auth/README.md.

x/slashing/README.md (1)

10-10: Fixed Cosmos Whitepaper URL

The link was updated from https://cosmos.network/about/whitepaper to https://cosmos.network/whitepaper, matching the canonical location of the whitepaper.

store/snapshots/README.md (1)

14-15: Link target updated to spec root for stability
The links now correctly point to the general /spec/ root, which is more stable than the previous deep-linked paths.

docs/docs/build/building-modules/13-upgrade.md (1)

63-63: Corrected relative link to ADR-028
The relative path ../../../architecture/adr-028-public-key-addresses.md properly navigates from building-modules/13-upgrade.md to the ADR location.

docs/docs/learn/beginner/04-gas-fees.md (2)

49-49: Anchor link typo fix
The anchor link is now correctly spelled as #main-gas-meter, ensuring it navigates properly to the "Main Gas Meter" section.


61-61: American English spelling alignment
Changed "initialisation" to "initialization" for consistency with American English usage in the docs.

README.md (1)

33-33: Updated Go download link
Switching to https://go.dev ensures users are directed to the main Go page for the latest available downloads.

docs/docs/build/building-modules/03-msg-services.md (1)

22-22: Corrected ADR-031 relative link
The updated relative path ../../../architecture/adr-031-msg-service.md accurately resolves from this file's location to the ADR.

docs/docs/learn/advanced/00-baseapp.md (3)

168-168: Removed markdown link formatting for clarity

Replaced the hyperlinked phrase around "custom mempool handlers" with plain text to simplify the documentation style.


179-179: Removed markdown link formatting for consistency

Stripped markdown link syntax from "custom mempool handlers" in the second occurrence to match the updated presentation.


230-230: Updated section header for consistency

Renamed the section header from "Main ABCI 2.0 Messages" to "Main ABCI Messages" to reflect the current naming convention.

x/staking/README.md (2)

10-10: Corrected Whitepaper URL

Updated the Cosmos Whitepaper link from /about/whitepaper to the canonical /whitepaper URL.


52-52: Fixed internal anchor link

Changed the anchor for "Queues" from #queues-1 to #queues to ensure the TOC entry navigates correctly.

x/feegrant/README.md (1)

24-25: Fixed Msg Server anchor links

Removed the erroneous trailing -1 from the #msggrantallowance and #msgrevokeallowance anchors to match the actual headings.

docs/architecture/adr-038-state-listening.md (1)

23-23: Updated Queries documentation link

Adjusted the Queries link to point to docs/docs/build/building-modules/02-messages-and-queries.md#queries for accurate navigation.

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

10-10: Corrected relative path to ADR-057

Adjusted the ADR-057 link to use the correct relative path (../../../architecture/adr-057-app-wiring.md).


18-18: Corrected prerequisite link for ADR-057

Updated the pre-requisite reading entry for ADR-057 to the proper three-level relative path.

.github/PULL_REQUEST_TEMPLATE.md (1)

33-33: Approve removal of explicit tests URL
Simplifying the checklist item to refer generally to “unit and integration tests” without embedding the URL keeps the template concise.

docs/docs/learn/advanced/02-context.md (1)

37-37: Approve updated Consensus Params link
The new URL (https://docs.cometbft.com/v1.0/spec/consensus/) correctly points to the current CometBFT documentation for Consensus Parameters.

UPGRADE_GUIDE.md (4)

55-55: Clarify heading for ProtocolPool Manual Wiring
Renaming the generic “Manual Wiring” to “ProtocolPool Manual Wiring” improves clarity by specifying the module context.


162-162: Clarify heading for ProtocolPool DI Wiring
Updating the DI wiring heading to “ProtocolPool DI Wiring” aligns with the pattern and clearly indicates the module being configured.


265-265: Clarify heading for Epochs Manual Wiring
The new heading “Epochs Manual Wiring” makes the section purpose explicit and consistent with other module wiring instructions.


340-340: Clarify heading for Epochs DI Wiring
Changing to “Epochs DI Wiring” ensures the heading clearly reflects the module and wiring style being documented.

testutil/simsx/README.md (4)

6-6: Corrected Message factory link path
The updated URL now correctly references testutil/simsx/msg_factory.go rather than an outdated root path.


21-21: Corrected Sims registry link path
The registry link now points to testutil/simsx/registry.go, fixing the previous incorrect directory reference.


32-32: Corrected Reporter link path
The reporter section now links to testutil/simsx/reporter.go, ensuring the URL matches the actual file location.


45-45: Corrected Test data environment link path
Updating the path to testutil/simsx/environment.go restores navigation to the correct source file.

docs/architecture/adr-019-protobuf-state-encoding.md (1)

153-153: Updated branch reference in Any implementation link

The URL has been corrected from the master branch to the main branch to ensure a stable, long-lived link.

proto/README.md (1)

3-3: Simplified introductory sentence

Changed "All of the Cosmos SDK proto files..." to "All Cosmos SDK proto files..." for clarity and brevity.

docs/architecture/adr-054-semver-compatible-modules.md (2)

350-350: Corrected remote plugin overview URL

Updated the Buf remote plugins link to point to https://buf.build/docs/bsr/remote-plugins/overview/, matching upstream documentation.


449-449: Adjusted relative path to module options proto file

The link now correctly points to ../../proto/cosmos/app/v1alpha1/module.proto, aligning with the repository structure.

docs/architecture/adr-033-protobuf-inter-module-comm.md (2)

23-23: Fixed internal documentation link for Object-Capability Model

Adjusted the relative path to the OCAP document under docs/learn/advanced to ensure the link resolves correctly.


400-400: Updated external link to Object-Capability Model reference

Changed the external documentation URL to https://decentralized-id.com/development/object-capabilities/ for a more accurate source.

x/nft/README.md (2)

19-20: Corrected internal anchor links for the State section

Removed the -1 suffix from the #class and #nft anchors so they match the actual heading IDs.


91-91: Updated external proto event documentation link

Now points directly to the event.proto file at v0.53.0 for precise reference.

docs/architecture/adr-009-evidence-module.md (1)

182-182:

❌ Incorrect review comment

Update dead link: Tendermint Fork Accountability
The Markdown link check failed (429). Update the link to point to the main branch or another valid path.
Apply this diff:

- * [Tendermint Fork Accountability](https://github.com/tendermint/spec/blob/7b3138e69490f410768d9b1ffc7a17abc23ea397/spec/consensus/fork-accountability.md)
+ * [Tendermint Fork Accountability](https://github.com/tendermint/spec/blob/main/spec/consensus/fork-accountability.md)

🏁 Script executed:

#!/bin/bash
# Verify HTTP status codes for the existing commit‐SHA link and the proposed main‐branch link

echo "Checking original link (commit SHA):"
curl -s -I -L https://github.com/tendermint/spec/blob/7b3138e69490f410768d9b1ffc7a17abc23ea397/spec/consensus/fork-accountability.md | head -n 1

echo "Checking proposed link (main branch):"
curl -s -I -L https://github.com/tendermint/spec/blob/main/spec/consensus/fork-accountability.md | head -n 1

Length of output: 450


No update required for Tendermint Fork Accountability link
The existing commit-SHA URL returns HTTP 200 and is not broken. The proposed main-branch URL is currently rate-limited (HTTP 429). Retain the original link for stability.

Likely an incorrect or invalid review comment.

UPGRADING.md (2)

103-103:

✅ Verification successful

Verify SimApp wiring example link
Ensure simapp/app.go is present at tag v0.53.0.


🏁 Script executed:

#!/bin/bash
# Verify SimApp example at v0.53.0
if curl --head --silent --fail "https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.53.0/simapp/app.go"; then
  echo "SimApp link is valid."
else
  echo "SimApp link is broken or missing at tag v0.53.0."
  exit 1
fi

Length of output: 1033


SimApp wiring example link is valid
The link to simapp/app.go at tag v0.53.0 returns HTTP 200 and is accessible. No updates needed.


15-15:

✅ Verification successful

Verify tag-based changelog link
Ensure CHANGELOG.md exists at tag v0.53.0 and that the URL resolves correctly.

Run this script:


🏁 Script executed:

#!/bin/bash
# Verify CHANGELOG.md at v0.53.0
if curl --head --silent --fail "https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.53.0/CHANGELOG.md"; then
  echo "Changelog link is valid."
else
  echo "Changelog link is broken or missing at tag v0.53.0."
  exit 1
fi

Length of output: 1037


Changelog link for v0.53.0 is valid
The CHANGELOG.md at tag v0.53.0 returns HTTP 200, so the link in UPGRADING.md is correct.

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

150-154: Double-check new gogoproto link actually resolves

The branch was switched from mastermain, but the concrete file (proto/properties.go) lives at a slightly different path in the repo (types/properties.go as of v0.6+).
Please open the URL in a browser or run the link-checker locally to ensure we did not introduce another 404.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~150-~150: Loose punctuation mark.
Context: ...our fields means: * InterfaceRegistry: The InterfaceRegistry is used by the ...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~153-~153: Loose punctuation mark.
Context: ...9-protobuf-state-encoding.md). * Codec: The default codec used throughout the C...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~154-~154: Loose punctuation mark.
Context: ...K uses Protobuf as Codec. * TxConfig: TxConfig defines an interface a clien...

(UNLIKELY_OPENING_PUNCTUATION)


223-232: Nice wording clean-up

Switching “application’s interfaces” → “module interface” and clarifying the transaction command sentence makes the paragraph clearer for beginners. 👍

🧰 Tools
🪛 LanguageTool

[uncategorized] ~232-~232: Possible missing preposition found.
Context: ... to the appropriate querier the queryRoute parameter supplied. #### ...

(AI_HYDRA_LEO_MISSING_OF)

.gitignore (1)

55-60: bin / lib rules may hide legitimate top-level code

Ignoring bare bin and lib folders is convenient for virtual-envs, but it will also mask any real project directories with those names (very common for Go, Rust, and Bash helper scripts).
Safer pattern:

-.venv
-bin
-lib
+/.venv/
+.venv/**

or explicitly scope to sub-paths of .venv/.

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

9-9: Absolute URL for depinject link improves stability and accuracy.

The relative link has been correctly replaced with the official Go package URL, ensuring it remains valid even if internal file structures change.

docs/docs/learn/advanced/06-grpc_rest.md (1)

29-29: Removed redundant markdown link around “encoding.”

Replacing the linked text with plain “encoding” eliminates a dead or misleading link and clarifies the prose. This improves readability without loss of context.

docs/docs/learn/advanced/08-events.md (1)

36-36: Corrected relative path to ADR-032 for Typed Events.

Updating the link to use ../../../architecture/adr-032-typed-events.md ensures the path resolves correctly from this document’s location.

docs/docs/learn/advanced/11-runtx_middleware.md (1)

11-11: Fixed ADR-022 link path.

The relative path to the ADR-022 document has been updated to ../../../architecture/adr-022-custom-panic-handling.md, ensuring the link is valid from this file’s directory.

docs/architecture/adr-062-collections-state-layer.md (1)

81-81: Removed obsolete x/perp usage example, retained x/oracle link.

Dropping the outdated x/perp reference and keeping only the relevant x/oracle example aligns with current usage. The URL points to the keeper implementation and appears accurate.

docs/docs/learn/advanced/15-upgrade.md (1)

162-162: Verify Cosmovisor Quick Start URL Accessibility.

The GitHub link to the Cosmovisor Quick Start (https://github.com/cosmos/cosmos-sdk/blob/v0.53.0/tools/cosmovisor/README.md) is returning a 429 in our Markdown link checker. Please confirm the URL is correct and accessible under heavy CI load. If necessary, consider:

  • Using a more stable host (e.g., docs.cosmos.network or raw.githubusercontent.com).
  • Pinning to a versioned branch or tag that’s guaranteed to exist.
docs/docs/build/building-modules/16-testing.md (1)

25-25: Mockgen link update looks good.

Switching from https://go.uber.org/mock to the pkg.go.dev reference is consistent with other docs and will give users up-to-date API docs.

docs/architecture/adr-059-test-scopes.md (1)

59-59: Verify depinject BDD-style tests link.

The link to the BDD style tests at v0.50.0 (https://github.com/cosmos/cosmos-sdk/blob/v0.50.0/depinject/features/bindings.feature) may no longer exist or could move in future SDK versions. Please confirm it resolves correctly or consider linking to a stable reference or the main branch if appropriate.

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

23-23: ✅ Collections link update is correct
The switch from a relative path to the absolute pkg.go.dev URL for Collections is accurate and improves link stability.

docs/README.md (1)

32-32: ✅ Added command to start only the current docs
This new instruction clearly explains how to launch the local server for the active version.

@@ -289,7 +289,7 @@ More specifically, any special account address must not have a length equal to 2

## Appendix: Consulting session

End of Dec 2020 we had a session with [Alan Szepieniec](https://scholar.google.be/citations?user=4LyZn8oAAAAJ&hl=en) to consult the approach presented above.
End of Dec 2020 we had a session with [Alan Szepieniec](https://www.linkedin.com/in/alan-szepieniec-7b1957142) to consult the approach presented above.
Copy link
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

Broken external link in Appendix (Alan Szepieniec reference)
The LinkedIn URL (https://www.linkedin.com/in/alan-szepieniec-7b1957142) returns a 999 status and fails the link check. Please update to a valid, stable resource or remove the hyperlink. Additionally, verify and fix other broken links present in this file (e.g. the conditions.go reference).


🏁 Script executed:

#!/bin/bash
# Check LinkedIn URL status code
curl -s -o /dev/null -w "LinkedIn URL status: %{http_code}\n" "https://www.linkedin.com/in/alan-szepieniec-7b1957142"
# Search for 'conditions.go' reference in ADR document
rg -n "conditions.go" docs/architecture/adr-028-public-key-addresses.md
# Check for existence of 'conditions.go' file in the repository
fd -t f conditions.go || echo "conditions.go not found in repository"

Length of output: 376


🏁 Script executed:

#!/bin/bash
# Check GitHub HTML page status for conditions.go
curl -s -o /dev/null -w "conditions.go HTML status: %{http_code}\n" "https://github.com/iov-one/weave/blob/master/conditions.go"
# Check raw file status for conditions.go
curl -s -o /dev/null -w "conditions.go RAW status: %{http_code}\n" "https://raw.githubusercontent.com/iov-one/weave/master/conditions.go"

Length of output: 327


Update or Remove Broken LinkedIn Link

The LinkedIn URL in docs/architecture/adr-028-public-key-addresses.md returns a 999 status code when checked programmatically and fails link validation. Please replace it with a stable reference or remove it entirely. The conditions.go link (line 37) is returning HTTP 200 and does not require changes.

Files/locations to address:

  • docs/architecture/adr-028-public-key-addresses.md (line 292): LinkedIn URL https://www.linkedin.com/in/alan-szepieniec-7b1957142
  • docs/architecture/adr-028-public-key-addresses.md (line 37): https://github.com/iov-one/weave/blob/master/conditions.go — valid, no action needed.
🤖 Prompt for AI Agents (early access)
In docs/architecture/adr-028-public-key-addresses.md at line 292, the LinkedIn
URL for Alan Szepieniec is broken and returns a 999 status code. Remove the
hyperlink or replace it with a valid, stable reference to fix the broken link.
Also verify other links in the file, but no changes are needed for the
conditions.go link at line 37 as it is valid.

* [Migrations](./migrations/01-intro.md) - See what has been updated in each release the process of the transition between versions.
* [Packages](./packages/README.md) - Explore a curated collection of pre-built modules and functionalities, streamlining the development process.
* [Tooling](./tooling/README.md) - A suite of utilities designed to enhance the development workflow, optimizing the efficiency of Cosmos SDK-based projects.
* [ADR's](./architecture/README.md) - Provides a structured repository of key decisions made during the development process, which have been documented and offers rationale behind key decisions being made.
* [ADR's](../../architecture/README.md) - Provides a structured repository of key decisions made during the development process, which have been documented and offers rationale behind key decisions being made.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Broken relative link to ADRs
The path ../../architecture/README.md from docs/docs/build/build.md goes up one level too many. It should be ../architecture/README.md to point to docs/docs/architecture/README.md.

-* [ADR's](../../architecture/README.md)
+* [ADR's](../architecture/README.md)
📝 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
* [ADR's](../../architecture/README.md) - Provides a structured repository of key decisions made during the development process, which have been documented and offers rationale behind key decisions being made.
* [ADR's](../architecture/README.md) - Provides a structured repository of key decisions made during the development process, which have been documented and offers rationale behind key decisions being made.
🤖 Prompt for AI Agents (early access)
In docs/docs/build/build.md at line 12, the relative link to ADRs is incorrect
because it goes up two directory levels instead of one. Change the link path
from ../../architecture/README.md to ../architecture/README.md to correctly
point to docs/docs/architecture/README.md.

@@ -5,9 +5,9 @@
# Build

* [Building Apps](./building-apps/00-app-go.md) - The documentation in this section will guide you through the process of developing your dApp using the Cosmos SDK framework.
* [Modules](./modules/README.md) - Information about the various modules available in the Cosmos SDK: Auth, Authz, Bank, Circuit, Consensus, Distribution, Epochs, Evidence, Feegrant, Governance, Group, Mint, NFT, Protocolpool, Slashing, Staking, Upgrade, Genutil.
* [Modules](./modules) - Information about the various modules available in the Cosmos SDK: Auth, Authz, Bank, Circuit, Consensus, Distribution, Epochs, Evidence, Feegrant, Governance, Group, Mint, NFT, Protocolpool, Slashing, Staking, Upgrade, Genutil.
Copy link
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

Verify relative link for Modules section
Linking to ./modules assumes an index.md or equivalent in the docs/docs/build/modules folder. Please confirm that the directory exists and that the static site generator will resolve this path correctly.


🏁 Script executed:

#!/bin/bash
# Check that the Modules directory and its index file exist
if [ ! -d docs/docs/build/modules ]; then
  echo "ERROR: docs/docs/build/modules directory not found"
  exit 1
fi
if [ ! -f docs/docs/build/modules/index.md ]; then
  echo "ERROR: docs/docs/build/modules/index.md not found"
  exit 1
fi
echo "PASS: Modules link path is valid"

Length of output: 160


#!/bin/bash
set -e

echo "❯ Looking for a 'modules' directory under docs/docs/build"
find docs/docs/build -type d -name modules || echo "No 'modules' directory found under docs/docs/build"

echo "❯ Looking for 'modules.md' or 'modules/index.md' under docs/docs/build"
find docs/docs/build -type f \( -name "modules.md" -o -name "modules/index.md" \) || echo "No 'modules.md' or 'modules/index.md' found under docs/docs/build"

🏁 Script executed:

#!/bin/bash
set -e

echo "Searching for any 'modules' directory in the repo:"
find . -type d -name modules || echo "→ No 'modules' directory found"

echo
echo "Searching for 'modules.md' or 'modules/index.md' files:"
find . -type f \( -name "modules.md" -o -path "*/modules/index.md" \) || echo "→ No modules.md or modules/index.md found"

Length of output: 437


Fix broken Modules link in docs/docs/build/build.md
The relative link ./modules in the “Modules” list is invalid—there is no docs/docs/build/modules/ directory or modules.md/modules/index.md file under docs/docs/build. Please correct this by either:

  • Creating the docs/docs/build/modules/ folder with an index.md (or README.md) inside, so ./modules resolves properly,
  • Or updating the link to point to the actual location of your modules documentation (for example, ./modules.md in the build folder or another existing path).

Files/locations needing attention:

  • docs/docs/build/build.md (update the link at line 8)
  • (Optional) docs/docs/build/modules/index.md—or adjust to your chosen target file.
🤖 Prompt for AI Agents (early access)
In docs/docs/build/build.md at line 8, the relative link './modules' is broken
because there is no 'modules' directory or 'modules.md' file under
docs/docs/build. Fix this by either creating a 'docs/docs/build/modules/'
directory with an 'index.md' or 'README.md' inside so the link resolves
correctly, or update the link in build.md to point to the actual existing
location of the modules documentation file.


A complete implementation of the Amino serialization format is unnecessary in most cases. Simply prepending bytes from this [table](https://github.com/cometbft/cometbft/blob/main/spec/blockchain/encoding.md) to the byte string payload before Bech32 encoding will sufficient for compatible representation.
A complete implementation of the Amino serialization format is unnecessary in most cases. Simply prepending bytes from this [table](https://github.com/cometbft/cometbft/blob/main/spec/core/encoding.md) to the byte string payload before Bech32 encoding will sufficient for compatible representation.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Insert missing 'be' in sentence
The construction "will sufficient" is missing the verb "be".
Apply this diff:

- ... to the byte string payload before Bech32 encoding will sufficient for compatible representation.
+ ... to the byte string payload before Bech32 encoding will be sufficient for compatible representation.
📝 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
A complete implementation of the Amino serialization format is unnecessary in most cases. Simply prepending bytes from this [table](https://github.com/cometbft/cometbft/blob/main/spec/core/encoding.md) to the byte string payload before Bech32 encoding will sufficient for compatible representation.
A complete implementation of the Amino serialization format is unnecessary in most cases. Simply prepending bytes from this [table](https://github.com/cometbft/cometbft/blob/main/spec/core/encoding.md) to the byte string payload before Bech32 encoding will be sufficient for compatible representation.
🧰 Tools
🪛 LanguageTool

[grammar] ~21-~21: Replace ‘sufficient’ with an appropriate verb.
Context: ...ing payload before Bech32 encoding will sufficient for compatible representation.

(MD_NN)

🤖 Prompt for AI Agents (early access)
In docs/spec/addresses/bech32.md at line 21, the sentence "will sufficient" is
missing the verb "be". Insert "be" between "will" and "sufficient" to correct
the grammar.


## Encoding

While all user facing interfaces to Cosmos software should exposed Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
While all user-facing interfaces to Cosmos software should expos Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix typo: use 'expose' instead of 'expos'
The verb is misspelled.
Apply this diff:

- While all user-facing interfaces to Cosmos software should expos Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
+ While all user-facing interfaces to Cosmos software should expose Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
📝 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
While all user-facing interfaces to Cosmos software should expos Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
While all user-facing interfaces to Cosmos software should expose Bech32 interfaces, many internal interfaces encode binary value in hex or base64 encoded form.
🧰 Tools
🪛 LanguageTool

[grammar] ~17-~17: The word ‘expos’ is a noun or an adjective. A verb or adverb is missing or misspelled here, or maybe a comma is missing.
Context: ...ng interfaces to Cosmos software should expos Bech32 interfaces, many internal interf...

(PRP_MD_NN)

🤖 Prompt for AI Agents (early access)
In docs/spec/addresses/bech32.md at line 17, correct the typo by replacing the
misspelled word "expos" with the correct verb "expose" to fix the spelling error
in the sentence.

@@ -23,7 +23,7 @@ Clients that use this feature may now submit their transactions in a fire-and-fo
To submit an unordered transaction, clients must set the `unordered` flag to
`true` and ensure a reasonable `timeout_timestamp` is set. The `timeout_timestamp` is
used as a TTL for the transaction and provides replay protection. Each transaction's `timeout_timestamp` must be
unique to the account; however, the difference may be as small as a nanosecond. See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-070-unordered-transactions.md) for more details.
unique to the account; however, the difference may be as small as a nanosecond. See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-070-unordered-account.md) for more details.
Copy link
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

Verify ADR link for unordered transactions
Confirm the path docs/architecture/adr-070-unordered-account.md exists in the repository.


🏁 Script executed:

#!/bin/bash
# Check existence of ADR file
rg "adr-070-unordered-account.md" -n

Length of output: 259


Fix broken ADR-070 link in UPGRADING.md
The referenced ADR file isn’t present in this repo at docs/architecture/adr-070-unordered-account.md, so the link will 404.

• File: UPGRADING.md Line 26

See [ADR-070](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-070-unordered-account.md) for more details.

• Either add the missing file under docs/architecture/adr-070-unordered-account.md, or update the hyperlink to the correct location/path where ADR-070 lives locally.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents (early access)
In UPGRADING.md at line 26, the hyperlink to ADR-070 points to a non-existent
file at docs/architecture/adr-070-unordered-account.md, causing a broken link.
Fix this by either adding the missing ADR-070 markdown file to the specified
path or updating the hyperlink to the correct existing location of ADR-070
within the repository.


### Off Chain Store

We were discussing use case where modules can use a support database, which is not automatically committed. Module will responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
We were discussing a use case where modules can use a support database, which is not automatically committed. Module will responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix missing verb in sentence
The phrase "Module will responsible" lacks the verb "be".
Apply this diff:

- Module will responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
+ The module will be responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
📝 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
We were discussing a use case where modules can use a support database, which is not automatically committed. Module will responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
We were discussing a use case where modules can use a support database, which is not automatically committed. The module will be responsible for having a sound storage model and can optionally use the feature discussed in __Committing to an object without saving it_ section.
🧰 Tools
🪛 LanguageTool

[grammar] ~277-~277: The word ‘responsible’ is a noun or an adjective. A verb is missing or misspelled, or maybe a comma is missing.
Context: ...ot automatically committed. Module will responsible for having a sound storage model and ca...

(MD_JJ)


[uncategorized] ~277-~277: You might be missing the article “the” here.
Context: ...optionally use the feature discussed in __Committing to an object without saving ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🤖 Prompt for AI Agents (early access)
In docs/architecture/adr-040-storage-and-smt-state-commitments.md at line 277,
the sentence "Module will responsible" is missing the verb "be". Insert "be"
after "will" to correct the phrase to "Module will be responsible".

Comment on lines +5 to +6
from urllib.parse import urlparse
import time
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove unused urlparse import

urlparse is never referenced – Ruff correctly flags this.

-from urllib.parse import urlparse
📝 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
from urllib.parse import urlparse
import time
import time
🧰 Tools
🪛 Ruff (0.8.2)

5-5: urllib.parse.urlparse imported but unused

Remove unused import: urllib.parse.urlparse

(F401)

🤖 Prompt for AI Agents (early access)
In scripts/valid-links.py around lines 5 to 6, the import statement for urlparse
is unused and flagged by Ruff. Remove the import of urlparse from urllib.parse
to clean up the code and avoid unnecessary imports.

Comment on lines +95 to +108
# Extract and check all links in a Markdown file, tracking line number
def check_links_in_file(path):
print(f"🔗 Checking: {path}")
with open(path, 'r', encoding='utf-8') as f:
in_code_block = False
for line_num, line in enumerate(f, 1):
if line.strip().startswith('```'):
in_code_block = not in_code_block
continue
if in_code_block:
continue
if '`' in line:
continue

Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Skipping every line containing a back-tick hides real links

if '' in line: continue` filters out all lines that contain inline-code, even when they also embed legitimate links (common in markdown).
Consider parsing inline-code spans instead of discarding the whole line, e.g.:

-            if '`' in line:
-                continue
+            # Strip out inline-code first, then look for links
+            cleaned = re.sub(r'`[^`]*`', '', line)

This will keep link coverage high while avoiding false positives.

📝 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
# Extract and check all links in a Markdown file, tracking line number
def check_links_in_file(path):
print(f"🔗 Checking: {path}")
with open(path, 'r', encoding='utf-8') as f:
in_code_block = False
for line_num, line in enumerate(f, 1):
if line.strip().startswith('```'):
in_code_block = not in_code_block
continue
if in_code_block:
continue
if '`' in line:
continue
# Extract and check all links in a Markdown file, tracking line number
def check_links_in_file(path):
print(f"🔗 Checking: {path}")
with open(path, 'r', encoding='utf-8') as f:
in_code_block = False
for line_num, line in enumerate(f, 1):
if line.strip().startswith('
🤖 Prompt for AI Agents (early access)
In scripts/valid-links.py around lines 95 to 108, the current code skips entire
lines containing any back-tick, which causes it to miss valid links embedded
alongside inline code. Instead of skipping the whole line, modify the logic to
parse and exclude only the inline code spans marked by back-ticks, then check
the remaining text for links. This will improve link detection accuracy without
false positives from inline code.


## Automation

* [Depinject](./01-depinject.md) - Dependency injection framework
* [Depinject]https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix Markdown syntax for Depinject link
The link is missing an opening parenthesis before the URL, causing a broken Markdown link.

Apply this diff:

- * [Depinject]https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
+ * [Depinject](https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
📝 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
* [Depinject]https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
* [Depinject](https://pkg.go.dev/cosmossdk.io/depinject) - Dependency injection framework
🤖 Prompt for AI Agents (early access)
In docs/docs/build/packages/README.md at line 27, the Markdown link for
Depinject is missing an opening parenthesis before the URL, causing it to render
incorrectly. Fix this by adding the opening parenthesis immediately after the
link text, so the link syntax is properly formatted as
[Depinject](https://pkg.go.dev/cosmossdk.io/depinject).

@aljo242 aljo242 marked this pull request as draft May 12, 2025 18:43
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.

1 participant