Conversation
WalkthroughVersion bumps applied across multiple program library crates with version increments ranging from patch to major updates. Additionally, metadata fields (description, license) were added to two crates, and dev-dependency features were updated. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (2)
Cargo.lockis excluded by!**/*.lockand included by noneCargo.tomlis excluded by none and included by none
📒 Files selected for processing (10)
program-libs/account-checks/Cargo.toml(1 hunks)program-libs/array-map/Cargo.toml(1 hunks)program-libs/batched-merkle-tree/Cargo.toml(1 hunks)program-libs/compressed-account/Cargo.toml(1 hunks)program-libs/compressible/Cargo.toml(1 hunks)program-libs/concurrent-merkle-tree/Cargo.toml(1 hunks)program-libs/ctoken-interface/Cargo.toml(2 hunks)program-libs/indexed-merkle-tree/Cargo.toml(1 hunks)program-libs/merkle-tree-metadata/Cargo.toml(1 hunks)program-libs/verifier/Cargo.toml(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
program-libs/*/Cargo.toml
📄 CodeRabbit inference engine (CLAUDE.md)
Program-libs crates must depend on other program-libs or external crates only, not on programs or sdk-libs
Files:
program-libs/account-checks/Cargo.tomlprogram-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/compressible/Cargo.tomlprogram-libs/verifier/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.tomlprogram-libs/array-map/Cargo.tomlprogram-libs/compressed-account/Cargo.tomlprogram-libs/ctoken-interface/Cargo.toml
🧠 Learnings (49)
📓 Common learnings
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-account-checks crate for account validation and discriminator checks
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-zero-copy crate for zero-copy serialization for efficient account data access
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-compressed-account crate for compressed account types and utilities
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-verifier crate for ZKP verification of batch updates
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-merkle-tree-metadata crate for shared metadata structures
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-06T00:50:31.314Z
Learning: Applies to programs/*/Cargo.toml : Programs must depend on program-libs and external crates only; must not depend on sdk-libs without devenv feature
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-06T00:50:31.314Z
Learning: Applies to sdk-libs/*/Cargo.toml : SDK libs must depend on program-libs, light-prover-client and external crates only; must not depend on programs without devenv feature
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-06T00:50:31.314Z
Learning: Applies to program-libs/*/Cargo.toml : Program-libs crates must depend on other program-libs or external crates only, not on programs or sdk-libs
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Use light-merkle-tree-reference crate as dev dependency for reference implementation of indexed Merkle trees and generating constants
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-account-checks crate for account validation and discriminator checks
Applied to files:
program-libs/account-checks/Cargo.tomlprogram-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.tomlprogram-libs/compressed-account/Cargo.tomlprogram-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-zero-copy crate for zero-copy serialization for efficient account data access
Applied to files:
program-libs/account-checks/Cargo.tomlprogram-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/compressible/Cargo.tomlprogram-libs/verifier/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.tomlprogram-libs/array-map/Cargo.tomlprogram-libs/compressed-account/Cargo.tomlprogram-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-11-24T17:58:50.237Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/account-checks/docs/ACCOUNT_CHECKS.md:0-0
Timestamp: 2025-11-24T17:58:50.237Z
Learning: Applies to program-libs/account-checks/docs/program-libs/account-checks/src/checks.rs : Use generic `AccountInfoTrait` parameter for all account validation functions to enable compatibility with both Solana and Pinocchio runtimes
Applied to files:
program-libs/account-checks/Cargo.toml
📚 Learning: 2025-11-24T17:59:23.357Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/account-checks/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:59:23.357Z
Learning: Applies to program-libs/account-checks/docs/src/**/*.rs : Use 8-byte discriminators for account type identification and implement the Discriminator trait for account identification
Applied to files:
program-libs/account-checks/Cargo.tomlprogram-libs/compressed-account/Cargo.toml
📚 Learning: 2025-11-24T17:59:54.233Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/account-checks/docs/PACKED_ACCOUNTS.md:0-0
Timestamp: 2025-11-24T17:59:54.233Z
Learning: Applies to program-libs/account-checks/docs/program-libs/account-checks/src/**/*.rs : Provide descriptive names in ProgramPackedAccounts error messages (e.g., 'token_mint' instead of 'account')
Applied to files:
program-libs/account-checks/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-compressed-account crate for compressed account types and utilities
Applied to files:
program-libs/account-checks/Cargo.tomlprogram-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/compressible/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.tomlprogram-libs/compressed-account/Cargo.tomlprogram-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-11-24T17:59:36.701Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/account-checks/docs/DISCRIMINATOR.md:0-0
Timestamp: 2025-11-24T17:59:36.701Z
Learning: Applies to program-libs/account-checks/docs/**/account-checks/**/*.rs : Use check_account_info<T> function for full account validation including discriminator and ownership checks
Applied to files:
program-libs/account-checks/Cargo.toml
📚 Learning: 2025-11-24T17:59:03.485Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/account-checks/docs/ACCOUNT_INFO_TRAIT.md:0-0
Timestamp: 2025-11-24T17:59:03.485Z
Learning: Applies to program-libs/account-checks/docs/**/*.rs : Generic functions accepting AccountInfoTrait should use trait bounds in function signatures rather than concrete account types
Applied to files:
program-libs/account-checks/Cargo.toml
📚 Learning: 2025-11-24T17:59:23.357Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/account-checks/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:59:23.357Z
Learning: Applies to program-libs/account-checks/docs/src/**/*.rs : Use numeric error codes in the 12006-12021 range for account check errors
Applied to files:
program-libs/account-checks/Cargo.toml
📚 Learning: 2025-11-24T18:00:13.178Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/docs/CONFIG_ACCOUNT.md:0-0
Timestamp: 2025-11-24T18:00:13.178Z
Learning: Applies to program-libs/compressible/docs/**/*.rs : Validate CompressibleConfig account ownership against Light Registry Program address (`Lighton6oQpVkeewmo2mcPTQQp7kYHr4fWpAgJyEmDX`) before processing
Applied to files:
program-libs/account-checks/Cargo.tomlprogram-libs/compressible/Cargo.tomlprogram-libs/compressed-account/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-merkle-tree-metadata crate for shared metadata structures
Applied to files:
program-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/compressible/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.tomlprogram-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Use light-merkle-tree-reference crate as dev dependency for reference implementation of indexed Merkle trees and generating constants
Applied to files:
program-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.tomlprogram-libs/array-map/Cargo.tomlprogram-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-verifier crate for ZKP verification of batch updates
Applied to files:
program-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/verifier/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-hasher crate for Poseidon hash implementation in hash chains and tree operations
Applied to files:
program-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.tomlprogram-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/*.rs : Use constants from constants.rs including ADDRESS_TREE_INIT_ROOT_40 generated from IndexedMerkleTree reference implementation
Applied to files:
program-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-bloom-filter crate for bloom filter implementation in input queues
Applied to files:
program-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/rollover_{state,address}_tree.rs : Trees must support rollover when reaching capacity (2^height leaves) by creating a new tree and marking the old tree as rolled over, preserving old tree roots
Applied to files:
program-libs/concurrent-merkle-tree/Cargo.tomlprogram-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/indexed-merkle-tree/Cargo.toml
📚 Learning: 2025-11-24T17:56:20.711Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/INITIALIZE_ADDRESS_TREE.md:0-0
Timestamp: 2025-11-24T17:56:20.711Z
Learning: Applies to program-libs/batched-merkle-tree/docs/src/merkle_tree_metadata.rs : Define `BatchedMerkleTreeMetadata` structure in `src/merkle_tree_metadata.rs`. Include tree_type, associated_queue, rollover_fee calculation, access_metadata (owner, program_owner, forester), rollover_metadata (index, rollover_fee, rollover_threshold, network_fee, close_threshold, additional_bytes), hashed_pubkey, next_index, and sequence_number fields.
Applied to files:
program-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.toml
📚 Learning: 2025-11-24T17:58:35.079Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/UPDATE_FROM_OUTPUT_QUEUE.md:0-0
Timestamp: 2025-11-24T17:58:35.079Z
Learning: Applies to program-libs/batched-merkle-tree/docs/src/merkle_tree.rs : After successful ZKP verification, increment tree `sequence_number` by 1 (tracks number of tree updates) and append `new_root` to `root_history` cyclic buffer
Applied to files:
program-libs/merkle-tree-metadata/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/{merkle_tree,merkle_tree_metadata}.rs : Trees must maintain a cyclic buffer of recent roots (default: 200) enabling validity proofs for recently spent compressed accounts
Applied to files:
program-libs/merkle-tree-metadata/Cargo.tomlprogram-libs/batched-merkle-tree/Cargo.toml
📚 Learning: 2025-11-24T18:00:13.178Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/docs/CONFIG_ACCOUNT.md:0-0
Timestamp: 2025-11-24T18:00:13.178Z
Learning: Applies to program-libs/compressible/docs/**/*.rs : Derive CompressibleConfig PDA using seeds `[b"compressible_config", version.to_le_bytes()]` with version parameter to support multiple config versions
Applied to files:
program-libs/compressible/Cargo.toml
📚 Learning: 2025-11-24T17:55:17.323Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-libs/macros/src/compressible/README.md:0-0
Timestamp: 2025-11-24T17:55:17.323Z
Learning: Applies to sdk-libs/macros/src/compressible/**/mod.rs : Module declaration should be kept in `mod.rs`
Applied to files:
program-libs/compressible/Cargo.toml
📚 Learning: 2025-11-24T17:55:17.323Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-libs/macros/src/compressible/README.md:0-0
Timestamp: 2025-11-24T17:55:17.323Z
Learning: Applies to sdk-libs/macros/src/compressible/**/traits.rs : Core trait implementations (`HasCompressionInfo`, `CompressAs`, `Compressible`) should be defined in `traits.rs`
Applied to files:
program-libs/compressible/Cargo.toml
📚 Learning: 2025-11-24T18:00:13.178Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/docs/CONFIG_ACCOUNT.md:0-0
Timestamp: 2025-11-24T18:00:13.178Z
Learning: Applies to program-libs/compressible/docs/**/config.rs : Set CompressibleConfig default values for CToken V1: base_rent = 1220, compression_cost = 11000, lamports_per_byte_per_epoch = 10, and address_space[0] = `amt2kaJA14v3urZbZvnc5v2np8jqvc4Z8zDep5wbtzx`
Applied to files:
program-libs/compressible/Cargo.toml
📚 Learning: 2025-11-24T17:55:17.323Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-libs/macros/src/compressible/README.md:0-0
Timestamp: 2025-11-24T17:55:17.323Z
Learning: Applies to sdk-libs/macros/src/compressible/**/pack_unpack.rs : Pubkey compression logic and `PackedXxx` struct generation with Pack/Unpack trait implementations should be in `pack_unpack.rs`
Applied to files:
program-libs/compressible/Cargo.toml
📚 Learning: 2025-12-06T00:49:21.983Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/CLAUDE.md:0-0
Timestamp: 2025-12-06T00:49:21.983Z
Learning: Applies to program-libs/compressible/src/config.rs : CompressibleConfig account structure must support serialization via Anchor, Pinocchio, and Borsh formats for Light Registry program integration
Applied to files:
program-libs/compressible/Cargo.tomlprogram-libs/compressed-account/Cargo.tomlprogram-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-11-24T18:00:48.449Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/docs/SOLANA_RENT.md:0-0
Timestamp: 2025-11-24T18:00:48.449Z
Learning: Applies to program-libs/compressible/docs/**/*.rs : Light Protocol accounts must satisfy both Solana rent exemption and Light Protocol rent requirements, plus an 11,000 lamport compression incentive during creation
Applied to files:
program-libs/compressible/Cargo.tomlprogram-libs/compressed-account/Cargo.toml
📚 Learning: 2025-11-24T18:00:48.449Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/docs/SOLANA_RENT.md:0-0
Timestamp: 2025-11-24T18:00:48.449Z
Learning: Applies to program-libs/compressible/docs/**/*.rs : Light Protocol rent is calculated per epoch as: 1220 minimum + (data_bytes * 10) lamports per epoch
Applied to files:
program-libs/compressible/Cargo.toml
📚 Learning: 2025-11-24T17:54:42.219Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: programs/system/README.md:0-0
Timestamp: 2025-11-24T17:54:42.219Z
Learning: Light Protocol system program is usable for ZK Compression on Solana
Applied to files:
program-libs/compressible/Cargo.toml
📚 Learning: 2025-11-24T17:54:07.145Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/macros/README.md:0-0
Timestamp: 2025-11-24T17:54:07.145Z
Learning: This is a proc-macros crate for the Light Protocol - focus on maintaining macro correctness and performance
Applied to files:
program-libs/compressible/Cargo.toml
📚 Learning: 2025-12-06T00:50:31.314Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-06T00:50:31.314Z
Learning: Applies to sdk-libs/*/Cargo.toml : SDK libs must depend on program-libs, light-prover-client and external crates only; must not depend on programs without devenv feature
Applied to files:
program-libs/verifier/Cargo.toml
📚 Learning: 2025-12-06T00:49:52.795Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-tests/CLAUDE.md:0-0
Timestamp: 2025-12-06T00:49:52.795Z
Learning: Applies to sdk-tests/sdk-libs/light-sparse-merkle-tree/**/*.rs : Run unit tests for light-sparse-merkle-tree using `cargo test -p light-sparse-merkle-tree`
Applied to files:
program-libs/indexed-merkle-tree/Cargo.toml
📚 Learning: 2025-11-24T17:56:00.229Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0
Timestamp: 2025-11-24T17:56:00.229Z
Learning: Applies to program-libs/batched-merkle-tree/docs/**/*.rs : Error handling must use BatchedMerkleTreeError enum from errors.rs with u32 error codes in the 14301-14312 range
Applied to files:
program-libs/batched-merkle-tree/Cargo.toml
📚 Learning: 2025-11-24T17:55:17.323Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-libs/macros/src/compressible/README.md:0-0
Timestamp: 2025-11-24T17:55:17.323Z
Learning: Applies to sdk-libs/macros/src/compressible/**/variant_enum.rs : Account variant enum (`CompressedAccountVariant`) generation and `CompressedAccountData` wrapper struct should be implemented in `variant_enum.rs`
Applied to files:
program-libs/compressed-account/Cargo.toml
📚 Learning: 2025-11-24T18:02:15.670Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: programs/registry/CLAUDE.md:0-0
Timestamp: 2025-11-24T18:02:15.670Z
Learning: Applies to programs/registry/src/account_compression_cpi/mod.rs : Export new wrapper modules in `account_compression_cpi/mod.rs` using `pub mod new_operation;` and `pub use new_operation::*;`, then import in `lib.rs`
Applied to files:
program-libs/compressed-account/Cargo.toml
📚 Learning: 2025-11-24T18:01:30.012Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-tests/CLAUDE.md:0-0
Timestamp: 2025-11-24T18:01:30.012Z
Learning: Run account-compression tests using `cargo test-sbf -p account-compression-test` to test core account compression program (Merkle tree management)
Applied to files:
program-libs/compressed-account/Cargo.toml
📚 Learning: 2025-11-24T18:00:13.178Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/docs/CONFIG_ACCOUNT.md:0-0
Timestamp: 2025-11-24T18:00:13.178Z
Learning: Applies to program-libs/compressible/docs/**/programs/**/*.rs : Use Anchor's `AccountDeserialize::try_deserialize` for CompressibleConfig when Anchor feature is enabled, which includes automatic discriminator validation
Applied to files:
program-libs/compressed-account/Cargo.toml
📚 Learning: 2025-11-24T18:00:13.178Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/docs/CONFIG_ACCOUNT.md:0-0
Timestamp: 2025-11-24T18:00:13.178Z
Learning: Applies to program-libs/compressible/docs/**/*.rs : Use CompressibleConfig discriminator `[180, 4, 231, 26, 220, 144, 55, 168]` for account validation in Solana programs and clients
Applied to files:
program-libs/compressed-account/Cargo.toml
📚 Learning: 2025-12-06T00:49:13.007Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/account-checks/CLAUDE.md:0-0
Timestamp: 2025-12-06T00:49:13.007Z
Learning: Use unified account validation pattern across light-compressed-token, light-system, and light-compressible packages
Applied to files:
program-libs/compressed-account/Cargo.toml
📚 Learning: 2025-12-06T00:49:21.983Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/compressible/CLAUDE.md:0-0
Timestamp: 2025-12-06T00:49:21.983Z
Learning: The codebase provides rent calculation algorithms and account structure definitions used across light-compressed-token, light-registry, compressed-token-sdk, and related programs
Applied to files:
program-libs/compressed-account/Cargo.toml
📚 Learning: 2025-11-24T17:57:39.230Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: program-libs/batched-merkle-tree/docs/QUEUE_ACCOUNT.md:0-0
Timestamp: 2025-11-24T17:57:39.230Z
Learning: Applies to program-libs/batched-merkle-tree/docs/src/queue.rs : Validate account ownership by Light account compression program using `check_owner` from `light-account-checks` when deserializing `BatchedQueueAccount` with `output_from_account_info`
Applied to files:
program-libs/compressed-account/Cargo.toml
📚 Learning: 2025-12-06T00:49:37.752Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: programs/compressed-token/program/CLAUDE.md:0-0
Timestamp: 2025-12-06T00:49:37.752Z
Learning: Applies to programs/compressed-token/program/program-libs/ctoken-types/src/{state,instructions}/**/*.rs : All program state and instruction data structures must be defined in the program-libs/ctoken-types crate (light-ctoken-interface) under state/ and instructions/ directories to allow SDKs to import types without pulling in program dependencies
Applied to files:
program-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-12-07T00:45:07.921Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-tests/sdk-ctoken-test/README.md:0-0
Timestamp: 2025-12-07T00:45:07.921Z
Learning: Applies to sdk-tests/sdk-ctoken-test/**/Cargo.toml : Use path references in Cargo.toml for local SDK dependencies like light-ctoken-sdk, light-compressed-token-types, light-sdk, and light-sdk-types
Applied to files:
program-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-12-06T00:49:52.795Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-tests/CLAUDE.md:0-0
Timestamp: 2025-12-06T00:49:52.795Z
Learning: Applies to sdk-tests/sdk-libs/light-ctoken-sdk/**/*.rs : Run unit tests for light-ctoken-sdk using `cargo test -p light-ctoken-sdk`
Applied to files:
program-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-12-06T00:49:57.458Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-tests/sdk-token-test/CLAUDE.md:0-0
Timestamp: 2025-12-06T00:49:57.458Z
Learning: Applies to sdk-tests/sdk-token-test/**/*test.rs : Tests should use light-ctoken-sdk functions from sdk-libs/compressed-token-sdk for testing ctoken instructions
Applied to files:
program-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-12-07T00:45:07.921Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-tests/sdk-ctoken-test/README.md:0-0
Timestamp: 2025-12-07T00:45:07.921Z
Learning: Applies to sdk-tests/sdk-ctoken-test/**/*.rs : Use the builder pattern from `light-ctoken-sdk::ctoken` module for CPI operations in native Solana programs
Applied to files:
program-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-12-06T00:49:52.795Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-tests/CLAUDE.md:0-0
Timestamp: 2025-12-06T00:49:52.795Z
Learning: Applies to sdk-tests/sdk-libs/light-compressed-token-types/**/*.rs : Run unit tests for light-compressed-token-types using `cargo test -p light-compressed-token-types`
Applied to files:
program-libs/ctoken-interface/Cargo.toml
📚 Learning: 2025-12-07T00:45:07.921Z
Learnt from: CR
Repo: Lightprotocol/light-protocol PR: 0
File: sdk-tests/sdk-ctoken-test/README.md:0-0
Timestamp: 2025-12-07T00:45:07.921Z
Learning: Applies to sdk-tests/sdk-ctoken-test/**/Xargo.toml : Use Xargo.toml for Solana BPF build configuration in native Solana programs
Applied to files:
program-libs/ctoken-interface/Cargo.toml
⏰ Context from checks skipped due to timeout of 900000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (10)
- GitHub Check: Forester e2e test
- GitHub Check: Test batched-merkle-tree-simulate
- GitHub Check: Test program-libs-fast
- GitHub Check: Test program-libs-slow
- GitHub Check: programs (system-cpi-test-v2-functional-account-infos, ["cargo-test-sbf -p system-cpi-v2-test -- ...
- GitHub Check: programs (system-cpi-test-v2-functional-read-only, ["cargo-test-sbf -p system-cpi-v2-test -- func...
- GitHub Check: programs (system-cpi-test, ["cargo-test-sbf -p system-cpi-test", "cargo test -p light-system-prog...
- GitHub Check: programs (compressed-token-and-e2e, ["cargo test -p light-compressed-token", "cargo-test-sbf -p c...
- GitHub Check: programs (account-compression-and-registry, ["cargo-test-sbf -p account-compression-test", "cargo...
- GitHub Check: programs (light-system-program-compression, ["cargo-test-sbf -p system-test -- test_with_compress...
🔇 Additional comments (12)
program-libs/account-checks/Cargo.toml (1)
3-3: Version bump is properly scoped; dependencies unchanged. The minor version increment (0.5.1 → 0.6.0) and stable dependency set indicate this is a safe update.program-libs/merkle-tree-metadata/Cargo.toml (1)
3-3: Version bump with coordinated internal dependency. The minor version update to 0.7.0 pairs well with light-compressed-account's matching bump (also to 0.7.0), with workspace-based version resolution ensuring consistency.program-libs/compressed-account/Cargo.toml (1)
3-3: Central crate version update with stable dependency chain. The 0.6.2 → 0.7.0 bump maintains backward compatibility while supporting dependent crates (merkle-tree-metadata, batched-merkle-tree, verifier) that reference it viaworkspace = true.program-libs/array-map/Cargo.toml (1)
3-3: Patch version bump is appropriately scoped. The 0.1.0 → 0.1.1 increment reflects a minor fix or improvement to this lightweight utility crate with minimal dependencies.program-libs/verifier/Cargo.toml (1)
3-3: The review comment assumes a version bump from 5.0.0 → 6.0.0, but git history shows this is the initial creation of thelight-verifiercrate at version 6.0.0 (commitccebc4b7adds it as a new file). There is no prior version to compare against, so concerns about undocumented breaking changes from a major version increment are not applicable. The backward compatibility comment on line 15 refers to feature aliasing (anchoras an alias forsolana), not version compatibility.Likely an incorrect or invalid review comment.
program-libs/concurrent-merkle-tree/Cargo.toml (1)
3-3: Add breaking change documentation for version 5.0.0 transition. The major version bump from 4.0.1 to 5.0.0 is coordinated between concurrent-merkle-tree and indexed-merkle-tree (which depends on it). However, no CHANGELOG, MIGRATION guide, or breaking change documentation exists in either crate. Without documentation of what changed between versions, downstream consumers cannot understand the required updates. Add a CHANGELOG.md or document breaking changes in the crate's documentation.⛔ Skipped due to learnings
Learnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/rollover_{state,address}_tree.rs : Trees must support rollover when reaching capacity (2^height leaves) by creating a new tree and marking the old tree as rolled over, preserving old tree rootsLearnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-merkle-tree-metadata crate for shared metadata structuresLearnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Use light-merkle-tree-reference crate as dev dependency for reference implementation of indexed Merkle trees and generating constantsLearnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-verifier crate for ZKP verification of batch updatesLearnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/*.rs : Tree updates must require zero-knowledge proofs proving batch operation correctness with public inputs: old root, new root, hash chain, and for appends: start_index (output queue) or next_index (address queue)Learnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-zero-copy crate for zero-copy serialization for efficient account data accessLearnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/merkle_tree.rs : Tree updates from input queue must use update_tree_from_input_queue function for state trees and update_tree_from_address_queue for address trees with ZKP verificationLearnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/TREE_ACCOUNT.md:0-0 Timestamp: 2025-11-24T17:57:53.312Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/*.rs : Overlapping roots in history must be zeroed when clearing bloom filters to prevent inclusion proofs of nullified valuesLearnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/{merkle_tree,merkle_tree_metadata}.rs : Trees must maintain a cyclic buffer of recent roots (default: 200) enabling validity proofs for recently spent compressed accountsLearnt from: CR Repo: Lightprotocol/light-protocol PR: 0 File: program-libs/batched-merkle-tree/docs/CLAUDE.md:0-0 Timestamp: 2025-11-24T17:56:00.229Z Learning: Applies to program-libs/batched-merkle-tree/docs/**/Cargo.toml : Depend on light-account-checks crate for account validation and discriminator checksprogram-libs/indexed-merkle-tree/Cargo.toml (1)
3-3: Major version bump requires verification of breaking changes and downstream impact. The 4.0.1 → 5.0.0 increment signals breaking API changes. Coordinated with light-concurrent-merkle-tree (also 4.0.1 → 5.0.0), this version alignment is well-structured through workspace versioning, but the nature and scope of breaking changes should be documented and validated against all external dependents.program-libs/compressible/Cargo.toml (2)
3-3: Verify the version scheme change from 0.1.0 to 0.2.1.The version bump skips 0.2.0 and jumps to 0.2.1, which is unusual. Confirm this is intentional from the release script rather than a typo. Typically, a minor version bump would land on X.Y.0.
Additionally, the addition of description and license metadata aligns with standard Rust crate publication practices and looks good.
Also applies to: 5-6
16-36: Dependencies correctly follow program-libs isolation guideline.All dependencies leverage the workspace pattern and include only program-libs crates (light-account-checks, light-compressed-account, light-zero-copy, light-macros, light-program-profiler, light-heap, aligned-sized) and external crates. No programs or sdk-libs detected, which complies with the architectural constraint.
program-libs/ctoken-interface/Cargo.toml (3)
3-3: Version bump and metadata additions are straightforward.The patch version bump (0.1.0 → 0.1.1) is conventional, and the addition of description and license metadata follows standard Rust crate publication practices.
Also applies to: 5-6
54-54: Clarify the addition of "poseidon" feature to dev-dependency light-hasher.The dev-dependency for light-hasher now includes the "poseidon" feature alongside "keccak" and "sha256". Verify that this aligns with new test requirements or test enhancements in this crate. Additionally, the AI summary indicates a dev-dependency on light-ctoken-interface itself was removed—confirm this was intentional and that removing it doesn't break any test scenarios.
16-41: Dependencies correctly follow program-libs isolation guideline.All dependencies (main and dev) consist of program-libs crates and external dependencies only. No programs or sdk-libs present, which complies with architectural constraints.
| [package] | ||
| name = "light-batched-merkle-tree" | ||
| version = "0.6.1" | ||
| version = "0.7.0" |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -e
echo "=== Examining batched-merkle-tree source code for light-verifier usage ==="
# Check what files import or use light_verifier
find program-libs/batched-merkle-tree/src -name "*.rs" -type f -exec grep -l "light_verifier\|verifier" {} \;
echo -e "\n=== Checking for re-exports in batched-merkle-tree public API ==="
# Look for pub use or pub statements involving verifier
fd -e rs$ program-libs/batched-merkle-tree/src | xargs grep -n "pub.*use.*verifier\|pub.*verifier" || echo "No public re-exports found"
echo -e "\n=== Checking light-verifier changelog for breaking changes ==="
find program-libs/verifier -maxdepth 2 \( -name "CHANGELOG*" -o -name "*.md" \) -type f 2>/dev/null | head -5
echo -e "\n=== Checking batched-merkle-tree Cargo.toml dependencies ==="
head -30 program-libs/batched-merkle-tree/Cargo.tomlRepository: Lightprotocol/light-protocol
Length of output: 1690
🏁 Script executed:
#!/bin/bash
set -e
echo "=== Checking light_verifier usage in errors.rs ==="
grep -n -C 3 "light_verifier\|verifier" program-libs/batched-merkle-tree/src/errors.rs | head -30
echo -e "\n=== Checking light_verifier usage in merkle_tree.rs ==="
grep -n -C 2 "light_verifier\|verifier" program-libs/batched-merkle-tree/src/merkle_tree.rs | head -40
echo -e "\n=== Looking for light-verifier location and changelog ==="
find program-libs -name "light-verifier" -o -name "light_verifier" | head -5
echo -e "\n=== Checking program-libs directory structure ==="
ls -la program-libs/ | grep verifier
echo -e "\n=== Searching for verifier changelog in root or parent dirs ==="
find . -maxdepth 3 -name "*CHANGELOG*" -o -name "*BREAKING*" | grep -i verifier || echo "No changelog found"Repository: Lightprotocol/light-protocol
Length of output: 864
🏁 Script executed:
#!/bin/bash
set -e
echo "=== Checking if errors are publicly re-exported in lib.rs ==="
head -50 program-libs/batched-merkle-tree/src/lib.rs | grep -E "pub.*error|mod error|pub mod"
echo -e "\n=== Full batched-merkle-tree lib.rs to check public exports ==="
cat program-libs/batched-merkle-tree/src/lib.rs
echo -e "\n=== Checking verifier Cargo.toml for version and changes ==="
cat program-libs/verifier/Cargo.toml | head -20
echo -e "\n=== Looking for verifier breaking changes or release notes ==="
find program-libs/verifier -type f \( -name "*.md" -o -name "*.txt" \) | head -10Repository: Lightprotocol/light-protocol
Length of output: 1539
🏁 Script executed:
#!/bin/bash
set -e
echo "=== Looking for VerifierError definition in light-verifier ==="
find program-libs/verifier/src -name "*.rs" -exec grep -l "VerifierError" {} \;
echo -e "\n=== Checking VerifierError enum definition ==="
grep -n -A 20 "pub enum VerifierError\|struct VerifierError" program-libs/verifier/src/errors.rs 2>/dev/null || \
grep -rn "pub enum VerifierError\|struct VerifierError" program-libs/verifier/src/ | head -20
echo -e "\n=== Checking if verifier functions signature changed (verify_batch functions) ==="
grep -rn "verify_batch_append_with_proofs\|verify_batch_update\|verify_batch_address_update" program-libs/verifier/src/*.rs | head -20
echo -e "\n=== Looking for git history or version tags ==="
git log --oneline --all | grep -i "verifier\|6.0" | head -10Repository: Lightprotocol/light-protocol
Length of output: 1083
🏁 Script executed:
#!/bin/bash
set -e
echo "=== VerifierError definition in light-verifier ==="
grep -n -A 30 "pub enum VerifierError" program-libs/verifier/src/lib.rs
echo -e "\n=== Checking what changed in recent commits affecting errors ==="
git log --oneline --all -20 -- program-libs/verifier/src/
echo -e "\n=== Checking batched-merkle-tree's actual public API (re-exports from errors) ==="
cat program-libs/batched-merkle-tree/src/errors.rsRepository: Lightprotocol/light-protocol
Length of output: 6494
Version bump requires verification of API stability with major verifier dependency change. The minor version update to 0.7.0 includes a major version bump in light-verifier (5.0.0 → 6.0.0). Since VerifierError is publicly re-exported in BatchedMerkleTreeError, any breaking changes to verifier's error type directly affect batched-merkle-tree's public API. Confirm that verifier 6.0.0's breaking changes do not alter VerifierError, and document the version coordination rationale.
🤖 Prompt for AI Agents
In program-libs/batched-merkle-tree/Cargo.toml around line 3, the version bump
to 0.7.0 coincides with light-verifier moving from 5.x to 6.0.0 and you must
verify and document that this major verifier change does not break the publicly
re-exported VerifierError in BatchedMerkleTreeError; check the light-verifier
6.0.0 changelog and source to confirm the VerifierError type, variants and
public API are unchanged, run cargo update -p light-verifier and cargo test to
catch type/compatibility failures, add a compatibility unit test that constructs
and matches BatchedMerkleTreeError containing a VerifierError instance, and if
any breaking change exists either pin light-verifier to 5.x in Cargo.toml or add
an adapter/re-export type in this crate to preserve the public API, then
document the verification and chosen decision in the crate CHANGELOG and add a
comment next to the version bump in Cargo.toml explaining the coordination with
light-verifier.
Program-libs Release
This PR bumps versions for program-libs crates.
Version Bumps
Release Process
Generated by
scripts/create-release-pr.sh program-libsSummary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.