Skip to content

Run wallet and mpool tool test on devnet#7263

Open
sudo-shashank wants to merge 18 commits into
mainfrom
shashank/devnet-wallet-test
Open

Run wallet and mpool tool test on devnet#7263
sudo-shashank wants to merge 18 commits into
mainfrom
shashank/devnet-wallet-test

Conversation

@sudo-shashank

@sudo-shashank sudo-shashank commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Summary of changes

Changes introduced in this pull request:

  • Fix StateManager::search_back_for_message.
  • Run wallet and mpool tool tests on devnet.
  • Make the calibnet wallet check label-gated (Wallet label).
  • Bring back mpool nonce-fix --auto test that verifies a nonce gap gets filled.

Reference issue to close (if applicable)

Closes #7230

Other information and links

Change checklist

  • I have performed a self-review of my own code,
  • I have made corresponding changes to the documentation. All new code adheres to the team's documentation standards,
  • I have added tests that prove my fix is effective or that my feature works (if possible),
  • I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

Outside contributions

  • I have read and agree to the CONTRIBUTING document.
  • I have read and agree to the AI Policy document. I understand that failure to comply with the guidelines will lead to rejection of the pull request.

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Added local devnet wallet/mpool integration test support and a new wallet-devnet test command.
    • Expanded the dev test CLI to support both wallet and mpool suites.
    • Added shared mpool integration tests for nonce-fix and auto replace flows.
  • Bug Fixes

    • Improved message search blocking behavior to avoid failing when a matching receipt is temporarily unavailable.
  • Documentation

    • Updated local devnet instructions (including RPC endpoint) and added wallet integration test run steps.
  • Chores

    • Updated CI to split wallet checks into label-gated jobs.

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Splits the Calibnet-only dev test CLI into a shared, chain-agnostic TestCommand supporting both Calibnet and Devnet, adds Mpool and renamed Wallet integration test commands, a devnet wallet funding harness script, a new mise task, README docs, and CI workflow gating on a Wallet label. Also adjusts check_search_blocking's receipt handling.

Changes

Devnet wallet/mpool test infrastructure

Layer / File(s) Summary
Shared TestCommand contract and dispatch
src/dev/subcommands/tests_cmd.rs, src/dev/subcommands/tests_cmd/shared.rs, src/dev/subcommands/tests_cmd/shared/wallet.rs
TestsCommand gains a Devnet variant alongside Calibnet, both wrapping a new shared::TestCommand enum with Wallet/Mpool variants; CalibnetWalletTestCommand is renamed to WalletTestCommand.
Mpool test implementation and funding tweaks
src/dev/subcommands/tests_cmd/shared/mpool.rs, src/dev/subcommands/tests_cmd/shared/helpers.rs
Adds MpoolTestCommand running mpool_nonce_fix_auto_unblocks_pending and mpool_replace_auto_unblocks_pending trials; raises DELEGATE_FUND_AMT and the wallet send wait-timeout.
Devnet wallet funding harness
scripts/devnet/wallet_harness.sh
Adds a sourced script defining devnet_wallet_env_init, which derives the genesis address, funds a dedicated test wallet, sets FOREST_TEST_PRELOADED_ADDRESS, and polls for balance.
Task, docs, and CI gating
mise.toml, scripts/devnet/README.md, .github/workflows/forest.yml
Adds test:wallet-devnet mise task, updates README RPC port and adds wallet-test instructions, and splits the CI calibnet-wallet-check job by the Wallet label plus devnet wallet test steps.

Message search receipt handling

