Skip to content

Conversation

@LesnyRumcajs
Copy link
Member

@LesnyRumcajs LesnyRumcajs commented Jan 9, 2026

Summary of changes

Changes introduced in this pull request:

  • update the script to not include non-existing directory (external)
  • 2025 -> 2026 - happy new year!

Reference issue to close (if applicable)

Closes

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.

Summary by CodeRabbit

  • Chores
    • Maintenance update with no user-facing changes or new features.

✏️ Tip: You can customize this high-level summary in your review settings.

@LesnyRumcajs LesnyRumcajs requested a review from a team as a code owner January 9, 2026 10:01
@LesnyRumcajs LesnyRumcajs requested review from akaladarshi and hanabi1224 and removed request for a team January 9, 2026 10:01
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 9, 2026

Walkthrough

This PR updates copyright year headers from 2019-2025 to 2019-2026 across the entire codebase, spanning 300+ files including benchmarks, build configuration, source modules, and tests. Additionally, the license header generation script is modified to update its copyright regex pattern and refine file exclusion logic.

Changes

Cohort / File(s) Summary
Benchmark and Build Files
benches/car-index.rs, benches/example-benchmark.rs, benches/tipset-validation.rs, build.rs, interop-tests/build.rs
Copyright year updates only; no functional changes
Interop Tests
interop-tests/src/lib.rs, interop-tests/src/tests/*.rs
Copyright header year bumped from 2019-2025 to 2019-2026; all test logic unchanged
Auth and Beacon Modules
src/auth/mod.rs, src/beacon/*.rs, src/beacon/signatures/*.rs, src/beacon/tests/*.rs
Copyright year updates across all beacon-related files and authentication module; no logic changes
Block and Chain Modules
src/blocks/*.rs, src/blocks/tests/*.rs, src/chain/*.rs, src/chain/store/*.rs, src/chain/tests.rs
Copyright header updates in block structures, chain store, and chain utilities; no functional changes
Chain Sync Module
src/chain_sync/*.rs
All chain synchronization files updated with new copyright year; no behavioral changes
Database and Collection Modules
src/cid_collections/*.rs, src/db/*.rs, src/db/car/*.rs, src/db/gc/*.rs, src/db/migration/*.rs, src/db/tests/*.rs
Database abstraction and CID collection files updated; all copyright-only changes
CLI and Configuration
src/cli/**, src/cli_shared/**
CLI commands, subcommands, and shared client configuration updated with copyright year
Daemon, Dev, and Utilities
src/daemon/*.rs, src/dev/*.rs, src/documentation.rs
Daemon initialization and development utilities updated; all header-only changes
Ethereum and F3 Modules
src/eth/*.rs, src/f3/*.rs
Ethereum transaction types and F3 consensus module headers updated
Financial and Core Modules
src/fil_cns/*.rs, src/genesis/*.rs, src/health/*.rs, src/interpreter/*.rs, src/ipld/*.rs, src/key_management/*.rs, src/lib.rs
Copyright year updates across FIL consensus, genesis, health checks, interpreter, IPLD, and key management modules
Libp2p Modules
src/libp2p/*.rs, src/libp2p/chain_exchange/*.rs, src/libp2p/hello/*.rs, src/libp2p/rpc/*.rs, src/libp2p/tests/*.rs, src/libp2p_bitswap/*.rs, src/libp2p_bitswap/internals/*.rs, src/libp2p_bitswap/tests/*.rs
All networking protocol implementations and bitswap client updated with new copyright
Lotus JSON Serialization
src/lotus_json/*.rs, src/lotus_json/actors/params/*.rs, src/lotus_json/actors/states/*.rs
Extensive JSON serialization layer for Lotus types and actor parameters/states; all copyright headers updated
Message Pool and Utilities
src/message/*.rs, src/message_pool/*.rs, src/message_pool/msgpool/*.rs, src/metrics/*.rs
Message handling, mempool, and metrics modules updated
Network Configuration
src/networks/*.rs
Network-specific modules (mainnet, calibnet, devnet, butterflynet) and bundle configuration updated
License Header Script
mise-tasks/add_license.sh
Updated copyright year regex from 2019-2025 to 2019-2026; refined file exclusion list by removing two groups of .rs file patterns, now only excluding fallback_de_ipld_dagcbor.rs; modified missing header behavior to write copyright text directly to file via concatenation with ./scripts/copyright.txt and set return code to 1
Copyright Reference
scripts/copyright.txt
Copyright year range updated in source license template

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Suggested reviewers

  • akaladarshi
  • sudo-shashank
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title accurately summarizes the primary change: updating copyright/license years from 2025 to 2026 across the codebase and related scripts.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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

@LesnyRumcajs LesnyRumcajs enabled auto-merge January 9, 2026 10:02
hanabi1224
hanabi1224 previously approved these changes Jan 9, 2026
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: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
src/lotus_json/opt.rs (1)

29-33: Fix typo in test function name.

The test function is named shapshots() but should be snapshots() to match the trait method name.

💅 Proposed fix
 #[test]
-fn shapshots() {
+fn snapshots() {
     assert_one_snapshot(json!({"/": "baeaaaaa"}), Some(::cid::Cid::default()));
     assert_one_snapshot(json!(null), None::<::cid::Cid>);
 }
src/message_pool/block_prob.rs (1)

103-126: test_winner_probability assertion looks inverted (likely always “passing for the wrong reason”). The message says the average is “too far off”, but the condition requires it to be far off (> 0.01).

Proposed fix
-    assert!((avg - 5.0).abs() > 0.01, "Average too far off ");
+    assert!((avg - 5.0).abs() < 0.01, "Average too far off");
src/lotus_json/actors/states/power_states.rs (1)

11-11: Remove Eq from derive or change FilterEstimate field to support it.

The PowerStateLotusJson struct derives Eq, but the this_epoch_qa_power_smoothed field uses FilterEstimate from fil_actors_shared, which implements only PartialEq and not Eq. This causes a compilation error. Either remove Eq from the derive macro (keeping only PartialEq) or find an alternative that implements Eq.

🤖 Fix all issues with AI agents
In @src/db/car/plain.rs:
- Line 1: Update the copyright header string in the repository metadata: replace
the line that reads "// Copyright 2019-2025 ChainSafe Systems" with "//
Copyright 2019-2026 ChainSafe Systems" in the scripts/copyright.txt file so the
year bump is consistent across the repo.
🧹 Nitpick comments (2)
src/lotus_json/receipt.rs (1)

89-89: Minor: Fix typo in test function name.

The function is named shapshots but should be snapshots to match the trait method it calls.

💡 Proposed fix
 #[test]
-fn shapshots() {
+fn snapshots() {
     assert_all_snapshots::<Receipt>()
 }
src/cli/subcommands/config_cmd.rs (1)

35-36: Remove unnecessary async from the test.

This test doesn't perform any async operations or await any futures, so the #[tokio::test] async context is unused. Simplify to #[test].

Simplified test signature
-    #[tokio::test]
-    async fn given_default_configuration_should_print_valid_toml() {
+    #[test]
+    fn given_default_configuration_should_print_valid_toml() {

Additionally, the test could be simplified by using Vec<u8> directly instead of BufWriter, since Vec<u8> implements Write:

-        let mut sink = std::io::BufWriter::new(Vec::new());
+        let mut sink = Vec::new();
         ConfigCommands::Dump.run(&mut sink).unwrap();
-        let actual_config: Config = toml::from_str(std::str::from_utf8(sink.buffer()).unwrap())
+        let actual_config: Config = toml::from_str(std::str::from_utf8(&sink).unwrap())
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2bd2f58 and d6effe2.

📒 Files selected for processing (300)
  • benches/car-index.rs
  • benches/example-benchmark.rs
  • benches/tipset-validation.rs
  • build.rs
  • interop-tests/build.rs
  • interop-tests/src/lib.rs
  • interop-tests/src/tests/bitswap_go_compat.rs
  • interop-tests/src/tests/go_ffi.rs
  • interop-tests/src/tests/kad_go_compat.rs
  • interop-tests/src/tests/mod.rs
  • scripts/add_license.sh
  • src/auth/mod.rs
  • src/beacon/beacon_entries.rs
  • src/beacon/drand.rs
  • src/beacon/mock_beacon.rs
  • src/beacon/mod.rs
  • src/beacon/signatures/mod.rs
  • src/beacon/signatures/public_key_impls.rs
  • src/beacon/signatures/signature_impls.rs
  • src/beacon/signatures/tests.rs
  • src/beacon/tests/drand.rs
  • src/benchmark_private/mod.rs
  • src/benchmark_private/tipset_validation.rs
  • src/bin/forest-cli.rs
  • src/bin/forest-dev.rs
  • src/bin/forest-tool.rs
  • src/bin/forest-wallet.rs
  • src/bin/forest.rs
  • src/blocks/block.rs
  • src/blocks/chain4u.rs
  • src/blocks/election_proof.rs
  • src/blocks/gossip_block.rs
  • src/blocks/header.rs
  • src/blocks/header/test.rs
  • src/blocks/mod.rs
  • src/blocks/tests/serialization_vectors.rs
  • src/blocks/tests/ticket_test.rs
  • src/blocks/ticket.rs
  • src/blocks/tipset.rs
  • src/blocks/vrf_proof.rs
  • src/chain/mod.rs
  • src/chain/snapshot_format.rs
  • src/chain/store/base_fee.rs
  • src/chain/store/chain_store.rs
  • src/chain/store/errors.rs
  • src/chain/store/index.rs
  • src/chain/store/mod.rs
  • src/chain/store/tipset_tracker.rs
  • src/chain/tests.rs
  • src/chain/weight.rs
  • src/chain_sync/bad_block_cache.rs
  • src/chain_sync/chain_follower.rs
  • src/chain_sync/chain_muxer.rs
  • src/chain_sync/consensus.rs
  • src/chain_sync/metrics.rs
  • src/chain_sync/mod.rs
  • src/chain_sync/network_context.rs
  • src/chain_sync/sync_status.rs
  • src/chain_sync/tipset_syncer.rs
  • src/chain_sync/validation.rs
  • src/cid_collections/hash_map.rs
  • src/cid_collections/hash_set.rs
  • src/cid_collections/mod.rs
  • src/cid_collections/small_cid_vec.rs
  • src/cli/humantoken.rs
  • src/cli/main.rs
  • src/cli/mod.rs
  • src/cli/subcommands/auth_cmd.rs
  • src/cli/subcommands/chain_cmd.rs
  • src/cli/subcommands/chain_cmd/list.rs
  • src/cli/subcommands/chain_cmd/prune.rs
  • src/cli/subcommands/config_cmd.rs
  • src/cli/subcommands/f3_cmd.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • src/cli/subcommands/healthcheck_cmd.rs
  • src/cli/subcommands/info_cmd.rs
  • src/cli/subcommands/mod.rs
  • src/cli/subcommands/mpool_cmd.rs
  • src/cli/subcommands/net_cmd.rs
  • src/cli/subcommands/shutdown_cmd.rs
  • src/cli/subcommands/snapshot_cmd.rs
  • src/cli/subcommands/state_cmd.rs
  • src/cli/subcommands/sync_cmd.rs
  • src/cli/subcommands/wait_api_cmd.rs
  • src/cli_shared/cli/client.rs
  • src/cli_shared/cli/completion_cmd.rs
  • src/cli_shared/cli/config.rs
  • src/cli_shared/cli/mod.rs
  • src/cli_shared/logger/mod.rs
  • src/cli_shared/mod.rs
  • src/cli_shared/snapshot.rs
  • src/daemon/bundle.rs
  • src/daemon/context.rs
  • src/daemon/db_util.rs
  • src/daemon/main.rs
  • src/daemon/mod.rs
  • src/db/blockstore_with_read_cache.rs
  • src/db/blockstore_with_write_buffer.rs
  • src/db/car/any.rs
  • src/db/car/forest.rs
  • src/db/car/forest/index/hash.rs
  • src/db/car/forest/index/mod.rs
  • src/db/car/many.rs
  • src/db/car/mod.rs
  • src/db/car/plain.rs
  • src/db/db_mode.rs
  • src/db/either.rs
  • src/db/gc/mod.rs
  • src/db/gc/snapshot.rs
  • src/db/memory.rs
  • src/db/migration/db_migration.rs
  • src/db/migration/migration_map.rs
  • src/db/migration/mod.rs
  • src/db/migration/v0_22_1.rs
  • src/db/migration/v0_26_0.rs
  • src/db/migration/void_migration.rs
  • src/db/mod.rs
  • src/db/parity_db.rs
  • src/db/parity_db_config.rs
  • src/db/tests/db_utils/mod.rs
  • src/db/tests/db_utils/parity.rs
  • src/db/tests/mem_test.rs
  • src/db/tests/parity_test.rs
  • src/db/tests/subtests/mod.rs
  • src/db/ttl/mod.rs
  • src/dev/main.rs
  • src/dev/mod.rs
  • src/dev/subcommands/mod.rs
  • src/documentation.rs
  • src/eth/eip_1559_transaction.rs
  • src/eth/eip_155_transaction.rs
  • src/eth/homestead_transaction.rs
  • src/eth/mod.rs
  • src/eth/transaction.rs
  • src/f3/go_ffi.rs
  • src/f3/mod.rs
  • src/f3/snapshot.rs
  • src/f3/snapshot/tests.rs
  • src/fil_cns/mod.rs
  • src/fil_cns/validation.rs
  • src/fil_cns/weight.rs
  • src/genesis/mod.rs
  • src/health/endpoints.rs
  • src/health/mod.rs
  • src/interpreter/errors.rs
  • src/interpreter/fvm2.rs
  • src/interpreter/fvm3.rs
  • src/interpreter/fvm4.rs
  • src/interpreter/mod.rs
  • src/interpreter/vm.rs
  • src/ipld/mod.rs
  • src/ipld/selector/empty_map.rs
  • src/ipld/selector/mod.rs
  • src/ipld/tests/cbor_test.rs
  • src/ipld/tests/selector_explore.rs
  • src/ipld/tests/selector_gen_tests.rs
  • src/ipld/util.rs
  • src/key_management/errors.rs
  • src/key_management/keystore.rs
  • src/key_management/mod.rs
  • src/key_management/wallet.rs
  • src/key_management/wallet_helpers.rs
  • src/lib.rs
  • src/libp2p/behaviour.rs
  • src/libp2p/chain_exchange/behaviour.rs
  • src/libp2p/chain_exchange/message.rs
  • src/libp2p/chain_exchange/mod.rs
  • src/libp2p/chain_exchange/provider.rs
  • src/libp2p/config.rs
  • src/libp2p/discovery.rs
  • src/libp2p/gossip_params.rs
  • src/libp2p/hello/behaviour.rs
  • src/libp2p/hello/codec.rs
  • src/libp2p/hello/message.rs
  • src/libp2p/hello/mod.rs
  • src/libp2p/keypair.rs
  • src/libp2p/metrics.rs
  • src/libp2p/mod.rs
  • src/libp2p/peer_manager.rs
  • src/libp2p/ping.rs
  • src/libp2p/rpc/decoder.rs
  • src/libp2p/rpc/mod.rs
  • src/libp2p/service.rs
  • src/libp2p/tests/decode_test.rs
  • src/libp2p_bitswap/behaviour.rs
  • src/libp2p_bitswap/bitswap_pb.rs
  • src/libp2p_bitswap/internals/codec.rs
  • src/libp2p_bitswap/internals/event_handlers.rs
  • src/libp2p_bitswap/internals/mod.rs
  • src/libp2p_bitswap/internals/prefix.rs
  • src/libp2p_bitswap/message.rs
  • src/libp2p_bitswap/metrics.rs
  • src/libp2p_bitswap/mod.rs
  • src/libp2p_bitswap/request_manager.rs
  • src/libp2p_bitswap/store.rs
  • src/libp2p_bitswap/tests/request_manager.rs
  • src/lotus_json/actor_state.rs
  • src/lotus_json/actors/mod.rs
  • src/lotus_json/actors/params/account_params.rs
  • src/lotus_json/actors/params/cron_params.rs
  • src/lotus_json/actors/params/datacap_params.rs
  • src/lotus_json/actors/params/eam_params.rs
  • src/lotus_json/actors/params/evm_params.rs
  • src/lotus_json/actors/params/init_params.rs
  • src/lotus_json/actors/params/market_params.rs
  • src/lotus_json/actors/params/miner_params.rs
  • src/lotus_json/actors/params/mod.rs
  • src/lotus_json/actors/params/multisig_params.rs
  • src/lotus_json/actors/params/paych_params.rs
  • src/lotus_json/actors/params/power_params.rs
  • src/lotus_json/actors/params/reward_params.rs
  • src/lotus_json/actors/params/verified_reg_params.rs
  • src/lotus_json/actors/states/account_state.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/lotus_json/actors/states/datacap_state.rs
  • src/lotus_json/actors/states/evm_state.rs
  • src/lotus_json/actors/states/init_state.rs
  • src/lotus_json/actors/states/market_state.rs
  • src/lotus_json/actors/states/miner_state.rs
  • src/lotus_json/actors/states/mod.rs
  • src/lotus_json/actors/states/multisig_state.rs
  • src/lotus_json/actors/states/payment_channel_state.rs
  • src/lotus_json/actors/states/power_states.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/lotus_json/actors/states/system_state.rs
  • src/lotus_json/actors/states/verified_reg_state.rs
  • src/lotus_json/actors/states/vesting_funds.rs
  • src/lotus_json/address.rs
  • src/lotus_json/allocation.rs
  • src/lotus_json/arc.rs
  • src/lotus_json/beacon_entry.rs
  • src/lotus_json/beneficiary_term.rs
  • src/lotus_json/big_int.rs
  • src/lotus_json/bit_field.rs
  • src/lotus_json/block_header.rs
  • src/lotus_json/bytecode_hash.rs
  • src/lotus_json/cid.rs
  • src/lotus_json/duration.rs
  • src/lotus_json/election_proof.rs
  • src/lotus_json/entry.rs
  • src/lotus_json/extended_sector_info.rs
  • src/lotus_json/filter_estimate.rs
  • src/lotus_json/gossip_block.rs
  • src/lotus_json/hash_map.rs
  • src/lotus_json/ipld.rs
  • src/lotus_json/key_info.rs
  • src/lotus_json/message.rs
  • src/lotus_json/miner_info.rs
  • src/lotus_json/miner_power.rs
  • src/lotus_json/mod.rs
  • src/lotus_json/nonempty.rs
  • src/lotus_json/opt.rs
  • src/lotus_json/padded_piece_size.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/lotus_json/po_st_proof.rs
  • src/lotus_json/power_claim.rs
  • src/lotus_json/raw_bytes.rs
  • src/lotus_json/receipt.rs
  • src/lotus_json/registered_po_st_proof.rs
  • src/lotus_json/registered_seal_proof.rs
  • src/lotus_json/sector_info.rs
  • src/lotus_json/sector_size.rs
  • src/lotus_json/signature.rs
  • src/lotus_json/signature_type.rs
  • src/lotus_json/signed_message.rs
  • src/lotus_json/ticket.rs
  • src/lotus_json/tipset_keys.rs
  • src/lotus_json/token_amount.rs
  • src/lotus_json/token_state.rs
  • src/lotus_json/tombstone.rs
  • src/lotus_json/transient_data.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/vec_u8.rs
  • src/lotus_json/verifreg_claim.rs
  • src/lotus_json/vrf_proof.rs
  • src/message/chain_message.rs
  • src/message/mod.rs
  • src/message/signed_message.rs
  • src/message/tests/builder_test.rs
  • src/message_pool/block_prob.rs
  • src/message_pool/config.rs
  • src/message_pool/errors.rs
  • src/message_pool/mod.rs
  • src/message_pool/msg_chain.rs
  • src/message_pool/msgpool/metrics.rs
  • src/message_pool/msgpool/mod.rs
  • src/message_pool/msgpool/msg_pool.rs
  • src/message_pool/msgpool/provider.rs
  • src/message_pool/msgpool/selection.rs
  • src/message_pool/msgpool/test_provider.rs
  • src/message_pool/msgpool/utils.rs
  • src/metrics/db.rs
  • src/metrics/mod.rs
  • src/networks/actors_bundle.rs
  • src/networks/butterflynet/mod.rs
  • src/networks/calibnet/mod.rs
  • src/networks/devnet/mod.rs
  • src/networks/drand.rs
  • src/networks/mainnet/mod.rs
  • src/networks/metrics.rs
🧰 Additional context used
🧠 Learnings (23)
📓 Common learnings
Learnt from: LesnyRumcajs
Repo: ChainSafe/forest PR: 5907
File: src/rpc/methods/state.rs:523-570
Timestamp: 2025-08-06T15:44:33.467Z
Learning: LesnyRumcajs prefers to rely on BufWriter's Drop implementation for automatic flushing rather than explicit flush() calls in Forest codebase.
📚 Learning: 2025-08-07T13:39:15.107Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5886
File: interop-tests/src/tests/go_app/gen.go:29-29
Timestamp: 2025-08-07T13:39:15.107Z
Learning: Auto-generated files like those created by rust2go (indicated by "Generated by rust2go. Please DO NOT edit this C part manually." comment) in the Forest project should be skipped during code review as they are not intended for manual editing.

Applied to files:

  • src/bin/forest-tool.rs
  • src/bin/forest-cli.rs
  • src/bin/forest-dev.rs
  • src/bin/forest-wallet.rs
  • src/db/car/forest/index/hash.rs
  • src/db/car/forest.rs
  • src/cli_shared/cli/client.rs
  • src/db/car/forest/index/mod.rs
📚 Learning: 2025-08-08T12:10:45.218Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5867
File: src/ipld/util.rs:553-558
Timestamp: 2025-08-08T12:10:45.218Z
Learning: Forest project targets Rust stable >=1.89; features stabilized in 1.88 like let-chains are acceptable in this codebase.

Applied to files:

  • src/bin/forest-tool.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/chain/store/tipset_tracker.rs
  • src/bin/forest-cli.rs
  • src/chain_sync/tipset_syncer.rs
  • src/lotus_json/allocation.rs
  • src/lotus_json/actors/states/evm_state.rs
  • src/libp2p_bitswap/metrics.rs
  • src/eth/homestead_transaction.rs
  • src/lotus_json/actor_state.rs
  • src/cli/subcommands/healthcheck_cmd.rs
  • src/lotus_json/filter_estimate.rs
  • src/bin/forest-dev.rs
  • src/lotus_json/extended_sector_info.rs
  • src/health/endpoints.rs
  • src/db/either.rs
  • src/cli_shared/snapshot.rs
  • src/key_management/errors.rs
  • src/lotus_json/signature.rs
  • src/chain_sync/network_context.rs
  • src/lib.rs
  • src/lotus_json/actors/params/init_params.rs
  • src/eth/eip_155_transaction.rs
  • src/libp2p_bitswap/behaviour.rs
  • src/lotus_json/vec_u8.rs
  • src/db/tests/mem_test.rs
  • src/db/migration/db_migration.rs
  • src/lotus_json/actors/states/market_state.rs
  • src/beacon/signatures/public_key_impls.rs
  • src/lotus_json/actors/mod.rs
  • src/lotus_json/actors/states/init_state.rs
  • src/db/car/mod.rs
  • src/libp2p/behaviour.rs
  • src/lotus_json/actors/params/cron_params.rs
  • src/lotus_json/vrf_proof.rs
  • src/cli_shared/logger/mod.rs
  • src/lotus_json/actors/states/mod.rs
  • src/lotus_json/sector_info.rs
  • src/lotus_json/actors/params/eam_params.rs
  • src/db/migration/migration_map.rs
  • src/interpreter/fvm4.rs
  • src/chain/store/errors.rs
  • src/lotus_json/actors/params/market_params.rs
  • src/lotus_json/tipset_keys.rs
  • src/libp2p/keypair.rs
  • src/lotus_json/actors/params/paych_params.rs
  • src/lotus_json/actors/params/multisig_params.rs
  • src/lotus_json/actors/params/account_params.rs
  • src/health/mod.rs
  • src/chain/store/chain_store.rs
  • src/libp2p/hello/codec.rs
  • src/db/car/forest/index/hash.rs
  • src/networks/metrics.rs
  • src/cid_collections/small_cid_vec.rs
  • src/chain/tests.rs
  • src/db/car/forest.rs
  • src/lotus_json/actors/params/verified_reg_params.rs
  • src/interpreter/fvm2.rs
  • src/lotus_json/actors/states/vesting_funds.rs
  • src/libp2p_bitswap/store.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/db/db_mode.rs
  • src/libp2p/peer_manager.rs
  • src/blocks/header/test.rs
  • src/genesis/mod.rs
  • src/lotus_json/actors/params/power_params.rs
  • src/cli_shared/cli/client.rs
  • src/lotus_json/transient_data.rs
  • src/beacon/tests/drand.rs
  • src/fil_cns/mod.rs
  • src/lotus_json/signature_type.rs
  • src/lotus_json/actors/params/miner_params.rs
  • src/benchmark_private/mod.rs
  • src/libp2p_bitswap/internals/event_handlers.rs
  • src/lotus_json/big_int.rs
  • src/lotus_json/actors/states/verified_reg_state.rs
  • src/lotus_json/sector_size.rs
  • src/f3/mod.rs
  • src/lotus_json/arc.rs
  • src/f3/snapshot.rs
  • src/interpreter/vm.rs
  • src/lotus_json/actors/states/account_state.rs
  • src/message_pool/msgpool/provider.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/bytecode_hash.rs
  • src/lotus_json/actors/states/system_state.rs
  • src/libp2p/service.rs
  • src/beacon/signatures/signature_impls.rs
  • src/lotus_json/tombstone.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • src/blocks/tipset.rs
  • src/cid_collections/hash_set.rs
  • src/lotus_json/cid.rs
  • src/blocks/tests/ticket_test.rs
  • src/networks/mainnet/mod.rs
  • src/lotus_json/miner_info.rs
  • src/fil_cns/validation.rs
  • src/message_pool/msg_chain.rs
  • src/lotus_json/opt.rs
  • src/libp2p/rpc/decoder.rs
  • src/lotus_json/actors/states/datacap_state.rs
  • src/f3/snapshot/tests.rs
  • src/lotus_json/actors/params/mod.rs
  • src/libp2p/discovery.rs
  • src/lotus_json/padded_piece_size.rs
  • interop-tests/src/lib.rs
  • src/lotus_json/miner_power.rs
  • src/benchmark_private/tipset_validation.rs
  • src/key_management/keystore.rs
  • src/lotus_json/actors/params/reward_params.rs
  • src/lotus_json/actors/states/multisig_state.rs
  • src/lotus_json/duration.rs
  • src/lotus_json/registered_seal_proof.rs
  • src/lotus_json/nonempty.rs
  • src/cli/subcommands/f3_cmd.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/lotus_json/actors/states/payment_channel_state.rs
  • src/lotus_json/address.rs
  • src/libp2p_bitswap/tests/request_manager.rs
  • src/cli_shared/cli/completion_cmd.rs
  • src/interpreter/fvm3.rs
  • src/lotus_json/actors/states/miner_state.rs
  • src/interpreter/errors.rs
  • src/libp2p/hello/behaviour.rs
  • src/lotus_json/bit_field.rs
  • src/lotus_json/message.rs
  • src/libp2p_bitswap/internals/codec.rs
  • src/lotus_json/beneficiary_term.rs
  • src/lotus_json/token_amount.rs
  • src/lotus_json/gossip_block.rs
  • src/lotus_json/hash_map.rs
📚 Learning: 2026-01-05T12:54:40.850Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6381
File: src/lotus_json/actors/states/cron_state.rs:8-8
Timestamp: 2026-01-05T12:54:40.850Z
Learning: In Rust code reviews, do not derive Eq for a struct if any field does not implement Eq (e.g., types from external dependencies). If a type like CronStateLotusJson includes fields wrapping external dependencies that lack Eq, derive PartialEq (or implement PartialEq manually) but avoid deriving Eq. This ensures comparisons compile and reflect actual equivalence semantics. When needed, consider implementing custom PartialEq (and possibly Eq) only after ensuring all fields (or wrappers) implement Eq, or keep PartialEq-only if full equality semantics cannot be expressed.

Applied to files:

  • src/bin/forest-tool.rs
  • src/chain/store/index.rs
  • src/cli/subcommands/chain_cmd/list.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/chain/store/tipset_tracker.rs
  • src/db/car/many.rs
  • src/bin/forest-cli.rs
  • src/chain_sync/tipset_syncer.rs
  • src/networks/drand.rs
  • src/lotus_json/allocation.rs
  • src/chain_sync/metrics.rs
  • src/chain_sync/sync_status.rs
  • src/lotus_json/actors/states/evm_state.rs
  • src/libp2p_bitswap/metrics.rs
  • src/beacon/signatures/tests.rs
  • src/eth/homestead_transaction.rs
  • src/libp2p_bitswap/request_manager.rs
  • src/lotus_json/actor_state.rs
  • src/chain/store/mod.rs
  • src/blocks/vrf_proof.rs
  • src/cli/subcommands/healthcheck_cmd.rs
  • src/chain_sync/consensus.rs
  • src/cli_shared/cli/config.rs
  • src/lotus_json/filter_estimate.rs
  • build.rs
  • src/bin/forest-dev.rs
  • src/lotus_json/extended_sector_info.rs
  • src/cli/subcommands/info_cmd.rs
  • src/libp2p_bitswap/internals/prefix.rs
  • src/blocks/chain4u.rs
  • src/health/endpoints.rs
  • src/db/either.rs
  • src/cli_shared/snapshot.rs
  • src/key_management/errors.rs
  • src/lotus_json/entry.rs
  • src/cli/subcommands/shutdown_cmd.rs
  • src/lotus_json/signature.rs
  • src/cid_collections/mod.rs
  • src/message_pool/errors.rs
  • src/db/parity_db_config.rs
  • src/chain_sync/network_context.rs
  • src/message_pool/msgpool/msg_pool.rs
  • src/message/tests/builder_test.rs
  • src/libp2p/chain_exchange/message.rs
  • src/eth/transaction.rs
  • src/daemon/main.rs
  • src/lib.rs
  • src/lotus_json/actors/params/init_params.rs
  • src/bin/forest-wallet.rs
  • src/eth/eip_155_transaction.rs
  • src/chain/snapshot_format.rs
  • src/libp2p_bitswap/behaviour.rs
  • src/auth/mod.rs
  • src/chain_sync/chain_follower.rs
  • src/lotus_json/vec_u8.rs
  • src/db/migration/v0_22_1.rs
  • src/db/tests/mem_test.rs
  • src/lotus_json/signed_message.rs
  • src/db/migration/db_migration.rs
  • src/db/ttl/mod.rs
  • src/cli/mod.rs
  • src/cli/subcommands/sync_cmd.rs
  • src/lotus_json/actors/states/market_state.rs
  • src/cli/humantoken.rs
  • src/dev/main.rs
  • src/beacon/signatures/public_key_impls.rs
  • src/lotus_json/actors/mod.rs
  • src/lotus_json/actors/states/init_state.rs
  • src/db/car/mod.rs
  • src/libp2p/behaviour.rs
  • src/lotus_json/actors/params/cron_params.rs
  • src/message_pool/msgpool/test_provider.rs
  • src/lotus_json/vrf_proof.rs
  • src/cli_shared/logger/mod.rs
  • src/lotus_json/actors/states/mod.rs
  • src/lotus_json/sector_info.rs
  • src/db/tests/db_utils/parity.rs
  • src/message/signed_message.rs
  • src/lotus_json/actors/params/eam_params.rs
  • src/db/migration/migration_map.rs
  • src/interpreter/fvm4.rs
  • src/chain/store/errors.rs
  • src/lotus_json/actors/params/market_params.rs
  • src/cli/subcommands/snapshot_cmd.rs
  • src/lotus_json/po_st_proof.rs
  • src/lotus_json/tipset_keys.rs
  • src/libp2p/keypair.rs
  • src/lotus_json/actors/params/paych_params.rs
  • src/ipld/tests/selector_gen_tests.rs
  • src/cli/subcommands/chain_cmd.rs
  • src/libp2p/hello/mod.rs
  • src/lotus_json/actors/params/multisig_params.rs
  • src/beacon/signatures/mod.rs
  • src/lotus_json/actors/params/account_params.rs
  • src/ipld/tests/selector_explore.rs
  • src/health/mod.rs
  • benches/car-index.rs
  • src/libp2p/tests/decode_test.rs
  • src/chain/store/chain_store.rs
  • src/libp2p/hello/codec.rs
  • src/db/car/forest/index/hash.rs
  • src/lotus_json/receipt.rs
  • interop-tests/src/tests/mod.rs
  • src/networks/metrics.rs
  • src/cid_collections/small_cid_vec.rs
  • src/libp2p/rpc/mod.rs
  • src/chain/tests.rs
  • src/ipld/selector/empty_map.rs
  • src/message_pool/block_prob.rs
  • src/db/car/forest.rs
  • src/lotus_json/actors/params/verified_reg_params.rs
  • src/interpreter/fvm2.rs
  • src/db/migration/v0_26_0.rs
  • src/db/tests/subtests/mod.rs
  • src/documentation.rs
  • src/cli/subcommands/wait_api_cmd.rs
  • src/db/gc/snapshot.rs
  • src/lotus_json/verifreg_claim.rs
  • src/lotus_json/actors/states/vesting_funds.rs
  • src/libp2p_bitswap/store.rs
  • src/f3/go_ffi.rs
  • src/eth/eip_1559_transaction.rs
  • src/beacon/mock_beacon.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/db/parity_db.rs
  • src/db/db_mode.rs
  • src/cli/subcommands/auth_cmd.rs
  • src/daemon/mod.rs
  • src/libp2p/peer_manager.rs
  • src/blocks/header/test.rs
  • src/networks/calibnet/mod.rs
  • src/genesis/mod.rs
  • src/lotus_json/actors/params/power_params.rs
  • src/blocks/mod.rs
  • src/lotus_json/power_claim.rs
  • src/lotus_json/actors/params/datacap_params.rs
  • src/lotus_json/block_header.rs
  • src/cli_shared/cli/client.rs
  • src/lotus_json/transient_data.rs
  • src/beacon/tests/drand.rs
  • src/fil_cns/mod.rs
  • src/lotus_json/signature_type.rs
  • src/lotus_json/actors/params/miner_params.rs
  • src/libp2p/chain_exchange/provider.rs
  • src/benchmark_private/mod.rs
  • src/chain_sync/validation.rs
  • src/libp2p/mod.rs
  • src/db/memory.rs
  • src/networks/actors_bundle.rs
  • src/message_pool/msgpool/mod.rs
  • interop-tests/build.rs
  • src/daemon/db_util.rs
  • src/cli/subcommands/chain_cmd/prune.rs
  • src/libp2p_bitswap/internals/event_handlers.rs
  • src/lotus_json/big_int.rs
  • src/networks/devnet/mod.rs
  • src/key_management/wallet.rs
  • src/lotus_json/actors/states/verified_reg_state.rs
  • src/blocks/tests/serialization_vectors.rs
  • src/lotus_json/sector_size.rs
  • src/chain/weight.rs
  • src/metrics/db.rs
  • src/f3/mod.rs
  • src/cli_shared/mod.rs
  • src/cli/subcommands/mod.rs
  • src/lotus_json/registered_po_st_proof.rs
  • src/lotus_json/arc.rs
  • src/f3/snapshot.rs
  • src/daemon/context.rs
  • src/lotus_json/mod.rs
  • src/db/migration/void_migration.rs
  • src/libp2p/hello/message.rs
  • src/blocks/election_proof.rs
  • src/interpreter/vm.rs
  • src/lotus_json/actors/states/account_state.rs
  • src/message_pool/msgpool/provider.rs
  • src/message_pool/msgpool/utils.rs
  • src/cli/subcommands/state_cmd.rs
  • src/cli_shared/cli/mod.rs
  • src/lotus_json/key_info.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/bytecode_hash.rs
  • src/ipld/util.rs
  • src/db/migration/mod.rs
  • src/cid_collections/hash_map.rs
  • src/libp2p/chain_exchange/mod.rs
  • src/blocks/gossip_block.rs
  • src/fil_cns/weight.rs
  • src/lotus_json/actors/states/system_state.rs
  • src/blocks/block.rs
  • src/cli/subcommands/config_cmd.rs
  • src/libp2p/service.rs
  • src/beacon/signatures/signature_impls.rs
  • src/lotus_json/tombstone.rs
  • src/dev/subcommands/mod.rs
  • src/key_management/wallet_helpers.rs
  • src/eth/mod.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • interop-tests/src/tests/bitswap_go_compat.rs
  • src/message/mod.rs
  • src/blocks/tipset.rs
  • benches/example-benchmark.rs
  • src/db/tests/db_utils/mod.rs
  • src/chain_sync/chain_muxer.rs
  • src/beacon/mod.rs
  • src/ipld/selector/mod.rs
  • src/cid_collections/hash_set.rs
  • src/lotus_json/cid.rs
  • src/blocks/tests/ticket_test.rs
  • src/bin/forest.rs
  • src/db/car/forest/index/mod.rs
  • src/libp2p/config.rs
  • src/daemon/bundle.rs
  • src/networks/mainnet/mod.rs
  • src/lotus_json/miner_info.rs
  • src/fil_cns/validation.rs
  • src/message_pool/msg_chain.rs
  • src/lotus_json/actors/states/power_states.rs
  • src/lotus_json/opt.rs
  • src/libp2p/rpc/decoder.rs
  • src/lotus_json/actors/states/datacap_state.rs
  • src/dev/mod.rs
  • src/message_pool/msgpool/selection.rs
  • src/f3/snapshot/tests.rs
  • src/key_management/mod.rs
  • src/lotus_json/actors/params/mod.rs
  • src/libp2p/discovery.rs
  • src/lotus_json/ipld.rs
  • src/db/mod.rs
  • src/lotus_json/padded_piece_size.rs
  • interop-tests/src/lib.rs
  • src/lotus_json/miner_power.rs
  • src/benchmark_private/tipset_validation.rs
  • src/key_management/keystore.rs
  • src/libp2p_bitswap/internals/mod.rs
  • src/chain_sync/bad_block_cache.rs
  • src/lotus_json/actors/params/reward_params.rs
  • src/lotus_json/actors/states/multisig_state.rs
  • src/lotus_json/duration.rs
  • src/lotus_json/registered_seal_proof.rs
  • src/lotus_json/nonempty.rs
  • src/db/tests/parity_test.rs
  • src/message/chain_message.rs
  • src/blocks/header.rs
  • interop-tests/src/tests/kad_go_compat.rs
  • src/lotus_json/ticket.rs
  • src/db/blockstore_with_write_buffer.rs
  • src/db/blockstore_with_read_cache.rs
  • src/interpreter/mod.rs
  • src/cli/subcommands/f3_cmd.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/db/car/any.rs
  • src/lotus_json/actors/states/payment_channel_state.rs
  • src/lotus_json/address.rs
  • src/libp2p_bitswap/tests/request_manager.rs
  • src/libp2p/chain_exchange/behaviour.rs
  • src/cli_shared/cli/completion_cmd.rs
  • src/db/car/plain.rs
  • src/libp2p/metrics.rs
  • src/interpreter/fvm3.rs
  • src/libp2p_bitswap/bitswap_pb.rs
  • src/message_pool/config.rs
  • src/lotus_json/actors/states/miner_state.rs
  • src/interpreter/errors.rs
  • src/libp2p_bitswap/message.rs
  • src/lotus_json/token_state.rs
  • src/db/gc/mod.rs
  • src/lotus_json/election_proof.rs
  • src/libp2p/hello/behaviour.rs
  • src/chain/mod.rs
  • src/chain/store/base_fee.rs
  • src/cli/main.rs
  • src/lotus_json/bit_field.rs
  • src/libp2p/gossip_params.rs
  • src/cli/subcommands/mpool_cmd.rs
  • src/lotus_json/actors/params/evm_params.rs
  • src/lotus_json/message.rs
  • src/beacon/drand.rs
  • src/libp2p_bitswap/internals/codec.rs
  • src/libp2p/ping.rs
  • src/ipld/tests/cbor_test.rs
  • src/chain_sync/mod.rs
  • src/message_pool/msgpool/metrics.rs
  • src/ipld/mod.rs
  • src/lotus_json/beneficiary_term.rs
  • src/message_pool/mod.rs
  • src/libp2p_bitswap/mod.rs
  • src/blocks/ticket.rs
  • src/metrics/mod.rs
  • src/lotus_json/beacon_entry.rs
  • interop-tests/src/tests/go_ffi.rs
  • src/cli/subcommands/net_cmd.rs
  • src/beacon/beacon_entries.rs
  • src/lotus_json/raw_bytes.rs
  • src/lotus_json/token_amount.rs
  • src/lotus_json/gossip_block.rs
  • src/networks/butterflynet/mod.rs
  • src/lotus_json/hash_map.rs
  • benches/tipset-validation.rs
📚 Learning: 2026-01-05T12:56:13.802Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6381
File: src/lotus_json/actors/states/evm_state.rs:41-44
Timestamp: 2026-01-05T12:56:13.802Z
Learning: In Rust codebases (e.g., Forest), do not add #[cfg(test)] to functions already annotated with #[test]. The #[test] attribute ensures the function is compiled only for tests, so a separate #[cfg(test)] is redundant and can be removed if present. Apply this check to all Rust files that contain #[test] functions.

Applied to files:

  • src/bin/forest-tool.rs
  • src/chain/store/index.rs
  • src/cli/subcommands/chain_cmd/list.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/chain/store/tipset_tracker.rs
  • src/db/car/many.rs
  • src/bin/forest-cli.rs
  • src/chain_sync/tipset_syncer.rs
  • src/networks/drand.rs
  • src/lotus_json/allocation.rs
  • src/chain_sync/metrics.rs
  • src/chain_sync/sync_status.rs
  • src/lotus_json/actors/states/evm_state.rs
  • src/libp2p_bitswap/metrics.rs
  • src/beacon/signatures/tests.rs
  • src/eth/homestead_transaction.rs
  • src/libp2p_bitswap/request_manager.rs
  • src/lotus_json/actor_state.rs
  • src/chain/store/mod.rs
  • src/blocks/vrf_proof.rs
  • src/cli/subcommands/healthcheck_cmd.rs
  • src/chain_sync/consensus.rs
  • src/cli_shared/cli/config.rs
  • src/lotus_json/filter_estimate.rs
  • build.rs
  • src/bin/forest-dev.rs
  • src/lotus_json/extended_sector_info.rs
  • src/cli/subcommands/info_cmd.rs
  • src/libp2p_bitswap/internals/prefix.rs
  • src/blocks/chain4u.rs
  • src/health/endpoints.rs
  • src/db/either.rs
  • src/cli_shared/snapshot.rs
  • src/key_management/errors.rs
  • src/lotus_json/entry.rs
  • src/cli/subcommands/shutdown_cmd.rs
  • src/lotus_json/signature.rs
  • src/cid_collections/mod.rs
  • src/message_pool/errors.rs
  • src/db/parity_db_config.rs
  • src/chain_sync/network_context.rs
  • src/message_pool/msgpool/msg_pool.rs
  • src/message/tests/builder_test.rs
  • src/libp2p/chain_exchange/message.rs
  • src/eth/transaction.rs
  • src/daemon/main.rs
  • src/lib.rs
  • src/lotus_json/actors/params/init_params.rs
  • src/bin/forest-wallet.rs
  • src/eth/eip_155_transaction.rs
  • src/chain/snapshot_format.rs
  • src/libp2p_bitswap/behaviour.rs
  • src/auth/mod.rs
  • src/chain_sync/chain_follower.rs
  • src/lotus_json/vec_u8.rs
  • src/db/migration/v0_22_1.rs
  • src/db/tests/mem_test.rs
  • src/lotus_json/signed_message.rs
  • src/db/migration/db_migration.rs
  • src/db/ttl/mod.rs
  • src/cli/mod.rs
  • src/cli/subcommands/sync_cmd.rs
  • src/lotus_json/actors/states/market_state.rs
  • src/cli/humantoken.rs
  • src/dev/main.rs
  • src/beacon/signatures/public_key_impls.rs
  • src/lotus_json/actors/mod.rs
  • src/lotus_json/actors/states/init_state.rs
  • src/db/car/mod.rs
  • src/libp2p/behaviour.rs
  • src/lotus_json/actors/params/cron_params.rs
  • src/message_pool/msgpool/test_provider.rs
  • src/lotus_json/vrf_proof.rs
  • src/cli_shared/logger/mod.rs
  • src/lotus_json/actors/states/mod.rs
  • src/lotus_json/sector_info.rs
  • src/db/tests/db_utils/parity.rs
  • src/message/signed_message.rs
  • src/lotus_json/actors/params/eam_params.rs
  • src/db/migration/migration_map.rs
  • src/interpreter/fvm4.rs
  • src/chain/store/errors.rs
  • src/lotus_json/actors/params/market_params.rs
  • src/cli/subcommands/snapshot_cmd.rs
  • src/lotus_json/po_st_proof.rs
  • src/lotus_json/tipset_keys.rs
  • src/libp2p/keypair.rs
  • src/lotus_json/actors/params/paych_params.rs
  • src/ipld/tests/selector_gen_tests.rs
  • src/cli/subcommands/chain_cmd.rs
  • src/libp2p/hello/mod.rs
  • src/lotus_json/actors/params/multisig_params.rs
  • src/beacon/signatures/mod.rs
  • src/lotus_json/actors/params/account_params.rs
  • src/ipld/tests/selector_explore.rs
  • src/health/mod.rs
  • benches/car-index.rs
  • src/libp2p/tests/decode_test.rs
  • src/chain/store/chain_store.rs
  • src/libp2p/hello/codec.rs
  • src/db/car/forest/index/hash.rs
  • src/lotus_json/receipt.rs
  • interop-tests/src/tests/mod.rs
  • src/networks/metrics.rs
  • src/cid_collections/small_cid_vec.rs
  • src/libp2p/rpc/mod.rs
  • src/chain/tests.rs
  • src/ipld/selector/empty_map.rs
  • src/message_pool/block_prob.rs
  • src/db/car/forest.rs
  • src/lotus_json/actors/params/verified_reg_params.rs
  • src/interpreter/fvm2.rs
  • src/db/migration/v0_26_0.rs
  • src/db/tests/subtests/mod.rs
  • src/documentation.rs
  • src/cli/subcommands/wait_api_cmd.rs
  • src/db/gc/snapshot.rs
  • src/lotus_json/verifreg_claim.rs
  • src/lotus_json/actors/states/vesting_funds.rs
  • src/libp2p_bitswap/store.rs
  • src/f3/go_ffi.rs
  • src/eth/eip_1559_transaction.rs
  • src/beacon/mock_beacon.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/db/parity_db.rs
  • src/db/db_mode.rs
  • src/cli/subcommands/auth_cmd.rs
  • src/daemon/mod.rs
  • src/libp2p/peer_manager.rs
  • src/blocks/header/test.rs
  • src/networks/calibnet/mod.rs
  • src/genesis/mod.rs
  • src/lotus_json/actors/params/power_params.rs
  • src/blocks/mod.rs
  • src/lotus_json/power_claim.rs
  • src/lotus_json/actors/params/datacap_params.rs
  • src/lotus_json/block_header.rs
  • src/cli_shared/cli/client.rs
  • src/lotus_json/transient_data.rs
  • src/beacon/tests/drand.rs
  • src/fil_cns/mod.rs
  • src/lotus_json/signature_type.rs
  • src/lotus_json/actors/params/miner_params.rs
  • src/libp2p/chain_exchange/provider.rs
  • src/benchmark_private/mod.rs
  • src/chain_sync/validation.rs
  • src/libp2p/mod.rs
  • src/db/memory.rs
  • src/networks/actors_bundle.rs
  • src/message_pool/msgpool/mod.rs
  • interop-tests/build.rs
  • src/daemon/db_util.rs
  • src/cli/subcommands/chain_cmd/prune.rs
  • src/libp2p_bitswap/internals/event_handlers.rs
  • src/lotus_json/big_int.rs
  • src/networks/devnet/mod.rs
  • src/key_management/wallet.rs
  • src/lotus_json/actors/states/verified_reg_state.rs
  • src/blocks/tests/serialization_vectors.rs
  • src/lotus_json/sector_size.rs
  • src/chain/weight.rs
  • src/metrics/db.rs
  • src/f3/mod.rs
  • src/cli_shared/mod.rs
  • src/cli/subcommands/mod.rs
  • src/lotus_json/registered_po_st_proof.rs
  • src/lotus_json/arc.rs
  • src/f3/snapshot.rs
  • src/daemon/context.rs
  • src/lotus_json/mod.rs
  • src/db/migration/void_migration.rs
  • src/libp2p/hello/message.rs
  • src/blocks/election_proof.rs
  • src/interpreter/vm.rs
  • src/lotus_json/actors/states/account_state.rs
  • src/message_pool/msgpool/provider.rs
  • src/message_pool/msgpool/utils.rs
  • src/cli/subcommands/state_cmd.rs
  • src/cli_shared/cli/mod.rs
  • src/lotus_json/key_info.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/bytecode_hash.rs
  • src/ipld/util.rs
  • src/db/migration/mod.rs
  • src/cid_collections/hash_map.rs
  • src/libp2p/chain_exchange/mod.rs
  • src/blocks/gossip_block.rs
  • src/fil_cns/weight.rs
  • src/lotus_json/actors/states/system_state.rs
  • src/blocks/block.rs
  • src/cli/subcommands/config_cmd.rs
  • src/libp2p/service.rs
  • src/beacon/signatures/signature_impls.rs
  • src/lotus_json/tombstone.rs
  • src/dev/subcommands/mod.rs
  • src/key_management/wallet_helpers.rs
  • src/eth/mod.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • interop-tests/src/tests/bitswap_go_compat.rs
  • src/message/mod.rs
  • src/blocks/tipset.rs
  • benches/example-benchmark.rs
  • src/db/tests/db_utils/mod.rs
  • src/chain_sync/chain_muxer.rs
  • src/beacon/mod.rs
  • src/ipld/selector/mod.rs
  • src/cid_collections/hash_set.rs
  • src/lotus_json/cid.rs
  • src/blocks/tests/ticket_test.rs
  • src/bin/forest.rs
  • src/db/car/forest/index/mod.rs
  • src/libp2p/config.rs
  • src/daemon/bundle.rs
  • src/networks/mainnet/mod.rs
  • src/lotus_json/miner_info.rs
  • src/fil_cns/validation.rs
  • src/message_pool/msg_chain.rs
  • src/lotus_json/actors/states/power_states.rs
  • src/lotus_json/opt.rs
  • src/libp2p/rpc/decoder.rs
  • src/lotus_json/actors/states/datacap_state.rs
  • src/dev/mod.rs
  • src/message_pool/msgpool/selection.rs
  • src/f3/snapshot/tests.rs
  • src/key_management/mod.rs
  • src/lotus_json/actors/params/mod.rs
  • src/libp2p/discovery.rs
  • src/lotus_json/ipld.rs
  • src/db/mod.rs
  • src/lotus_json/padded_piece_size.rs
  • interop-tests/src/lib.rs
  • src/lotus_json/miner_power.rs
  • src/benchmark_private/tipset_validation.rs
  • src/key_management/keystore.rs
  • src/libp2p_bitswap/internals/mod.rs
  • src/chain_sync/bad_block_cache.rs
  • src/lotus_json/actors/params/reward_params.rs
  • src/lotus_json/actors/states/multisig_state.rs
  • src/lotus_json/duration.rs
  • src/lotus_json/registered_seal_proof.rs
  • src/lotus_json/nonempty.rs
  • src/db/tests/parity_test.rs
  • src/message/chain_message.rs
  • src/blocks/header.rs
  • interop-tests/src/tests/kad_go_compat.rs
  • src/lotus_json/ticket.rs
  • src/db/blockstore_with_write_buffer.rs
  • src/db/blockstore_with_read_cache.rs
  • src/interpreter/mod.rs
  • src/cli/subcommands/f3_cmd.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/db/car/any.rs
  • src/lotus_json/actors/states/payment_channel_state.rs
  • src/lotus_json/address.rs
  • src/libp2p_bitswap/tests/request_manager.rs
  • src/libp2p/chain_exchange/behaviour.rs
  • src/cli_shared/cli/completion_cmd.rs
  • src/db/car/plain.rs
  • src/libp2p/metrics.rs
  • src/interpreter/fvm3.rs
  • src/libp2p_bitswap/bitswap_pb.rs
  • src/message_pool/config.rs
  • src/lotus_json/actors/states/miner_state.rs
  • src/interpreter/errors.rs
  • src/libp2p_bitswap/message.rs
  • src/lotus_json/token_state.rs
  • src/db/gc/mod.rs
  • src/lotus_json/election_proof.rs
  • src/libp2p/hello/behaviour.rs
  • src/chain/mod.rs
  • src/chain/store/base_fee.rs
  • src/cli/main.rs
  • src/lotus_json/bit_field.rs
  • src/libp2p/gossip_params.rs
  • src/cli/subcommands/mpool_cmd.rs
  • src/lotus_json/actors/params/evm_params.rs
  • src/lotus_json/message.rs
  • src/beacon/drand.rs
  • src/libp2p_bitswap/internals/codec.rs
  • src/libp2p/ping.rs
  • src/ipld/tests/cbor_test.rs
  • src/chain_sync/mod.rs
  • src/message_pool/msgpool/metrics.rs
  • src/ipld/mod.rs
  • src/lotus_json/beneficiary_term.rs
  • src/message_pool/mod.rs
  • src/libp2p_bitswap/mod.rs
  • src/blocks/ticket.rs
  • src/metrics/mod.rs
  • src/lotus_json/beacon_entry.rs
  • interop-tests/src/tests/go_ffi.rs
  • src/cli/subcommands/net_cmd.rs
  • src/beacon/beacon_entries.rs
  • src/lotus_json/raw_bytes.rs
  • src/lotus_json/token_amount.rs
  • src/lotus_json/gossip_block.rs
  • src/networks/butterflynet/mod.rs
  • src/lotus_json/hash_map.rs
  • benches/tipset-validation.rs
📚 Learning: 2025-08-18T12:25:29.183Z
Learnt from: akaladarshi
Repo: ChainSafe/forest PR: 5896
File: src/lotus_json/actor_states/methods/verified_reg_actor.rs:133-137
Timestamp: 2025-08-18T12:25:29.183Z
Learning: In Lotus JSON for verified registry actor, the SectorAllocationClaimsLotusJson struct uses "SectorExpiry" as the field name for the expiry field, not "Expiry". The current code with #[serde(rename = "SectorExpiry")] is correct.

Applied to files:

  • src/lotus_json/pending_beneficiary_change.rs
  • src/lotus_json/allocation.rs
  • src/lotus_json/actors/states/evm_state.rs
  • src/lotus_json/actor_state.rs
  • src/lotus_json/filter_estimate.rs
  • src/lotus_json/extended_sector_info.rs
  • src/lotus_json/entry.rs
  • src/lotus_json/signature.rs
  • src/lotus_json/actors/params/init_params.rs
  • src/chain/snapshot_format.rs
  • src/lotus_json/vec_u8.rs
  • src/lotus_json/signed_message.rs
  • src/lotus_json/actors/states/market_state.rs
  • src/lotus_json/actors/mod.rs
  • src/lotus_json/actors/states/init_state.rs
  • src/lotus_json/actors/params/cron_params.rs
  • src/lotus_json/vrf_proof.rs
  • src/lotus_json/actors/states/mod.rs
  • src/lotus_json/sector_info.rs
  • src/lotus_json/actors/params/eam_params.rs
  • src/lotus_json/actors/params/market_params.rs
  • src/lotus_json/po_st_proof.rs
  • src/lotus_json/actors/params/paych_params.rs
  • src/lotus_json/actors/params/multisig_params.rs
  • src/lotus_json/actors/params/account_params.rs
  • src/lotus_json/receipt.rs
  • src/lotus_json/actors/params/verified_reg_params.rs
  • src/lotus_json/verifreg_claim.rs
  • src/lotus_json/actors/states/vesting_funds.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/lotus_json/actors/params/power_params.rs
  • src/lotus_json/power_claim.rs
  • src/lotus_json/actors/params/datacap_params.rs
  • src/lotus_json/block_header.rs
  • src/lotus_json/transient_data.rs
  • src/lotus_json/signature_type.rs
  • src/lotus_json/actors/params/miner_params.rs
  • src/lotus_json/big_int.rs
  • src/lotus_json/actors/states/verified_reg_state.rs
  • src/lotus_json/sector_size.rs
  • src/lotus_json/registered_po_st_proof.rs
  • src/lotus_json/arc.rs
  • src/lotus_json/mod.rs
  • src/lotus_json/actors/states/account_state.rs
  • src/cli/subcommands/state_cmd.rs
  • src/lotus_json/key_info.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/bytecode_hash.rs
  • src/lotus_json/actors/states/system_state.rs
  • src/lotus_json/tombstone.rs
  • src/lotus_json/cid.rs
  • src/lotus_json/miner_info.rs
  • src/lotus_json/actors/states/power_states.rs
  • src/lotus_json/opt.rs
  • src/lotus_json/actors/states/datacap_state.rs
  • src/lotus_json/actors/params/mod.rs
  • src/lotus_json/ipld.rs
  • src/lotus_json/padded_piece_size.rs
  • src/lotus_json/miner_power.rs
  • src/lotus_json/actors/params/reward_params.rs
  • src/lotus_json/actors/states/multisig_state.rs
  • src/lotus_json/duration.rs
  • src/lotus_json/registered_seal_proof.rs
  • src/lotus_json/nonempty.rs
  • src/lotus_json/ticket.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/lotus_json/actors/states/payment_channel_state.rs
  • src/lotus_json/address.rs
  • src/lotus_json/actors/states/miner_state.rs
  • src/lotus_json/token_state.rs
  • src/lotus_json/election_proof.rs
  • src/lotus_json/bit_field.rs
  • src/lotus_json/actors/params/evm_params.rs
  • src/lotus_json/message.rs
  • src/lotus_json/beneficiary_term.rs
  • src/lotus_json/beacon_entry.rs
  • src/lotus_json/raw_bytes.rs
  • src/lotus_json/token_amount.rs
  • src/lotus_json/gossip_block.rs
  • src/lotus_json/hash_map.rs
📚 Learning: 2025-09-11T16:03:14.328Z
Learnt from: akaladarshi
Repo: ChainSafe/forest PR: 6000
File: src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs:4-9
Timestamp: 2025-09-11T16:03:14.328Z
Learning: In the Forest codebase's state_decode_params_tests module, common imports like `to_vec`, `TokenAmount`, `Cid`, etc. are centralized in the mod.rs file and made available to submodules through `use super::*;`, eliminating the need for duplicate imports in individual test files.

Applied to files:

  • src/lotus_json/pending_beneficiary_change.rs
  • src/lotus_json/allocation.rs
  • src/lotus_json/actors/states/evm_state.rs
  • src/eth/homestead_transaction.rs
  • src/lotus_json/actor_state.rs
  • src/lotus_json/filter_estimate.rs
  • src/lotus_json/extended_sector_info.rs
  • src/db/either.rs
  • src/lotus_json/signature.rs
  • src/lotus_json/actors/params/init_params.rs
  • src/eth/eip_155_transaction.rs
  • src/lotus_json/vec_u8.rs
  • src/db/tests/mem_test.rs
  • src/lotus_json/actors/states/market_state.rs
  • src/beacon/signatures/public_key_impls.rs
  • src/lotus_json/actors/mod.rs
  • src/lotus_json/actors/states/init_state.rs
  • src/db/car/mod.rs
  • src/lotus_json/actors/params/cron_params.rs
  • src/lotus_json/vrf_proof.rs
  • src/lotus_json/actors/states/mod.rs
  • src/lotus_json/sector_info.rs
  • src/lotus_json/actors/params/eam_params.rs
  • src/lotus_json/actors/params/market_params.rs
  • src/lotus_json/tipset_keys.rs
  • src/lotus_json/actors/params/paych_params.rs
  • src/lotus_json/actors/params/multisig_params.rs
  • src/lotus_json/actors/params/account_params.rs
  • src/chain/store/chain_store.rs
  • src/libp2p/hello/codec.rs
  • src/cid_collections/small_cid_vec.rs
  • src/chain/tests.rs
  • src/lotus_json/actors/params/verified_reg_params.rs
  • src/lotus_json/actors/states/vesting_funds.rs
  • src/libp2p_bitswap/store.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/blocks/header/test.rs
  • src/lotus_json/actors/params/power_params.rs
  • src/lotus_json/transient_data.rs
  • src/lotus_json/signature_type.rs
  • src/lotus_json/actors/params/miner_params.rs
  • src/benchmark_private/mod.rs
  • src/lotus_json/big_int.rs
  • src/lotus_json/actors/states/verified_reg_state.rs
  • src/blocks/tests/serialization_vectors.rs
  • src/lotus_json/sector_size.rs
  • src/lotus_json/arc.rs
  • src/f3/snapshot.rs
  • src/lotus_json/actors/states/account_state.rs
  • src/lotus_json/key_info.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/bytecode_hash.rs
  • src/lotus_json/actors/states/system_state.rs
  • src/beacon/signatures/signature_impls.rs
  • src/lotus_json/tombstone.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • src/cid_collections/hash_set.rs
  • src/lotus_json/cid.rs
  • src/lotus_json/miner_info.rs
  • src/lotus_json/opt.rs
  • src/lotus_json/actors/states/datacap_state.rs
  • src/f3/snapshot/tests.rs
  • src/lotus_json/actors/params/mod.rs
  • src/lotus_json/padded_piece_size.rs
  • interop-tests/src/lib.rs
  • src/lotus_json/miner_power.rs
  • src/lotus_json/actors/params/reward_params.rs
  • src/lotus_json/actors/states/multisig_state.rs
  • src/lotus_json/duration.rs
  • src/lotus_json/registered_seal_proof.rs
  • src/lotus_json/nonempty.rs
  • src/cli/subcommands/f3_cmd.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/lotus_json/actors/states/payment_channel_state.rs
  • src/lotus_json/address.rs
  • src/libp2p_bitswap/tests/request_manager.rs
  • src/lotus_json/actors/states/miner_state.rs
  • src/lotus_json/token_state.rs
  • src/lotus_json/bit_field.rs
  • src/lotus_json/message.rs
  • src/lotus_json/beneficiary_term.rs
  • src/lotus_json/raw_bytes.rs
  • src/lotus_json/token_amount.rs
  • src/lotus_json/gossip_block.rs
  • src/lotus_json/hash_map.rs
📚 Learning: 2025-10-17T09:36:15.757Z
Learnt from: elmattic
Repo: ChainSafe/forest PR: 6128
File: src/ipld/util.rs:23-30
Timestamp: 2025-10-17T09:36:15.757Z
Learning: Always run `cargo check` or `cargo build` to verify actual compilation errors in the Forest codebase before flagging them as issues. Do not rely solely on documentation or assumptions about trait implementations.

Applied to files:

  • src/bin/forest-cli.rs
  • src/db/car/mod.rs
  • src/db/car/forest/index/hash.rs
  • src/benchmark_private/mod.rs
📚 Learning: 2026-01-05T13:02:14.604Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6381
File: src/shim/actors/builtin/cron/mod.rs:47-47
Timestamp: 2026-01-05T13:02:14.604Z
Learning: The Entry enum in src/shim/actors/builtin/cron/mod.rs cannot derive Eq because it wraps external fil_actor_cron_state::vX::Entry types (v8-v17) that don't implement Eq. Only PartialEq can be derived for this enum due to this external dependency constraint.

Applied to files:

  • src/beacon/signatures/tests.rs
  • src/cli/subcommands/healthcheck_cmd.rs
  • src/cli/subcommands/info_cmd.rs
  • src/cli_shared/snapshot.rs
  • src/lotus_json/entry.rs
  • src/chain_sync/network_context.rs
  • src/libp2p/behaviour.rs
  • src/cli_shared/logger/mod.rs
  • src/db/migration/migration_map.rs
  • src/db/db_mode.rs
  • src/libp2p/peer_manager.rs
  • src/blocks/mod.rs
  • src/lotus_json/block_header.rs
  • src/cli_shared/cli/client.rs
  • src/fil_cns/mod.rs
  • src/chain_sync/validation.rs
  • src/libp2p/service.rs
  • src/key_management/wallet_helpers.rs
  • src/blocks/tipset.rs
  • src/lotus_json/actors/states/power_states.rs
  • src/libp2p/rpc/decoder.rs
  • src/libp2p/discovery.rs
  • src/key_management/keystore.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/libp2p/hello/behaviour.rs
  • src/libp2p/ping.rs
  • src/lotus_json/beacon_entry.rs
📚 Learning: 2025-08-25T13:35:24.230Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5969
File: src/tool/subcommands/snapshot_cmd.rs:412-412
Timestamp: 2025-08-25T13:35:24.230Z
Learning: In src/tool/subcommands/snapshot_cmd.rs, the +1 in `last_epoch = ts.epoch() - epochs as i64 + 1` fixes an off-by-1 bug where specifying --check-stateroots=N would validate N+1 epochs instead of N epochs, causing out-of-bounds errors when the snapshot contains only N recent state roots.

Applied to files:

  • src/cli/subcommands/healthcheck_cmd.rs
  • src/cli/subcommands/info_cmd.rs
  • src/cli/subcommands/sync_cmd.rs
  • src/cli/subcommands/snapshot_cmd.rs
  • src/cli/subcommands/chain_cmd/prune.rs
  • src/cli/subcommands/state_cmd.rs
  • src/db/gc/mod.rs
📚 Learning: 2025-08-08T12:11:55.266Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5867
File: src/ipld/util.rs:461-487
Timestamp: 2025-08-08T12:11:55.266Z
Learning: Forest (src/ipld/util.rs, Rust): In UnorderedChainStream::poll_next, dropping `extract_sender` (when no more tipsets and the extract queue is empty) is the intended shutdown signal for workers. Any subsequent attempt to enqueue work after this drop is a logic error and should be treated as an error; do not change `send()` to ignore a missing sender.

Applied to files:

  • src/chain_sync/consensus.rs
  • src/message_pool/errors.rs
  • src/interpreter/fvm4.rs
  • src/ipld/tests/selector_gen_tests.rs
  • src/ipld/tests/selector_explore.rs
  • src/interpreter/fvm2.rs
  • src/blocks/mod.rs
  • src/benchmark_private/mod.rs
  • src/daemon/db_util.rs
  • src/ipld/util.rs
  • src/fil_cns/weight.rs
  • src/libp2p/rpc/decoder.rs
  • src/interpreter/fvm3.rs
  • src/chain/store/base_fee.rs
  • src/cli/subcommands/mpool_cmd.rs
  • src/libp2p/ping.rs
📚 Learning: 2025-08-04T13:36:22.993Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5835
File: src/chain/tests.rs:58-76
Timestamp: 2025-08-04T13:36:22.993Z
Learning: In the Forest codebase, `Vec<u8>` can be used as an `AsyncWrite` implementation in test contexts. The user confirmed that tests using `&mut Vec<u8>` with `export` and `export_v2` functions compile and pass both locally and on CI.

Applied to files:

  • build.rs
  • src/db/tests/mem_test.rs
  • src/blocks/tests/serialization_vectors.rs
  • src/f3/snapshot.rs
  • src/cli/subcommands/config_cmd.rs
  • interop-tests/src/lib.rs
  • src/cli/subcommands/f3_cmd.rs
  • src/libp2p_bitswap/tests/request_manager.rs
📚 Learning: 2025-08-04T13:36:22.993Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5835
File: src/chain/tests.rs:58-76
Timestamp: 2025-08-04T13:36:22.993Z
Learning: In projects using tokio with "full" features enabled, `Vec<u8>` implements `AsyncWrite` through blanket implementations provided by Tokio. This allows `&mut Vec<u8>` to be used directly with async write operations without needing additional wrapper types like `SyncIoBridge`.

Applied to files:

  • build.rs
  • src/cli/subcommands/config_cmd.rs
📚 Learning: 2025-08-28T12:52:46.927Z
Learnt from: LesnyRumcajs
Repo: ChainSafe/forest PR: 6011
File: src/cli/main.rs:18-25
Timestamp: 2025-08-28T12:52:46.927Z
Learning: In Forest CLI (src/cli/main.rs), the early RPC network check before Cli::parse_from() does not block help/version commands because clap processes these internally before reaching the RPC call. LesnyRumcajs confirmed this implementation works correctly and that RPC call failures are acceptable in this context.

Applied to files:

  • src/cli/subcommands/shutdown_cmd.rs
  • src/daemon/main.rs
  • src/dev/main.rs
  • src/cli/subcommands/wait_api_cmd.rs
  • src/cli_shared/mod.rs
  • src/dev/subcommands/mod.rs
  • src/cli_shared/cli/completion_cmd.rs
📚 Learning: 2025-09-02T08:46:04.937Z
Learnt from: akaladarshi
Repo: ChainSafe/forest PR: 5996
File: src/lotus_json/actor_states/methods/paych_params.rs:269-277
Timestamp: 2025-09-02T08:46:04.937Z
Learning: In payment channel actor Lotus JSON serialization, empty merges should be serialized as `null` (not an empty array `[]`) to maintain compatibility with Lotus behavior.

Applied to files:

  • src/chain/snapshot_format.rs
  • src/lotus_json/verifreg_claim.rs
  • src/lotus_json/actors/params/datacap_params.rs
  • src/cli/subcommands/state_cmd.rs
  • src/lotus_json/raw_bytes.rs
📚 Learning: 2025-08-11T12:42:42.848Z
Learnt from: elmattic
Repo: ChainSafe/forest PR: 5836
File: src/tool/subcommands/api_cmd/api_run_tests.rs:186-190
Timestamp: 2025-08-11T12:42:42.848Z
Learning: In the Forest project's test infrastructure (specifically in `src/tool/subcommands/api_cmd/api_run_tests.rs`), the team prefers to use only `ws` (non-secure WebSocket) connections for simplicity in their stateful API test scenarios, as security is not a concern in their testing context.

Applied to files:

  • src/db/tests/mem_test.rs
  • src/db/car/mod.rs
📚 Learning: 2025-08-08T12:10:45.218Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5867
File: src/ipld/util.rs:553-558
Timestamp: 2025-08-08T12:10:45.218Z
Learning: Forest pins Rust toolchain to 1.89.0 via rust-toolchain.toml; features stabilized in 1.88 (e.g., let-chains) are acceptable in this codebase.

Applied to files:

  • src/db/car/mod.rs
  • src/cli_shared/logger/mod.rs
  • src/libp2p/rpc/decoder.rs
📚 Learning: 2025-08-07T13:39:36.962Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5886
File: interop-tests/src/tests/go_app/gen.go:88-90
Timestamp: 2025-08-07T13:39:36.962Z
Learning: Skip reviewing auto-generated files marked with "Generated by rust2go. Please DO NOT edit this C part manually." as these should not be manually edited and any issues should be addressed in the code generation tool or source templates instead.

Applied to files:

  • src/db/tests/subtests/mod.rs
  • src/f3/go_ffi.rs
  • src/cli_shared/cli/client.rs
  • interop-tests/src/tests/bitswap_go_compat.rs
  • src/db/car/any.rs
  • interop-tests/src/tests/go_ffi.rs
📚 Learning: 2025-09-02T08:44:08.346Z
Learnt from: akaladarshi
Repo: ChainSafe/forest PR: 5996
File: src/lotus_json/actor_states/methods/paych_params.rs:56-58
Timestamp: 2025-09-02T08:44:08.346Z
Learning: In Lotus JSON for payment channel SignedVoucher, the secret_pre_image field should use serde rename to "SecretHash" (not "SecretPreImage") for Lotus API compatibility, even though the internal struct field is named SecretPreimage. This matches the actual JSON format used by Lotus.

Applied to files:

  • src/lotus_json/actors/params/datacap_params.rs
📚 Learning: 2025-09-02T10:05:34.350Z
Learnt from: akaladarshi
Repo: ChainSafe/forest PR: 5923
File: src/rpc/registry/actors/miner.rs:221-223
Timestamp: 2025-09-02T10:05:34.350Z
Learning: For miner actor ChangeOwnerAddress and ChangeOwnerAddressExported methods: versions 8-10 use bare Address as parameter type, while versions 11+ use ChangeOwnerAddressParams. This reflects the evolution of the Filecoin miner actor parameter structures across versions.

Applied to files:

  • src/lotus_json/actors/params/miner_params.rs
📚 Learning: 2025-10-17T14:24:47.046Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6167
File: src/tool/subcommands/state_compute_cmd.rs:89-91
Timestamp: 2025-10-17T14:24:47.046Z
Learning: In `src/tool/subcommands/state_compute_cmd.rs`, when using `ReadOpsTrackingStore` to generate minimal snapshots, `HEAD_KEY` should be written to `db.tracker` (not `db` itself) before calling `export_forest_car()`, because the export reads from the tracker MemoryDB which accumulates only the accessed data during computation.

Applied to files:

  • src/benchmark_private/mod.rs
  • src/daemon/bundle.rs
📚 Learning: 2025-08-11T14:00:47.060Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5886
File: src/daemon/db_util.rs:236-259
Timestamp: 2025-08-11T14:00:47.060Z
Learning: In Forest's snapshot import (`src/daemon/db_util.rs`), when F3 CID is present in snapshot metadata but the actual F3 data is missing, this should cause a hard error as it indicates snapshot corruption. Only errors during the F3 import process itself (after data is successfully retrieved) should be non-fatal and logged.

Applied to files:

  • src/benchmark_private/mod.rs
📚 Learning: 2025-10-14T14:31:20.565Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6161
File: src/tool/subcommands/db_cmd.rs:123-144
Timestamp: 2025-10-14T14:31:20.565Z
Learning: In Rust Forest codebase, `BlockstoreWithWriteBuffer` implements the `Drop` trait (at src/db/blockstore_with_write_buffer.rs) which automatically calls `flush_buffer()` to persist buffered writes when the object goes out of scope. Explicit flush calls are not required before dropping the wrapper.

Applied to files:

  • src/db/mod.rs
  • src/db/blockstore_with_write_buffer.rs
⏰ 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). (7)
  • GitHub Check: Build MacOS
  • GitHub Check: cargo-publish-dry-run
  • GitHub Check: Build Ubuntu
  • GitHub Check: All lint checks
  • GitHub Check: Build forest binaries on Linux AMD64
  • GitHub Check: Coverage
  • GitHub Check: tests-release

hanabi1224
hanabi1224 previously approved these changes Jan 9, 2026
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

🧹 Nitpick comments (2)
mise-tasks/add_license.sh (2)

13-14: Add error handling for file operations.

The file modification logic lacks error handling, which could lead to data loss if scripts/copyright.txt doesn't exist or if write operations fail. Additionally, using a generic "temp" filename could cause race conditions with concurrent script executions.

🛡️ Proposed improvements for robustness
+# Validate copyright.txt exists
+if [[ ! -f ./scripts/copyright.txt ]]; then
+  echo "Error: ./scripts/copyright.txt not found"
+  exit 1
+fi
+
 ret=0
 for file in $(git grep --cached -Il '' -- '*.rs' ':!*src/utils/encoding/fallback_de_ipld_dagcbor.rs'); do
   header=$(head -2 "$file" | tr -d '\n')
 	if ! echo "$header" | grep -q "$PAT_APA"; then
 		echo "$file was missing header"
-		cat ./scripts/copyright.txt "$file" > temp
-		mv temp "$file"
+		temp_file=$(mktemp) || { echo "Failed to create temp file"; exit 1; }
+		if cat ./scripts/copyright.txt "$file" > "$temp_file"; then
+			mv "$temp_file" "$file" || { echo "Failed to update $file"; rm -f "$temp_file"; exit 1; }
+		else
+			echo "Failed to add header to $file"
+			rm -f "$temp_file"
+			exit 1
+		fi
 		ret=1
 	fi
 done

9-9: The pathspec pattern works correctly but uses a non-standard format.

Both :!*src/utils/encoding/fallback_de_ipld_dagcbor.rs and the suggested :!src/utils/encoding/fallback_de_ipld_dagcbor.rs produce identical results and correctly exclude the intended file. While the current pattern is functionally correct, adopting the standard format :!src/utils/encoding/fallback_de_ipld_dagcbor.rs is preferred for consistency with git conventions and clarity.

📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f5b4cf2 and 2af91a5.

📒 Files selected for processing (276)
  • benches/car-index.rs
  • benches/example-benchmark.rs
  • benches/tipset-validation.rs
  • build.rs
  • interop-tests/build.rs
  • interop-tests/src/lib.rs
  • interop-tests/src/tests/bitswap_go_compat.rs
  • interop-tests/src/tests/go_ffi.rs
  • interop-tests/src/tests/kad_go_compat.rs
  • interop-tests/src/tests/mod.rs
  • mise-tasks/add_license.sh
  • scripts/copyright.txt
  • src/auth/mod.rs
  • src/beacon/beacon_entries.rs
  • src/beacon/drand.rs
  • src/beacon/mock_beacon.rs
  • src/beacon/mod.rs
  • src/beacon/signatures/mod.rs
  • src/beacon/signatures/public_key_impls.rs
  • src/beacon/signatures/signature_impls.rs
  • src/beacon/signatures/tests.rs
  • src/beacon/tests/drand.rs
  • src/benchmark_private/mod.rs
  • src/benchmark_private/tipset_validation.rs
  • src/bin/forest-cli.rs
  • src/bin/forest-dev.rs
  • src/bin/forest-tool.rs
  • src/bin/forest-wallet.rs
  • src/bin/forest.rs
  • src/blocks/block.rs
  • src/blocks/chain4u.rs
  • src/blocks/election_proof.rs
  • src/blocks/gossip_block.rs
  • src/blocks/header.rs
  • src/blocks/header/test.rs
  • src/blocks/mod.rs
  • src/blocks/tests/serialization_vectors.rs
  • src/blocks/tests/ticket_test.rs
  • src/blocks/ticket.rs
  • src/blocks/tipset.rs
  • src/blocks/vrf_proof.rs
  • src/chain/mod.rs
  • src/chain/snapshot_format.rs
  • src/chain/store/base_fee.rs
  • src/chain/store/chain_store.rs
  • src/chain/store/errors.rs
  • src/chain/store/index.rs
  • src/chain/store/mod.rs
  • src/chain/store/tipset_tracker.rs
  • src/chain/tests.rs
  • src/chain/weight.rs
  • src/chain_sync/bad_block_cache.rs
  • src/chain_sync/chain_follower.rs
  • src/chain_sync/chain_muxer.rs
  • src/chain_sync/consensus.rs
  • src/chain_sync/metrics.rs
  • src/chain_sync/mod.rs
  • src/chain_sync/network_context.rs
  • src/chain_sync/sync_status.rs
  • src/chain_sync/tipset_syncer.rs
  • src/chain_sync/validation.rs
  • src/cid_collections/hash_map.rs
  • src/cid_collections/hash_set.rs
  • src/cid_collections/mod.rs
  • src/cid_collections/small_cid_vec.rs
  • src/cli/humantoken.rs
  • src/cli/main.rs
  • src/cli/mod.rs
  • src/cli/subcommands/auth_cmd.rs
  • src/cli/subcommands/chain_cmd.rs
  • src/cli/subcommands/chain_cmd/list.rs
  • src/cli/subcommands/chain_cmd/prune.rs
  • src/cli/subcommands/config_cmd.rs
  • src/cli/subcommands/f3_cmd.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • src/cli/subcommands/healthcheck_cmd.rs
  • src/cli/subcommands/info_cmd.rs
  • src/cli/subcommands/mod.rs
  • src/cli/subcommands/mpool_cmd.rs
  • src/cli/subcommands/net_cmd.rs
  • src/cli/subcommands/shutdown_cmd.rs
  • src/cli/subcommands/snapshot_cmd.rs
  • src/cli/subcommands/state_cmd.rs
  • src/cli/subcommands/sync_cmd.rs
  • src/cli/subcommands/wait_api_cmd.rs
  • src/cli_shared/cli/client.rs
  • src/cli_shared/cli/completion_cmd.rs
  • src/cli_shared/cli/config.rs
  • src/cli_shared/cli/mod.rs
  • src/cli_shared/logger/mod.rs
  • src/cli_shared/mod.rs
  • src/cli_shared/snapshot.rs
  • src/daemon/bundle.rs
  • src/daemon/context.rs
  • src/daemon/db_util.rs
  • src/daemon/main.rs
  • src/daemon/mod.rs
  • src/db/blockstore_with_read_cache.rs
  • src/db/blockstore_with_write_buffer.rs
  • src/db/car/any.rs
  • src/db/car/forest.rs
  • src/db/car/forest/index/hash.rs
  • src/db/car/forest/index/mod.rs
  • src/db/car/many.rs
  • src/db/car/mod.rs
  • src/db/car/plain.rs
  • src/db/db_mode.rs
  • src/db/either.rs
  • src/db/gc/mod.rs
  • src/db/gc/snapshot.rs
  • src/db/memory.rs
  • src/db/migration/db_migration.rs
  • src/db/migration/migration_map.rs
  • src/db/migration/mod.rs
  • src/db/migration/v0_22_1.rs
  • src/db/migration/v0_26_0.rs
  • src/db/migration/void_migration.rs
  • src/db/mod.rs
  • src/db/parity_db.rs
  • src/db/parity_db_config.rs
  • src/db/tests/db_utils/mod.rs
  • src/db/tests/db_utils/parity.rs
  • src/db/tests/mem_test.rs
  • src/db/tests/parity_test.rs
  • src/db/tests/subtests/mod.rs
  • src/db/ttl/mod.rs
  • src/dev/main.rs
  • src/dev/mod.rs
  • src/dev/subcommands/mod.rs
  • src/documentation.rs
  • src/eth/eip_1559_transaction.rs
  • src/eth/eip_155_transaction.rs
  • src/eth/homestead_transaction.rs
  • src/eth/mod.rs
  • src/eth/transaction.rs
  • src/f3/go_ffi.rs
  • src/f3/mod.rs
  • src/f3/snapshot.rs
  • src/f3/snapshot/tests.rs
  • src/fil_cns/mod.rs
  • src/fil_cns/validation.rs
  • src/fil_cns/weight.rs
  • src/genesis/mod.rs
  • src/health/endpoints.rs
  • src/health/mod.rs
  • src/interpreter/errors.rs
  • src/interpreter/fvm2.rs
  • src/interpreter/fvm3.rs
  • src/interpreter/fvm4.rs
  • src/interpreter/mod.rs
  • src/interpreter/vm.rs
  • src/ipld/mod.rs
  • src/ipld/selector/empty_map.rs
  • src/ipld/selector/mod.rs
  • src/ipld/tests/cbor_test.rs
  • src/ipld/tests/selector_explore.rs
  • src/ipld/tests/selector_gen_tests.rs
  • src/ipld/util.rs
  • src/key_management/errors.rs
  • src/key_management/keystore.rs
  • src/key_management/mod.rs
  • src/key_management/wallet.rs
  • src/key_management/wallet_helpers.rs
  • src/lib.rs
  • src/libp2p/behaviour.rs
  • src/libp2p/chain_exchange/behaviour.rs
  • src/libp2p/chain_exchange/message.rs
  • src/libp2p/chain_exchange/mod.rs
  • src/libp2p/chain_exchange/provider.rs
  • src/libp2p/config.rs
  • src/libp2p/discovery.rs
  • src/libp2p/gossip_params.rs
  • src/libp2p/hello/behaviour.rs
  • src/libp2p/hello/codec.rs
  • src/libp2p/hello/message.rs
  • src/libp2p/hello/mod.rs
  • src/libp2p/keypair.rs
  • src/libp2p/metrics.rs
  • src/libp2p/mod.rs
  • src/libp2p/peer_manager.rs
  • src/libp2p/ping.rs
  • src/libp2p/rpc/decoder.rs
  • src/libp2p/rpc/mod.rs
  • src/libp2p/service.rs
  • src/libp2p/tests/decode_test.rs
  • src/libp2p_bitswap/behaviour.rs
  • src/libp2p_bitswap/bitswap_pb.rs
  • src/libp2p_bitswap/internals/codec.rs
  • src/libp2p_bitswap/internals/event_handlers.rs
  • src/libp2p_bitswap/internals/mod.rs
  • src/libp2p_bitswap/internals/prefix.rs
  • src/libp2p_bitswap/message.rs
  • src/libp2p_bitswap/metrics.rs
  • src/libp2p_bitswap/mod.rs
  • src/libp2p_bitswap/request_manager.rs
  • src/libp2p_bitswap/store.rs
  • src/libp2p_bitswap/tests/request_manager.rs
  • src/lotus_json/actor_state.rs
  • src/lotus_json/actors/mod.rs
  • src/lotus_json/actors/params/account_params.rs
  • src/lotus_json/actors/params/cron_params.rs
  • src/lotus_json/actors/params/datacap_params.rs
  • src/lotus_json/actors/params/eam_params.rs
  • src/lotus_json/actors/params/evm_params.rs
  • src/lotus_json/actors/params/init_params.rs
  • src/lotus_json/actors/params/market_params.rs
  • src/lotus_json/actors/params/miner_params.rs
  • src/lotus_json/actors/params/mod.rs
  • src/lotus_json/actors/params/multisig_params.rs
  • src/lotus_json/actors/params/paych_params.rs
  • src/lotus_json/actors/params/power_params.rs
  • src/lotus_json/actors/params/reward_params.rs
  • src/lotus_json/actors/params/verified_reg_params.rs
  • src/lotus_json/actors/states/account_state.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/lotus_json/actors/states/datacap_state.rs
  • src/lotus_json/actors/states/evm_state.rs
  • src/lotus_json/actors/states/init_state.rs
  • src/lotus_json/actors/states/market_state.rs
  • src/lotus_json/actors/states/miner_state.rs
  • src/lotus_json/actors/states/mod.rs
  • src/lotus_json/actors/states/multisig_state.rs
  • src/lotus_json/actors/states/payment_channel_state.rs
  • src/lotus_json/actors/states/power_states.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/lotus_json/actors/states/system_state.rs
  • src/lotus_json/actors/states/verified_reg_state.rs
  • src/lotus_json/actors/states/vesting_funds.rs
  • src/lotus_json/address.rs
  • src/lotus_json/allocation.rs
  • src/lotus_json/arc.rs
  • src/lotus_json/beacon_entry.rs
  • src/lotus_json/beneficiary_term.rs
  • src/lotus_json/big_int.rs
  • src/lotus_json/bit_field.rs
  • src/lotus_json/block_header.rs
  • src/lotus_json/bytecode_hash.rs
  • src/lotus_json/cid.rs
  • src/lotus_json/duration.rs
  • src/lotus_json/election_proof.rs
  • src/lotus_json/entry.rs
  • src/lotus_json/extended_sector_info.rs
  • src/lotus_json/filter_estimate.rs
  • src/lotus_json/gossip_block.rs
  • src/lotus_json/hash_map.rs
  • src/lotus_json/ipld.rs
  • src/lotus_json/key_info.rs
  • src/lotus_json/message.rs
  • src/lotus_json/miner_info.rs
  • src/lotus_json/miner_power.rs
  • src/lotus_json/mod.rs
  • src/lotus_json/nonempty.rs
  • src/lotus_json/opt.rs
  • src/lotus_json/padded_piece_size.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/lotus_json/po_st_proof.rs
  • src/lotus_json/power_claim.rs
  • src/lotus_json/raw_bytes.rs
  • src/lotus_json/receipt.rs
  • src/lotus_json/registered_po_st_proof.rs
  • src/lotus_json/registered_seal_proof.rs
  • src/lotus_json/sector_info.rs
  • src/lotus_json/sector_size.rs
  • src/lotus_json/signature.rs
  • src/lotus_json/signature_type.rs
  • src/lotus_json/signed_message.rs
  • src/lotus_json/ticket.rs
  • src/lotus_json/tipset_keys.rs
  • src/lotus_json/token_amount.rs
  • src/lotus_json/token_state.rs
  • src/lotus_json/tombstone.rs
  • src/lotus_json/transient_data.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/vec_u8.rs
  • src/lotus_json/verifreg_claim.rs
  • src/lotus_json/vrf_proof.rs
✅ Files skipped from review due to trivial changes (84)
  • src/eth/homestead_transaction.rs
  • src/db/car/plain.rs
  • src/db/car/forest.rs
  • src/lotus_json/verifreg_claim.rs
  • src/interpreter/errors.rs
  • src/cli_shared/cli/completion_cmd.rs
  • src/chain/store/tipset_tracker.rs
  • src/libp2p/ping.rs
  • src/libp2p/tests/decode_test.rs
  • src/cid_collections/mod.rs
  • src/beacon/mock_beacon.rs
  • src/lotus_json/padded_piece_size.rs
  • src/blocks/chain4u.rs
  • src/libp2p_bitswap/internals/prefix.rs
  • src/db/migration/db_migration.rs
  • src/beacon/drand.rs
  • src/lotus_json/miner_info.rs
  • src/libp2p/chain_exchange/mod.rs
  • src/key_management/wallet.rs
  • src/lotus_json/key_info.rs
  • src/chain_sync/validation.rs
  • src/db/mod.rs
  • src/cli/subcommands/net_cmd.rs
  • src/cli/subcommands/auth_cmd.rs
  • src/lotus_json/signature.rs
  • src/fil_cns/validation.rs
  • src/cli/subcommands/healthcheck_cmd.rs
  • src/bin/forest-wallet.rs
  • src/libp2p_bitswap/message.rs
  • src/lotus_json/actors/states/cron_state.rs
  • src/libp2p_bitswap/store.rs
  • src/libp2p/discovery.rs
  • scripts/copyright.txt
  • src/lotus_json/ticket.rs
  • src/lotus_json/ipld.rs
  • src/daemon/mod.rs
  • src/db/car/many.rs
  • src/lotus_json/cid.rs
  • src/chain/store/mod.rs
  • src/libp2p_bitswap/internals/codec.rs
  • src/lotus_json/vrf_proof.rs
  • src/chain/store/chain_store.rs
  • src/cli/subcommands/wait_api_cmd.rs
  • src/dev/main.rs
  • src/libp2p/hello/mod.rs
  • src/chain/store/errors.rs
  • src/lotus_json/signed_message.rs
  • src/libp2p_bitswap/request_manager.rs
  • src/cli/subcommands/f3_cmd.rs
  • src/interpreter/mod.rs
  • src/blocks/vrf_proof.rs
  • src/lotus_json/token_amount.rs
  • src/bin/forest.rs
  • src/lotus_json/bytecode_hash.rs
  • src/auth/mod.rs
  • src/lotus_json/transient_data.rs
  • src/chain_sync/bad_block_cache.rs
  • interop-tests/build.rs
  • src/chain/store/index.rs
  • src/libp2p/rpc/decoder.rs
  • src/db/blockstore_with_read_cache.rs
  • src/libp2p/service.rs
  • benches/example-benchmark.rs
  • src/bin/forest-dev.rs
  • interop-tests/src/tests/mod.rs
  • src/db/tests/parity_test.rs
  • src/libp2p/config.rs
  • src/daemon/context.rs
  • src/lotus_json/signature_type.rs
  • interop-tests/src/lib.rs
  • src/beacon/signatures/tests.rs
  • src/lotus_json/bit_field.rs
  • src/ipld/util.rs
  • src/lotus_json/beacon_entry.rs
  • src/db/gc/mod.rs
  • src/daemon/bundle.rs
  • src/beacon/signatures/signature_impls.rs
  • src/blocks/tests/serialization_vectors.rs
  • src/blocks/gossip_block.rs
  • src/lotus_json/hash_map.rs
  • src/lotus_json/actors/params/miner_params.rs
  • src/health/mod.rs
  • src/db/migration/v0_26_0.rs
  • src/ipld/tests/selector_explore.rs
🚧 Files skipped from review as they are similar to previous changes (157)
  • src/eth/eip_1559_transaction.rs
  • src/chain/snapshot_format.rs
  • src/db/parity_db.rs
  • src/ipld/tests/selector_gen_tests.rs
  • src/eth/mod.rs
  • src/blocks/tipset.rs
  • src/lotus_json/tombstone.rs
  • src/cli/main.rs
  • src/cli_shared/logger/mod.rs
  • src/chain_sync/metrics.rs
  • src/lotus_json/opt.rs
  • src/bin/forest-tool.rs
  • src/cli/subcommands/chain_cmd/prune.rs
  • src/f3/snapshot.rs
  • src/f3/go_ffi.rs
  • src/lotus_json/election_proof.rs
  • src/db/db_mode.rs
  • src/libp2p_bitswap/bitswap_pb.rs
  • src/lotus_json/actors/params/evm_params.rs
  • src/beacon/tests/drand.rs
  • src/interpreter/vm.rs
  • src/chain_sync/chain_follower.rs
  • src/daemon/main.rs
  • src/db/car/forest/index/mod.rs
  • src/lotus_json/actors/states/vesting_funds.rs
  • src/db/gc/snapshot.rs
  • src/cli/subcommands/shutdown_cmd.rs
  • src/lotus_json/actors/params/power_params.rs
  • src/lotus_json/actors/states/datacap_state.rs
  • src/cli/subcommands/chain_cmd.rs
  • src/beacon/signatures/mod.rs
  • src/lotus_json/vec_u8.rs
  • src/fil_cns/mod.rs
  • src/lotus_json/actors/states/payment_channel_state.rs
  • src/ipld/selector/mod.rs
  • src/lotus_json/raw_bytes.rs
  • src/lotus_json/actors/states/evm_state.rs
  • src/lotus_json/actors/states/mod.rs
  • src/lotus_json/actors/states/init_state.rs
  • src/lotus_json/actors/params/account_params.rs
  • src/lotus_json/filter_estimate.rs
  • src/lotus_json/allocation.rs
  • src/libp2p_bitswap/metrics.rs
  • src/db/ttl/mod.rs
  • src/libp2p_bitswap/behaviour.rs
  • src/lotus_json/gossip_block.rs
  • src/libp2p/keypair.rs
  • src/libp2p_bitswap/mod.rs
  • src/lotus_json/actors/params/verified_reg_params.rs
  • src/key_management/wallet_helpers.rs
  • src/lotus_json/po_st_proof.rs
  • src/db/migration/void_migration.rs
  • src/cid_collections/hash_map.rs
  • src/cli/subcommands/mod.rs
  • src/f3/mod.rs
  • src/genesis/mod.rs
  • src/libp2p/chain_exchange/message.rs
  • src/lotus_json/actors/params/init_params.rs
  • src/cli_shared/cli/mod.rs
  • src/ipld/mod.rs
  • src/eth/transaction.rs
  • interop-tests/src/tests/go_ffi.rs
  • src/cli_shared/cli/config.rs
  • src/lotus_json/miner_power.rs
  • src/libp2p/metrics.rs
  • src/cli_shared/snapshot.rs
  • src/libp2p_bitswap/internals/event_handlers.rs
  • src/blocks/ticket.rs
  • src/blocks/mod.rs
  • src/cli/subcommands/state_cmd.rs
  • src/libp2p/rpc/mod.rs
  • src/lotus_json/actors/states/account_state.rs
  • src/lotus_json/actors/mod.rs
  • src/lotus_json/extended_sector_info.rs
  • src/lotus_json/actors/params/market_params.rs
  • benches/car-index.rs
  • src/lotus_json/actors/params/cron_params.rs
  • src/lotus_json/token_state.rs
  • src/lotus_json/actors/states/market_state.rs
  • src/blocks/tests/ticket_test.rs
  • src/libp2p_bitswap/internals/mod.rs
  • src/lotus_json/actors/states/power_states.rs
  • src/db/migration/mod.rs
  • src/cli/subcommands/config_cmd.rs
  • src/chain/tests.rs
  • src/libp2p_bitswap/tests/request_manager.rs
  • src/beacon/beacon_entries.rs
  • src/blocks/header/test.rs
  • src/lotus_json/beneficiary_term.rs
  • src/lotus_json/actors/states/multisig_state.rs
  • src/blocks/block.rs
  • src/chain/store/base_fee.rs
  • src/chain_sync/consensus.rs
  • src/interpreter/fvm3.rs
  • src/lotus_json/actors/params/paych_params.rs
  • src/lotus_json/registered_po_st_proof.rs
  • src/libp2p/chain_exchange/provider.rs
  • src/cli/subcommands/snapshot_cmd.rs
  • src/db/parity_db_config.rs
  • src/eth/eip_155_transaction.rs
  • src/db/either.rs
  • src/lotus_json/sector_size.rs
  • src/libp2p/hello/behaviour.rs
  • src/cli/subcommands/info_cmd.rs
  • src/chain_sync/tipset_syncer.rs
  • src/interpreter/fvm2.rs
  • src/lotus_json/message.rs
  • src/lotus_json/actors/params/eam_params.rs
  • src/lotus_json/actors/states/miner_state.rs
  • src/libp2p/chain_exchange/behaviour.rs
  • src/beacon/mod.rs
  • src/chain_sync/mod.rs
  • src/lotus_json/actor_state.rs
  • src/documentation.rs
  • src/lotus_json/nonempty.rs
  • interop-tests/src/tests/kad_go_compat.rs
  • src/db/migration/migration_map.rs
  • src/lotus_json/actors/params/multisig_params.rs
  • src/chain_sync/sync_status.rs
  • src/lotus_json/actors/states/system_state.rs
  • src/cli/subcommands/mpool_cmd.rs
  • interop-tests/src/tests/bitswap_go_compat.rs
  • src/db/car/forest/index/hash.rs
  • src/lotus_json/actors/params/datacap_params.rs
  • src/lotus_json/duration.rs
  • src/lotus_json/power_claim.rs
  • src/key_management/keystore.rs
  • src/benchmark_private/tipset_validation.rs
  • src/lotus_json/actors/params/reward_params.rs
  • src/lotus_json/entry.rs
  • src/lotus_json/registered_seal_proof.rs
  • src/db/car/any.rs
  • src/cli_shared/mod.rs
  • benches/tipset-validation.rs
  • src/lotus_json/actors/states/verified_reg_state.rs
  • src/cli/mod.rs
  • src/key_management/mod.rs
  • src/health/endpoints.rs
  • src/chain/mod.rs
  • src/db/blockstore_with_write_buffer.rs
  • src/db/migration/v0_22_1.rs
  • src/lotus_json/address.rs
  • src/db/tests/mem_test.rs
  • src/chain_sync/network_context.rs
  • src/cli/subcommands/sync_cmd.rs
  • src/blocks/header.rs
  • src/db/memory.rs
  • src/cli/humantoken.rs
  • src/ipld/selector/empty_map.rs
  • src/libp2p/gossip_params.rs
  • src/lotus_json/big_int.rs
  • src/lotus_json/sector_info.rs
  • src/dev/subcommands/mod.rs
  • src/cli_shared/cli/client.rs
  • src/lotus_json/actors/params/mod.rs
  • src/ipld/tests/cbor_test.rs
  • src/cid_collections/small_cid_vec.rs
🧰 Additional context used
🧠 Learnings (16)
📓 Common learnings
Learnt from: LesnyRumcajs
Repo: ChainSafe/forest PR: 5907
File: src/rpc/methods/state.rs:523-570
Timestamp: 2025-08-06T15:44:33.467Z
Learning: LesnyRumcajs prefers to rely on BufWriter's Drop implementation for automatic flushing rather than explicit flush() calls in Forest codebase.
📚 Learning: 2026-01-05T12:54:40.850Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6381
File: src/lotus_json/actors/states/cron_state.rs:8-8
Timestamp: 2026-01-05T12:54:40.850Z
Learning: In Rust code reviews, do not derive Eq for a struct if any field does not implement Eq (e.g., types from external dependencies). If a type like CronStateLotusJson includes fields wrapping external dependencies that lack Eq, derive PartialEq (or implement PartialEq manually) but avoid deriving Eq. This ensures comparisons compile and reflect actual equivalence semantics. When needed, consider implementing custom PartialEq (and possibly Eq) only after ensuring all fields (or wrappers) implement Eq, or keep PartialEq-only if full equality semantics cannot be expressed.

Applied to files:

  • src/libp2p/mod.rs
  • src/db/tests/db_utils/mod.rs
  • src/dev/mod.rs
  • src/lotus_json/tipset_keys.rs
  • src/db/tests/subtests/mod.rs
  • src/chain_sync/chain_muxer.rs
  • src/f3/snapshot/tests.rs
  • src/cli/subcommands/chain_cmd/list.rs
  • src/daemon/db_util.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/lotus_json/mod.rs
  • build.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/lib.rs
  • src/libp2p/behaviour.rs
  • src/libp2p/peer_manager.rs
  • src/fil_cns/weight.rs
  • src/libp2p/hello/codec.rs
  • src/libp2p/hello/message.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/arc.rs
  • src/lotus_json/block_header.rs
  • src/db/car/mod.rs
  • src/chain/weight.rs
  • src/db/tests/db_utils/parity.rs
  • src/bin/forest-cli.rs
  • src/cid_collections/hash_set.rs
  • src/benchmark_private/mod.rs
  • src/key_management/errors.rs
  • src/lotus_json/receipt.rs
  • src/blocks/election_proof.rs
  • src/interpreter/fvm4.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • src/beacon/signatures/public_key_impls.rs
📚 Learning: 2026-01-05T12:56:13.802Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6381
File: src/lotus_json/actors/states/evm_state.rs:41-44
Timestamp: 2026-01-05T12:56:13.802Z
Learning: In Rust codebases (e.g., Forest), do not add #[cfg(test)] to functions already annotated with #[test]. The #[test] attribute ensures the function is compiled only for tests, so a separate #[cfg(test)] is redundant and can be removed if present. Apply this check to all Rust files that contain #[test] functions.

Applied to files:

  • src/libp2p/mod.rs
  • src/db/tests/db_utils/mod.rs
  • src/dev/mod.rs
  • src/lotus_json/tipset_keys.rs
  • src/db/tests/subtests/mod.rs
  • src/chain_sync/chain_muxer.rs
  • src/f3/snapshot/tests.rs
  • src/cli/subcommands/chain_cmd/list.rs
  • src/daemon/db_util.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/lotus_json/mod.rs
  • build.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/lib.rs
  • src/libp2p/behaviour.rs
  • src/libp2p/peer_manager.rs
  • src/fil_cns/weight.rs
  • src/libp2p/hello/codec.rs
  • src/libp2p/hello/message.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/arc.rs
  • src/lotus_json/block_header.rs
  • src/db/car/mod.rs
  • src/chain/weight.rs
  • src/db/tests/db_utils/parity.rs
  • src/bin/forest-cli.rs
  • src/cid_collections/hash_set.rs
  • src/benchmark_private/mod.rs
  • src/key_management/errors.rs
  • src/lotus_json/receipt.rs
  • src/blocks/election_proof.rs
  • src/interpreter/fvm4.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • src/beacon/signatures/public_key_impls.rs
📚 Learning: 2025-08-08T12:10:45.218Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5867
File: src/ipld/util.rs:553-558
Timestamp: 2025-08-08T12:10:45.218Z
Learning: Forest project targets Rust stable >=1.89; features stabilized in 1.88 like let-chains are acceptable in this codebase.

Applied to files:

  • src/lotus_json/tipset_keys.rs
  • src/f3/snapshot/tests.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/lib.rs
  • src/libp2p/behaviour.rs
  • src/libp2p/peer_manager.rs
  • src/libp2p/hello/codec.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/arc.rs
  • src/db/car/mod.rs
  • src/cid_collections/hash_set.rs
  • src/benchmark_private/mod.rs
  • src/key_management/errors.rs
  • src/interpreter/fvm4.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • src/beacon/signatures/public_key_impls.rs
📚 Learning: 2025-09-11T16:03:14.328Z
Learnt from: akaladarshi
Repo: ChainSafe/forest PR: 6000
File: src/tool/subcommands/api_cmd/state_decode_params_tests/miner.rs:4-9
Timestamp: 2025-09-11T16:03:14.328Z
Learning: In the Forest codebase's state_decode_params_tests module, common imports like `to_vec`, `TokenAmount`, `Cid`, etc. are centralized in the mod.rs file and made available to submodules through `use super::*;`, eliminating the need for duplicate imports in individual test files.

Applied to files:

  • src/lotus_json/tipset_keys.rs
  • src/f3/snapshot/tests.rs
  • src/lotus_json/actors/states/reward_state.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/libp2p/hello/codec.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/arc.rs
  • src/db/car/mod.rs
  • src/cid_collections/hash_set.rs
  • src/benchmark_private/mod.rs
  • src/cli/subcommands/f3_cmd/tests.rs
  • src/beacon/signatures/public_key_impls.rs
📚 Learning: 2025-08-08T12:11:55.266Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5867
File: src/ipld/util.rs:461-487
Timestamp: 2025-08-08T12:11:55.266Z
Learning: Forest (src/ipld/util.rs, Rust): In UnorderedChainStream::poll_next, dropping `extract_sender` (when no more tipsets and the extract queue is empty) is the intended shutdown signal for workers. Any subsequent attempt to enqueue work after this drop is a logic error and should be treated as an error; do not change `send()` to ignore a missing sender.

Applied to files:

  • src/daemon/db_util.rs
  • src/fil_cns/weight.rs
  • src/benchmark_private/mod.rs
  • src/interpreter/fvm4.rs
📚 Learning: 2025-08-18T12:25:29.183Z
Learnt from: akaladarshi
Repo: ChainSafe/forest PR: 5896
File: src/lotus_json/actor_states/methods/verified_reg_actor.rs:133-137
Timestamp: 2025-08-18T12:25:29.183Z
Learning: In Lotus JSON for verified registry actor, the SectorAllocationClaimsLotusJson struct uses "SectorExpiry" as the field name for the expiry field, not "Expiry". The current code with #[serde(rename = "SectorExpiry")] is correct.

Applied to files:

  • src/lotus_json/actors/states/reward_state.rs
  • src/lotus_json/mod.rs
  • src/lotus_json/pending_beneficiary_change.rs
  • src/lotus_json/vec.rs
  • src/lotus_json/arc.rs
  • src/lotus_json/block_header.rs
  • src/lotus_json/receipt.rs
📚 Learning: 2025-08-04T13:36:22.993Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5835
File: src/chain/tests.rs:58-76
Timestamp: 2025-08-04T13:36:22.993Z
Learning: In the Forest codebase, `Vec<u8>` can be used as an `AsyncWrite` implementation in test contexts. The user confirmed that tests using `&mut Vec<u8>` with `export` and `export_v2` functions compile and pass both locally and on CI.

Applied to files:

  • build.rs
📚 Learning: 2025-08-04T13:36:22.993Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5835
File: src/chain/tests.rs:58-76
Timestamp: 2025-08-04T13:36:22.993Z
Learning: In projects using tokio with "full" features enabled, `Vec<u8>` implements `AsyncWrite` through blanket implementations provided by Tokio. This allows `&mut Vec<u8>` to be used directly with async write operations without needing additional wrapper types like `SyncIoBridge`.

Applied to files:

  • build.rs
📚 Learning: 2026-01-05T13:02:14.604Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6381
File: src/shim/actors/builtin/cron/mod.rs:47-47
Timestamp: 2026-01-05T13:02:14.604Z
Learning: The Entry enum in src/shim/actors/builtin/cron/mod.rs cannot derive Eq because it wraps external fil_actor_cron_state::vX::Entry types (v8-v17) that don't implement Eq. Only PartialEq can be derived for this enum due to this external dependency constraint.

Applied to files:

  • src/libp2p/behaviour.rs
  • src/libp2p/peer_manager.rs
  • src/lotus_json/block_header.rs
📚 Learning: 2025-10-17T09:36:15.757Z
Learnt from: elmattic
Repo: ChainSafe/forest PR: 6128
File: src/ipld/util.rs:23-30
Timestamp: 2025-10-17T09:36:15.757Z
Learning: Always run `cargo check` or `cargo build` to verify actual compilation errors in the Forest codebase before flagging them as issues. Do not rely solely on documentation or assumptions about trait implementations.

Applied to files:

  • src/db/car/mod.rs
  • src/bin/forest-cli.rs
  • src/benchmark_private/mod.rs
📚 Learning: 2025-08-11T12:42:42.848Z
Learnt from: elmattic
Repo: ChainSafe/forest PR: 5836
File: src/tool/subcommands/api_cmd/api_run_tests.rs:186-190
Timestamp: 2025-08-11T12:42:42.848Z
Learning: In the Forest project's test infrastructure (specifically in `src/tool/subcommands/api_cmd/api_run_tests.rs`), the team prefers to use only `ws` (non-secure WebSocket) connections for simplicity in their stateful API test scenarios, as security is not a concern in their testing context.

Applied to files:

  • src/db/car/mod.rs
📚 Learning: 2025-08-08T12:10:45.218Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5867
File: src/ipld/util.rs:553-558
Timestamp: 2025-08-08T12:10:45.218Z
Learning: Forest pins Rust toolchain to 1.89.0 via rust-toolchain.toml; features stabilized in 1.88 (e.g., let-chains) are acceptable in this codebase.

Applied to files:

  • src/db/car/mod.rs
📚 Learning: 2025-08-07T13:39:15.107Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5886
File: interop-tests/src/tests/go_app/gen.go:29-29
Timestamp: 2025-08-07T13:39:15.107Z
Learning: Auto-generated files like those created by rust2go (indicated by "Generated by rust2go. Please DO NOT edit this C part manually." comment) in the Forest project should be skipped during code review as they are not intended for manual editing.

Applied to files:

  • src/bin/forest-cli.rs
📚 Learning: 2025-10-17T14:24:47.046Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 6167
File: src/tool/subcommands/state_compute_cmd.rs:89-91
Timestamp: 2025-10-17T14:24:47.046Z
Learning: In `src/tool/subcommands/state_compute_cmd.rs`, when using `ReadOpsTrackingStore` to generate minimal snapshots, `HEAD_KEY` should be written to `db.tracker` (not `db` itself) before calling `export_forest_car()`, because the export reads from the tracker MemoryDB which accumulates only the accessed data during computation.

Applied to files:

  • src/benchmark_private/mod.rs
📚 Learning: 2025-08-11T14:00:47.060Z
Learnt from: hanabi1224
Repo: ChainSafe/forest PR: 5886
File: src/daemon/db_util.rs:236-259
Timestamp: 2025-08-11T14:00:47.060Z
Learning: In Forest's snapshot import (`src/daemon/db_util.rs`), when F3 CID is present in snapshot metadata but the actual F3 data is missing, this should cause a hard error as it indicates snapshot corruption. Only errors during the F3 import process itself (after data is successfully retrieved) should be non-fatal and logged.

Applied to files:

  • src/benchmark_private/mod.rs
⏰ 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). (8)
  • GitHub Check: All lint checks
  • GitHub Check: Coverage
  • GitHub Check: Build forest binaries on Linux AMD64
  • GitHub Check: rubocop
  • GitHub Check: Build MacOS
  • GitHub Check: tests-release
  • GitHub Check: cargo-publish-dry-run
  • GitHub Check: Build Ubuntu
🔇 Additional comments (35)
src/db/tests/db_utils/parity.rs (1)

1-1: Header year bump to 2026 looks correct.
No functional impact in this file.

src/fil_cns/weight.rs (1)

1-1: Header-only change looks good (year bump to 2026).
No functional impact in this file.

src/libp2p/behaviour.rs (1)

1-1: Header year bump looks correct.
No functional impact; aligns with PR objective to update copyright year to 2026.

src/libp2p/peer_manager.rs (1)

1-1: Header-only change (year bump) looks good.
No functional impact in this file.

src/lotus_json/tipset_keys.rs (1)

1-1: Header year bump looks correct.
Non-functional change only; no concerns.

src/beacon/signatures/public_key_impls.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year range has been appropriately updated to 2019-2026 for the new year.

src/lotus_json/block_header.rs (1)

1-1: LGTM!

Routine copyright year update for 2026.

src/key_management/errors.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year has been properly updated to 2026, which is appropriate for the new year.

src/bin/forest-cli.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year has been appropriately updated to 2026, consistent with the PR objectives.

src/blocks/election_proof.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year range has been appropriately updated to 2019-2026 for the new year. This is a routine maintenance change with no functional impact.

src/db/tests/db_utils/mod.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright header has been properly updated to 2019-2026, consistent with the PR objectives.

src/db/tests/subtests/mod.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright header has been properly updated to 2019-2026, consistent with the PR objectives.

src/cli/subcommands/chain_cmd/list.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year has been properly updated to 2026, consistent with the PR objectives.

src/interpreter/fvm4.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year has been properly updated to 2026, aligning with the PR objectives.

src/cid_collections/hash_set.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year range has been appropriately updated to 2019-2026 for the new year.

src/lotus_json/actors/states/reward_state.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year has been appropriately updated to 2026.

src/lotus_json/pending_beneficiary_change.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright year has been properly updated to 2026, consistent with the PR objectives.

src/libp2p/hello/message.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright header has been properly updated to 2026.

src/libp2p/mod.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright header has been properly updated to 2026.

src/f3/snapshot/tests.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright header has been properly updated to 2026.

src/dev/mod.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright header has been properly updated to 2026.

src/cli/subcommands/f3_cmd/tests.rs (1)

1-1: LGTM! Copyright year updated correctly.

The copyright header has been properly updated to 2026.

src/db/car/mod.rs (1)

1-1: Header-only year bump looks good. No functional impact.

src/lib.rs (1)

1-1: Header-only year bump looks good. No functional impact.

src/libp2p/hello/codec.rs (1)

1-1: Header-only year bump looks good. No functional impact.

src/chain/weight.rs (1)

1-1: Header-only year bump looks good. No functional impact.

src/chain_sync/chain_muxer.rs (1)

1-1: LGTM!

Copyright year correctly updated to 2026.

src/lotus_json/arc.rs (1)

1-1: LGTM!

Copyright year correctly updated to 2026.

src/lotus_json/vec.rs (1)

1-1: LGTM!

Copyright year correctly updated to 2026.

src/benchmark_private/mod.rs (1)

1-1: LGTM!

Copyright year correctly updated to 2026.

build.rs (1)

1-1: LGTM!

Copyright year correctly updated to 2026.

src/daemon/db_util.rs (1)

1-1: LGTM!

Copyright year correctly updated to 2026.

src/lotus_json/receipt.rs (1)

1-1: LGTM!

Copyright year correctly updated to 2026.

src/lotus_json/mod.rs (1)

1-1: LGTM!

The copyright year update to 2026 is correct and appropriate.

mise-tasks/add_license.sh (1)

6-6: LGTM! Year updated correctly.

The copyright year pattern has been updated to 2019-2026, which aligns with the PR objective.

@LesnyRumcajs LesnyRumcajs added this pull request to the merge queue Jan 9, 2026
Merged via the queue into main with commit 78af57e Jan 9, 2026
43 checks passed
@LesnyRumcajs LesnyRumcajs deleted the update-license branch January 9, 2026 12:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants