BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

2894 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

254security candidates606second-pass queue2879AI analyses
210commits · 30 days
507commits · 60 days
1529commits · 180 days
2881commits · 365 days
Backfill bands
Aug 5 → Feb 61351 seen45 candidatesComplete
Feb 6 → Jun 61033 seen63 candidatesComplete
Jun 6 → Jul 6281 seen11 candidatesComplete
Jul 6 → Aug 5207 seen5 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

70/100 average clarity
931Strong · 80–100
1188Adequate · 60–79
687Thin · 40–59
88Opaque · 0–39
6security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Antoine Poinsot22422170
Ava Chow15750157064
MarcoFalke41021406074
Lőrinc17721177081
fanquake22719226057
Hennadii Stepanov20914208063
rkrux57957074
Sjors Provoost89889074
Sebastian Falbesoner33733073
David Gumberg55655072
Pieter Wuille95595066
Hodlinator66566076
Analysis record

Published AI watches

Last scanned 0 minutes ago

Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35914: test, fuzz: Remove unused variables

This commit removes unused variables from Bitcoin Core's test and fuzzing code. It is a cleanup/refactoring change with no effect on the live network software or user funds. It does not fix or introduce any security vulnerability.

d36bf709by merge-script+1−138 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35896: refactor: Default uint256::operator==, add operator<=>

This commit is a routine code cleanup in Bitcoin Core. It switches the uint256 equality and comparison operators to use standard C++20 defaults, removes an old custom Compare() helper, and marks an internal assertion-failure function as ne…

ed2c59abby merge-script+99−245 files
No security note in commit
Moderate 62 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35872: rpc: avoid descriptor range counter overflow

This update fixes a counting bug in several Bitcoin Core RPC commands that scan descriptors. When a user requested a descriptor range ending at the maximum allowed value (2,147,483,647), the internal counter used a smaller integer type and…

Signed integer overflow in descriptor expansion loopCrash/undefined behavior on maximum-range descriptor scansAuthenticated RPC surface affected (scantxoutset, scanblocks, getdescriptoractivity, utxoupdatepsbt, descriptorprocesspsbt)
b388674aby Ava Chow+3−12 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35842: rpc: Properly make RPCResult::Type::ANY non-test-only

This is a small cleanup and documentation fix for Bitcoin Core's RPC help system. It removes a comment that incorrectly said a certain output type was 'for testing only' and makes the help text properly display those outputs. There is no d…

No memory safety, cryptography, consensus, or authorization changes observedChange is confined to RPC help/schema metadata generationComment-only/type-label change from 'for testing only' to general use
c36ffd87by merge-script+42−364 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35895: refactor: Enable clang-tidy rule to reject anon namespace in header

This is a code cleanup change that turns on a static-analysis rule to prevent a specific C++ coding pattern (anonymous namespaces in header files) and updates two headers to comply. It does not change how Bitcoin Core behaves at runtime an…

No security-relevant code changeNo memory safety, cryptography, consensus, or network changesTooling-only refactor (clang-tidy configuration)
c4fbd3c7by merge-script+9−123 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35630: test: Add importdescriptors rpc error test coverage

This commit only adds new test cases to Bitcoin Core's functional test suite. It does not change any production wallet, node, or RPC code. The tests verify that the importdescriptors RPC reports errors in the right order, rejects bad times…

465196d0by merge-script+77−11 file
No security note in commit
Informational 15 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35180: coins: group private cache helpers

This change is purely a code cleanup: it moves two internal helper functions of a Bitcoin Core cache class into the private section of the class and removes a duplicate 'private:' label. There is no change to what the code does, no bug fix…

c940fd75by merge-script+13−141 file
No security note in commit
Low 29 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35582: rpc: reject null for optional parameters

This Bitcoin Core change tightens how three RPC commands (scantxoutset, scanblocks, deriveaddresses) handle the value null when it is passed for optional parameters. Previously, explicitly passing null could be treated differently from sim…

RPC parameter validation changeNull value handling changeAddition of explicit error checks for missing required contextual parameters
3db96eb5by merge-script+18−75 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Enable misc-definitions-in-headers

This commit is a code cleanup: it turns on a clang-tidy style check called 'misc-definitions-in-headers' and suppresses that check around a large inline implementation block in a benchmark header. There is no change to Bitcoin's runtime be…

fa93132dby MarcoFalke+3−02 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Enable clang-tidy rule to reject anon namespace in header