Layer / File(s) Summary
check_search_blocking receipt gating
src/state_manager/message_search.rs
Combines the search condition with an if let Some(receipt) check on tipset_executed_message, continuing the search on a missing receipt instead of erroring.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CI as CI Workflow
  participant Mise as mise test:wallet-devnet
  participant Harness as wallet_harness.sh
  participant ForestDev as forest-dev tests_cmd
  participant Devnet as Devnet (forest container)

  CI->>Mise: run test:wallet-devnet
  Mise->>Devnet: setup.sh / check.sh
  Mise->>Harness: source and devnet_wallet_env_init
  Harness->>Devnet: read token, derive genesis address
  Harness->>Devnet: fund dedicated test wallet
  Mise->>ForestDev: run devnet mpool tests
  Mise->>ForestDev: run devnet wallet tests
  ForestDev-->>CI: pass/fail result
Loading

Possibly related PRs

  • ChainSafe/forest#7084: The new shared mpool integration tests (mpool_nonce_fix_auto_unblocks_pending, mpool_replace_auto_unblocks_pending) exercise the nonce-fix/replace CLI tools introduced there.
  • ChainSafe/forest#7218: Refactors the same tests_cmd CLI infrastructure that this PR extends with shared Wallet/Mpool and Devnet support.
  • ChainSafe/forest#7266: Also modifies check_search_blocking in src/state_manager/message_search.rs.

Suggested labels: RPC

Suggested reviewers: hanabi1224, LesnyRumcajs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The nonce-fix test logic was restored, but the CI wiring shown is label-gated for PRs, not an automatic main-branch regression run. Add the mpool nonce-fix test to a workflow that runs automatically on main branch commits and document it as a regression test.
Out of Scope Changes check ⚠️ Warning The StateManager search-back fix is unrelated to the mpool regression-test issue and appears out of scope. Split the StateManager change into a separate PR or remove it unless it is required for the regression-test work.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: running wallet and mpool tests on devnet.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch shashank/devnet-wallet-test
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch shashank/devnet-wallet-test

Comment @coderabbitai help to get the list of available commands.

@sudo-shashank sudo-shashank force-pushed the shashank/devnet-wallet-test branch from 4404020 to 6015fc7 Compare July 1, 2026 06:38
@sudo-shashank sudo-shashank added the Wallet Trigger wallet test on Calibnet label Jul 2, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (4)
src/state_manager/message_search.rs (1)

103-108: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove unwrap() from the sequence check.

