BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

2900 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
206commits · 30 days
502commits · 60 days
1535commits · 180 days
2884commits · 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
937Strong · 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 15 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-priorityrefactor: Remove workaround for resolved MSVC bugby Hennadii Stepanov · 452c7439 · Feb 10, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

refactor: Remove workaround for resolved MSVC bug

The bug was fixed in Visual Studio 18.0.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit removes a temporary workaround that was only needed for a bug in older Microsoft Visual Studio compilers. The workaround wrapped certain fixed Bitcoin block hashes so the compiler would accept them. Now that the compiler bug is fixed, the code can use the hashes directly. There is no change to Bitcoin's rules, data, or security.

Lower-prioritybuild: Bump VS minimum supported version to 18.3by Hennadii Stepanov · 7164a0ca · Feb 10, 2026 · 4 filesMessage 57 · ThinInformational 15Details
Commit message · Hennadii Stepanov

build: Bump VS minimum supported version to 18.3

57/100 · ThinMessage clarity
✓ 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 routine build-system maintenance change. It updates Bitcoin Core's Windows build instructions and automated CI scripts to require a newer version of Microsoft Visual Studio (VS 2026 instead of VS 2022). There is no change to the actual Bitcoin node code, wallet logic, networking, or consensus rules, and nothing in the commit suggests a security fix or vulnerability.

Security candidatebuild: avoid exporting secp256k1 symbolsby Cory Fields · 2ccfdb58 · Feb 10, 2026 · 1 fileMessage 92 · StrongLow 29Details
Commit message · Cory Fields

build: avoid exporting secp256k1 symbols

Take advantage of the new secp256k1 option to avoid visibility attributes on
API functions.

While most users of a shared libsecp always want API functions exported so that
they can actually be linked against, we always build it statically. When that
static lib is linked into a (static or shared) libbitcoinkernel, by default its
symbols end up exported there as well.

As libsecp is an implementation detail of the kernel (and any future Core lib),
its symbols should never be exported.

92/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
cryptography-sensitive path
AI analysis · Low 29/100

This change adjusts how Bitcoin Core builds an internal cryptographic library (libsecp256k1) so that its internal function names are no longer exposed in the final library files. It is a hardening/cleanup change rather than a fix for an active bug or exploit. The commit message frames it as preventing implementation-detail symbols from leaking out of the kernel library, which can reduce attack surface but does not by itself fix a known vulnerability.

AI review queued[refactor] rename variable to clarify it is unused and cluster countby glozow · f7be5fb8 · Feb 10, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · glozow

[refactor] rename variable to clarify it is unused and cluster count

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple code cleanup: it renames a local variable from 'descendant_count' to 'unused_cluster_count' in two wallet files to make clear that the value is not actually used. There is no functional change, no bug fix, and no security relevance.

Lower-priorityFixup TODO comment in feature_dbcrash.py; remove unnecessary sleepby MarcoFalke · fa8c8951 · Feb 10, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · MarcoFalke

Fixup TODO comment in feature_dbcrash.py; remove unnecessary sleep

Co-authored-by: l0rinc <pap.lorinc@gmail.com>

45/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body! Contains work-in-progress language
AI analysis · Informational 15/100

This is a minor cleanup change in a test script only. It rewords a comment, removes a one-second sleep, and extends the effective timeout from 60 to 120 seconds (the loop already used 120, but the docstring said 60). It does not touch production code, network behavior, or wallet handling, so it has no security relevance for Bitcoin users.

Lower-priorityci: Extend diff context for clang-formatby Hennadii Stepanov · f8d2f30b · Feb 10, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Hennadii Stepanov

ci: Extend diff context for clang-format

This ensures clang-format can properly restore empty lines between
header groups that were previously stripped by fix_includes.py.

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 minor change to Bitcoin Core's continuous integration (CI) script. It adjusts how many lines of surrounding context are shown when checking code formatting. There is no security issue here.

Lower-prioritynet: Store recipient node address in private broadcastby Andrew Toth · 573bb542 · Feb 10, 2026 · 4 filesMessage 50 · ThinInformational 18Details
Commit message · Andrew Toth