This commit only changes a linting configuration file for the project's code style checker. It enables a rule that prevents anonymous namespaces from being used in header files, which is a code-quality and build-hygiene practice. There is …

No security-relevant signals in the diff or commit message.Change is purely a static-analysis/linting configuration update.
fa5ca877by MarcoFalke+2−11 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Use C++20 std::identity over IntIdentity

This commit is a straightforward code cleanup: it replaces a small custom helper named IntIdentity with the standard C++20 std::identity from the <functional> header. The behavior of the ConvertBits function is unchanged; only the implemen…

fafe5042by MarcoFalke+4−111 file
No security note in commit
Informational 15 AI analysisMessage 87 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: test the result order of a multiple import request is correct

This commit only adds a new automated test to Bitcoin Core. It checks that when a user asks the wallet to import multiple descriptors at once, the list of results comes back in the same order as the original request, including any error me…

3ac8b806by Pol Espinasa+40−01 file
No security note in commit
Informational 15 AI analysisMessage 87 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: test invalid or missing timestamp throws importdescriptors

This commit only adds new automated tests for the Bitcoin Core wallet's importdescriptors RPC. It checks that the command correctly rejects requests with a missing or invalid timestamp. No production wallet code is changed, so this cannot …

No changes to consensus, networking, wallet logic, or cryptographyOnly functional test code is modifiedAdded assertions are for expected error handling paths
e4732bf0by Pol Espinasa+28−11 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Remove unused #include in common/system

This is a minor code cleanup that removes one unused header file include and swaps another for a more specific one. It does not change any program behavior or fix any security issue.

fa7304f3by MarcoFalke+1−22 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

iwyu: Fix warnings in `src/consensus` and treat them as errors

This commit is a routine code cleanup: it adjusts which C++ header files are included in several consensus-related source files and turns on a stricter compiler hygiene check (Include What You Use, or IWYU) for the src/consensus directory.…

13b53f8bby Hennadii Stepanov+42−79 files
No security note in commit
Informational 15 AI analysisMessage 55 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

fuzz: don't connman.ReceiveMsgFrom oversized msg

This is a small fix to a Bitcoin Core fuzz test (an automated internal testing harness), not to the live network code. The fuzzer was sometimes creating fake P2P messages larger than the real protocol allows and passing them into a test he…

Test-only fuzz harness hardeningOversized message guard added before ReceiveMsgFrom() in fuzz targetNo change to production P2P message acceptance logic
bb19f1daby Greg Sanders+5−01 file
No security note in commit
Informational 15 AI analysisMessage 97 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

ci: Temporarily remove riscv32 config from GHA matrix

This commit simply removes one failing test configuration (RISC-V 32-bit bare metal) from the project's GitHub Actions CI matrix because it was failing. It is a routine CI maintenance change with no security implications.

fa06ea42by MarcoFalke+0−61 file
No security note in commit
Low 47 AI analysisMessage 90 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

ci: verify cross-build SDK archives

This change adds checksum verification to the build system's downloads of Apple, FreeBSD, NetBSD, and OpenBSD software development kits (SDKs). Before this patch, those SDK archives were downloaded at build time and extracted without confi…

Adds cryptographic digest verification for downloaded SDK archivesRemoves unchecked extraction of remote SDK archives in CIHardens CI supply chain for macOS/BSD cross-builds
873550beby Lőrinc+25−126 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 80 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

ci: update NetBSD cross-build SDK

This is a routine maintenance update to Bitcoin Core's continuous integration (CI) system. It changes the version number of the NetBSD operating system used for cross-compilation testing from a release candidate (11.0_RC6) to the final rel…

2c87337eby Lőrinc+1−11 file
No security note in commit
Informational 15 AI analysisMessage 72 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: require `TryGetTotalRam()` detection

This commit only changes a test file and build configuration. It removes the option to skip a test when the system cannot detect total RAM, and instead requires the RAM detection to succeed. It does not change any production wallet, networ…

6a2de55aby Lőrinc+3−112 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-priorityrefactor: Avoid manual chrono casts with * or /by MarcoFalke · fab88884 · Mar 27, 2026 · 2 filesMessage 80 · StrongInformational 15Details
Commit message · MarcoFalke

refactor: Avoid manual chrono casts with * or /

Manual chrono casts, using multiplication or division is confusing and
brittle.