The parent_actor_state.as_ref().unwrap() on Line 105 is currently safe because the || short-circuits (it's only reached when parent_actor_state is Some), but it violates the guideline against unwrap() and is fragile under future edits (e.g., reordering the || operands would introduce a panic). Restructuring with a match removes the unwrap and reads more clearly. The receipt-gating and continue-on-None behavior is preserved.

As per coding guidelines: "Avoid unwrap() in production code; use ? or expect() with descriptive messages instead".

♻️ Proposed refactor to remove the guarded unwrap
-            if (parent_actor_state.is_none()
-                || (current_actor_state.sequence > message_sequence
-                    && parent_actor_state.as_ref().unwrap().sequence <= message_sequence))
-                && let Some(receipt) =
-                    self.tipset_executed_message(&current, message, allow_replaced)?
-            {
-                return Ok(Some((current, receipt)));
-            }
+            let sequence_indicates_execution = match parent_actor_state.as_ref() {
+                None => true,
+                Some(parent) => {
+                    current_actor_state.sequence > message_sequence
+                        && parent.sequence <= message_sequence
+                }
+            };
+            if sequence_indicates_execution
+                && let Some(receipt) =
+                    self.tipset_executed_message(&current, message, allow_replaced)?
+            {
+                return Ok(Some((current, receipt)));
+            }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/state_manager/message_search.rs` around lines 103 - 108, The sequence
check in message_search.rs still uses a guarded unwrap on parent_actor_state,
which should be removed to match the no-unwrap guideline and avoid future panic
risk. Refactor the condition around tipset_executed_message in the relevant
branch of the message search flow to use a match on parent_actor_state (or
equivalent pattern matching) so the parent sequence comparison only runs when
the parent state exists, while preserving the current receipt-gating and
continue-on-None behavior.

Source: Coding guidelines

src/dev/subcommands/tests_cmd/shared/mpool.rs (1)

39-87: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Replace bare .unwrap() with .expect("...")/.context(...) for CI debuggability.

Every external call (forest_cli, mpool_nonce, poll_until_pending_nonce, poll_until_state_search_msg) uses .unwrap(). On a flaky/slow devnet these will panic with no indication of which address/nonce/command failed, making CI failures harder to triage.

♻️ Example fix pattern
-    let nonce = mpool_nonce(addr).unwrap();
+    let nonce = mpool_nonce(addr).expect("failed to fetch current mpool nonce");
...
-    ])
-    .unwrap();
+    ])
+    .expect("mpool nonce-fix (manual gap) failed");

As per coding guidelines, "Avoid unwrap() in production code; use ? or expect() with descriptive messages instead."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/dev/subcommands/tests_cmd/shared/mpool.rs` around lines 39 - 87, The test
helpers in mpool.rs use bare unwraps on external operations, which makes CI
failures hard to diagnose. Update mpool_nonce_fix_auto_unblocks_pending and
mpool_replace_auto_unblocks_pending to replace unwrap() on forest_cli,
mpool_nonce, poll_until_pending_nonce, and poll_until_state_search_msg with
expect() or context() carrying the addr, nonce, cid, and command being executed.
Keep the assertions, but ensure any failure path reports the specific step and
inputs so flaky devnet issues are easier to triage.

Source: Coding guidelines

scripts/devnet/wallet_harness.sh (1)

24-36: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Private key material left unprotected in /tmp.

Both the genesis wallet key (line 25) and the newly funded test wallet key (line 34) are written to ${TMPDIR:-/tmp} in plaintext and never removed or permission-restricted, and the mktemp -d keystore at line 27 is likewise never cleaned up. On a shared or long-lived host this leaves signing key material exposed longer than necessary.

🔒 Suggested fix: restrict permissions and clean up on exit
   local genesis_key_path="${TMPDIR:-/tmp}/devnet_genesis_wallet.key"
   docker cp "forest:${LOTUS_DATA_DIR}/genesis-sectors/pre-seal-${MINER_ACTOR_ADDRESS}.key" "${genesis_key_path}"
+  chmod 600 "${genesis_key_path}"
+  trap 'rm -f "${genesis_key_path}" "${test_key_path:-}"' RETURN
   local genesis_addr
   genesis_addr="$(XDG_DATA_HOME="$(mktemp -d)" ${FOREST_WALLET_PATH} import "${genesis_key_path}")"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/devnet/wallet_harness.sh` around lines 24 - 36, The wallet setup in
wallet_harness.sh leaves sensitive key material in temporary storage without
cleanup or permission hardening. Update the genesis_key_path/test_key_path flow
in the wallet import/export steps and the temporary XDG_DATA_HOME created for
`${FOREST_WALLET_PATH} import` so the files/directories are created with
restrictive permissions, and add a cleanup trap to remove them when the script
exits. Make sure the changes are applied around the `genesis_addr`, `test_addr`,
and `FOREST_TEST_PRELOADED_ADDRESS` setup so both local and remote wallet paths
remain functional.
mise.toml (1)

228-241: 🧹 Nitpick | 🔵 Trivial

LGTM! Confirmed shell = "bash -c" is valid mise TOML task syntax.

Optionally consider tearing down the devnet (docker compose down) on task exit/failure to avoid leaving containers running across repeated local invocations, but this may be intentional for post-test debugging.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@mise.toml` around lines 228 - 241, The `test:wallet-devnet` task leaves the
devnet running after `setup.sh`/`check.sh` and the `forest-dev` test commands
complete, which can leak containers across repeated runs. Update the task’s
`run` script to add a cleanup step around the existing `scripts/devnet` flow,
ideally in a trap or equivalent shell exit handler, so the devnet is torn down
even on failure; use the `test:wallet-devnet` task block and the existing
`pushd`/`popd` sequence as the place to wire this in.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/devnet/wallet_harness.sh`:
- Around line 47-58: The balance check in devnet_wallet_env_init exits early
under set -e if forest-wallet balance fails once, so the retry loop cannot
absorb transient CLI errors. Update the balance probe in wallet_harness.sh to
tolerate nonzero exits from ${FOREST_WALLET_PATH} --remote-wallet balance
"${test_addr}" --exact-balance, then keep retrying until a valid non-"0 FIL"
result is observed or the attempts are exhausted.
- Around line 15-16: The devnet_wallet_env_init helper is changing the caller’s
shell state by enabling -euo pipefail without restoring the previous options.
Save the current shell option state before setting strict mode, and add a RETURN
trap or equivalent cleanup in devnet_wallet_env_init to restore the original
shell options after the function exits so sourcing wallet_harness.sh does not
leave the parent shell modified.

---

Nitpick comments:
In `@mise.toml`:
- Around line 228-241: The `test:wallet-devnet` task leaves the devnet running
after `setup.sh`/`check.sh` and the `forest-dev` test commands complete, which
can leak containers across repeated runs. Update the task’s `run` script to add
a cleanup step around the existing `scripts/devnet` flow, ideally in a trap or
equivalent shell exit handler, so the devnet is torn down even on failure; use
the `test:wallet-devnet` task block and the existing `pushd`/`popd` sequence as
the place to wire this in.

In `@scripts/devnet/wallet_harness.sh`:
- Around line 24-36: The wallet setup in wallet_harness.sh leaves sensitive key
material in temporary storage without cleanup or permission hardening. Update
the genesis_key_path/test_key_path flow in the wallet import/export steps and
the temporary XDG_DATA_HOME created for `${FOREST_WALLET_PATH} import` so the
files/directories are created with restrictive permissions, and add a cleanup
trap to remove them when the script exits. Make sure the changes are applied
around the `genesis_addr`, `test_addr`, and `FOREST_TEST_PRELOADED_ADDRESS`
setup so both local and remote wallet paths remain functional.

In `@src/dev/subcommands/tests_cmd/shared/mpool.rs`:
- Around line 39-87: The test helpers in mpool.rs use bare unwraps on external
operations, which makes CI failures hard to diagnose. Update
mpool_nonce_fix_auto_unblocks_pending and mpool_replace_auto_unblocks_pending to
replace unwrap() on forest_cli, mpool_nonce, poll_until_pending_nonce, and
poll_until_state_search_msg with expect() or context() carrying the addr, nonce,
cid, and command being executed. Keep the assertions, but ensure any failure
path reports the specific step and inputs so flaky devnet issues are easier to
triage.

In `@src/state_manager/message_search.rs`:
- Around line 103-108: The sequence check in message_search.rs still uses a
guarded unwrap on parent_actor_state, which should be removed to match the
no-unwrap guideline and avoid future panic risk. Refactor the condition around
tipset_executed_message in the relevant branch of the message search flow to use
a match on parent_actor_state (or equivalent pattern matching) so the parent
sequence comparison only runs when the parent state exists, while preserving the
current receipt-gating and continue-on-None behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 547c43ce-5281-4c0d-84b7-22970c8f319d

📥 Commits

Reviewing files that changed from the base of the PR and between 2d4846f and 316ef45.

📒 Files selected for processing (11)
  • .github/workflows/forest.yml
  • mise.toml
  • scripts/devnet/README.md
  • scripts/devnet/wallet_harness.sh
  • src/dev/subcommands/tests_cmd.rs
  • src/dev/subcommands/tests_cmd/calibnet/mpool.rs
  • src/dev/subcommands/tests_cmd/shared.rs
  • src/dev/subcommands/tests_cmd/shared/helpers.rs
  • src/dev/subcommands/tests_cmd/shared/mpool.rs
  • src/dev/subcommands/tests_cmd/shared/wallet.rs
  • src/state_manager/message_search.rs
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • filecoin-project/lotus (manual)
💤 Files with no reviewable changes (1)
  • src/dev/subcommands/tests_cmd/calibnet/mpool.rs

Comment thread scripts/devnet/wallet_harness.sh Outdated
Comment thread scripts/devnet/wallet_harness.sh Outdated
@sudo-shashank sudo-shashank changed the title Run wallet test on devnet Run wallet and mpool tool test on devnet Jul 2, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (3)
scripts/devnet/wallet_harness.sh (3)

20-27: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Private key material written to predictable, unprotected /tmp paths with no cleanup.

genesis_key_path and test_key_path are fixed, predictable filenames under ${tmp} (shared /tmp by default). The exported/copied key material inherits default umask permissions (no chmod 600), and none of these files — nor the mktemp -d throwaway XDG_DATA_HOME on line 27 — are ever removed. On a shared or multi-tenant runner this is susceptible to symlink pre-creation races and leaves private keys readable/lingering after the script exits.

🔧 Suggested fix
-  local genesis_key_path="${tmp}/devnet_genesis_wallet.key"
+  local genesis_key_path
+  genesis_key_path="$(mktemp "${tmp}/devnet_genesis_wallet.XXXXXX")"
+  chmod 600 "${genesis_key_path}"
   docker cp "forest:${LOTUS_DATA_DIR}/genesis-sectors/pre-seal-${MINER_ACTOR_ADDRESS}.key" "${genesis_key_path}"
+  trap 'rm -f "${genesis_key_path}" "${test_key_path:-}"' RETURN
@@
-  test_key_path="${tmp}/devnet_test_wallet.key"
-  ${FOREST_WALLET_PATH} export "${test_addr}" > "${test_key_path}"
+  test_key_path="$(mktemp "${tmp}/devnet_test_wallet.XXXXXX")"
+  chmod 600 "${test_key_path}"
+  ${FOREST_WALLET_PATH} export "${test_addr}" > "${test_key_path}"

Also applies to: 33-37

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/devnet/wallet_harness.sh` around lines 20 - 27, The wallet harness
leaves private key material in predictable /tmp locations and never cleans it
up, which risks exposure and symlink races. Update the key handling in
wallet_harness.sh around the genesis import flow and the later test key
copy/import flow to use unique temporary files/directories created with mktemp,
restrict permissions before use, and remove both the copied key files and the
throwaway XDG_DATA_HOME directory on exit via a cleanup trap. Use the existing
genesis_addr import block and the test key import block as the places to apply
the fix.

15-27: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Removing set -euo pipefail drops fail-fast on docker exec/docker cp failures.

Compared to the prior revision (flagged in a past review for mutating the caller's shell when sourced), the function no longer sets any strict mode at all. That fixes the sourcing side-effect, but now a failed docker exec forest cat ... (line 17) or docker cp (line 25) won't halt the function — token/the genesis key file end up empty/missing and execution continues into later steps with a confusing failure far from the root cause. Since this harness is invoked from CI (mise task / workflow), consider explicit checks on these critical steps instead of relying on implicit propagation.

docker exec forest cat "${FOREST_DATA_DIR}/token.jwt" > /dev/null || { echo "ERROR: failed to read token.jwt from forest container" >&2; return 1; }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/devnet/wallet_harness.sh` around lines 15 - 27, The
devnet_wallet_env_init function no longer fails fast on critical docker exec and
docker cp operations, so errors can cascade into later steps with misleading
failures. Add explicit error handling around the token read and genesis key
copy/import path in devnet_wallet_env_init, checking the docker exec forest cat
and docker cp commands immediately and returning a clear failure if either one
fails. Keep the fix localized to devnet_wallet_env_init so it preserves the
no-side-effects behavior while restoring reliable failure propagation.

43-52: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Add a bounded retry around the final balance read. --wait-confidence 0 only waits for the message to reach chain confidence, and this suite already polls for balance updates elsewhere; a single --exact-balance read here can still race and fail intermittently.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/devnet/wallet_harness.sh` around lines 43 - 52, The final balance
check in wallet_harness.sh can race because it reads the wallet once immediately
after the transfer, so wrap the existing balance lookup in a bounded retry loop
before failing. Keep the funding step and the existing balance command using
FOREST_WALLET_PATH and --exact-balance, but poll until a non-zero balance is
observed or the timeout is reached, then preserve the current error handling if
the wallet is still unfunded.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@scripts/devnet/wallet_harness.sh`:
- Around line 20-27: The wallet harness leaves private key material in
predictable /tmp locations and never cleans it up, which risks exposure and
symlink races. Update the key handling in wallet_harness.sh around the genesis
import flow and the later test key copy/import flow to use unique temporary
files/directories created with mktemp, restrict permissions before use, and
remove both the copied key files and the throwaway XDG_DATA_HOME directory on
exit via a cleanup trap. Use the existing genesis_addr import block and the test
key import block as the places to apply the fix.
- Around line 15-27: The devnet_wallet_env_init function no longer fails fast on
critical docker exec and docker cp operations, so errors can cascade into later
steps with misleading failures. Add explicit error handling around the token
read and genesis key copy/import path in devnet_wallet_env_init, checking the
docker exec forest cat and docker cp commands immediately and returning a clear
failure if either one fails. Keep the fix localized to devnet_wallet_env_init so
it preserves the no-side-effects behavior while restoring reliable failure
propagation.
- Around line 43-52: The final balance check in wallet_harness.sh can race
because it reads the wallet once immediately after the transfer, so wrap the
existing balance lookup in a bounded retry loop before failing. Keep the funding
step and the existing balance command using FOREST_WALLET_PATH and
--exact-balance, but poll until a non-zero balance is observed or the timeout is
reached, then preserve the current error handling if the wallet is still
unfunded.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 7dc6fb74-829b-45f6-bf4f-19baee986467

📥 Commits

Reviewing files that changed from the base of the PR and between 316ef45 and 52a230a.

📒 Files selected for processing (2)
  • .github/workflows/forest.yml
  • scripts/devnet/wallet_harness.sh
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • filecoin-project/lotus (manual)
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/forest.yml

@sudo-shashank sudo-shashank marked this pull request as ready for review July 2, 2026 09:45
@sudo-shashank sudo-shashank requested a review from a team as a code owner July 2, 2026 09:45
@sudo-shashank sudo-shashank requested review from LesnyRumcajs and hanabi1224 and removed request for a team July 2, 2026 09:45
@codecov

codecov Bot commented Jul 2, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 4.91803% with 58 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.21%. Comparing base (cd92ebf) to head (503a432).
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/dev/subcommands/tests_cmd/shared/mpool.rs 0.00% 55 Missing ⚠️
src/dev/subcommands/tests_cmd.rs 0.00% 1 Missing ⚠️
src/dev/subcommands/tests_cmd/shared/helpers.rs 0.00% 1 Missing ⚠️
src/state_manager/message_search.rs 75.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
Files with missing lines Coverage Δ
src/dev/subcommands/tests_cmd/shared.rs 0.00% <ø> (ø)
src/dev/subcommands/tests_cmd/shared/wallet.rs 0.00% <ø> (ø)
src/dev/subcommands/tests_cmd.rs 0.00% <0.00%> (ø)
src/dev/subcommands/tests_cmd/shared/helpers.rs 0.00% <0.00%> (ø)
src/state_manager/message_search.rs 62.15% <75.00%> (+0.21%) ⬆️
src/dev/subcommands/tests_cmd/shared/mpool.rs 0.00% <0.00%> (ø)

... and 6 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cd92ebf...503a432. Read the comment docs.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

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

Labels

Wallet Trigger wallet test on Calibnet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add mpool_nonce_fix_auto_unblocks_pending as a regression test for main branch CI

1 participant