net: Store recipient node address in private broadcast

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

This commit adds the recipient's network address to the bookkeeping records used by Bitcoin Core's private transaction broadcast feature. It does not change how transactions are sent or validated; it only stores extra metadata for internal tracking. There is no direct security vulnerability visible in the change, and the commit message does not describe it as a security fix.

Lower-priorityci: [refactor] Use pathlib over os.pathby MarcoFalke · fa13b132 · Feb 10, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · MarcoFalke

ci: [refactor] Use pathlib over os.path

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

This commit is a minor code cleanup in a Windows CI (continuous integration) helper script. It replaces older-style file path construction with a newer Python standard library approach. There is no security-relevant change and no user-facing behavior change.

Lower-priorityci: [refactor] Move run_unit_tests to ci-windows-cross.pyby MarcoFalke · fa2719ab · Feb 10, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: [refactor] Move run_unit_tests to ci-windows-cross.py

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This change simply moves existing Windows unit-test commands out of a GitHub workflow file and into a Python helper script. It is a pure code reorganization with no visible security relevance.

Lower-priorityci: Set PREVIOUS_RELEASES_DIR env var in ci-windows-cross.pyby MarcoFalke · fa99ba5f · Feb 10, 2026 · 2 filesMessage 89 · StrongInformational 15Details
Commit message · MarcoFalke

ci: Set PREVIOUS_RELEASES_DIR env var in ci-windows-cross.py

This uses the workspace instead of the runner.temp, so that it is easier
to reproduce the CI locally.

89/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
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This is a small change to Bitcoin Core's internal continuous integration (CI) scripts. It moves the location where downloaded previous Bitcoin releases are stored from a temporary CI folder to the current workspace directory, making it easier for developers to reproduce CI test runs on their own machines. There is no user-facing change, no wallet or network code change, and no security issue visible in the diff.

Lower-priorityci: Move run_functional_tests into ci-windows-cross.pyby MarcoFalke · fa4a1cab · Feb 10, 2026 · 2 filesMessage 100 · StrongInformational 15Details
Commit message · MarcoFalke

ci: Move run_functional_tests into ci-windows-cross.py

This is mostly a refactor, except for putting the temp dirs into
Path.cwd(), which makes running this locally easier.

Note, the use of process_cpu_count() is intentional. It was only added
in Python 3.13, according to
https://docs.python.org/3/library/os.html#os.process_cpu_count .

However, Python 3.13 is also the minimum required version on Windows,
according to
https://github.com/bitcoin/bitcoin/issues/29897#issuecomment-2940318094
to avoid intermittent test failures.

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
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a straightforward internal cleanup of Bitcoin Core's Windows CI (continuous integration) script. It moves the existing functional-test command from the GitHub Actions YAML file into a Python helper script, with no changes to the actual Bitcoin node code that users run. There is no security-relevant change visible in the diff.

Lower-priorityci: [refactor] Move pyzmq install and get_previous_releases into ci-windows-cross.pyby MarcoFalke · 11111086 · Feb 10, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: [refactor] Move pyzmq install and get_previous_releases into ci-windows-cross.py

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a pure internal cleanup of Bitcoin Core's continuous integration (CI) scripts for Windows builds. It moves two steps—downloading previous Bitcoin releases and installing a Python library called pyzmq—into a single Python helper script. There is no change to the Bitcoin software that users run, no change to wallets, networking, consensus rules, or cryptography, and no security-relevant behavior is introduced.

Lower-priorityci: [refactor] Move config.ini rewrite to ci-windows-cross.pyby MarcoFalke · fac9c7bd · Feb 10, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: [refactor] Move config.ini rewrite to ci-windows-cross.py

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a straightforward internal cleanup of Bitcoin Core's Windows CI workflow. It moves the rewriting of test/config.ini from a PowerShell inline step in the GitHub Actions YAML file into a Python helper script. There is no change to what gets written, no user-facing behavior change, and no security relevance.

Lower-prioritytest(miniscript): Check for depth rather than script sizeby Hodlinator · 39e3295c · Feb 10, 2026 · 1 fileMessage 100 · StrongInformational 12Details
Commit message · Hodlinator

