BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

2902 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 candidates607second-pass queue2881AI analyses
192commits · 30 days
488commits · 60 days
1506commits · 180 days
2875commits · 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
939Strong · 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 33 minutes ago

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

Merge bitcoin/bitcoin#35928: doc: mention -DWITH_ZMQ=ON in macOS build guide

This is a one-line documentation update to the macOS build guide. It adds a note telling users to pass a specific CMake option if they want ZeroMQ notification support. There is no code change and no security impact.

8397e09eby merge-script+1−11 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35482: fuzz: exercise the transaction-handling path in process_message(s)

This commit only changes Bitcoin Core's internal fuzz testing code. It makes the fuzz tests exercise more of the transaction-handling code path by toggling Initial Block Download mode and resetting the mempool between test runs. There is n…

No production code modifiedNo consensus, validation, net_processing, or wallet logic changedOnly fuzz test harnesses and test utilities affected
f11dc617by merge-script+105−798 files
No security note in commit
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
Repository ledger

Explore captured commits

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

Lower-prioritylint: [move-only] Move cpp related lints to lint_cpp.rsby MarcoFalke · fab0cfa9 · Jan 5, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · MarcoFalke

lint: [move-only] Move cpp related lints to lint_cpp.rs

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 pure code reorganization: it moves four existing C++ lint checks from the main Rust file into a new dedicated module named lint_cpp.rs. No lint logic, rules, or behavior changed. It is comparable to moving files into a new folder without editing their contents.

Lower-prioritylint: [move-only] Move docs related lints to lint_docs.rsby MarcoFalke · fa3e48e3 · Jan 5, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · MarcoFalke

lint: [move-only] Move docs related lints to lint_docs.rs

Also, rename lint_doc to lint_doc_args.

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 straightforward code reorganization: it moves three documentation-related lint checks from the main test runner file into a new dedicated Rust module, and renames one function from lint_doc to lint_doc_args. No behavior changes, security fixes, or vulnerability patches are present.

Lower-prioritylint: [move-only] Move text related lints to text_format.rsby MarcoFalke · fad09e77 · Jan 5, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · MarcoFalke

lint: [move-only] Move text related lints to text_format.rs

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

This commit simply reorganizes existing code. It moves four text-format lint checks (for trailing whitespace, missing trailing newlines, tab characters, and commit message formatting) from the main Rust file into a new module named lint_text_format.rs. No lint logic, command behavior, or security-sensitive code was changed.

Lower-prioritylint: [move-only] Move util functions to util.rsby MarcoFalke · faf40c2f · Jan 5, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · MarcoFalke

lint: [move-only] Move util functions to util.rs

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply moves existing helper functions from one Rust source file to a new utility file. It is a code cleanup change with no functional or security impact on the Bitcoin Core software itself. The moved code is part of the internal lint test runner, not the Bitcoin node that users run.

Security candidatepsbt: detect invalid MuSig2 pubkeys in deserializationby rkrux · 5805a8b5 · Jan 5, 2026 · 2 filesMessage 65 · AdequateLow 44Details
Commit message · rkrux

psbt: detect invalid MuSig2 pubkeys in deserialization

Throw error while deserializing PSBT if invalid pubkeys are passed
as a MuSig2 aggregate or participant.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 44/100

This Bitcoin Core patch adds a missing validation check during PSBT (Partially Signed Bitcoin Transaction) parsing. Specifically, it now rejects MuSig2 aggregate and participant public keys that are not cryptographically valid, rather than silently accepting malformed or invalid key bytes. This prevents downstream code from operating on bad public keys, which could lead to incorrect behavior or crashes.

Lower-priorityp2p: first addr self-announcement in separate msgby 0xb10c · 792e2edf · Jan 5, 2026 · 2 filesMessage 76 · AdequateLow 28Details
Commit message · 0xb10c

p2p: first addr self-announcement in separate msg

This makes sure the initial address self-announcement a node sends to
a peer happends in a separate P2P message. This has benefits for both
inbound and outbound connections:

For inbound connections from a peer to us, previously, we might send
the self-announcement along with our response to a GETADDR request.
However, the self-announcement might replace an address from the
GETADDR response. This isn't clean.

For outbound connections from us to a peer, previously, it could have
happend that we send the self-announcement along with other addresses.
Since shortly after connection open, the peer might only have one
rate-limiting token for us, and the addresses are shuffeld on arrival,
it's possible that the self-announcement gets rate-limited. However,
note that these rate-limitings seem to be rare in practice.