Also, when calling ShouldRunInactivityChecks remove a confusing and
useless std::chrono::duration_cast<std::chrono::seconds>.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This is a small code cleanup that replaces hand-written time-unit conversions with safer, purpose-built helper functions. It does not change program behavior or fix any security issue.

Lower-priorityutil: Add NodeClock::epoch aliasby MarcoFalke · facfce37 · Mar 27, 2026 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · MarcoFalke

util: Add NodeClock::epoch alias

A default constructed time_point is the epoch, by definition.

Existing code uses a default constructed (or explicitly constructed with
a zero duration) chrono type to mean epoch. New code can now use
NodeClock::epoch as an alias.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a minor code cleanup with no security relevance. It adds a named alias 'NodeClock::epoch' for the zero time point and a compile-time check that it equals zero. No behavior changes, no bug fixes, and no security impact.

Lower-priorityrefactor: Use NodeClock alias over deprecated GetTimeby MarcoFalke · fa41e072 · Mar 27, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · MarcoFalke

refactor: Use NodeClock alias over deprecated GetTime

GetTime returns a duration, but a time point is the correct type to use
here.

This refactor does not change any behavior.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This is a one-line code cleanup in Bitcoin Core. It replaces an older way of getting the current time with a newer, type-correct equivalent. The commit message explicitly says it does not change behavior, and the diff shows only that single replacement with no logic changes.

Lower-prioritytest: Check that RPCs do not time out, even under loadby MarcoFalke · fa7bc26d · Mar 26, 2026 · 2 filesMessage 99 · StrongTriage 0Details
Commit message · MarcoFalke

test: Check that RPCs do not time out, even under load

Also, modify send_cli, so that the test can be run under --usecli

99/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification
Lower-prioritytest: Replace DEBUG_LOG_OUT with -printtoconsole=1by Hodlinator · 261d2294 · Mar 26, 2026 · 7 filesMessage 72 · AdequateInformational 15Details
Commit message · Hodlinator

test: Replace DEBUG_LOG_OUT with -printtoconsole=1

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a test-only cleanup. It removes a custom test logging hook called DEBUG_LOG_OUT and replaces it with Bitcoin Core's existing -printtoconsole=1 command-line option. There is no change to the production wallet, networking, consensus, or node code that ordinary users run.

AI review queuedtest: wallet: Warning for excessive fallback fee.by David Gumberg · 3dcdb2b9 · Mar 26, 2026 · 1 fileMessage 67 · AdequateInformational 15Details
Commit message · David Gumberg

test: wallet: Warning for excessive fallback fee.

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds a new test case to Bitcoin Core's functional test suite. It checks that when a user starts the software with an unusually high fallback transaction fee, the software still works but prints a warning message. There is no code change to the actual Bitcoin Core wallet or fee logic—only a test that verifies existing behavior.

AI review queuedtest: wallet: -fallbackfee default is 0by David Gumberg · 6664e41e · Mar 26, 2026 · 1 fileMessage 82 · StrongInformational 15Details
Commit message · David Gumberg

test: wallet: -fallbackfee default is 0

Also check more RPC's for success and check that we are using
`-fallbackfee`.

82/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only changes a test file. It improves an existing functional test to verify that Bitcoin Core's wallet correctly fails to send transactions when the fallback fee is unset or set to zero, and succeeds when a fallback fee is configured. There is no change to production code, no security fix, and no vulnerability being patched.

AI review queuedtest: wallet: refactor: fallbackfee extract common send failure checks.by David Gumberg · d28c9892 · Mar 26, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · David Gumberg

test: wallet: refactor: fallbackfee extract common send failure checks.

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This is a minor test-code cleanup. It renames a test class to match the actual topic (fallback fee), shortens a comment, and pulls three repeated 'sending must fail' checks into a helper function. No production code or security behavior is changed.

Lower-priorityfuzz: Use time helpers in node_evictionby MarcoFalke · fa1ebde1 · Mar 25, 2026 · 4 filesMessage 55 · ThinInformational 15Details
Commit message · MarcoFalke

fuzz: Use time helpers in node_eviction

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only changes Bitcoin Core's internal fuzz testing code, which is used to automatically generate random inputs to find bugs during development. It does not change any production networking, consensus, or wallet code that runs on real Bitcoin nodes. There is no security issue here for end users.