test(miniscript): Check for depth rather than script size

CI failure due to default ~Node() implementation has been confirmed on Windows native, MacOS native, 32-bit ARM, ASan+LSan+UBSan+integer, i686, TSan, MSan. (Not on Alpine as that runs without CI_LIMIT_STACK_SIZE).

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

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

This is a test-only change in Bitcoin Core's miniscript unit tests. It swaps one internal test assertion (checking script size) for another (checking tree depth) so that the test can reliably detect stack-unsafe destructor implementations under CI's reduced stack size. It does not change production code, consensus rules, network behavior, or wallet operations.

Lower-priorityci: Move check_manifests step to ci-windows-cross.pyby MarcoFalke · faf73894 · Feb 10, 2026 · 2 filesMessage 77 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: Move check_manifests step to ci-windows-cross.py

This is almost a refactor. The only change is putting the
bitcoind.manifest into a different folder.

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This change simply moves an existing Windows CI check from a GitHub Actions workflow file into a Python helper script. It does not change what the check does, only where the code lives and which folder temporarily holds one output file. There is no security issue here.

Lower-priorityci: [refactor] Move print_version step into ci-windows-cross.py helperby MarcoFalke · fa674d55 · Feb 10, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: [refactor] Move print_version step into ci-windows-cross.py helper

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a routine cleanup of the project's automated Windows build testing. It moves a single step—printing the version of the compiled Bitcoin daemon—out of the GitHub Actions workflow file and into a small Python helper script. There is no change to the Bitcoin software users run, no security fix, and no vulnerability introduced.

Lower-prioritytxgraph: use fallback order when linearizing (feature)by Pieter Wuille · 0a335194 · Feb 9, 2026 · 1 fileMessage 73 · AdequateInformational 18Details
Commit message · Pieter Wuille

txgraph: use fallback order when linearizing (feature)

Add glue to make TxGraph use the fallback order provided to it, in the
fallback comparator it provides to the cluster linearization code.

The order of chunks within a cluster becomes:
1. Topology (chunks after their dependencies)
2. Feerate (high to low)
3. Weight (small to large)
4. Max-txid (chunk with lowest maximum-txid first)

The order of transactions within a chunk becomes:
1. Topology (parents before children)
2. Individual transaction feerate (high to low)
3. Weight (small to large)
4. Txid (low to high txid)

This makes optimal cluster linearization, both the order of chunks
within a chunk, and the order of transactions within those chunks,
completely deterministic.

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

This change makes Bitcoin Core's transaction-graph cluster linearization use a deterministic fallback ordering when the optimal algorithm ties or cannot fully decide. Previously the fallback relied on internal index numbers, which could leak information about how transactions are stored internally. The new fallback uses actual transaction properties (feerate, weight, txid) and an externally supplied order, making behavior predictable and less dependent on internal memory layout. It is a hardening/feature improvement rather than a fix for an active exploit.

Lower-priorityclusterlin: make optimal linearizations deterministic (feature)by Pieter Wuille · 39d0052c · Feb 9, 2026 · 6 filesMessage 78 · AdequateInformational 21Details
Commit message · Pieter Wuille

clusterlin: make optimal linearizations deterministic (feature)

This allows passing in a fallback order comparator to Linearize(), which
is used as final tiebreak when deciding the order of chunks and
transactions within a chunk, rather than a random tiebreak.

The order of transactions within a chunk becomes:
1. Topology (parents before children)
2. Individual transaction feerate (high to low)
3. Weight (small to large)
4. Fallback (low to high fallback order)

The order of chunks within a cluster becomes:
1. Topology (chunks after their dependencies)
2. Feerate (high to low)
3. Weight (small to large)
4. Max-fallback (chunk with lowest maximum-fallback-tx first)

For now, txgraph passes a naive comparator to Linearize(), which makes
the cluster order deterministic when treating the input transactions as
identified by the DepGraphIndex. However, since DepGraphIndexes are the
result of possibly-randomized operations inside txgraph, this doesn't
actually make txgraph's per-cluster ordering deterministic. That will be
changed in a later commit, by using a txid-based fallback instead.

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
AI analysis · Informational 21/100