This is inspired by and based on https://github.com/bitcoin/bitcoin/pull/33699#issuecomment-3462287763

Co-Authored-By: Anthony Towns <aj@erisian.com.au>

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 28/100

This Bitcoin Core change tweaks how a node tells other nodes about its own internet address when they first connect. Previously, the node's own address could get bundled with other addresses in the same network message. Because new connections only get one temporary 'token' that lets a single address through, the node's own address could accidentally be dropped by the peer's rate limiter. The fix sends the first self-announcement in its own dedicated message so it isn't crowded out by other addresses. It also makes the initial address exchange cleaner for inbound connections.

Lower-prioritytest: fix intermittent failure in p2p_addr_selfannouncementby 0xb10c · 31852057 · Jan 5, 2026 · 1 fileMessage 100 · StrongInformational 15Details
Commit message · 0xb10c

test: fix intermittent failure in p2p_addr_selfannouncement

Due to the mocktime being bumped before the expected time is updated,
it could happen that the self-announcement is send with an newer
timestamp than what we expect. To fix this, update the expected time
before we bump the mocktime.

closes #34159

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✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This is a one-line fix inside a single automated test file. The test was occasionally failing because the test's internal expected timestamp was being read after the simulated clock had already advanced, so the expected value could be slightly newer than the test anticipated. The fix simply records the expected time before advancing the simulated clock. It does not change any production code, network behavior, or wallet logic.

Lower-prioritymining: add new getCoinbaseTx() returning a structby Sjors Provoost · 48f57bb3 · Jan 5, 2026 · 9 filesMessage 83 · StrongInformational 19Details
Commit message · Sjors Provoost

mining: add new getCoinbaseTx() returning a struct

Introduce a new method intended to replace getCoinbaseRawTx(), which
provides a struct with everything clients need to construct a coinbase.
This is safer than providing a raw dummy coinbase that clients then have
to manipulate.

The CoinbaseTx data is populated during the dummy transaction generation
and stored in struct CBlockTemplate.

Expand the interface_ipc.py functional test to document its usage
and ensure equivalence.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 19/100

This commit adds a new, safer way for external mining programs to ask Bitcoin Core for the pieces needed to build a coinbase transaction, instead of receiving a complete dummy transaction they must edit. It is a defensive API improvement, not a fix for an active bug or vulnerability. The old method is kept but marked deprecated.

Lower-priorityrpc, net: deprecate `startingheight` field of `getpeerinfo` RPCby Sebastian Falbesoner · 4ce3f4a2 · Jan 4, 2026 · 4 filesMessage 81 · StrongInformational 19Details
Commit message · Sebastian Falbesoner

rpc, net: deprecate `startingheight` field of `getpeerinfo` RPC

The reported starting height of a peer in the VERSION message is
untrusted, and it doesn't seem to be useful anymore (after #20624),
so deprecating the corresponding "startingheight" field seems
reasonable. After that, it can be removed, along with the
`m_starting_height` field of the Peer / CNodeStats structs, as it is
sufficient to show the reported height only once at connection in the
debug log.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 19/100

This change hides one piece of information—the 'startingheight' field—from the getpeerinfo RPC output unless the user explicitly enables it with a deprecation flag. It is a planned API cleanup, not a security fix. There is no vulnerability or exploit here.

Lower-priorityrefactor: rename `FlushStateMode::ALWAYS` to `FORCE_FLUSH`by Lőrinc · 7099e93d · Jan 3, 2026 · 7 filesMessage 85 · StrongInformational 15Details
Commit message · Lőrinc

refactor: rename `FlushStateMode::ALWAYS` to `FORCE_FLUSH`

This prepares the addition of `FORCE_SYNC`.

`empty_cache` in `FlushStateToDisk` was moved up to be reusable and `FlushStateMode::FORCE_FLUSH` was used as a placeholder before we properly split the two new states.
`log_utxocache_flush.py` was regenerated and the alignment adjusted for the wider `FlushStateMode` values.

Co-authored-by: Pieter Wuille <pieter@wuille.net>
Co-authored-by: optout <13562139+optout21@users.noreply.github.com>

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 simple code cleanup change that renames an internal constant from ALWAYS to FORCE_FLUSH. It does not change what the software does, only how a label is spelled. There is no security issue here.