Lower-prioritynet: delay stale evaluation and expose time_added in private broadcastby Mccalabrese · 325afe66 · Mar 25, 2026 · 5 filesMessage 50 · ThinLow 27Details
Commit message · Mccalabrese

net: delay stale evaluation and expose time_added in private broadcast

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Low 27/100

This Bitcoin Core commit tweaks how the node decides whether a privately broadcast transaction is 'stale' and should be re-broadcast. Previously, a transaction could be marked stale just one minute after it was added, even if it had never actually been sent to any peer. Now, transactions that have not yet been picked for sending use a longer five-minute window, while already-sent transactions keep the one-minute window. The commit also exposes the 'time_added' field in an RPC diagnostic so users can see when each transaction entered the private-broadcast queue. There is no claim in the commit that this fixes a security vulnerability; it reads as a robustness/usability improvement.

AI review queuedwallet: drop stale TODOsby Sjors Provoost · 1438165b · Mar 25, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Sjors Provoost

wallet: drop stale TODOs

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit simply removes two outdated code comments (TODOs) from a Bitcoin Core wallet file related to external signers. No actual code behavior was changed, so it does not fix or introduce any security issue on its own.

AI review queuedfuzz: Remove unused g_setup pointersby MarcoFalke · fabbfec3 · Mar 25, 2026 · 3 filesMessage 78 · AdequateInformational 15Details
Commit message · MarcoFalke

fuzz: Remove unused g_setup pointers

These are unused and removing them avoids clang warnings like:

src/test/fuzz/deserialize.cpp:42:26: error: variable g_setup set but not used [-Werror,-Wunused-but-set-variable]

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit removes unused global pointer variables in three test-only fuzzing files. It is a code cleanup change to silence compiler warnings and has no effect on the live Bitcoin Core software that users run.

Lower-prioritytest: script: boundary at exactly 65535 bytes must use OP_PUSHDATA2by Bruno Garcia · f8996746 · Mar 25, 2026 · 1 fileMessage 72 · AdequateInformational 18Details
Commit message · Bruno Garcia

test: script: boundary at exactly 65535 bytes must use OP_PUSHDATA2

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 18/100

This commit only adds a new test case to Bitcoin Core's test suite. It verifies that a 65535-byte data push in Bitcoin scripts is considered 'minimal' only when encoded with OP_PUSHDATA2, not OP_PUSHDATA4. The commit does not change any production code, so it cannot directly introduce or fix a live vulnerability. It is a regression test that documents an existing consensus rule boundary.

Lower-prioritycontrib: override system locale in gen-manpages.pyby Sjors Provoost · 758f208c · Mar 25, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · Sjors Provoost

contrib: override system locale in gen-manpages.py

bitcoin-qt --help emits a translation of "version", which creates
a diff when updating or verifying man pages.

The script aborts earlier however, because bitcoin-qt --version also
emits a localized output, which triggers the "Copyright (C)" assertion
on a translated term like "Auteursrecht".

Fix this by passing --lang=en to both bitcoin-qt invocations.

None of the actual command options are translated, so this
commit does not affect the actual manual page.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This is a developer tooling fix for a Python script that generates manual pages for Bitcoin Core. The script was failing on non-English systems because bitcoin-qt's version and help output was translated, causing an assertion to fail. The fix forces English output by adding --lang=en. It does not change any user-facing code, network behavior, or wallet handling.

AI review queuedscripted-diff: rpc: Don't pointlessly capture in RPCMethod lambdasby Anthony Towns · 5a81d73a · Mar 25, 2026 · 23 filesMessage 83 · StrongInformational 15Details
Commit message · Anthony Towns

scripted-diff: rpc: Don't pointlessly capture in RPCMethod lambdas

-BEGIN VERIFY SCRIPT-
sed -i 's/\[[&]\][(]const RPCMethod[&]/[](const RPCMethod\&/' $(git grep -l '\[\&\](const RPCMethod')
-END VERIFY SCRIPT-

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This is a large but purely cosmetic cleanup commit. It removes unnecessary '&' captures from C++ lambda functions used to define Bitcoin RPC commands. The code behavior is unchanged; the change only makes the source code slightly cleaner and avoids compiler warnings about unused captures.

AI review queuedscripted-diff: rpc: Rename RPCHelpMan to RPCMethodby Anthony Towns · 4e789299 · Mar 25, 2026 · 27 filesMessage 83 · StrongInformational 15Details
Commit message · Anthony Towns

