backport: Merge bitcoin#27151, 25849#7128
Conversation
✅ No Merge Conflicts DetectedThis PR currently has no conflicts with other open PRs. |
0bbece6 to
de4157a
Compare
de4157a to
5d03746
Compare
5d03746 to
2229dcd
Compare
2229dcd to
2af6206
Compare
WalkthroughThe pull request introduces peer-aware block request removal by modifying the Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ 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 |
|
Hello @Udjin6 @knst |
thepastaclaw
left a comment
There was a problem hiding this comment.
Code Review
Clean backport of bitcoin#27151, bitcoin#25849, and bitcoin#27608. No issues found — merge resolutions are correct, no Dash subsystem interactions affected, prerequisite chains are complete.
Reviewed commit: 9959cde
|
This pull request has conflicts, please rebase. |
|
✅ Review complete (commit f490c34) |
thepastaclaw
left a comment
There was a problem hiding this comment.
Code Review
All four agents (Claude backport-reviewer, Claude general, Codex general) converged on no findings after verifying the three Bitcoin Core backports at HEAD 9959cde. The changes are: (1) bitcoin#27151 duplicate-include cleanup in lockedpool.cpp, (2) bitcoin#25849 cosmetic std::string wrapper removal in wallet RPC help text, and (3) bitcoin#27608 scoping RemoveBlockRequest to the originating peer in net_processing.cpp. No CodeRabbit findings to validate.
Reviewed commit: 9959cde
Fresh dispatcher run for this queue item. A same-SHA review already existed, so this records the fresh verification without duplicating inline threads.
Code Review
Reviewed commit: 9959cde
|
@vijaydasmp could you please rebase this PR, or close it if it’s no longer needed? Thanks! |
e846269 util: Remove duplicate include (Andrew Chow) Pull request description: Duplicate `#include <utility>` is upsetting the linter. ACKs for top commit: davidgumberg: ACK bitcoin@e846269 theStack: ACK e846269 john-moffett: ACK e846269 Tree-SHA512: 9e45d8f6a2dd5efcb8eb1c3c440d94b16490dbd63255784cb39863767fa07227e06da112a150ef337ef89e2e305b60b00d5b1c12ff7e1e9c02f6648ed97fac8c
…tring fac09f4 refactor: Remove not needed empty RPC doc std::string (MacroFake) Pull request description: Not sure why this was put there, so remove it ACKs for top commit: aureleoules: ACK fac09f4. Tree-SHA512: 7fae9c612dbb82db39e3dc6e20cc7d0c8128f4abf27e34f4854f908dc1bf3ad48ebee2dbbb864a9ce95e98c5d57119bf976793945a2084a43d137c2d95a25ea1
rebased |
thepastaclaw
left a comment
There was a problem hiding this comment.
Code Review
Policy gate: an agent-reported missing upstream prerequisite was restored as a blocking finding. This PR is a full Bitcoin backport, and omitted upstream hunks require their prerequisite PRs unless the finding is explicitly allowlisted (intentional_exclusion / policy_override). The agent's original evidence is preserved in the finding(s) below.
Prior verifier summary (overridden by policy gate): Two trivial Bitcoin Core backports: bitcoin#27151 (remove duplicate include) and bitcoin#25849 (strip empty std::string() prefixes in RPC docs). The prior review at 9959cde found no issues, so there are no carried-forward prior findings. Cumulative review of the current head finds that the bitcoin#27151 cherry-pick removed Dash's only direct include while three std::move call sites remain (a prerequisite/conflict mismatch with the earlier bitcoin#26924 backport), and the bitcoin#25849 cherry-pick is incomplete — it updated sendmany/FundTxDoc/send but missed sendtoaddress and sendall, both of which still have the std::string() + prefix.
🔴 5 blocking | 🟡 1 suggestion(s) | 💬 2 nitpick(s)
8 additional finding(s) omitted (not in diff).
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.
In `src/support/lockedpool.cpp`:
- [SUGGESTION] src/support/lockedpool.cpp:21-23: Add back `#include <utility>` — std::move is used but the include was fully removed
bitcoin#27151 removed only the *duplicate* `<utility>` include upstream; the upstream pre-PR file still had one direct `<utility>` include in the main std-header block (added by bitcoin#26924). Dash's earlier #26924 backport did not add `<utility>` to the std-header block here, so it kept just the lower include. This PR's #27151 cherry-pick then removed Dash's only direct `<utility>` include, even though `std::move` is still used at lines 284, 383, and 405 (`LockedPool` ctor, `LockedPoolManager` ctor, `LockedPoolManager::Instance`). The TU currently builds through transitive includes, but `std::move` is declared by `<utility>` and the file is no longer self-contained — it can break on a different supported toolchain. Restoring one direct `<utility>` include preserves the upstream intent (remove the duplicate, keep one) and matches the cumulative upstream state.
- [BLOCKING] src/support/lockedpool.cpp:21-23: Missing prerequisite hunk: bitcoin#26924
bitcoin#27151 removes a duplicate <utility> include from src/support/lockedpool.cpp. In upstream, this was safe because the pre-PR state already had another <utility> include in the main std-header block, added by bitcoin#26924 (merge 392dc68e37, commit fadeb6b103). Dash's earlier bitcoin#26924 backport only added <limits> in this file because Dash still had the lower <utility> include at the time. The current bitcoin#27151 Dash commit then removed that lower include, leaving no direct <utility> include even though lockedpool.cpp still uses std::move at lines 284, 383, and 405. This is a prerequisite/conflict-resolution mismatch exposed by the current head: upstream removed one of two includes, while Dash removed its only include.
---
**Policy gate (backport-prereq-restore):** For full upstream backport PRs, a missing prerequisite is blocking unless the finding is explicitly allowlisted (e.g. `intentional_exclusion: true` or a matching entry in `policy_overrides`). The agent's original evidence above is the basis for this block; either backport the prerequisite or annotate the intentional exclusion in the PR description.
In `src/wallet/rpc/spend.cpp`:
- [BLOCKING] src/wallet/rpc/spend.cpp:226-227: Incomplete cherry-pick of bitcoin#25849: sendtoaddress estimate_mode still has std::string() prefix
Upstream bitcoin#25849 (fac09f4f7a) removed the unneeded empty `std::string() +` prefix at six call sites in src/wallet/rpc/spend.cpp (sendtoaddress, sendmany, FundTxDoc, bumpfee_helper, send, sendall). The Dash backport (commit f490c343a2) only updated sendmany, FundTxDoc, and send. The `sendtoaddress` RPC exists in Dash and originally had the same `std::string() + "The fee estimate mode..."` pattern as upstream, but the corresponding hunk was not applied — line 226 still reads `RPCArg::Default{"unset"}, std::string() + "The fee estimate mode, must be one of (case insensitive):\n"`. This is cosmetic only (functionally identical), but it leaves the refactor incomplete for no Dash-specific reason.
---
**Policy gate (backport-prereq-restore):** For full upstream backport PRs, a missing prerequisite is blocking unless the finding is explicitly allowlisted (e.g. `intentional_exclusion: true` or a matching entry in `policy_overrides`). The agent's original evidence above is the basis for this block; either backport the prerequisite or annotate the intentional exclusion in the PR description.
- [BLOCKING] src/wallet/rpc/spend.cpp:1041-1042: Incomplete cherry-pick of bitcoin#25849: sendall estimate_mode still has std::string() prefix
Same as the sendtoaddress finding: upstream bitcoin#25849 removed the `std::string() +` prefix in the sendall RPCHelpMan. Dash has `sendall` (backported earlier from bitcoin#24118 — release notes file present) and the estimate_mode arg at line 1041 still uses the old `std::string() + "The fee estimate mode..."` form. The 25849 cherry-pick should have removed this prefix here too. Cosmetic only; no functional impact.
---
**Policy gate (backport-prereq-restore):** For full upstream backport PRs, a missing prerequisite is blocking unless the finding is explicitly allowlisted (e.g. `intentional_exclusion: true` or a matching entry in `policy_overrides`). The agent's original evidence above is the basis for this block; either backport the prerequisite or annotate the intentional exclusion in the PR description.
- [BLOCKING] src/wallet/rpc/spend.cpp:226-227: Incomplete backport: bitcoin#25849 missed sendtoaddress
Upstream bitcoin#25849 (merge d9cd8b419c) removed the unnecessary std::string() prefix from the estimate_mode help text in sendtoaddress, sendmany, FundTxDoc, send, and sendall, plus a formatting hunk in bumpfee_helper. Dash's f490c343a2 cherry-pick updated sendmany, FundTxDoc, and send, but sendtoaddress is present in Dash and still has the exact std::string() + FeeModes(...) pattern. This is not a missing dependency and has no behavior impact, but it is an omitted upstream hunk in the current-head backport.
---
**Policy gate (backport-prereq-restore):** For full upstream backport PRs, a missing prerequisite is blocking unless the finding is explicitly allowlisted (e.g. `intentional_exclusion: true` or a matching entry in `policy_overrides`). The agent's original evidence above is the basis for this block; either backport the prerequisite or annotate the intentional exclusion in the PR description.
- [BLOCKING] src/wallet/rpc/spend.cpp:1041-1042: Incomplete backport: bitcoin#25849 missed sendall
Upstream bitcoin#25849 also removed the unnecessary std::string() prefix from sendall's estimate_mode help text. Dash now has sendall in the current head, but f490c343a2 did not apply that hunk, so the same std::string() + FeeModes(...) pattern remains here. The omitted upstream bumpfee_helper hunk maps to an RPC section Dash does not expose and appears to be a Dash-specific BIP125/RBF omission, but sendall is present and should have received the same cosmetic backport change.
---
**Policy gate (backport-prereq-restore):** For full upstream backport PRs, a missing prerequisite is blocking unless the finding is explicitly allowlisted (e.g. `intentional_exclusion: true` or a matching entry in `policy_overrides`). The agent's original evidence above is the basis for this block; either backport the prerequisite or annotate the intentional exclusion in the PR description.
bitcoin backports