Skip to content

ci: upgrade to golangci-lint v2.3#1631

Merged
Pitasi merged 2 commits intomainfrom
golangci-lint-v2.2
Jul 23, 2025
Merged

ci: upgrade to golangci-lint v2.3#1631
Pitasi merged 2 commits intomainfrom
golangci-lint-v2.2

Conversation

@Pitasi
Copy link
Contributor

@Pitasi Pitasi commented Jul 22, 2025

This PR updates our CI to use golangci-lint v2.2 and fixes the new linter warnings.

@Pitasi Pitasi force-pushed the golangci-lint-v2.2 branch from ab3b9c4 to c16ee45 Compare July 22, 2025 14:10
@Pitasi Pitasi changed the title ci: upgrade to golangci-lint v2.2 ci: upgrade to golangci-lint v2.3 Jul 22, 2025
@vercel
Copy link

vercel bot commented Jul 22, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

1 Skipped Deployment
Name Status Preview Comments Updated (UTC)
warden-help-center ⬜️ Ignored (Inspect) Visit Preview Jul 23, 2025 9:11am

@Pitasi Pitasi force-pushed the golangci-lint-v2.2 branch 2 times, most recently from e8e2f44 to 003217b Compare July 22, 2025 14:13
@Pitasi Pitasi marked this pull request as ready for review July 22, 2025 14:13
@Pitasi Pitasi requested review from a team as code owners July 22, 2025 14:13
func execute(ctx context.Context, cmdString string) (Out, error) {
// Create the command
cmd := exec.Command("sh", "-c", cmdString)
cmd := exec.CommandContext(ctx, "sh", "-c", cmdString)

Check failure

Code scanning / CodeQL

Command built from user-controlled sources Critical

This command depends on a
user-provided value
.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Send() checks the validity of the address, even though it would probably be a good idea to also have a check inside the http handler, close to where the parameter is read

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 22, 2025

📝 Walkthrough
## Walkthrough

This update primarily upgrades the golangci-lint GitHub Action from version 7 to 8 and the linter tool from v2.0 to v2.3 across multiple workflow files. Additionally, two linters are disabled in the `.golangci.yml` configuration. The remainder of the changes are minor formatting improvements, code readability enhancements, and context propagation in logging and function calls, with some method reordering and refactoring for consistency.

## Changes

| Files/Groups                                                                                     | Change Summary                                                                                       |
|------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| .github/workflows/*.yml                                                                         | Upgraded golangci-lint GitHub Action from v7 to v8 and linter tool from v2.0 to v2.3.              |
| .golangci.yml                                                                                   | Disabled `goconst` and `noinlineerr` linters.                                                      |
| cmd/faucet/faucet.go, cmd/faucet/main.go                                                       | Added context.Context parameters to key functions and methods; updated command execution to use context; minor struct field reordering and idiomatic type alias. |
| keychain-sdk/keychain.go, keychain-sdk/key_requests.go, keychain-sdk/sign_requests.go, keychain-sdk/example_keychain_test.go, keychain-sdk/internal/writer/writer.go | Refactored to use context-aware logging (`*Context` methods); passed context to connection initialization; minor formatting. |
| prophet/exec.go, prophet/plugins.go, prophet/prophet.go                                        | Standardized context usage in logging and function calls; added linter directive; minor formatting.|
| warden/x/act/keeper/actions_keeper.go, warden/x/async/keeper/keeper.go, warden/x/warden/keeper/keeper.go, warden/x/warden/keeper/spaces.go, shield/internal/parser/parser.go, go-client/query_client.go | Reordered method definitions for consistency; no logic changes.                                  |
| warden/x/sched/keeper/callbacks.go                                                            | Removed duplicate method declarations.                                                             |
| tests/framework/ports/ports.go                                                                 | Changed to use `net.ListenConfig` with context for TCP listeners; grouped var declarations.         |
| Various other files across cmd, precompiles, shield, warden, tests, etc.                       | Added or adjusted blank lines for readability; grouped variable declarations; no logic changes.     |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant User
    participant HTTPServer
    participant FaucetApp
    participant ExternalCmd

    User->>HTTPServer: POST /send-tokens
    HTTPServer->>FaucetApp: Send(ctx, address, flag)
    FaucetApp->>ExternalCmd: execute(ctx, cmdString)
    ExternalCmd-->>FaucetApp: Command result
    FaucetApp-->>HTTPServer: Send result
    HTTPServer-->>User: Response
sequenceDiagram
    participant App
    participant Logger

    App->>Logger: InfoContext(ctx, ...)
    App->>Logger: ErrorContext(ctx, ...)
    App->>Logger: DebugContext(ctx, ...)
Loading

Estimated code review effort

2 (~15 minutes)

Possibly related PRs

Suggested reviewers

  • mn13
  • jlehtimaki

</details>

<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: .coderabbit.yaml**
**Review profile: CHILL**
**Plan: Pro**


<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between eb1049063f0c4b75461e6aa371f311a3e4c7bf00 and 964c3274d4768f3769583acdd3cc529e2e0d1d32.

</details>

<details>
<summary>📒 Files selected for processing (106)</summary>

* `.github/workflows/faucet.yml` (1 hunks)
* `.github/workflows/go-client.yml` (1 hunks)
* `.github/workflows/keychain-sdk.yml` (1 hunks)
* `.github/workflows/shield.yml` (1 hunks)
* `.github/workflows/soliditygen.yml` (1 hunks)
* `.github/workflows/wardend.yaml` (1 hunks)
* `.github/workflows/wardenkms.yml` (1 hunks)
* `.golangci.yml` (2 hunks)
* `cmd/faucet/faucet.go` (11 hunks)
* `cmd/faucet/main.go` (5 hunks)
* `cmd/faucet/pkg/config/config.go` (0 hunks)
* `cmd/shield_repl/main.go` (1 hunks)
* `cmd/soliditygen/generator.go` (6 hunks)
* `cmd/soliditygen/main.go` (4 hunks)
* `cmd/wardenkms/bip44.go` (5 hunks)
* `cmd/wardenkms/wardenkms.go` (4 hunks)
* `go-client/query_client.go` (2 hunks)
* `go-client/tx_client.go` (1 hunks)
* `go-client/tx_identity.go` (1 hunks)
* `go-client/tx_raw_client.go` (2 hunks)
* `keychain-sdk/example_keychain_test.go` (1 hunks)
* `keychain-sdk/internal/enc/enc.go` (2 hunks)
* `keychain-sdk/internal/enc/enc_test.go` (1 hunks)
* `keychain-sdk/internal/tracker/tracker.go` (1 hunks)
* `keychain-sdk/internal/writer/writer.go` (7 hunks)
* `keychain-sdk/key_requests.go` (3 hunks)
* `keychain-sdk/keychain.go` (4 hunks)
* `keychain-sdk/sign_requests.go` (4 hunks)
* `precompiles/act/act.go` (1 hunks)
* `precompiles/async/async.go` (1 hunks)
* `precompiles/async/tx.go` (1 hunks)
* `precompiles/json/builder.go` (15 hunks)
* `precompiles/json/builder_test.go` (5 hunks)
* `precompiles/json/json.go` (1 hunks)
* `precompiles/json/parser.go` (6 hunks)
* `precompiles/json/parser_test.go` (5 hunks)
* `precompiles/json/query.go` (2 hunks)
* `precompiles/sched/sched.go` (1 hunks)
* `precompiles/sched/tx.go` (2 hunks)
* `precompiles/slinky/slinky.go` (1 hunks)
* `precompiles/warden/events.go` (7 hunks)
* `precompiles/warden/warden.go` (1 hunks)
* `prophet/dedup.go` (1 hunks)
* `prophet/exec.go` (2 hunks)
* `prophet/plugins.go` (2 hunks)
* `prophet/plugins/http/http.go` (1 hunks)
* `prophet/plugins/http/http_test.go` (1 hunks)
* `prophet/plugins/pfp/pfp.go` (1 hunks)
* `prophet/plugins/stoicquote/stoicquote_test.go` (1 hunks)
* `prophet/plugins/veniceimg/veniceimg.go` (1 hunks)
* `prophet/prophet.go` (2 hunks)
* `prophet/task.go` (1 hunks)
* `shield/ast/ast.go` (1 hunks)
* `shield/internal/evaluator/evaluator.go` (7 hunks)
* `shield/internal/evaluator/evaluator_test.go` (1 hunks)
* `shield/internal/lexer/lexer.go` (6 hunks)
* `shield/internal/metadata/metadata.go` (2 hunks)
* `shield/internal/metadata/metadata_test.go` (1 hunks)
* `shield/internal/parser/parser.go` (8 hunks)
* `shield/internal/preprocess/preprocess.go` (1 hunks)
* `shield/internal/preprocess/preprocess_test.go` (3 hunks)
* `shield/shield.go` (1 hunks)
* `shield/token/idents.go` (1 hunks)
* `tests/cases/async_callbacks.go` (2 hunks)
* `tests/cases/create_space.go` (1 hunks)
* `tests/cases/reject_any_3_action.go` (1 hunks)
* `tests/cases/warden_precompile.go` (4 hunks)
* `tests/framework/checks/checks.go` (1 hunks)
* `tests/framework/checks/eth_checks.go` (1 hunks)
* `tests/framework/exec/exec.go` (1 hunks)
* `tests/framework/exec/warden_eth.go` (2 hunks)
* `tests/framework/exec/warden_node.go` (3 hunks)
* `tests/framework/framework.go` (2 hunks)
* `tests/framework/iowriter/iowriter.go` (1 hunks)
* `tests/framework/ports/ports.go` (1 hunks)
* `tests/framework/snapshot/snapshots.go` (5 hunks)
* `tests/integration_test.go` (1 hunks)
* `warden/app/ante.go` (1 hunks)
* `warden/app/app.go` (2 hunks)
* `warden/app/config.go` (1 hunks)
* `warden/app/export.go` (1 hunks)
* `warden/app/legacy.go` (3 hunks)
* `warden/app/sim_test.go` (1 hunks)
* `warden/repo/seqcollection.go` (2 hunks)
* `warden/x/act/keeper/actions_keeper.go` (1 hunks)
* `warden/x/act/keeper/keeper.go` (1 hunks)
* `warden/x/act/types/v1beta1/registry.go` (2 hunks)
* `warden/x/async/keeper/abci.go` (8 hunks)
* `warden/x/async/keeper/genesis.go` (1 hunks)
* `warden/x/async/keeper/keeper.go` (3 hunks)
* `warden/x/async/keeper/msg_server_add_task.go` (1 hunks)
* `warden/x/async/keeper/query_plugin_metrics_by_id.go` (2 hunks)
* `warden/x/async/keeper/query_plugin_validators.go` (3 hunks)
* `warden/x/async/keeper/queues.go` (3 hunks)
* `warden/x/async/keeper/tasks.go` (1 hunks)
* `warden/x/sched/keeper/abci.go` (4 hunks)
* `warden/x/sched/keeper/callbacks.go` (1 hunks)
* `warden/x/sched/keeper/params.go` (1 hunks)
* `warden/x/sched/module/module.go` (1 hunks)
* `warden/x/sched/module/simulation.go` (1 hunks)
* `warden/x/sched/simulation/helpers.go` (1 hunks)
* `warden/x/sched/types/v1beta1/codec.go` (0 hunks)
* `warden/x/sched/types/v1beta1/genesis.go` (0 hunks)
* `warden/x/warden/keeper/keeper.go` (1 hunks)
* `warden/x/warden/keeper/spaces.go` (1 hunks)
* `warden/x/warden/types/v1beta3/address.go` (1 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (3)</summary>

* cmd/faucet/pkg/config/config.go
* warden/x/sched/types/v1beta1/genesis.go
* warden/x/sched/types/v1beta1/codec.go

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (34)</summary>

* precompiles/act/act.go
* precompiles/async/tx.go
* precompiles/async/async.go
* tests/framework/snapshot/snapshots.go
* warden/app/sim_test.go
* warden/x/async/keeper/msg_server_add_task.go
* keychain-sdk/internal/tracker/tracker.go
* cmd/wardenkms/bip44.go
* prophet/plugins/http/http_test.go
* precompiles/json/query.go
* cmd/soliditygen/main.go
* .github/workflows/wardenkms.yml
* precompiles/sched/sched.go
* warden/x/warden/keeper/keeper.go
* tests/framework/checks/checks.go
* prophet/prophet.go
* warden/x/sched/keeper/abci.go
* tests/cases/reject_any_3_action.go
* .github/workflows/go-client.yml
* precompiles/json/parser_test.go
* warden/x/async/keeper/queues.go
* go-client/query_client.go
* .github/workflows/wardend.yaml
* warden/x/sched/module/module.go
* prophet/plugins/veniceimg/veniceimg.go
* precompiles/json/json.go
* tests/framework/iowriter/iowriter.go
* warden/repo/seqcollection.go
* shield/internal/metadata/metadata.go
* prophet/plugins/pfp/pfp.go
* precompiles/sched/tx.go
* warden/app/app.go
* tests/cases/warden_precompile.go
* precompiles/json/builder_test.go

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (69)</summary>

* prophet/plugins/stoicquote/stoicquote_test.go
* warden/x/async/keeper/tasks.go
* go-client/tx_client.go
* cmd/shield_repl/main.go
* tests/cases/create_space.go
* cmd/soliditygen/generator.go
* warden/app/export.go
* shield/shield.go
* keychain-sdk/example_keychain_test.go
* tests/cases/async_callbacks.go
* keychain-sdk/key_requests.go
* precompiles/warden/events.go
* tests/framework/exec/warden_node.go
* precompiles/json/builder.go
* .github/workflows/faucet.yml
* .github/workflows/soliditygen.yml
* go-client/tx_raw_client.go
* warden/x/act/keeper/keeper.go
* precompiles/json/parser.go
* precompiles/slinky/slinky.go
* keychain-sdk/internal/enc/enc.go
* warden/x/sched/keeper/params.go
* shield/internal/metadata/metadata_test.go
* shield/internal/evaluator/evaluator.go
* .golangci.yml
* prophet/plugins.go
* shield/token/idents.go
* warden/x/async/keeper/genesis.go
* .github/workflows/shield.yml
* warden/x/act/types/v1beta1/registry.go
* warden/x/warden/keeper/spaces.go
* warden/x/async/keeper/query_plugin_validators.go
* warden/x/act/keeper/actions_keeper.go
* shield/internal/evaluator/evaluator_test.go
* shield/internal/preprocess/preprocess_test.go
* keychain-sdk/internal/enc/enc_test.go
* tests/framework/framework.go
* keychain-sdk/sign_requests.go
* keychain-sdk/keychain.go
* precompiles/warden/warden.go
* shield/internal/preprocess/preprocess.go
* cmd/faucet/faucet.go
* warden/x/async/keeper/abci.go
* prophet/task.go
* keychain-sdk/internal/writer/writer.go
* cmd/wardenkms/wardenkms.go
* go-client/tx_identity.go
* tests/framework/checks/eth_checks.go
* tests/framework/exec/exec.go
* shield/internal/lexer/lexer.go
* warden/x/sched/module/simulation.go
* prophet/exec.go
* .github/workflows/keychain-sdk.yml
* prophet/plugins/http/http.go
* warden/app/config.go
* warden/x/sched/keeper/callbacks.go
* warden/x/sched/simulation/helpers.go
* tests/framework/exec/warden_eth.go
* tests/framework/ports/ports.go
* shield/ast/ast.go
* warden/x/warden/types/v1beta3/address.go
* tests/integration_test.go
* warden/app/legacy.go
* shield/internal/parser/parser.go
* warden/x/async/keeper/query_plugin_metrics_by_id.go
* prophet/dedup.go
* warden/app/ante.go
* warden/x/async/keeper/keeper.go
* cmd/faucet/main.go

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)</summary>

* GitHub Check: test
* GitHub Check: lint
* GitHub Check: lint
* GitHub Check: test
* GitHub Check: test
* GitHub Check: lint
* GitHub Check: test
* GitHub Check: test
* GitHub Check: lint
* GitHub Check: lint
* GitHub Check: test
* GitHub Check: Analyze (javascript-typescript)
* GitHub Check: Analyze (go)

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details>
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---

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.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=warden-protocol/wardenprotocol&utm_content=1631):

> ‼️ **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 explain this code block.`
  -	`@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 explain its main purpose.`
  - `@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](https://www.coderabbit.ai/contact-us/support) 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](https://docs.coderabbit.ai/finishing-touches/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.

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

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: 0

🔭 Outside diff range comments (9)
warden/app/config.go (2)

46-54: Potential slice-bounds panic when _ or - missing / misplaced in chainID

strings.LastIndexByte returns -1 if the byte is not found.
If either separator is absent, or the - comes before the _, chainID[from+1:to] will panic at runtime.

+	if from == -1 || to == -1 || to <= from {
+		return fmt.Errorf("invalid chainID format %q, expected ..._<evmID>-...", chainID)
+	}
 	evmChainID, err := strconv.ParseUint(chainID[from+1:to], 10, 64)

41-45: sealed guard is not concurrency-safe

sealed is a plain package-level bool. Concurrent invocations of setupEVM (e.g., in tests) can race, violating the guard.

Consider protecting the section with sync.Once or an atomic flag.

-import (
+import (
 	"errors"
 	"fmt"
+	"sync"
 ...
-var sealed = false
+var setupOnce sync.Once
func (app *App) setupEVM() error {
	var onceErr error
	setupOnce.Do(func() {
		... // existing body without the `sealed` checks
	})
	return onceErr
}

Also applies to: 70-72

warden/x/sched/simulation/helpers.go (1)

10-14: Avoid panicking in simulation helpers—return a failure flag instead

Across all four simulation helper files:

  • warden/x/warden/simulation/helpers.go
  • warden/x/sched/simulation/helpers.go
  • warden/x/async/simulation/helpers.go
  • warden/x/act/simulation/helpers.go

replace the panic on invalid Bech32 addresses with a simple failure return:

func FindAccount(accs []simtypes.Account, address string) (simtypes.Account, bool) {
    creator, err := sdk.AccAddressFromBech32(address)
    if err != nil {
-       panic(err)
+       return simtypes.Account{}, false
    }

    return simtypes.FindAccount(accs, creator)
}

This aligns with our broader effort to remove panics in favor of error-style handling (see keeper/shield.go).

• Please verify that every call to FindAccount checks the returned boolean to avoid silent failures.
• You can run a repo-wide search (rg -n "FindAccount(" .) and inspect each usage.

cmd/soliditygen/generator.go (2)

48-52: Handle and propagate errors from convertToSolidityStruct

Both calls discard the error returned by convertToSolidityStruct, silently continuing on malformed JSON or invalid identifiers and producing an incomplete/incorrect contract.

-	inputDefs, _ := convertToSolidityStruct(inputName, inputMap)
+	inputDefs, err := convertToSolidityStruct(inputName, inputMap)
+	if err != nil {
+		return "", fmt.Errorf("converting input JSON: %w", err)
+	}

And likewise for the output branch:

-	outputDefs, _ := convertToSolidityStruct(outputName, outputMap)
+	outputDefs, err := convertToSolidityStruct(outputName, outputMap)
+	if err != nil {
+		return "", fmt.Errorf("converting output JSON: %w", err)
+	}

Fail-fast here prevents impossible-to-trace contract bugs later.

Also applies to: 58-61


126-134: Make struct field order deterministic

Iterating over a Go map yields random order, so the generated Solidity struct fields will jump around between runs, breaking reproducible builds and forcing noisy diffs.

-	for key, val := range value {
+	keys := make([]string, 0, len(value))
+	for k := range value {
+		keys = append(keys, k)
+	}
+	sort.Strings(keys)
+
+	for _, key := range keys {
+		val := value[key]

Add import "sort" at the top.

prophet/plugins/pfp/pfp.go (1)

160-170: Use the correct JPEG MIME type and avoid a future ‘unsupported media type’ error

AWS (and most HTTP clients) expect "image/jpeg", not "image/jpg".
Failing to use the canonical MIME type can lead to incorrect Content‐Type inference on download and break downstream processing.

-	err := p.UploadFile(ctx, "image/jpg", imgFilename, image)
+	err := p.UploadFile(ctx, "image/jpeg", imgFilename, image)

Also applies to: 182-183

warden/repo/seqcollection.go (1)

68-76: Import silently rewrites IDs – will always trip the mismatch check

Append allocates a new sequential ID, so actualID can never equal the caller-supplied id.
Use Set instead so the stored key matches the imported one.

-		actualID, err := c.Append(ctx, &v)
+		if err := c.Set(ctx, id, v); err != nil {
 			return fmt.Errorf("ID mismatch: expected %d, got %d: cannot import this list of values", id, actualID)
-		}
+		}

You may also want to advance the sequence cursor to max(id)+1 after the loop to keep future Append calls monotonic.

tests/framework/framework.go (1)

95-108: Potential infinite loop on Windows root path in goModRoot

filepath.Dir("C:\\") returns "C:\\", so parent == path at the root level.
Because the loop only stops when path == "/" or "", Windows callers can hang forever.

-	for path != "/" && path != "" {
+	for {
 		testPath := filepath.Join(path, "go.mod")
 		_, err := os.Stat(testPath)
 		if err == nil {
 			return path
 		}
-
-		path = filepath.Dir(path)
+		parent := filepath.Dir(path)
+		if parent == path || parent == "" { // reached FS root
+			break
+		}
+		path = parent
 	}
warden/x/async/keeper/tasks.go (1)

84-89: Error from results.Has is silently discarded
Has returns (bool, error), but the potential error is ignored. If the underlying store returns an error, the function will proceed as if the task already has a result (or not) and might corrupt state.

-func (k *TaskKeeper) SetResult(ctx context.Context, task types.Task, result types.TaskResult) error {
-    if exists, _ := k.results.Has(ctx, result.Id); exists {
+func (k *TaskKeeper) SetResult(ctx context.Context, task types.Task, result types.TaskResult) error {
+    exists, err := k.results.Has(ctx, result.Id)
+    if err != nil {
+        return err
+    }
+    if exists {
         return types.ErrTaskAlreadyHasResult
     }
♻️ Duplicate comments (1)
.github/workflows/shield.yml (1)

20-28: Same Go 1.24 concern applies here

Ensure the image has Go 1.24 or the job will error out. Align with the comment in go-client.yml.

🧹 Nitpick comments (17)
prophet/plugins/stoicquote/stoicquote_test.go (1)

60-64: Add a negative-path test for Verify

Verify is only tested for the happy path. Consider adding a case where the encoded output doesn’t match the live API response (or is malformed) to ensure the function correctly returns an error.

shield/token/idents.go (1)

12-13: Superfluous blank line before return

The new empty line doesn’t add readability and breaks the otherwise compact early-return pattern in this tiny helper. Consider reverting to keep the function tight.

.golangci.yml (1)

35-36: noinlineerr disabled – double-check intent

noinlineerr guards against shadowing or ignoring errors in helper functions. Disabling it could let subtle bugs slip. If it’s only failing on a handful of legitimate one-liners, consider suppressing per-line with //nolint:noinlineerr instead.

.github/workflows/soliditygen.yml (1)

20-28: Re-evaluate cache: false

All three workflows disable the built-in Go module cache. With larger deps this inflates CI duration. Unless there’s a reproducibility reason, enabling the cache (default) will speed up lint & test jobs.

-      - uses: actions/setup-go@v5
-        with:
-          go-version: "1.24"
-          cache: false
+      - uses: actions/setup-go@v5
+        with:
+          go-version: "1.24"
+          cache: true
.github/workflows/keychain-sdk.yml (1)

25-27: Pin the GitHub Action to a commit SHA for reproducibility & supply-chain safety

Using a floating tag (golangci/golangci-lint-action@v8) exposes the workflow to unexpected future changes or a malicious re-tag. Pinning to the immutable commit SHA published for v8 eliminates that risk while still conveying intent via a comment.

-      - name: golangci-lint
-        uses: golangci/golangci-lint-action@v8
+      # golangci-lint-action v8 (pinned)
+      - name: golangci-lint
+        uses: golangci/golangci-lint-action@<commit-sha>
.github/workflows/wardenkms.yml (1)

33-36: Same pinning concern as above

Consider locking golangci/golangci-lint-action@v8 to its release commit SHA for deterministic builds and tighter supply-chain controls.

.github/workflows/wardend.yaml (1)

38-41: Lock the linter action to a commit SHA

Replicates the recommendation given for the other workflows—pin the action instead of relying on a mutable tag.

.github/workflows/faucet.yml (1)

39-42: Pin golangci-lint-action@v8 to an exact commit

For the same determinism & security reasons already mentioned, replace @v8 with its immutable commit SHA.

shield/internal/preprocess/preprocess.go (3)

28-35: Avoid re-declaring err inside every loop iteration

var err error is declared on every pass through the loop. Declare it once before the loop to keep the loop body cleaner and avoid needless shadowing.

-func preprocessElements(ctx context.Context, elements []*ast.Expression, expander ast.Expander) error {
-	for i, elem := range elements {
-		var err error
+func preprocessElements(ctx context.Context, elements []*ast.Expression, expander ast.Expander) error {
+	var err error
+	for i, elem := range elements {
 		elements[i], err = Preprocess(ctx, elem, expander)

40-45: Inline the temporary err variable

Declaring var err error one line above its only assignment adds noise. Prefer the shorter form that the compiler already handles well:

-	var err error
-	prefix.Right, err = Preprocess(ctx, prefix.Right, expander)
-	return err
+	right, err := Preprocess(ctx, prefix.Right, expander)
+	prefix.Right = right
+	return err

48-60: Same pattern here—declare once, reuse, or inline

Both infix.Left and infix.Right are processed sequentially; you can reuse a single err declared before the assignments or inline as shown above for consistency.

prophet/plugins/pfp/pfp.go (1)

194-205: Loading AWS config on every upload is wasteful

config.LoadDefaultConfig performs network work (endpoint discovery, credentials) and allocates heavily.
Consider initialising the S3 client once in New(...) and re-using it; this will reduce latency for every UploadFile call.

No immediate change required for the PR, but worth a follow-up ticket.

warden/x/act/keeper/keeper.go (1)

110-113: Prefer BlockTime() for clarity

sdk.UnwrapSDKContext(ctx).BlockTime() is the idiomatic accessor; it avoids the extra indirection through HeaderInfo() and is less likely to break on SDK upgrades.

-func (k Keeper) getBlockTime(ctx context.Context) time.Time {
-	return sdk.UnwrapSDKContext(ctx).HeaderInfo().Time
+func (k Keeper) getBlockTime(ctx context.Context) time.Time {
+	return sdk.UnwrapSDKContext(ctx).BlockTime()
 }
prophet/prophet.go (2)

95-100: Prefer explicit unlock instead of defer inside the loop

defer runs when the goroutine returns, but placing it inside the loop is slightly unexpected and costs a tiny allocation. An explicit unlock keeps the critical section obvious and avoids the defer cost.

-            p.selfAddressRwLock.Lock()
-            defer p.selfAddressRwLock.Unlock()
-
-            p.selfAddress = status.ValidatorInfo.Address
+            p.selfAddressRwLock.Lock()
+            p.selfAddress = status.ValidatorInfo.Address
+            p.selfAddressRwLock.Unlock()

166-170: Consider supplying a context rather than disabling noctx

If feasible, pass a context.Context to satisfy the linter instead of blanket-disabling:

-        slog.Warn("q.Add: queue is full, dropped item", "item", item) //nolint:noctx
+        slog.WarnContext(context.TODO(), "q.Add: queue is full, dropped item", "item", item)

Using context.TODO() keeps the call compliant; replace with a real context if/when one is available.

keychain-sdk/example_keychain_test.go (1)

38-50: Align code comment spelling with API name to avoid confusion

The method is Fulfil, but the log message says “fulfill”. This tiny mismatch may cause grep-based searches to miss occurrences.

-			logger.ErrorContext(ctx, "could not fulfill key request", "error", err)
+			logger.ErrorContext(ctx, "could not fulfil key request", "error", err)
prophet/exec.go (1)

23-23: Context propagation improves observability, but consider avoiding context.TODO().

The migration to context-aware logging (DebugContext, ErrorContext) and passing context to Execute/Verify functions is excellent for traceability. However, using context.TODO() is generally discouraged in production code as it's intended for temporary use during development.

Consider modifying the function signatures to accept a context.Context parameter:

-func ExecTasks(r TaskReader, w TaskResultWriter) error {
+func ExecTasks(ctx context.Context, r TaskReader, w TaskResultWriter) error {
-func ExecVotes(r TaskResultReader, w VoteWriter) error {
+func ExecVotes(ctx context.Context, r TaskResultReader, w VoteWriter) error {

This would allow proper cancellation and timeout handling for the entire execution pipeline.

Also applies to: 59-59

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fbd66a0 and 003217b.

📒 Files selected for processing (105)
  • .github/workflows/faucet.yml (1 hunks)
  • .github/workflows/go-client.yml (1 hunks)
  • .github/workflows/keychain-sdk.yml (1 hunks)
  • .github/workflows/shield.yml (1 hunks)
  • .github/workflows/soliditygen.yml (1 hunks)
  • .github/workflows/wardend.yaml (1 hunks)
  • .github/workflows/wardenkms.yml (1 hunks)
  • .golangci.yml (2 hunks)
  • cmd/faucet/faucet.go (11 hunks)
  • cmd/faucet/main.go (5 hunks)
  • cmd/faucet/pkg/config/config.go (0 hunks)
  • cmd/shield_repl/main.go (1 hunks)
  • cmd/soliditygen/generator.go (6 hunks)
  • cmd/soliditygen/main.go (4 hunks)
  • cmd/wardenkms/bip44.go (5 hunks)
  • cmd/wardenkms/wardenkms.go (4 hunks)
  • go-client/query_client.go (2 hunks)
  • go-client/tx_client.go (1 hunks)
  • go-client/tx_identity.go (1 hunks)
  • go-client/tx_raw_client.go (2 hunks)
  • keychain-sdk/example_keychain_test.go (1 hunks)
  • keychain-sdk/internal/enc/enc.go (2 hunks)
  • keychain-sdk/internal/enc/enc_test.go (1 hunks)
  • keychain-sdk/internal/tracker/tracker.go (1 hunks)
  • keychain-sdk/internal/writer/writer.go (7 hunks)
  • keychain-sdk/key_requests.go (3 hunks)
  • keychain-sdk/keychain.go (4 hunks)
  • keychain-sdk/sign_requests.go (4 hunks)
  • precompiles/act/act.go (1 hunks)
  • precompiles/async/async.go (1 hunks)
  • precompiles/async/tx.go (1 hunks)
  • precompiles/json/builder.go (15 hunks)
  • precompiles/json/builder_test.go (5 hunks)
  • precompiles/json/json.go (1 hunks)
  • precompiles/json/parser.go (6 hunks)
  • precompiles/json/parser_test.go (5 hunks)
  • precompiles/json/query.go (2 hunks)
  • precompiles/sched/sched.go (1 hunks)
  • precompiles/sched/tx.go (2 hunks)
  • precompiles/slinky/slinky.go (1 hunks)
  • precompiles/warden/events.go (7 hunks)
  • precompiles/warden/warden.go (1 hunks)
  • prophet/dedup.go (1 hunks)
  • prophet/exec.go (2 hunks)
  • prophet/plugins.go (2 hunks)
  • prophet/plugins/http/http.go (1 hunks)
  • prophet/plugins/http/http_test.go (1 hunks)
  • prophet/plugins/pfp/pfp.go (1 hunks)
  • prophet/plugins/stoicquote/stoicquote_test.go (1 hunks)
  • prophet/plugins/veniceimg/veniceimg.go (1 hunks)
  • prophet/prophet.go (2 hunks)
  • prophet/task.go (1 hunks)
  • shield/ast/ast.go (1 hunks)
  • shield/internal/evaluator/evaluator.go (7 hunks)
  • shield/internal/evaluator/evaluator_test.go (1 hunks)
  • shield/internal/lexer/lexer.go (6 hunks)
  • shield/internal/metadata/metadata.go (2 hunks)
  • shield/internal/metadata/metadata_test.go (1 hunks)
  • shield/internal/parser/parser.go (8 hunks)
  • shield/internal/preprocess/preprocess.go (1 hunks)
  • shield/internal/preprocess/preprocess_test.go (3 hunks)
  • shield/shield.go (1 hunks)
  • shield/token/idents.go (1 hunks)
  • tests/cases/async_callbacks.go (2 hunks)
  • tests/cases/create_space.go (1 hunks)
  • tests/cases/reject_any_3_action.go (1 hunks)
  • tests/cases/warden_precompile.go (4 hunks)
  • tests/framework/checks/checks.go (1 hunks)
  • tests/framework/checks/eth_checks.go (1 hunks)
  • tests/framework/exec/exec.go (1 hunks)
  • tests/framework/exec/warden_eth.go (2 hunks)
  • tests/framework/exec/warden_node.go (3 hunks)
  • tests/framework/framework.go (2 hunks)
  • tests/framework/iowriter/iowriter.go (1 hunks)
  • tests/framework/ports/ports.go (1 hunks)
  • tests/framework/snapshot/snapshots.go (5 hunks)
  • tests/integration_test.go (1 hunks)
  • warden/app/ante.go (1 hunks)
  • warden/app/app.go (2 hunks)
  • warden/app/config.go (1 hunks)
  • warden/app/export.go (1 hunks)
  • warden/app/legacy.go (3 hunks)
  • warden/app/sim_test.go (1 hunks)
  • warden/repo/seqcollection.go (2 hunks)
  • warden/x/act/keeper/actions_keeper.go (1 hunks)
  • warden/x/act/keeper/keeper.go (1 hunks)
  • warden/x/act/types/v1beta1/registry.go (2 hunks)
  • warden/x/async/keeper/abci.go (8 hunks)
  • warden/x/async/keeper/genesis.go (1 hunks)
  • warden/x/async/keeper/keeper.go (2 hunks)
  • warden/x/async/keeper/msg_server_add_task.go (1 hunks)
  • warden/x/async/keeper/query_plugin_validators.go (3 hunks)
  • warden/x/async/keeper/queues.go (3 hunks)
  • warden/x/async/keeper/tasks.go (2 hunks)
  • warden/x/sched/keeper/abci.go (4 hunks)
  • warden/x/sched/keeper/callbacks.go (1 hunks)
  • warden/x/sched/keeper/params.go (1 hunks)
  • warden/x/sched/module/module.go (1 hunks)
  • warden/x/sched/module/simulation.go (1 hunks)
  • warden/x/sched/simulation/helpers.go (1 hunks)
  • warden/x/sched/types/v1beta1/codec.go (0 hunks)
  • warden/x/sched/types/v1beta1/genesis.go (0 hunks)
  • warden/x/warden/keeper/keeper.go (1 hunks)
  • warden/x/warden/keeper/spaces.go (1 hunks)
  • warden/x/warden/types/v1beta3/address.go (1 hunks)
🧠 Learnings (53)
📓 Common learnings
Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the `Expand` method of `warden/x/warden/keeper/shield.go`, replacing `panic` with error returns.
Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the `Expand` method of `warden/x/warden/keeper/shield.go`, replacing `panic` with error returns.
warden/x/async/keeper/msg_server_add_task.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

cmd/soliditygen/main.go (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

precompiles/json/builder_test.go (1)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

warden/x/async/keeper/queues.go (2)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

tests/framework/exec/warden_node.go (2)

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

warden/x/async/keeper/genesis.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

keychain-sdk/sign_requests.go (1)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

warden/x/warden/keeper/keeper.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

keychain-sdk/example_keychain_test.go (4)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:0-0
Timestamp: 2024-10-24T13:35:40.452Z
Learning: In keychain-sdk/internal/tracker/tracker.go, the statusTracker method is always called with the lock already held by the caller, so it does not need to acquire a lock itself.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

.golangci.yml (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

shield/ast/ast.go (2)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

.github/workflows/keychain-sdk.yml (1)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

precompiles/act/act.go (1)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

warden/app/export.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

warden/app/ante.go (4)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #1084
File: automated-orders/packages/blockchain-library/src/clients/evm.ts:73-84
Timestamp: 2024-11-22T08:39:50.349Z
Learning: In automated-orders/packages/blockchain-library/src/clients/evm.ts, the method EvmClient.broadcastTx does not require additional error handling or validation beyond what is already implemented.

warden/x/act/keeper/keeper.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

shield/token/idents.go (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

warden/x/async/keeper/abci.go (4)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: mn13
PR: #1216
File: warden/x/async/keeper/abci.go:212-216
Timestamp: 2025-02-06T08:48:57.285Z
Learning: In the collections package from Cosmos SDK, calling Keys() on an iterator fully consumes and closes the iterator, making an explicit Close() call unnecessary.

keychain-sdk/key_requests.go (4)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:0-0
Timestamp: 2024-10-24T13:35:40.452Z
Learning: In keychain-sdk/internal/tracker/tracker.go, the statusTracker method is always called with the lock already held by the caller, so it does not need to acquire a lock itself.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

warden/x/sched/simulation/helpers.go (4)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: #1095
File: warden/app/oracle.go:0-0
Timestamp: 2024-11-21T11:35:35.678Z
Learning: In the Go file warden/app/oracle.go, it is acceptable to panic inside the goroutine that starts the oracle client, because an error here indicates a misconfiguration (e.g., the address was misconfigured), and the application should exit.

tests/cases/warden_precompile.go (4)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

prophet/dedup.go (1)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

shield/shield.go (2)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

.github/workflows/wardenkms.yml (1)

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

tests/cases/create_space.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

keychain-sdk/internal/tracker/tracker.go (4)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:0-0
Timestamp: 2024-10-24T13:35:40.452Z
Learning: In keychain-sdk/internal/tracker/tracker.go, the statusTracker method is always called with the lock already held by the caller, so it does not need to acquire a lock itself.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:20-20
Timestamp: 2024-10-23T10:26:05.989Z
Learning: In the keychain-sdk/internal/tracker/tracker.go file, the variable nodeUrl should remain as nodeUrl and not be renamed to nodeURL.

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

warden/x/async/keeper/tasks.go (3)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

warden/x/async/keeper/query_plugin_validators.go (1)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

tests/framework/exec/warden_eth.go (5)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: mn13
PR: #1195
File: prophet/handlers/pricepred/pricepred.go:255-295
Timestamp: 2025-01-29T08:09:21.980Z
Learning: In the Warden Protocol codebase, when dealing with trusted endpoints (like in prophet/handlers/pricepred/pricepred.go), simple error handling for non-200 responses is preferred as the endpoints are trusted and the approach is sufficient for the current stage.

warden/repo/seqcollection.go (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

prophet/prophet.go (3)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:0-0
Timestamp: 2024-10-24T13:35:40.452Z
Learning: In keychain-sdk/internal/tracker/tracker.go, the statusTracker method is always called with the lock already held by the caller, so it does not need to acquire a lock itself.

warden/app/app.go (3)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: mn13
PR: #1195
File: prophet/handlers/pricepred/pricepred.go:255-295
Timestamp: 2025-01-29T08:09:21.980Z
Learning: In the Warden Protocol codebase, when dealing with trusted endpoints (like in prophet/handlers/pricepred/pricepred.go), simple error handling for non-200 responses is preferred as the endpoints are trusted and the approach is sufficient for the current stage.

shield/internal/preprocess/preprocess.go (2)

Learnt from: Pitasi
PR: #1101
File: warden/x/async/keeper/query_futures.go:27-32
Timestamp: 2024-11-26T09:02:20.640Z
Learning: Variable shadowing of err variables within inner functions is acceptable in our Go codebase, as the Uber Go Style Guide does not prohibit it.

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

precompiles/warden/events.go (5)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

tests/framework/iowriter/iowriter.go (1)

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

cmd/soliditygen/generator.go (3)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

Learnt from: Svetomech
PR: #1201
File: prophet/handlers/pricepred/PricePredictor.sol:24-26
Timestamp: 2025-01-31T08:10:08.200Z
Learning: The PricePredictor.sol contract and its solve function are only used for generating Go types with abigen and are not meant to be deployed or called. The contract serves as a type definition source.

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

warden/app/legacy.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

cmd/wardenkms/wardenkms.go (6)

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: Pitasi
PR: #1095
File: warden/app/oracle.go:0-0
Timestamp: 2024-11-21T11:35:35.678Z
Learning: In the Go file warden/app/oracle.go, it is acceptable to panic inside the goroutine that starts the oracle client, because an error here indicates a misconfiguration (e.g., the address was misconfigured), and the application should exit.

warden/x/sched/keeper/params.go (3)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

warden/x/sched/module/module.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

go-client/tx_identity.go (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

warden/x/warden/keeper/spaces.go (2)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: mn13
PR: #1216
File: warden/x/async/keeper/abci.go:212-216
Timestamp: 2025-02-06T08:48:57.285Z
Learning: In the collections package from Cosmos SDK, calling Keys() on an iterator fully consumes and closes the iterator, making an explicit Close() call unnecessary.

precompiles/sched/tx.go (1)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

keychain-sdk/internal/writer/writer.go (2)

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

warden/app/config.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

warden/x/act/keeper/actions_keeper.go (2)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

precompiles/json/query.go (1)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

warden/x/sched/keeper/abci.go (3)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

warden/x/sched/keeper/callbacks.go (2)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

precompiles/json/builder.go (2)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

Learnt from: mn13
PR: #1196
File: prophet/handlers/pricepred/pricepred.go:175-236
Timestamp: 2025-01-30T08:02:40.983Z
Learning: In the Warden Protocol codebase, prefer using map-based function lookups over large switch-case blocks for metric type handling. Example implementation:

metricMap := map[MetricName]func(BacktestingMetrics) float64{
    MetricType: func(m BacktestingMetrics) float64 { return m.Value },
    // ...
}
prophet/exec.go (1)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

keychain-sdk/keychain.go (2)

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

Learnt from: Pitasi
PR: #1095
File: warden/app/oracle.go:0-0
Timestamp: 2024-11-21T11:35:35.678Z
Learning: In the Go file warden/app/oracle.go, it is acceptable to panic inside the goroutine that starts the oracle client, because an error here indicates a misconfiguration (e.g., the address was misconfigured), and the application should exit.

🧬 Code Graph Analysis (11)
keychain-sdk/sign_requests.go (3)
go-client/tx_warden.go (1)
  • SignRequestRejection (55-58)
keychain-sdk/keychain.go (1)
  • App (25-34)
keychain-sdk/internal/enc/enc.go (1)
  • ValidateEncryptionKey (11-19)
cmd/faucet/main.go (1)
cmd/faucet/faucet.go (1)
  • InitFaucet (129-157)
keychain-sdk/example_keychain_test.go (3)
warden/x/act/cosmoshield/context.go (1)
  • Context (9-14)
keychain-sdk/writer.go (1)
  • Writer (6-13)
keychain-sdk/sign_requests.go (1)
  • SignRequest (16-16)
keychain-sdk/key_requests.go (4)
go-client/tx_warden.go (2)
  • KeyRequestFulfilment (9-12)
  • KeyRequestRejection (23-26)
warden/x/act/cosmoshield/context.go (1)
  • Context (9-14)
keychain-sdk/keychain.go (1)
  • App (25-34)
warden/app/app.go (1)
  • App (116-176)
shield/internal/evaluator/evaluator_test.go (1)
shield/object/object.go (1)
  • Boolean (37-39)
shield/internal/preprocess/preprocess.go (3)
shield/shield.go (1)
  • Preprocess (35-37)
shield/ast/ast.pb.go (6)
  • PrefixExpression (579-583)
  • PrefixExpression (587-587)
  • PrefixExpression (588-590)
  • InfixExpression (511-516)
  • InfixExpression (520-520)
  • InfixExpression (521-523)
shield/ast/expander.go (1)
  • Expander (5-18)
warden/x/sched/keeper/params.go (2)
warden/x/sched/types/v1beta1/keys.go (1)
  • ParamsKey (14-14)
warden/x/sched/keeper/keeper.go (1)
  • Keeper (22-34)
shield/internal/evaluator/evaluator.go (2)
shield/object/object.go (5)
  • Integer (30-32)
  • TRUE (21-21)
  • STRING_OBJ (14-14)
  • FALSE (22-22)
  • Error (61-63)
shield/ast/ast.pb.go (5)
  • Expression_BooleanLiteral (86-88)
  • Expression_BooleanLiteral (107-107)
  • BooleanLiteral (295-298)
  • BooleanLiteral (302-302)
  • BooleanLiteral (303-305)
warden/x/warden/keeper/spaces.go (2)
warden/repo/seqcollection.go (1)
  • SeqCollection (17-22)
warden/x/act/cosmoshield/context.go (1)
  • Context (9-14)
keychain-sdk/internal/writer/writer.go (2)
warden/x/act/cosmoshield/context.go (1)
  • Context (9-14)
go-client/tx_raw_client.go (3)
  • DefaultGasLimit (21-21)
  • DefaultFees (22-22)
  • Msger (66-68)
prophet/exec.go (2)
prophet/plugins.go (2)
  • Execute (22-56)
  • Verify (59-83)
prophet/task.go (1)
  • Vote (39-45)
💤 Files with no reviewable changes (3)
  • cmd/faucet/pkg/config/config.go
  • warden/x/sched/types/v1beta1/codec.go
  • warden/x/sched/types/v1beta1/genesis.go
🧰 Additional context used
🧠 Learnings (53)
📓 Common learnings
Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the `Expand` method of `warden/x/warden/keeper/shield.go`, replacing `panic` with error returns.
Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the `Expand` method of `warden/x/warden/keeper/shield.go`, replacing `panic` with error returns.
warden/x/async/keeper/msg_server_add_task.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

cmd/soliditygen/main.go (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

precompiles/json/builder_test.go (1)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

warden/x/async/keeper/queues.go (2)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

tests/framework/exec/warden_node.go (2)

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

warden/x/async/keeper/genesis.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

keychain-sdk/sign_requests.go (1)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

warden/x/warden/keeper/keeper.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

keychain-sdk/example_keychain_test.go (4)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:0-0
Timestamp: 2024-10-24T13:35:40.452Z
Learning: In keychain-sdk/internal/tracker/tracker.go, the statusTracker method is always called with the lock already held by the caller, so it does not need to acquire a lock itself.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

.golangci.yml (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

shield/ast/ast.go (2)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

.github/workflows/keychain-sdk.yml (1)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

precompiles/act/act.go (1)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

warden/app/export.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

warden/app/ante.go (4)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #1084
File: automated-orders/packages/blockchain-library/src/clients/evm.ts:73-84
Timestamp: 2024-11-22T08:39:50.349Z
Learning: In automated-orders/packages/blockchain-library/src/clients/evm.ts, the method EvmClient.broadcastTx does not require additional error handling or validation beyond what is already implemented.

warden/x/act/keeper/keeper.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

shield/token/idents.go (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

warden/x/async/keeper/abci.go (4)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: mn13
PR: #1216
File: warden/x/async/keeper/abci.go:212-216
Timestamp: 2025-02-06T08:48:57.285Z
Learning: In the collections package from Cosmos SDK, calling Keys() on an iterator fully consumes and closes the iterator, making an explicit Close() call unnecessary.

keychain-sdk/key_requests.go (4)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:0-0
Timestamp: 2024-10-24T13:35:40.452Z
Learning: In keychain-sdk/internal/tracker/tracker.go, the statusTracker method is always called with the lock already held by the caller, so it does not need to acquire a lock itself.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

warden/x/sched/simulation/helpers.go (4)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: #1095
File: warden/app/oracle.go:0-0
Timestamp: 2024-11-21T11:35:35.678Z
Learning: In the Go file warden/app/oracle.go, it is acceptable to panic inside the goroutine that starts the oracle client, because an error here indicates a misconfiguration (e.g., the address was misconfigured), and the application should exit.

tests/cases/warden_precompile.go (4)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

prophet/dedup.go (1)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

shield/shield.go (2)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

.github/workflows/wardenkms.yml (1)

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

tests/cases/create_space.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

keychain-sdk/internal/tracker/tracker.go (4)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:0-0
Timestamp: 2024-10-24T13:35:40.452Z
Learning: In keychain-sdk/internal/tracker/tracker.go, the statusTracker method is always called with the lock already held by the caller, so it does not need to acquire a lock itself.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:20-20
Timestamp: 2024-10-23T10:26:05.989Z
Learning: In the keychain-sdk/internal/tracker/tracker.go file, the variable nodeUrl should remain as nodeUrl and not be renamed to nodeURL.

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

warden/x/async/keeper/tasks.go (3)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

warden/x/async/keeper/query_plugin_validators.go (1)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

tests/framework/exec/warden_eth.go (5)

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: mn13
PR: #1195
File: prophet/handlers/pricepred/pricepred.go:255-295
Timestamp: 2025-01-29T08:09:21.980Z
Learning: In the Warden Protocol codebase, when dealing with trusted endpoints (like in prophet/handlers/pricepred/pricepred.go), simple error handling for non-200 responses is preferred as the endpoints are trusted and the approach is sufficient for the current stage.

warden/repo/seqcollection.go (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

prophet/prophet.go (3)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/tracker.go:0-0
Timestamp: 2024-10-24T13:35:40.452Z
Learning: In keychain-sdk/internal/tracker/tracker.go, the statusTracker method is always called with the lock already held by the caller, so it does not need to acquire a lock itself.

warden/app/app.go (3)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: mn13
PR: #1195
File: prophet/handlers/pricepred/pricepred.go:255-295
Timestamp: 2025-01-29T08:09:21.980Z
Learning: In the Warden Protocol codebase, when dealing with trusted endpoints (like in prophet/handlers/pricepred/pricepred.go), simple error handling for non-200 responses is preferred as the endpoints are trusted and the approach is sufficient for the current stage.

shield/internal/preprocess/preprocess.go (2)

Learnt from: Pitasi
PR: #1101
File: warden/x/async/keeper/query_futures.go:27-32
Timestamp: 2024-11-26T09:02:20.640Z
Learning: Variable shadowing of err variables within inner functions is acceptable in our Go codebase, as the Uber Go Style Guide does not prohibit it.

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

precompiles/warden/events.go (5)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

tests/framework/iowriter/iowriter.go (1)

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

cmd/soliditygen/generator.go (3)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

Learnt from: Svetomech
PR: #1201
File: prophet/handlers/pricepred/PricePredictor.sol:24-26
Timestamp: 2025-01-31T08:10:08.200Z
Learning: The PricePredictor.sol contract and its solve function are only used for generating Go types with abigen and are not meant to be deployed or called. The contract serves as a type definition source.

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

warden/app/legacy.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

cmd/wardenkms/wardenkms.go (6)

Learnt from: backsapc
PR: #810
File: cmd/wardenkms/wardenkms.go:45-50
Timestamp: 2024-10-24T13:01:55.558Z
Learning: In the cmd/wardenkms/wardenkms.go file and the codebase, use Grpc instead of GRPC for acronym casing in type names, such as GrpcNodeConfig and GrpcNodeConfigDecoder, even though Go naming conventions suggest capitalizing acronyms.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: Pitasi
PR: #1095
File: warden/app/oracle.go:0-0
Timestamp: 2024-11-21T11:35:35.678Z
Learning: In the Go file warden/app/oracle.go, it is acceptable to panic inside the goroutine that starts the oracle client, because an error here indicates a misconfiguration (e.g., the address was misconfigured), and the application should exit.

warden/x/sched/keeper/params.go (3)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

warden/x/sched/module/module.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

go-client/tx_identity.go (1)

Learnt from: backsapc
PR: #946
File: precompiles/warden/tx_types.go:21-29
Timestamp: 2024-10-21T10:29:27.347Z
Learning: In this Go codebase, use Id instead of ID in identifiers, even for initialisms like "ID".

warden/x/warden/keeper/spaces.go (2)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: mn13
PR: #1216
File: warden/x/async/keeper/abci.go:212-216
Timestamp: 2025-02-06T08:48:57.285Z
Learning: In the collections package from Cosmos SDK, calling Keys() on an iterator fully consumes and closes the iterator, making an explicit Close() call unnecessary.

precompiles/sched/tx.go (1)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

keychain-sdk/internal/writer/writer.go (2)

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

warden/app/config.go (1)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

warden/x/act/keeper/actions_keeper.go (2)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

precompiles/json/query.go (1)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

warden/x/sched/keeper/abci.go (3)

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-06-10T19:20:04.350Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

Learnt from: Pitasi
PR: warden-protocol/wardenprotocol#0
File: :0-0
Timestamp: 2024-10-16T16:01:11.241Z
Learning: Pitasi has implemented error handling in the Expand method of warden/x/warden/keeper/shield.go, replacing panic with error returns.

warden/x/sched/keeper/callbacks.go (2)

Learnt from: backsapc
PR: #810
File: keychain-sdk/internal/tracker/status_tracker.go:0-0
Timestamp: 2024-10-24T13:03:19.344Z
Learning: The MarkProcessed method has been removed from keychain-sdk/internal/tracker/status_tracker.go in the Go codebase, as it is no longer needed.

Learnt from: backsapc
PR: #975
File: warden/app/app.go:562-562
Timestamp: 2024-11-02T10:21:03.096Z
Learning: In warden/app/app.go, suggestions to handle errors from ParamsKeeper.GetSubspace() may be considered out of scope.

precompiles/json/builder.go (2)

Learnt from: Pitasi
PR: #889
File: precompiles/act/query.go:170-171
Timestamp: 2024-10-16T15:30:41.746Z
Learning: In Go code within precompile methods (e.g., in precompiles/act/query.go), prefer defining and using a custom error type (like WrongArgsNumber) instead of using fmt.Errorf directly for error messages. This enhances error handling and code clarity.

Learnt from: mn13
PR: #1196
File: prophet/handlers/pricepred/pricepred.go:175-236
Timestamp: 2025-01-30T08:02:40.983Z
Learning: In the Warden Protocol codebase, prefer using map-based function lookups over large switch-case blocks for metric type handling. Example implementation:

metricMap := map[MetricName]func(BacktestingMetrics) float64{
    MetricType: func(m BacktestingMetrics) float64 { return m.Value },
    // ...
}
prophet/exec.go (1)

Learnt from: Pitasi
PR: #1141
File: prophet/prophet.go:98-100
Timestamp: 2024-12-13T11:47:21.696Z
Learning: In the prophet/prophet.go file, for the implementation of the non-blocking queue q, prefer using a buffered channel that discards overflowing items instead of spawning a goroutine per item added, to prevent resource exhaustion.

keychain-sdk/keychain.go (2)

Learnt from: backsapc
PR: #810
File: keychain-sdk/keychain.go:74-81
Timestamp: 2024-10-24T13:03:23.718Z
Learning: The team prefers not to refactor the writer.New constructor to use functional options in keychain-sdk/keychain.go.

Learnt from: Pitasi
PR: #1095
File: warden/app/oracle.go:0-0
Timestamp: 2024-11-21T11:35:35.678Z
Learning: In the Go file warden/app/oracle.go, it is acceptable to panic inside the goroutine that starts the oracle client, because an error here indicates a misconfiguration (e.g., the address was misconfigured), and the application should exit.

🧬 Code Graph Analysis (11)
keychain-sdk/sign_requests.go (3)
go-client/tx_warden.go (1)
  • SignRequestRejection (55-58)
keychain-sdk/keychain.go (1)
  • App (25-34)
keychain-sdk/internal/enc/enc.go (1)
  • ValidateEncryptionKey (11-19)
cmd/faucet/main.go (1)
cmd/faucet/faucet.go (1)
  • InitFaucet (129-157)
keychain-sdk/example_keychain_test.go (3)
warden/x/act/cosmoshield/context.go (1)
  • Context (9-14)
keychain-sdk/writer.go (1)
  • Writer (6-13)
keychain-sdk/sign_requests.go (1)
  • SignRequest (16-16)
keychain-sdk/key_requests.go (4)
go-client/tx_warden.go (2)
  • KeyRequestFulfilment (9-12)
  • KeyRequestRejection (23-26)
warden/x/act/cosmoshield/context.go (1)
  • Context (9-14)
keychain-sdk/keychain.go (1)
  • App (25-34)
warden/app/app.go (1)
  • App (116-176)
shield/internal/evaluator/evaluator_test.go (1)
shield/object/object.go (1)
  • Boolean (37-39)
shield/internal/preprocess/preprocess.go (3)
shield/shield.go (1)
  • Preprocess (35-37)
shield/ast/ast.pb.go (6)
  • PrefixExpression (579-583)
  • PrefixExpression (587-587)
  • PrefixExpression (588-590)
  • InfixExpression (511-516)
  • InfixExpression (520-520)
  • InfixExpression (521-523)
shield/ast/expander.go (1)
  • Expander (5-18)
warden/x/sched/keeper/params.go (2)
warden/x/sched/types/v1beta1/keys.go (1)
  • ParamsKey (14-14)
warden/x/sched/keeper/keeper.go (1)
  • Keeper (22-34)
shield/internal/evaluator/evaluator.go (2)
shield/object/object.go (5)
  • Integer (30-32)
  • TRUE (21-21)
  • STRING_OBJ (14-14)
  • FALSE (22-22)
  • Error (61-63)
shield/ast/ast.pb.go (5)
  • Expression_BooleanLiteral (86-88)
  • Expression_BooleanLiteral (107-107)
  • BooleanLiteral (295-298)
  • BooleanLiteral (302-302)
  • BooleanLiteral (303-305)
warden/x/warden/keeper/spaces.go (2)
warden/repo/seqcollection.go (1)
  • SeqCollection (17-22)
warden/x/act/cosmoshield/context.go (1)
  • Context (9-14)
keychain-sdk/internal/writer/writer.go (2)
warden/x/act/cosmoshield/context.go (1)
  • Context (9-14)
go-client/tx_raw_client.go (3)
  • DefaultGasLimit (21-21)
  • DefaultFees (22-22)
  • Msger (66-68)
prophet/exec.go (2)
prophet/plugins.go (2)
  • Execute (22-56)
  • Verify (59-83)
prophet/task.go (1)
  • Vote (39-45)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: lint
  • GitHub Check: test
  • GitHub Check: lint
  • GitHub Check: test
  • GitHub Check: lint
  • GitHub Check: test
  • GitHub Check: test
  • GitHub Check: lint
  • GitHub Check: test
  • GitHub Check: test
  • GitHub Check: lint
  • GitHub Check: Analyze (javascript-typescript)
  • GitHub Check: Analyze (go)
🔇 Additional comments (120)
warden/x/sched/module/simulation.go (1)

35-35: Readability improvement acknowledged

The added blank line cleanly separates the account-collection loop from the genesis-state construction block, matching Go style conventions. No further action required.

warden/x/sched/module/module.go (1)

78-79: No-op whitespace change – looks good

The inserted blank line purely improves readability without altering logic or control flow.

tests/integration_test.go (1)

27-35: Formatting tweak looks good

The extra blank lines improve console readability without altering logic. No further action required.

warden/app/ante.go (1)

175-183: Readability polish looks good

The added blank line cleanly separates the early‐exit error check from the happy-path logic, matching the style used elsewhere in the file. No functional impact. 👍

warden/app/export.go (1)

108-113: Whitespace addition improves readability

The added blank line cleanly separates the error check from subsequent logic and aligns with the surrounding style. No functional impact—looks good.

warden/x/act/types/v1beta1/registry.go (2)

38-41: Whitespace-only tweak is fine

A blank line was inserted for readability. No functional impact.


54-57: Same whitespace fix acknowledged

Identical readability improvement in RegisterCtx; no issues.

warden/app/app.go (2)

118-118: No functional impact – spacing looks good

Purely stylistic blank line improves readability; no concerns.


209-209: Minor formatting tweak acknowledged

Additional blank line before URL parsing is harmless and slightly clearer.

warden/app/sim_test.go (1)

178-181: No issues – formatting-only change looks good

The added blank line slightly improves readability without affecting logic or coverage.

prophet/dedup.go (1)

41-44: LGTM – purely stylistic change
The added blank line improves readability without affecting behavior. No further action required.

warden/app/legacy.go (1)

250-251: Stylistic whitespace only—looks good

Blank lines were added after local-variable declarations to improve visual grouping. No functional impact.

Also applies to: 264-265, 280-281

warden/app/config.go (1)

49-50: Whitespace-only change – OK
No functional impact.

warden/x/async/keeper/queues.go (4)

92-100: Whitespace cleanup only – logic unchanged

The removal of the blank line here has no impact on functionality or readability.


100-106: Whitespace cleanup only – logic unchanged

No functional changes; the surrounding error-handling remains intact.


123-127: Whitespace cleanup only – logic unchanged

The diff/threshold computation block is unaffected; looks good.


148-154: Whitespace cleanup only – logic unchanged

No behavioral impact; the slide phase logic is preserved.

go-client/tx_client.go (1)

15-18: Whitespace-only change – no action needed
Blank line inserted for readability; no functional impact.

go-client/tx_identity.go (1)

33-36: Formatting tweak acknowledged
Extra blank line slightly improves visual grouping; nothing further.

go-client/tx_raw_client.go (2)

73-78: No-op whitespace addition
The blank line after the early-return path is fine and keeps the happy-path visually separated.


99-108: Whitespace addition around signature hack
Purely cosmetic; logic unchanged and still clear.

go-client/query_client.go (2)

24-31: Verify grpc.NewClient usage
While only whitespace changed here, the function still calls grpc.NewClient, which is not part of the upstream gRPC Go API (the usual constructor is grpc.Dial). Double-check that a project-local wrapper or vendored helper indeed defines this symbol to avoid build breakage after linter upgrades.


45-49: Method relocation looks good
Moving Conn() below the constructors improves top-down readability; no behavioral impact.

prophet/plugins/stoicquote/stoicquote_test.go (2)

40-42: Purely cosmetic change looks fine

A single blank line was inserted to improve readability; no functional impact.


30-33: t.Context() support confirmed in CI environment
CI and local builds are using Go 1.24.5, which includes testing.T.Context() (added in Go 1.22). No changes are required.

.golangci.yml (1)

19-20: Disabling goconst may hide real duplication problems

goconst often flags hard-coded strings/ints that should be lifted to typed constants, improving maintainability and preventing typos. Unless the new golangci-lint v2.3 rule produces excessive false-positives, it’s worth re-evaluating this blanket disable.

Would you run the linter locally with goconst enabled and share the noisy cases? We can then add path-based excludes instead of turning the rule off globally.

.github/workflows/go-client.yml (1)

20-28: Confirm Go 1.24 availability on GitHub Actions runners

Please ensure that Go 1.24 is already available on the hosted runners before upgrading. Automated checks against the runner’s toolcache did not return any versions, so you’ll need to:

  • Manually verify which Go versions are installed on the Ubuntu-latest image (e.g. by adding a debug step that runs go version).
  • If Go 1.24 isn’t yet supported, pin the action to the latest supported minor (for example, 1.22) until 1.24 is officially available.

File: .github/workflows/go-client.yml
Lines: 20–28

shield/ast/ast.go (1)

61-66: LGTM – formatting-only blank-line insertions

The added blank lines improve readability without altering behaviour. No further action required.

Also applies to: 69-75, 77-83, 85-91, 93-99, 101-107, 109-115, 117-123

shield/internal/metadata/metadata.go (1)

29-30: Whitespace-only change is fine

The added blank lines strictly improve readability and do not impact behaviour.

Also applies to: 44-45

shield/internal/parser/parser.go (1)

94-101: Public API moved higher-up – good call

Placing Parse and Errors immediately after the constructor improves discoverability. No functional impact observed.

shield/shield.go (1)

25-26: No-op formatting tweak

Blank line is purely cosmetic; no concerns.

cmd/shield_repl/main.go (1)

19-20: Whitespace addition acknowledged

Readability only; behaviour unchanged.

shield/internal/metadata/metadata_test.go (1)

94-104: Whitespace-only change looks good

Blank lines increase readability and do not alter test behavior.

shield/internal/evaluator/evaluator_test.go (1)

118-126: Readability improvement acknowledged

The inserted blank lines around environment setup make the helper clearer; no functional impact.

shield/internal/preprocess/preprocess_test.go (1)

38-70: Stylistic spacing approved

All added blank lines simply group logical blocks and aid future maintenance.

Also applies to: 92-116

shield/internal/evaluator/evaluator.go (1)

19-35: No-op whitespace edits

Only blank lines were added; functional logic, error handling, and complexity remain unchanged.
No further action required.

Also applies to: 57-73, 88-110, 181-207, 229-243, 255-259

shield/internal/lexer/lexer.go (1)

16-19: Lexer formatting accepted

Whitespace additions enhance code clarity without affecting tokenization.

Also applies to: 102-112, 122-131, 133-139, 141-157

cmd/soliditygen/main.go (1)

47-51: Declaration block consolidation looks good

Grouping inJSON and err into a single var block improves readability and keeps the two tightly-coupled variables together. No functional impact detected.

prophet/plugins/veniceimg/veniceimg.go (1)

62-64: Whitespace-only tweak looks good

Non-functional blank line improves readability and matches the style adopted across the PR.

precompiles/async/tx.go (1)

29-31: Readability spacing is fine

The extra blank line after msgServer creation cleanly separates setup from subsequent logic; no concerns.

keychain-sdk/internal/enc/enc_test.go (1)

14-16: Minor formatting OK

The inserted blank line following the error assertion is harmless and keeps sections visually distinct.

warden/x/async/keeper/msg_server_add_task.go (1)

27-29: Spacing change acknowledged

Blank line after the variable declaration slightly improves visual separation without affecting logic.

prophet/task.go (1)

22-26: Stylistic newline acceptable

The blank line inside TaskResult struct is purely cosmetic and does not violate Go formatting rules.

precompiles/slinky/slinky.go (1)

32-38: LGTM – purely stylistic change
The extra blank line after the embedded cmn.Precompile improves readability and keeps the struct layout consistent with other precompile packages. No functional impact.

precompiles/warden/warden.go (1)

34-41: LGTM – consistent struct formatting
Adding the blank line mirrors the style adopted in other packages; nothing else to flag.

precompiles/act/act.go (1)

32-37: LGTM – style-only adjustment
Blank line after the embedded struct keeps spacing uniform across the codebase. No further action required.

precompiles/sched/sched.go (1)

32-38: LGTM – whitespace alignment
Matches the formatting convention introduced elsewhere; no behavioural change.

precompiles/async/async.go (1)

32-38: LGTM – uniform formatting
Spacing tweak only; code remains functionally identical.

precompiles/json/json.go (1)

30-33: Trivial whitespace – no action needed

warden/x/async/keeper/genesis.go (1)

50-54: Pure formatting change acknowledged

warden/x/sched/keeper/params.go (1)

13-22: Whitespace-only touch – looks good

The added blank lines improve readability without altering behaviour.

keychain-sdk/internal/enc/enc.go (2)

15-19: Readability improvement acknowledged

Purely stylistic spacing; no functional changes.


27-34: Spacing change – no action needed

Same comment as above; nothing else to flag.

keychain-sdk/internal/tracker/tracker.go (3)

18-25: No-op change

Extra blank lines after the read-lock block are benign.


27-33: Write-lock section unchanged

Spacing only; concur with intent.


34-39: Delete path unchanged

Whitespace only; fine.

warden/x/async/keeper/query_plugin_validators.go (3)

36-43: Whitespace tweaks – fine

No logic altered; implementation remains intact.


49-66: Iteration block unchanged

Spacing only; nothing further.


72-99: Second iterator unchanged

Whitespace only; approved.

warden/x/async/keeper/abci.go (1)

47-47: LGTM! Improved code readability with strategic blank line additions.

The blank lines effectively separate logical blocks, making the code more readable without affecting functionality.

Also applies to: 73-73, 145-145, 353-353, 358-358, 363-363, 368-368, 394-394, 404-404, 436-436, 443-443, 450-450, 458-458

warden/x/sched/keeper/abci.go (1)

45-45: LGTM! Well-placed blank lines improve code organization.

The blank lines effectively separate error handling, variable assignments, and logical operations, enhancing readability.

Also applies to: 68-68, 74-74, 79-79, 96-96, 172-172

precompiles/json/builder.go (1)

62-62: LGTM! Comprehensive formatting improvements enhance readability.

The strategic placement of blank lines throughout the JSON processing functions significantly improves code readability by separating logical blocks, error handling, and operations.

Also applies to: 81-81, 94-94, 161-161, 181-181, 185-185, 195-195, 198-198, 204-204, 213-213, 219-219, 223-223, 232-232, 241-241, 243-243, 252-252, 254-254, 263-263, 272-272, 274-274, 285-285, 299-299, 304-304, 349-349, 356-356, 361-361, 362-362, 386-386

precompiles/json/builder_test.go (1)

23-23: LGTM! Test code formatting improvements enhance readability.

The blank lines in test helper methods and test execution logic make the code easier to follow without affecting test functionality.

Also applies to: 39-39, 47-47, 55-55, 63-63, 72-72, 75-75, 79-79, 94-94, 274-274, 280-280, 282-282, 287-287

cmd/wardenkms/bip44.go (1)

26-26: LGTM! Formatting improvements enhance readability of cryptographic operations.

The blank lines effectively separate key generation steps, error handling, and cryptographic operations, making the code easier to follow without affecting security or functionality.

Also applies to: 76-76, 81-81, 86-86, 108-108, 113-113, 118-118, 134-134, 144-144

precompiles/warden/events.go (1)

151-151: LGTM! Consistent formatting improvements enhance readability.

The addition of blank lines after error checks follows good Go style practices and likely addresses new linting rules in golangci-lint v2.3. These changes improve visual separation between error handling and subsequent logic without affecting functionality.

Also applies to: 195-195, 226-226, 257-257, 293-293, 418-418, 580-580

warden/x/async/keeper/keeper.go (2)

251-272: LGTM! Method repositioning improves code organization.

Moving the addPlugin method closer to related functionality like taskReadyCallback enhances code readability without changing the implementation.


362-362: Good formatting improvement for readability.

The added blank line before address conversion improves visual separation in the getValidatorAddress method.

warden/x/sched/keeper/callbacks.go (1)

59-69: LGTM! Duplicate method cleanup improves code quality.

The removal of duplicate method definitions while keeping the functional implementations is a good cleanup that addresses potential linting issues and improves code maintainability.

precompiles/sched/tx.go (1)

33-33: Excellent formatting consistency across callback execution logic.

The strategically placed blank lines improve readability by separating logical sections: queue initialization, error handling, fee calculations, and cleanup operations. These changes align well with the broader formatting improvements in this PR.

Also applies to: 89-89, 96-96, 100-100, 104-104, 112-112

warden/x/act/keeper/actions_keeper.go (1)

135-169: LGTM! Method organization and receiver consistency improvements.

The repositioning of pruneAction and updateMentions methods improves code organization. The change to pointer receiver in updateMentions method maintains consistency with other methods and is a good practice for struct methods that may need to modify the receiver in the future.

warden/x/warden/types/v1beta3/address.go (1)

62-63: Whitespace-only change looks good

Pure formatting – no functional impact. 👍

tests/framework/checks/eth_checks.go (1)

15-16: Readability tweak acknowledged

Extra blank line after slice initialization improves visual separation; no further action.

tests/cases/reject_any_3_action.go (1)

53-54: Spacing nit approved

Added blank line maintains consistent block spacing across test steps. No issues.

prophet/plugins/http/http.go (1)

107-108: Minor formatting accepted

Whitespace addition aids readability without altering logic or behavior.

prophet/plugins/http/http_test.go (1)

77-78: Formatting change verified

Blank line before JSON decoding is harmless and enhances clarity.

tests/cases/create_space.go (1)

40-40: LGTM! Formatting improvement enhances readability.

The blank line before the return statement improves code readability and likely addresses a new linter rule in golangci-lint v2.3.

tests/framework/exec/warden_node.go (3)

40-40: LGTM! Formatting improvement enhances readability.

The blank line after the temporary directory creation improves code structure and likely addresses a new linter rule.


107-107: LGTM! Formatting improvement enhances readability.

The blank line before the filtering loop improves code readability and separates logical sections.


151-151: LGTM! Formatting improvement enhances readability.

The blank line before the return statement enhances code structure and likely addresses a linter rule.

tests/cases/async_callbacks.go (2)

58-58: LGTM! Formatting improvement enhances test readability.

The blank line after the error check improves readability within the eventual consistency test assertion.


79-79: LGTM! Formatting improvement enhances test readability.

The blank line after the error check improves readability within the second eventual consistency test assertion.

prophet/plugins.go (3)

36-36: Excellent! Context-aware logging improvement.

Updating from log.Debug to log.DebugContext(ctx, ...) enables proper context propagation for tracing, cancellation, and observability. This aligns with modern Go logging best practices.

Also applies to: 41-41


72-72: Excellent! Context-aware logging improvement.

The context-aware logging calls in the Verify function enable proper request tracing and cancellation support, improving observability.

Also applies to: 80-80


39-39: LGTM! Formatting improvement enhances readability.

The blank line before the defer statement improves code structure and readability.

tests/framework/ports/ports.go (3)

18-21: LGTM! Variable declaration grouping improves code style.

Grouping the variable declarations into a var block improves readability and likely addresses a golangci-lint formatting rule.


24-24: Excellent! Context-aware network operations.

Using net.ListenConfig with t.Context() enables proper test cancellation and timeout handling, which is a significant improvement over the previous net.Listen approach.


26-26: LGTM! Formatting improvement enhances readability.

The blank line after the network operation improves code structure and readability.

tests/framework/exec/exec.go (1)

21-37: Readability-only change looks good

Whitespace separation improves readability without altering behaviour. No further action needed.

tests/framework/iowriter/iowriter.go (1)

14-28: Nil-receiver guards and added spacing are fine

The additional blank lines don’t affect logic; nil-receiver handling remains correct.

tests/cases/warden_precompile.go (1)

68-72: Change is whitespace only – no issues

tests/framework/exec/warden_eth.go (3)

17-22: Whitespace clarifies struct fields – looks good.
No functional impact; matches nlreturn expectations from golangci-lint 2.3.


78-83: Blank line after error check improves readability.
Keeps style consistent with the rest of the helpers.


85-91: Consistent spacing after assertion – OK.
Nothing else to flag.

warden/x/warden/keeper/keeper.go (1)

134-137: Method re-ordering only – implementation unchanged.
Logger helper remains correct and module-scoped.

precompiles/json/query.go (1)

38-41: Added blank lines for logical separation – fine.
No behavioural change; keeps functions readable.

Also applies to: 67-69

tests/framework/snapshot/snapshots.go (1)

71-71: Formatting tweaks across builder helpers – accepted.
Whitespace additions align with nlreturn style rule; code remains identical in behaviour.

Also applies to: 76-76, 94-94, 98-98, 154-154, 260-260, 275-275

tests/framework/checks/checks.go (1)

14-14: Minor spacing only – no action needed.

Also applies to: 18-18, 21-21, 24-24

precompiles/json/parser_test.go (1)

24-24: LGTM! Formatting improvements enhance readability.

The added blank lines improve code structure by separating logical blocks, error handling sections, and return statements. These changes align with Go formatting best practices and the golangci-lint v2.3 upgrade.

Also applies to: 27-27, 52-52, 61-61, 96-96, 238-238, 244-244, 247-247, 251-251

precompiles/json/parser.go (1)

71-71: LGTM! Consistent formatting improvements throughout the parser.

The blank line additions improve code structure by logically separating:

  • Error handling blocks from main logic
  • Variable assignments from operations
  • Loop constructs and conditionals
  • Function return statements

These changes enhance readability without affecting the parsing functionality and align with the golangci-lint v2.3 upgrade objectives.

Also applies to: 79-79, 86-86, 90-90, 97-97, 105-105, 115-115, 122-122, 132-132, 139-139, 147-147, 152-152, 186-186, 196-196, 199-199, 203-203, 208-208, 229-229, 233-233, 259-259, 265-265, 269-269, 276-276, 283-283

keychain-sdk/key_requests.go (1)

28-28: Excellent context propagation improvements!

The migration from basic logging calls (Debug, Info, Error) to context-aware variants (DebugContext, InfoContext, ErrorContext) is a significant improvement that:

  • Enables better request tracing and observability
  • Supports cancellation and timeout handling
  • Follows modern Go logging best practices
  • Maintains consistency across the keychain SDK

The context is properly threaded through all logging calls, including error handling and panic recovery scenarios.

Also applies to: 34-34, 59-59, 63-63, 67-67, 80-80, 96-96, 98-98

prophet/exec.go (1)

25-25: LGTM! Consistent context-aware logging implementation.

The logging calls are properly updated to use context-aware variants, and the context is correctly passed to the Execute and Verify functions from the prophet/plugins.go file. This improves observability and aligns with the broader context propagation improvements across the codebase.

Also applies to: 27-27, 29-29, 35-35, 61-61, 63-63, 68-68

keychain-sdk/sign_requests.go (2)

30-30: Excellent consistency with context-aware logging migration!

The changes mirror the improvements made in keychain-sdk/key_requests.go by:

  • Migrating all logging calls to context-aware variants (DebugContext, InfoContext, ErrorContext)
  • Properly threading context through all logging operations
  • Maintaining context awareness in error handling and panic recovery
  • Including encryption key validation errors in the context-aware logging pattern

This creates a consistent and observable logging experience across the keychain SDK.

Also applies to: 48-48, 54-54, 60-60, 73-73, 77-77, 81-81, 94-94, 99-99, 112-112, 121-121


33-33: LGTM! Formatting improvements enhance code readability.

The added blank lines appropriately separate logical blocks, error handling sections, and improve the overall structure of the sign request handling code. These changes complement the context propagation improvements nicely.

Also applies to: 61-61, 69-69, 109-109, 114-114, 122-122, 124-124

cmd/wardenkms/wardenkms.go (1)

44-147: LGTM! Proper context propagation and logging improvements.

The changes correctly implement context-aware logging throughout the file and properly propagate the context to all relevant functions. Creating the context once at the beginning and reusing it is the right approach.

warden/x/warden/keeper/spaces.go (1)

60-84: Code reorganization looks good.

Moving these methods closer to other SpacesKeeper methods improves code organization and readability. No functional changes detected.

cmd/faucet/main.go (2)

85-174: Excellent context propagation implementation.

The changes properly implement context propagation from main through to the Send method. Using the request context (c.Request().Context()) for the Send operation is the correct approach as it respects client cancellations and timeouts.


26-26: Good use of modern Go idiom.

Using any instead of interface{} is the preferred style in Go 1.18+.

keychain-sdk/keychain.go (1)

57-135: Well-implemented context propagation and logging updates.

All logging calls have been correctly updated to use context-aware variants, and the context is properly propagated through the initialization flow. The removal of the unused io import and the simplification of the logger method are good improvements.

cmd/faucet/faucet.go (3)

49-112: Excellent implementation of context-aware command execution.

Using exec.CommandContext enables proper cancellation of external commands when the context is cancelled. This is particularly important for long-running operations.


159-161: Good use of standard library function.

Using slices.Contains is cleaner and more idiomatic than a manual loop.


345-373: Proper context management in goroutine.

Creating a cancellable context for the goroutine's lifecycle is the correct approach. This ensures proper cleanup when the goroutine needs to terminate.

keychain-sdk/internal/writer/writer.go (6)

56-56: Good improvement: Context-aware logging implementation.

The change from Logger.Info to Logger.InfoContext properly utilizes the available context for enhanced logging capabilities.


85-85: Consistent context-aware logging implementation.

The logging change maintains structured logging format while properly utilizing context.


93-93: Consistent context-aware logging across Flush method.

All logging calls properly utilize context while maintaining structured logging format and appropriate log levels.

Also applies to: 139-139, 151-151


119-133: Method relocation improves code organization.

The helper methods gasLimit() and fees() have been repositioned for better code organization while maintaining their functionality.


67-67: Minor formatting improvements enhance readability.

The added blank lines improve code readability without affecting functionality.

Also applies to: 112-112, 163-163


181-181: Improved loop idiom for better Go style.

The change to for i := range items is more idiomatic Go when only the index is needed and likely addresses a linter warning.

warden/x/async/keeper/tasks.go (3)

108-112: Whitespace-only change – no concerns
The added blank line improves readability without affecting logic or performance.


167-172: Whitespace-only change – no concerns
Same here—purely cosmetic.


108-136: Confirm limit<=0 semantics in PendingTasks
Currently, passing 0 causes unlimited iteration (and negative values panic on slice creation). We couldn’t find any documentation or callers that rely on non-positive limits. Please clarify whether:

  • limit<=0 should be treated as “no limit”
  • or considered invalid (and return an error)

If you intend “no limit,” you might add at the top of the function in warden/x/async/keeper/tasks.go (around line 108):

+   import (
+       "math"
+       // …
+   )
    func (k *TaskKeeper) PendingTasks(ctx context.Context, solverAddr sdk.ConsAddress, limit int) ([]types.Task, error) {
+       // Treat non-positive limits as “no limit”
+       if limit <= 0 {
+           limit = math.MaxInt
+       }
        ranger := collections.NewPrefixedPairRange[sdk.ConsAddress, uint64](solverAddr)
        // …

@Pitasi Pitasi force-pushed the golangci-lint-v2.2 branch 2 times, most recently from 8c9ace2 to eb10490 Compare July 23, 2025 08:39
@Pitasi Pitasi force-pushed the golangci-lint-v2.2 branch from eb10490 to 964c327 Compare July 23, 2025 09:11
@Pitasi Pitasi merged commit f4b79ac into main Jul 23, 2025
31 of 32 checks passed
@Pitasi Pitasi deleted the golangci-lint-v2.2 branch July 23, 2025 09:23
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

Comments