scripted-diff: rpc: Rename RPCHelpMan to RPCMethod

Since this class defines the functionality of the RPC method, not
just its help text, this better reflects reality.

-BEGIN VERIFY SCRIPT-
sed -i -e 's/\bRPCHelpMan\b/RPCMethod/g' $(git grep -l RPCHelpMan src/)
-END VERIFY SCRIPT-

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a purely cosmetic rename of a C++ class used to define Bitcoin RPC commands. Every occurrence of 'RPCHelpMan' is replaced with 'RPCMethod' across 27 source files using an automated script. No behavior, logic, or security properties of the software change.

Lower-prioritydoc: archive release notes for v28.4by fanquake · 3e089038 · Mar 25, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · fanquake

doc: archive release notes for v28.4

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit simply archives the release notes for Bitcoin Core version 28.4. It is a documentation-only change that adds a markdown file summarizing what went into the release. There is no code change and no security issue introduced or fixed by this commit itself.

AI review queuedtest: functional: drop rmtree usage and add lint checkby David Gumberg · 0d1301b4 · Mar 24, 2026 · 16 filesMessage 100 · StrongInformational 18Details
Commit message · David Gumberg

test: functional: drop rmtree usage and add lint check

`shutil.rmtree` is dangerous because it recursively deletes. There are
not likely to be any issues with it's current uses, but it is possible
that some of the assumptions being made now won't always be true, e.g.
about what some of the variables being passed to `rmtree` represent.

For some remaining uses of rmtree that can't be avoided for now, use
`cleanup_dir` which asserts that the recursively deleted folder is a
child of the the `tmpdir` of the test run. Otherwise,
`tempfile.TemporaryDirectory` should be used which does it's own
deleting on being garbage collected, or old fashioned unlinking and
rmdir in the case of directories with known contents.

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit is a hardening change for Bitcoin Core's test code. It removes most uses of shutil.rmtree, a Python function that recursively deletes directories, because it could accidentally wipe out the wrong folder if a test variable ever pointed somewhere unexpected. The patch replaces those calls with safer alternatives: a new cleanup_folder helper that refuses to delete anything outside the test's temporary directory, tempfile.TemporaryDirectory which cleans itself up, or explicit removal of known files. It also adds a lint rule to prevent new rmtree uses in test code. This is a defensive, preventive fix in the test suite, not a fix for an active security bug in the running Bitcoin node software.

Lower-prioritytest: functional: drop unused --keepcache argumentby David Gumberg · 8bfb422d · Mar 24, 2026 · 1 fileMessage 100 · StrongInformational 15Details
Commit message · David Gumberg

test: functional: drop unused --keepcache argument

At the time this was added in #10197, building the test cache took 21
seconds, as described in that PR, but this is no longer true, as
demonstrated by running the functional test framework with and without
the --keepcache arguments on master prior to this commit:

```
hyperfine --warmup 1 --export-markdown results.md --runs 3 \
-n 'without --keepcache' './build/test/functional/test_runner.py -j $(nproc)' \
-n 'with --keepcache' './build/test/functional/test_runner.py -j $(nproc) --keepcache'
```

| Command | Mean [s] | Min [s] | Max [s] | Relative |
|:----------------------|---------------:|--------:|---:|---:|
| `without --keepcache` | 76.373 ± 3.058 | 74.083 | 79.846 | 1.00 |
| `with --keepcache` | 77.384 ± 1.836 | 75.952 | 79.454 | 1.01 ± 0.05 |

As a consequence, this argument can be removed from the test runner and
this also has the benefit of being able to use an RAII-like
`tempfile.TemporaryDirectory` instead of having to clean up the cache
manually at the end of test runs.

bitcoin/bitcoin#10197: https://github.com/bitcoin/bitcoin/pull/10197

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This commit removes an unused command-line option called --keepcache from Bitcoin Core's functional test runner. It is a cleanup change that switches test cache handling to an automatic temporary directory. There is no security relevance.

AI review queuedqa: Remove all instances of `remove_all` except test cleanupby David Gumberg · a7e4a59d · Mar 24, 2026 · 6 filesMessage 83 · StrongLow 27Details
Commit message · David Gumberg

qa: Remove all instances of `remove_all` except test cleanup

Adds a lint check for `remove_all()`

`fs::remove_all()`/`std::filesystem::remove_all()` is extremely
dangerous, all user-facing instances of it have been removed, and it
also deserves to be removed from the places in our test code where it is
being used unnecessarily.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 27/100