Lower-priorityvalidation: do not wipe utxo cache for stats/scans/snapshotsby Pieter Wuille · c6ca2b85 · Jan 3, 2026 · 8 filesMessage 93 · StrongInformational 24Details
Commit message · Pieter Wuille

validation: do not wipe utxo cache for stats/scans/snapshots

Since #28280, the cost of a non-wiping sync of the UTXO cache is only proportional to the number of dirty entries, rather than proportional to the size of the entire cache. Because of that, there is no reason to perform a wiping flush in case the contents of the cache is still useful.

Split the FlushStateMode::ALWAYS mode into a FORCE_SYNC (non-wiping) and a FORCE_FLUSH (wiping), and then use the former in scantxoutset, gettxoutsetinfo, snapshot creation.

Co-authored-by: l0rinc <pap.lorinc@gmail.com>
Co-authored-by: cedwies <141683552+cedwies@users.noreply.github.com>

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 24/100

This Bitcoin Core change tweaks how the in-memory UTXO cache is flushed to disk during certain RPC operations and snapshot creation. Previously these operations always wiped the cache, which could cause temporary performance slowdowns. The patch adds a non-wiping flush mode and uses it where the cache contents are still useful. It is a performance/robustness improvement, not a fix for an active security vulnerability.

Lower-prioritytest: fix feature_pruning when built without walletby brunoerg · 9b57c8d2 · Jan 2, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · brunoerg

test: fix feature_pruning when built without wallet

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 is a minor test-only fix. It moves a block-syncing step so that a wallet-related test only runs when the wallet feature is actually compiled in. There is no change to Bitcoin Core's production code, no security bug, and no user impact.

Lower-prioritydoc: archive release notes for v30.1by fanquake · bd730cb0 · Jan 2, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · fanquake

doc: archive release notes for v30.1

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 adds a new documentation file archiving the release notes for Bitcoin Core version 30.1. It contains only text describing what changed in that release and credits contributors. No program code was modified, so it cannot introduce a security vulnerability or fix one.

Lower-priorityqa: Require `--exclude` for each excluded testby Hennadii Stepanov · c5825d4b · Jan 2, 2026 · 4 filesMessage 70 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

qa: Require `--exclude` for each excluded test

Co-authored-by: Lőrinc <pap.lorinc@gmail.com>

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a quality-assurance cleanup for Bitcoin Core's test runner. It changes how tests are excluded from a comma-separated list to one test per `--exclude` flag. There is no security relevance: it does not touch consensus code, networking, wallet handling, or any production behavior. It only affects internal test tooling and CI scripts.

Lower-prioritytest: Run bench sanity checks in parallel with functional testsby MarcoFalke · fa65bc0e · Jan 1, 2026 · 4 filesMessage 72 · AdequateInformational 15Details
Commit message · MarcoFalke

test: Run bench sanity checks in parallel with functional tests

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 reorganizes how Bitcoin Core runs its benchmark sanity checks. Previously, the bench_bitcoin -sanity-check command was run as a separate CI step and as a CMake test. Now, it is run as part of the functional test suite, with each individual benchmark sanity check executed in parallel alongside other functional tests. There is no change to production code, consensus logic, wallet handling, or network behavior. It is purely a testing infrastructure change.

Lower-prioritytest: Pass bench exe into test framework utilsby MarcoFalke · fa9fdbce · Jan 1, 2026 · 5 filesMessage 82 · StrongInformational 15Details
Commit message · MarcoFalke

test: Pass bench exe into test framework utils

This teaches the test framework about the bench executable, which is
required for the next commit.

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
AI analysis · Informational 15/100

This commit only adds plumbing so the Bitcoin Core test framework can locate and run the existing bench_bitcoin benchmark executable during tests. It does not change any network, wallet, consensus, or cryptographic code, and it introduces no user-facing behavior.

Lower-prioritydoc: fix double-word typos in commentsby bensig · 08ed802b · Dec 30, 2025 · 5 filesMessage 45 · ThinInformational 15Details
Commit message · bensig

doc: fix double-word typos in comments

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only fixes five instances of accidental repeated words (like 'the the' or 'for for') inside code comments and documentation strings. No actual program logic was changed, so it cannot affect how the software runs or introduce any security issue.

Lower-prioritydoc: Update OpenBSD Build Guideby Hennadii Stepanov · 84d8c526 · Dec 30, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Hennadii Stepanov