This commit removes random tie-breaking when Bitcoin Core's transaction-cluster linearization algorithm orders equal-feerate transactions or chunks. It replaces the random choice with a deterministic fallback comparator. The change is described by the author as a feature, not a security fix, and the commit message explicitly notes that txgraph's overall ordering is still not fully deterministic because internal indexes can still be assigned randomly. Tests are updated to expect exact orderings instead of just comparing fee-rate diagrams.

Lower-prioritytxgraph: sort distinct-cluster chunks by equal-feerate-prefix size (feature)by Pieter Wuille · 8bfbba32 · Feb 9, 2026 · 2 filesMessage 73 · AdequateInformational 18Details
Commit message · Pieter Wuille

txgraph: sort distinct-cluster chunks by equal-feerate-prefix size (feature)

This makes TxGraph track the equal-feerate-prefix size of all chunks in
all clusters in the main graph, and uses it to sort chunks coming from
distinct clusters.

The order of chunks across clusters becomes:
1. Feerate (high to low)
2. Equal-feerate-prefix (small to large)
3. Cluster sequence number (old to new); this will be changed later.

The equal-feerate-prefix size of a chunk C is defined as the sum
of the weights of all chunks in the same cluster as C, with the same
feerate as C, up to and including C itself, in linearization order (but
excluding such chunks that appear after C).

This is an approximation of sorting chunks from small to large across
clusters, while remaining consistent with intra-cluster linearization
order.

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

This commit changes how Bitcoin Core's new transaction graph (TxGraph) orders groups of transactions (called 'chunks') when they have the same transaction fee rate but come from separate, unrelated clusters of transactions. It introduces a tie-breaker based on the total size of consecutive same-fee-rate chunks within a cluster. The change is described by the project as a feature improvement, not a security fix, and includes new fuzz-test checks to verify the ordering behaves consistently.

Lower-prioritytxgraph: update chunk index on Compact (preparation)by Pieter Wuille · 7427c7d0 · Feb 9, 2026 · 1 fileMessage 73 · AdequateInformational 16Details
Commit message · Pieter Wuille

txgraph: update chunk index on Compact (preparation)

This makes TxGraphImpl::Compact() invoke Cluster::Updated() on all
affected clusters, in case they have internal GraphIndex values stored
that may have become outdated with the renumbering of GraphIndex values
that Compact() caused.

No such GraphIndex values are currently stored, but this will change in
a future commit.

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

This is a small internal preparation change in Bitcoin Core's new transaction-graph code. It makes the index-compaction routine notify affected transaction clusters after graph indexes are swapped, so that future code can safely store extra index-based data. The commit itself does not introduce or fix any currently reachable bug; it only lays groundwork and adds defensive consistency checks.

Lower-prioritytxgraph: clear cluster's chunk index in ~Ref (preparation)by Pieter Wuille · 6c1bcb2c · Feb 9, 2026 · 1 fileMessage 85 · StrongInformational 18Details
Commit message · Pieter Wuille

txgraph: clear cluster's chunk index in ~Ref (preparation)

Whenever a TxGraph::Ref is destroyed, if it by then still appears inside
main-level clusters, wipe the chunk index entries for those clusters, to
prevent having lingering indexes for transactions without Ref.

This is preparation for enabling a callback being passed to MakeTxGraph
to define a fallback order on objects. Once the Ref for a transaction is
gone, it is not possible to invoke the callback anymore. To prevent the
index becoming inconsistent, we need to immediately get rid of the index
entries when the Ref disappears.

This is not a problem, because such destructions necessarily will
trigger a relinearization of the cluster (assuming there are
transactions in it left) before becoming acceptable again, and the chunk
ordering is not observable (through CompareMainOrder, or through the
BlockBuilder interface) until that point. However, the index itself
needs to remain consistent in the mean time, even if not meaningful.

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 18/100

This is a small internal cleanup in Bitcoin Core's new transaction graph code. It makes sure that when a transaction reference object is destroyed, any cached 'chunk index' bookkeeping for its cluster is wiped out. The commit message explicitly says this is preparation for a future feature and is not currently a problem, because the index is not observable by outside code until the cluster is reprocessed anyway. There is no direct evidence this fixes an exploitable security bug.