This commit is a defensive cleanup: it removes almost all uses of a filesystem function called remove_all() that can wipe out entire directory trees, and adds an automated lint check to prevent it from being reintroduced. The changes only affect benchmark and test code, not the live Bitcoin wallet or node software that ordinary users run. It reduces the risk of accidental data loss during testing, but does not fix an active security bug.

Lower-prioritydoc: update cjdns.md for current upstream changesby w0xlt · 6b99a3e4 · Mar 24, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · w0xlt

doc: update cjdns.md for current upstream changes

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates a documentation file (doc/cjdns.md) describing how to use Bitcoin Core with the CJDNS network. It removes outdated manual peering instructions and replaces them with current upstream CJDNS v22 guidance about automatic peer discovery via DNS seeding. No code, configuration defaults, or security behavior of Bitcoin Core is changed.

AI review queuedkernel: Expose context-free block validationby w0xlt · 0587c560 · Mar 24, 2026 · 4 filesMessage 78 · AdequateInformational 14Details
Commit message · w0xlt

kernel: Expose context-free block validation

This introduces a context-free validation entry point for full blocks in
the kernel C and C++ APIs.

* Add `btck_block_check`, a C function that wraps `CheckBlock` and runs
header and body checks for a `btck_Block` using `btck_ConsensusParams`.
Callers provide a `btck_BlockValidationState` to receive the result
and supply a `btck_BlockCheckFlags` bitmask to control POW and
merkle-root verification.

* Add `btck_BlockCheckFlags` in the C API, plus the corresponding
`BlockCheckFlags` scoped enum in the C++ wrapper, including a
`*_ALL` convenience value.

* Add `Block::Check()` to the C++ wrapper to mirror the new C function
and return a bool while filling a `BlockValidationState`.

* Add a test `(btck_check_block_context_free)` that verifies a known
valid mainnet block passes with `BlockCheckFlags::ALL` and that
truncated block data fails deserialization.

Co-authored-by: yuvicc <yuvichh01@gmail.com>

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
defensive validationsecond-pass: broader security terminology
AI analysis · Informational 14/100

This commit adds a new public API to Bitcoin Core's kernel library that lets outside callers run basic sanity checks on a raw Bitcoin block (for example, checking size limits, coinbase structure, and optionally proof-of-work and the merkle root). It is purely an addition of a new validation entry point and its tests. There is no bug fix, no change to existing consensus logic, and no indication of a security issue.

Lower-priorityci: Rename `TIDY_LLVM_V` to `IWYU_LLVM_V` in IWYU-specific codeby Hennadii Stepanov · 3129d4a6 · Mar 24, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

ci: Rename `TIDY_LLVM_V` to `IWYU_LLVM_V` in IWYU-specific code

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a simple variable rename inside Bitcoin Core's continuous integration (CI) scripts. It changes the name `TIDY_LLVM_V` to `IWYU_LLVM_V` in scripts that run the 'Include What You Use' (IWYU) code-analysis tool. There is no change to the Bitcoin software that users run, no change to security logic, and no fix for a vulnerability.

Lower-prioritykernel: Expose consensus parameters (`btck_ConsensusParams`)by w0xlt · 71f827c3 · Mar 24, 2026 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · w0xlt

kernel: Expose consensus parameters (`btck_ConsensusParams`)

Library users currently need to maintain a full context object to perform
context-free block validation. Exposing an opaque `btck_ConsensusParams`
struct allows callers to supply only the required consensus parameters,
resulting in a lighter-weight API and a clearer expression of the actual
validation behavior.

Co-authored-by: yuvicc <yuvichh01@gmail.com>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit adds a new public API to the Bitcoin Core library that lets outside programs read the network's consensus parameters (like block timing rules) from the existing chain parameters object. It does not change any validation logic or security behavior; it only exposes data that was already available internally in a more convenient way for library users.

Lower-prioritynet: introduce TxSendStatus internal state containerby Mccalabrese · 999d18ab · Mar 24, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · Mccalabrese

net: introduce TxSendStatus internal state container

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a small internal code cleanup in Bitcoin Core's private transaction-broadcast feature. It wraps an existing list of per-peer send records inside a new 'TxSendStatus' container and adds a timestamp for when each transaction was first added. There is no change to network behavior, no bug fix, and no security-relevant change visible in the diff.