doc: Update OpenBSD Build Guide

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 is a routine documentation update for building Bitcoin Core on OpenBSD. It changes the recommended OpenBSD version from 7.6 to 7.8 and replaces instructions to build Cap'n Proto from source with a simpler command to install it via the OpenBSD package manager. There is no code change and no security relevance.

Lower-prioritychange test_runner.py to be cwd independent by calling subprocess.run with cwd arg.by Robin David · 77c9b3c0 · Dec 30, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Robin David

change test_runner.py to be cwd independent by calling subprocess.run with cwd arg.

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

This is a small developer-tooling fix for Bitcoin Core's fuzzing test runner. It changes how a Python script calls Git so the script works correctly no matter which folder you run it from. There is no security vulnerability or user-facing risk.

Lower-prioritypolicy: remove constant parameter from `IsWellFormedPackage`by Lőrinc · 658d3810 · Dec 29, 2025 · 4 filesMessage 91 · StrongInformational 15Details
Commit message · Lőrinc

policy: remove constant parameter from `IsWellFormedPackage`

`IsWellFormedPackage()` already claims: "parents must appear before children."
In practice the `require_sorted` argument was always passed as `true`, making the false-path dead code.
It was introduced that way from the beginning in https://github.com/bitcoin/bitcoin/pull/28758/files#diff-f30090b30c9489972ee3f1181c302cf3a484bb890bade0fd7c9ca92ea8d347f6R79.

Remove the unused parameter, updating callers/tests.

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

This is a small code cleanup change in Bitcoin Core. It removes an unused option from a function that checks whether a group of transactions (a 'package') is properly ordered. The option was always set to 'true' everywhere it was used, so the code path for 'false' was never reachable. The change simplifies the function and its tests but does not alter actual behavior or fix any security issue.

AI review queueddoc: update copyright yearby fanquake · b23b9013 · Dec 29, 2025 · 3 filesMessage 35 · OpaqueInformational 15Details
Commit message · fanquake

doc: update copyright year

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates the copyright year from 2025 to 2026 in three documentation/legal files. It does not change any executable code, build logic, or network behavior, and has no security relevance.

Lower-prioritytest: ensure clean orphanage before continuingby Greg Sanders · 95ef0fc5 · Dec 29, 2025 · 1 fileMessage 98 · StrongInformational 15Details
Commit message · Greg Sanders

test: ensure clean orphanage before continuing

The tests were written assuming transaction orphans would
persist for a time beyond the test peer's disconnection.
After #31829 this no longer holds, so as a minimal fix we
modify the test to wait until the orphans are removed before
continuing with the final transaction submissions.

98/100 · StrongMessage clarity
✓ 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 is a test-only change in Bitcoin Core's functional test suite. It adjusts a test to wait for orphan transactions to be cleared after a peer disconnects, because a previous code change made orphans disappear faster than the test originally expected. There is no change to production code, no vulnerability, and no security risk to users.

Lower-prioritytest: change low fee parents to 0-feeby Greg Sanders · 25e84d37 · Dec 29, 2025 · 1 fileMessage 90 · StrongInformational 15Details
Commit message · Greg Sanders

test: change low fee parents to 0-fee

The test is harder to read, and had an explicit 1sat/vbyte
floor assumption in a single place which is incorrect. Using
0-fee makes the test more future proof.

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

This commit only changes a single test file. It simplifies how test transactions are created by using zero-fee parent transactions instead of carefully calculated low-but-nonzero fees. There is no change to Bitcoin Core's actual network, consensus, or wallet code, so it cannot affect real users or funds.

Lower-priorityRemove stale rationale paragraphby flack · 337b4a23 · Dec 27, 2025 · 1 fileMessage 58 · ThinInformational 15Details
Commit message · flack

Remove stale rationale paragraph

It belonged to the note removed in #33892

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only removes an outdated explanatory paragraph from a documentation file. No code, logic, or behavior of the Bitcoin Core software is changed. It is purely a cleanup of stale text that referenced a note removed in an earlier pull request.

AI review queuedtest: Enable ruff E713 lintby MarcoFalke · fab300b3 · Dec 26, 2025 · 10 filesMessage 67 · AdequateInformational 15Details
Commit message · MarcoFalke

test: Enable ruff E713 lint

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 turns on a Python style lint rule (E713) that prefers 'not in' over 'not ... in'. It updates test scripts and helper tools to match the style, with no changes to the Bitcoin Core software that users run. There is no security issue here.