Lower-priorityclusterlin: sort tx in chunk by feerate and size (feature)by Pieter Wuille · e0bc73ba · Feb 9, 2026 · 2 filesMessage 78 · AdequateInformational 15Details
Commit message · Pieter Wuille

clusterlin: sort tx in chunk by feerate and size (feature)

This changes the order of transactions within a chunk to be:
1. Topology (parents before children)
2. Individual transaction feerate (high to low)
3. Individual transaction weight (small to large)
4. Random tiebreak (will be changed in a future commit)

To do so, use a heap of topology-ready transactions within
GetLinearization(), sorted by (2), (3), and (4).

This is analogous to the order of chunks within a cluster, which is
unchanged:
1. Topology (chunks after chunks they depend on)
2. Chunk feerate (high to low)
3. Chunk weight (small to large)
4. Random tiebreak (will be changed in a future commit)

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
AI analysis · Informational 15/100

This commit changes how Bitcoin Core orders transactions inside a 'chunk' during a process called cluster linearization. Previously, transactions within a chunk were picked in a random order; now they are sorted by fee rate (highest first) and then by size (smallest first), while still respecting parent-before-child dependencies. This is a deliberate feature change, not a security fix, and includes new fuzz tests to verify the ordering rules.

Lower-prioritytxgraph: use fallback order to sort chunks (feature)by Pieter Wuille · 6f113cb1 · Feb 9, 2026 · 3 filesMessage 73 · AdequateInformational 19Details
Commit message · Pieter Wuille

txgraph: use fallback order to sort chunks (feature)

This makes TxGraph also use the fallback order to decide the order of
chunks from distinct clusters.

The order of chunks across clusters becomes:
1. Feerate (high to low)
2. Equal-feerate-chunk-prefix (small to large)
3. Max-txid (chunk with lowest maximum-txid first)

This makes the full TxGraph ordering fully deterministic as long as all
clusters in it are optimally linearized.

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

This commit changes how Bitcoin Core orders groups of related transactions (called 'chunks') in its internal transaction graph. It replaces a non-deterministic tie-breaker based on internal cluster sequence numbers with a deterministic one based on transaction IDs. The goal is to make the mempool ordering fully predictable, which helps with testing and may reduce subtle consensus or network behavior differences between nodes. There is no indication this fixes an active security vulnerability.

Lower-prioritytxgraph test: subclass TxGraph::Ref like mempool does (preparation)by Pieter Wuille · 941c432a · Feb 9, 2026 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Pieter Wuille

txgraph test: subclass TxGraph::Ref like mempool does (preparation)

This is a small change to the txgraph fuzz test to make it used objects
derived from TxGraph::Ref (SimTxObject) rather than TxGraph::Ref
directly. This matches how the mempool uses CTxMemPoolEntry, which
derives from TxGraph::Ref.

This is preparation for a future commit which will introduce simulated
txids to the transactions in this fuzz test, to be used as fallback
order.

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
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only changes an internal fuzz test file. It replaces direct use of a base class (TxGraph::Ref) with a new empty subclass (SimTxObject) inside the test code, so the test structure better matches how the real mempool uses derived objects. There is no change to production code, network behavior, wallets, consensus, or any user-facing functionality.

AI review queuedtxgraph: pass fallback_order to TxGraph (preparation)by Pieter Wuille · fba004a3 · Feb 9, 2026 · 7 filesMessage 73 · AdequateInformational 15Details
Commit message · Pieter Wuille

txgraph: pass fallback_order to TxGraph (preparation)

This adds an std::function<strong_ordering(Ref&,Ref&)> argument to the
MakeTxGraph function, which can be used by the caller (e.g., mempool
code) to provide a fallback order to TxGraph.

This is just preparation; TxGraph does not yet use this fallback order
for anything.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a pure internal refactoring in Bitcoin Core. It adds a new optional tie-breaker function (called fallback_order) to the transaction graph (TxGraph) code, but explicitly does not use it yet. It is preparation for future work and does not change any network behavior, consensus rules, or security properties.