Test infrastructure

PRPriorityReviewabilityReviewsAgreementSize
(+)#36437 instagibbs orphanage: Fix orphan reconsideration disconnect hole, add 1p1c invariant harnessP1 · test coverageReady1Strong21 + 619 tests
  • Prevent orphan transactions from getting stranded when an announcing peer disconnects or is evicted
  • Ensure CPFP child transactions relay reliably instead of being stalled out of the mempool
  • P1 after comparing with the other PRs here (assessed alone as P2): Raised to P1: the harness found a real relay liveness bug from an empty corpus and unblocks follow-up hole fixes in #36506 — end-to-end p2p+validation fuzzing is the highest-value coverage gap here.
  • P2 because it adds an end-to-end fuzz target driving P2P message handling with real validation
  • Finds the orphan liveness bug from an empty corpus within an hour and unblocks follow-up testing
  • Ready to review; nothing known that would invalidate a review
  • Serves as the base for follow-up PR #36506
  • Strong support with no open objections
  • Verified by reproducing the disconnect hole end-to-end and checking iterator safety (fametrano)
  • Concept approval without stated reasons (w0xlt)
  • 21 lines added or modified outside tests
  • 619 lines added or modified in tests
  • 10 lines removed in total
  • 6 files, 2 commits
(+)#36618 maflcko test: Wait for index sync in all testsP2 · bug fixReady1Strong0 + 41 tests
  • Prevent intermittent test flakes caused by races between background indices and test operations
  • Automatically wait for enabled indices on node startup and sync instead of requiring manual waits
  • P2 because it fixes intermittent test failures caused by races with unsynced background indices
  • Centralizing index synchronization improves functional test reliability and eliminates boilerplate
  • Ready to review
  • Substantive support with no open objections
  • Concept approval because it cleans up tests with no performance impact (ViniciusCestarii)
  • Coverage objection withdrawn after author clarified test behavior (ViniciusCestarii)
  • Confirmed the test failure reproducer and asked whether the first commit is needed (hebasto)
  • 0 lines added or modified outside tests
  • 41 lines added or modified in tests
  • 71 lines removed in total
  • 18 files, 2 commits
(+)#36408 fametrano test: allow 3 bytes of fee overestimate in assert_fee_amountP2 · bug fixReady1Strong0 + 3 tests
  • Prevent intermittent CI failures in wallet functional tests
  • Avoid false test failures when rare short signatures cause three bytes of fee overestimation
  • P2 because it fixes a recurring source of intermittent CI test failures
  • Resolves false-positive failures in wallet tests without weakening assertions beyond rare signature variance
  • Ready for review
  • Strong support with no open objections
  • Verified by artificially forcing a three-byte overestimate to confirm tests pass (Ayoazeez26)
  • 0 lines added or modified outside tests
  • 3 lines added or modified in tests
  • 2 lines removed in total
  • 1 files, 1 commits
(+)#36635 fametrano fuzz: Add a target that feeds arbitrary bytes to V2TransportP2 · test coverageReady0Crickets0 + 102 tests
  • Fuzz test BIP 324 transport message reception with arbitrary and malformed byte streams
  • Ensure post-handshake receive state transitions and error handling withstand hostile peer traffic
  • P2 because it adds fuzz coverage for high-risk P2P message handling paths fuzzers currently miss
  • Exercises BIP 324 receive states and error handling against hostile peer traffic past the handshake
  • Ready to review
  • No review verdicts recorded
  • No substantive comments either way yet
  • Addressed suggestions to assert session ID and test the rekey interval with decoys (uqlidi)
  • Awaiting follow-up review on the updated changes (uqlidi)
  • 0 lines added or modified outside tests
  • 102 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#36587 hebasto qa: Fix `interface_ipc*.py` on NetBSD and prevent future regressionsP2 · bug fixReady0Blocked0 + 59 tests
  • Fix interface IPC functional test failures on NetBSD
  • Catch file descriptor budget regressions in per-PR CI rather than waiting for nightly runs
  • P2 after comparing with the other PRs here (assessed alone as P3): Raised to P2 for consistency with #36408: both fix recurring real test failures, and this one also adds CI enforcement so the FD-budget regression is caught per-PR.
  • P3 because it fixes recurring functional test failures under NetBSD's low FD limits
  • Restores clean test runs on NetBSD by adjusting IPC test connection overhead
  • Ready to review
  • Concept approval without stated reasons (Sjors)
  • Unaddressed objection: wrapper script loses coverage for infinite file descriptors (Sjors)
  • Suggested setting pipefail and nounset in the wrapper script (maflcko)
  • 0 lines added or modified outside tests
  • 59 lines added or modified in tests
  • 14 lines removed in total
  • 5 files, 3 commits
(+)#35000 ismaelsadeeq test: Add block validation unit testsP2 · test coverageReady0 (+1)Strong0 + 1,384 tests
  • Catch consensus validation regressions by adding unit tests for block validation failure modes
  • Help developers safely refactor validation logic with reusable test fixtures across entry points
  • P2 because it adds unit coverage for consensus failure modes across multiple validation entry points
  • Prevents subtle validation regressions from slipping through during validation refactoring
  • Reviewing now is worthwhile with nothing known that would invalidate a review
  • Strong support for covering consensus failure modes across validation entry points (sedited)
  • Approval of the unit test suite and concept (w0xlt)
  • Supported the unit tests after redundant fuzz harness was removed (marcofleon)
  • Open suggestions on declarative test structuring and extra test cases (sedited)
  • 0 lines added or modified outside tests
  • 1,384 lines added or modified in tests
  • 0 lines removed in total
  • 8 files, 3 commits
(+)#35713 rustaceanrob Remove boost as a unit test runnerP2 · cleanupReady0Mild3 + 1,433 tests
  • Eliminate external Boost.Test dependencies and packaging overhead for unit tests
  • Provide clearer failure diagnostics for test authors via automatic expression decomposition
  • Make unit tests easier to run, maintain, and integrate with development tooling
  • P2 because replacing Boost.Test with an in-tree runner fulfills a long-standing project goal
  • Expression decomposition automatically reports operand values during assertion failures
  • An in-house framework removes friction for test authors and enables future test concurrency
  • Ready for review
  • The latest push addressing string formatting and macros is ready for reviewer feedback
  • Concept approval because an in-house runner lowers test barriers and enables CI concurrency (josibake)
  • Concept approval after verifying the test suite passes and scripted diffs reproduce (jeanpablojp)
  • Answered objection regarding static assertions for unprintable optionals awaits reviewer reply (jeanpablojp)
  • Open question on whether failure-path tests for the framework belong in a follow-up (jeanpablojp)
  • 3 lines added or modified outside tests
  • 1,433 lines added or modified in tests
  • 218 lines removed in total
  • 167 files, 9 commits
(+)#35774 willcl-ark ci: test cross-built macos arm64 binariesP2 · test coverageReady0Strong127
  • Catch platform-specific runtime defects before release by testing cross-built macOS arm64 binaries in CI
  • P2 because it extends unit test execution to native macOS arm64 hardware
  • Provides test coverage to catch realistic platform-specific runtime crashes
  • Ready for review following recent rebase
  • Concept support to test release-like cross-built macOS binaries natively in CI (fanquake)
  • Resolved prior questions regarding determinism, environment setup, and cache usage (maflcko)
  • 127 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 6 lines removed in total
  • 3 files, 3 commits
(+)#36082 willcl-ark ci: add Guix builds to CIP2 · test coverageReady0Strong399 + 11 tests
  • Test Guix release binaries continuously in CI instead of waiting for manual builds or release time
  • Catch broken build manifests, codesign dependencies, and toolchain bugs before changes merge
  • P2 after comparing with the other PRs here (assessed alone as P3): Raised to P2 to match #35774: both close the gap of release-like binaries never being exercised by CI, and this one covers all three platforms plus codesign environments.
  • P3 because running the existing test suite on Guix binaries verifies release package behavior
  • Drives existing test machinery on release archives rather than expanding test framework capabilities
  • Reviewing now is worthwhile with no blocking issues
  • Strong support for catching build and release issues early in CI (fanquake)
  • Concept approval without stated reasons (sedited)
  • Withdrew objections after author agreed to drop the problematic commit (hebasto)
  • Confirmed no objection after suggesting running tests on the binaries (maflcko)
  • 399 lines added or modified outside tests
  • 11 lines added or modified in tests
  • 2 lines removed in total
  • 7 files, 6 commits
(+)#36129 HowHsu fuzz: reset chainman after external block importsP3 · bug fixReady0Crickets0 + 23 tests
  • Prevent fuzz iteration state contamination in external block file fuzzing
  • Fixes non-reproducible fuzz crashes and order-dependent test coverage
  • P3 because it fixes state contamination causing non-reproducible fuzz crashes
  • Benefit is isolated to a single fuzz target
  • Ready to review
  • No review verdicts recorded
  • No substantive reviews or comments yet
  • Question asked about using a dirty-guard for performance (maflcko)
  • 0 lines added or modified outside tests
  • 23 lines added or modified in tests
  • 2 lines removed in total
  • 1 files, 1 commits
(+)#31349 vasild ci: detect outbound internet traffic generated while running testsP3 · test coverageAuthor silent 136d1 (+2)Mild0 + 77 tests
  • Prevent tests in CI from making unexpected outbound internet connections or leaking DNS queries
  • Keep test runs hermetic to avoid leaking environment data or causing flakiness
  • P3 because it ensures isolation across all test suites by catching leaked packets and DNS requests
  • Adds valuable leak detection but is non-critical and deferrable
  • Author has been inactive for 98 days
  • Review may wait on the author to address open feedback
  • Broad concept approval with multiple tested ACKs for blocking network leaks (0xB10C, Sjors, fjahr)
  • Code review approval on the latest revision (ryanofsky)
  • Unaddressed objection: packet direction flag is a no-op when reading capture files (fjahr)
  • Thinks the direction flag bug is harmless and would be good to address (ryanofsky)
  • 0 lines added or modified outside tests
  • 77 lines added or modified in tests
  • 2 lines removed in total
  • 6 files, 1 commits
(+)#36699 azuchi test: strengthen the tapscript CHECKMULTISIG asset tests and dump the expected errorP3 · test coverageReady0Crickets0 + 19 tests
  • Ensure tapscript test vectors fail specifically from banned opcodes rather than signature errors
  • Require script asset tests to verify the exact expected failure reason instead of generic failure
  • P3 because it closes a blind spot where broken tapscript implementations passed test vectors
  • Ensures test suites catch consensus violations that were previously masked by unrelated errors
  • Ranking pass: Moved up: this is a misleading-test fix (asset tests passed for an implementation that runs CHECKMULTISIG in tapscript), which the category ranks above plain added coverage.
  • Ready for review
  • No review verdicts recorded
  • No substantive discussion or review comments yet
  • A reviewer was pinged to take a look (fanquake)
  • 0 lines added or modified outside tests
  • 19 lines added or modified in tests
  • 1 lines removed in total
  • 2 files, 1 commits
(+)#33954 mzumsande test: add functional test for outbound connection managementP3 · test coverageWaiting on author0 (+2)Strong0 + 398 tests
  • Add functional test coverage for autonomous outbound connection decisions made by bitcoind
  • Enable end-to-end testing of stale tip peers, block-relay rotations, and network diversification
  • P3 because it generalizes proxy redirection in the test framework for autonomous outbound connections
  • Deduplicates custom proxy logic across tests and provides a reusable harness for P2P testing
  • Ready to review now because rebase conflicts with master are mechanical
  • Substantive support after running functional tests locally without failures (vasild, Bortlesboat)
  • Concept approval without stated reasons (0xB10C)
  • Unresolved question on whether network connection timing could cause test timeouts (vasild)
  • Open suggestions to pass address data to the factory and clarify a magic number (vasild, Bortlesboat)
  • 0 lines added or modified outside tests
  • 398 lines added or modified in tests
  • 102 lines removed in total
  • 4 files, 3 commits
(+)#36068 brunoerg fuzz: reuse one fuzzed wallet across inputsP3 · speedupReady2Strong19 + 124 tests
  • Speed up wallet fuzz testing by avoiding repetitive wallet construction across iterations
  • Eliminates heavy key derivation and descriptor setup overhead during fuzz runs
  • P3 because it speeds up wallet fuzzing throughput by 4x to 6x
  • Wallet fuzzers can test more inputs in less time by avoiding repeated setup
  • Ready for review
  • Verified speedup with qa-assets corpus showing roughly a 4x improvement (jeanpablojp)
  • Confirmed harness performance improvement through testing (frankomosh)
  • Approves noting that stability impact is acceptable (maflcko)
  • Earlier concerns about descriptor drift and leak reporting were fixed (jeanpablojp, frankomosh)
  • 19 lines added or modified outside tests
  • 124 lines added or modified in tests
  • 17 lines removed in total
  • 4 files, 2 commits
(+)#34969 brunoerg fuzz: several improvements to scriptpubkeyman harnessP3 · speedupAuthor silent 74d0Strong0 + 71 tests
  • Speed up the scriptpubkeyman fuzz harness to improve test throughput and coverage
  • Prevent fuzz runs from aborting prematurely when wallet descriptor updates fail
  • P3 because it delivers a three to ten times speedup for an existing slow fuzz harness
  • Fixes premature execution termination to enable deeper fuzz exploration
  • Ready for review
  • Strong support with verified benchmark speedups and no remaining objections
  • Verified benchmark speedup from roughly 39 to 385 executions per second (andrewtoth)
  • Concept approval for fixing the early return and moving heavy work out of hot paths (pablomartin4btc)
  • Resolved concerns about weakened assertions by restoring checks outside the loop (maflcko, pablomartin4btc)
  • 0 lines added or modified outside tests
  • 71 lines added or modified in tests
  • 86 lines removed in total
  • 3 files, 7 commits
(+)#35139 maflcko test: Add thread-safe fast-failing test macrosP3 · cleanupAuthor silent 73d0Positive0 + 337 tests
  • Add thread-safe and fail-fast test assertion macros that can be reused across unit and fuzz tests
  • Catch mixed-signedness comparisons at compile time and reduce cascading failure log noise in CI
  • P3 because this improves test infrastructure with thread safety under TSAN and compile-time checks
  • Modernizes assertions and reduces CI log noise rather than fixing an urgent failure
  • Ranking pass: Placed below the fuzz-throughput and signal fixes; it is framework capability whose payoff mostly lands with the Boost-runner migration.
  • Ready for review
  • Concept approval without stated reasons (sedited)
  • Withdrew concern about losing debug context after CI log truncation examples were shown (sedited)
  • 0 lines added or modified outside tests
  • 337 lines added or modified in tests
  • 162 lines removed in total
  • 4 files, 4 commits
(+)#36091 rustaceanrob test: Add debug output to common tested typesP3 · cleanupWaiting on author1 (+2)Strong0 + 384 tests
  • Make unit test failures print mismatched values instead of bare booleans
  • Speed up debugging for developers when test assertions fail on common types
  • P3 because it improves failure diagnostics for developers across 15 unit test suites
  • P3 because it enables a test framework migration without fixing flaky tests or coverage gaps
  • Ranking pass: Moved up: failure diagnostics plus preparation for the #35713 runner migration give it more leverage than standalone coverage additions.
  • Ready to review
  • Strong support with multiple substantive reviews and test verification
  • Verified by rebuilding and running the unit test suite (jeanpablojp)
  • Supports test cleanup and framework replacement effort (ismaelsadeeq)
  • Prior objections on missing fields, recompilations, and aborts resolved (jeanpablojp)
  • Open suggestion to convert newly added assertion call sites (sedited)
  • 0 lines added or modified outside tests
  • 384 lines added or modified in tests
  • 169 lines removed in total
  • 18 files, 2 commits
(+)#36627 willcl-ark tracing: run USDT tests without BPF privilegesP3 · cleanupReady0Strong18 + 395 tests
  • Run USDT tracepoint functional tests without requiring root permissions, BCC, or matching kernel headers
  • Make tracepoint tests easier for developers to run locally while dropping privileged mode in CI
  • P3 because running USDT tests locally without root or kernel headers is a clear developer improvement
  • It eliminates heavy tracing dependencies and removes over 600 lines of test code
  • USDT testing remains a specialized developer workflow, so the cleanup is deferrable
  • Ready to review
  • Substantive support for simplifying USDT testing by testing Core directly instead of BCC (0xB10C)
  • Concept approval without stated reasons (fanquake)
  • Questions on aarch64 compatibility and relation to broader tracing issues (0xB10C, maflcko)
  • Minor suggestions on CI comments and test configurations (maflcko)
  • 18 lines added or modified outside tests
  • 395 lines added or modified in tests
  • 1,073 lines removed in total
  • 12 files, 2 commits
(+)#35762 willcl-ark test: optionally run functional tests via CTestP3 · new featureWaiting on author1Strong14 + 233 tests
  • Run Python functional tests directly through CTest alongside unit tests
  • Enable fine-grained test filtering, parallel scheduling, and CDash dashboard reporting for developers
  • P3 because it expands runner execution options without changing test coverage or assertions
  • Helps developers schedule unit and functional suites together and prevents concurrent temp dir collisions
  • Ready to review now
  • Needs rebase due to conflicts with master, but the rebase is mechanical
  • Strong support for CMake integration and fine-grained test control (BrandonOdiwuor)
  • Verified test discovery, execution, fixtures, and CDash submission on Ubuntu (BrandonOdiwuor)
  • Concerns about CMake complexity, CI duplication, and win64 cross testing answered (maflcko)
  • Unanswered suggestion to rebase on PR 35846 for improved error handling (maflcko)
  • 14 lines added or modified outside tests
  • 233 lines added or modified in tests
  • 36 lines removed in total
  • 8 files, 6 commits
(+)#35356 maflcko ci: Test build dir with spacesP3 · test coverageAuthor silent 76d0Mild13
  • Catch path-quoting and subprocess bugs on Windows by testing builds in directory paths with spaces
  • P3 because it expands test harness coverage on Windows to paths with spaces
  • Directly catches subprocess invocation issues across functional tests
  • CI is failing, check whether the failure is caused by this PR before conducting a deep review
  • Concept approval without stated reasons (hebasto)
  • Objection: wallet_signer functional test fails on Windows paths with spaces (fanquake)
  • Author noted the failure is an expected reproduction of an existing bug, awaiting objector reply
  • 13 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 4 lines removed in total
  • 1 files, 2 commits
(+)#36631 brunoerg fuzz: add a custom mutator for PSBTP3 · test coverageReady0Blocked11 + 559 tests
  • Help fuzz testing explore deeper PSBT deserialization paths instead of failing on early checks
  • Prevents byte-level mutations from being rejected before reaching complex per-field parsing logic
  • P3 because it improves fuzz coverage for PSBT parsing rather than critical consensus or P2P surfaces
  • Deep parser exploration improves robustness against malformed data but is reasonably deferrable
  • Ranking pass: Moved up: a reusable custom-mutator hook is framework capability, not just one more target.
  • Ready for review
  • No review verdicts recorded
  • Blocking objection: breaks afl++ fuzzing in OSS-Fuzz due to an assertion failure (ekzyis)
  • Resolved question: confirmed intended key erasure behavior when the default mutator returns zero (ekzyis)
  • 11 lines added or modified outside tests
  • 559 lines added or modified in tests
  • 3 lines removed in total
  • 7 files, 2 commits
(+)#35964 laxmanacharya8 fuzz: add coverage for GetQueryParameterFromUriP3 · test coverageReady0 (+1)Positive0 + 25 tests
  • Add fuzz coverage for parsing remote unauthenticated REST query parameters
  • Detects parsing anomalies and crashes on malformed URI inputs
  • P3 because it adds fuzz coverage for parsing unauthenticated remote REST query strings
  • It improves parser robustness but does not touch consensus, mempool, or P2P logic
  • Ready for review now
  • Concept approval without stated reasons (nervana21)
  • Verified by testing the updated fuzz target (nervana21)
  • Resolved objection: harness did not prove keys after fragment delimiters are ignored (nervana21)
  • 0 lines added or modified outside tests
  • 25 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#36073 nervana21 fuzz: Add musig harnessP3 · test coverageReady0Strong0 + 227 tests
  • Add dedicated fuzz testing coverage for MuSig module wrapper APIs
  • Exercises key aggregation, nonce generation, and signing fail paths against malformed inputs
  • P3 because it adds fuzz coverage for MuSig signing and aggregation APIs that lacked unit tests
  • Exercises input validation and edge cases against malformed inputs in cryptographic wrappers
  • Ready for review
  • Nothing known that would invalidate a review now
  • Substantive support with no open objections
  • Concept approval because the signing functions currently have no unit tests (jeanpablojp)
  • Concept approval without stated reasons (brunoerg)
  • Resolved an abort on random secnonces that broke oss-fuzz runs (jeanpablojp)
  • 0 lines added or modified outside tests
  • 227 lines added or modified in tests
  • 0 lines removed in total
  • 2 files, 1 commits
(+)#36254 0xB10C bench: add and use undo-data for BlockToJsonVerbosity3 benchP3 · test coverageReady1Strong0 + 21 tests
  • Make the blockToJSON verbosity 3 benchmark accurately measure performance by including block undo data
  • Prevents verbosity 3 benchmarks from performing identical work to verbosity 2 without exercising prevouts
  • P3 because it fixes an inaccurate benchmark harness to reflect true runtime performance
  • Ensures the benchmark actually exercises undo data reading, fee calculation, and prevout serialization
  • Ready to review
  • Strong support with no open objections
  • Verified by reproducing benchmark results and checking the undo data blob (ismaelsadeeq)
  • 0 lines added or modified outside tests
  • 21 lines added or modified in tests
  • 0 lines removed in total
  • 3 files, 1 commits
(+)#32554 l0rinc bench: replace embedded raw block with configurable block generatorP3 · test coverageReady0Strong0 + 579 tests
  • Allow benchmarks to test modern SegWit and Taproot workloads instead of an outdated 2016 pre-SegWit block
  • Enable block-to-JSON serialization benchmarks to exercise input fee and prevout paths with synthetic undo data
  • P3 because it enables benchmarking modern SegWit and Taproot workloads instead of an obsolete 2016 block
  • Valuable and extensible improvement to benchmark infrastructure, but reasonably deferrable
  • Ranking pass: Moved down to sit just after #36254, which fixes the same misleading verbosity-3 benchmark with far less machinery; the generator is the broader but more deferrable option.
  • Ready to review
  • Strong support for replacing the obsolete pre-SegWit block fixture (hodlinator, Raimo33, 0xB10C)
  • Support because it enables testing modern workloads and saves repository space (yuvicc, 0xB10C)
  • Resolved concern: block generator exceeding size limits on large scripts was fixed with sanity tests (hodlinator)
  • Concept approval without stated reasons (laanwj)
  • 0 lines added or modified outside tests
  • 579 lines added or modified in tests
  • 53 lines removed in total
  • 10 files, 4 commits
(+)#33959 yuvicc test: deduplicate reorg test codeP3 · cleanupReady0Crickets0 + 104 tests
  • Deduplicate reorg helper code across functional tests into the shared test framework
  • Switch reorg tests from using invalidateblock to realistic competing-chain reorgs
  • P3 because it consolidates copy-pasted reorg helpers across functional tests
  • Exercises realistic reorg code paths instead of bypassing them via invalidateblock
  • Ranking pass: Moved down: de-duplication plus more realistic reorg paths is valuable but ranks below coverage of high-risk code and framework capability.
  • Ready to review
  • No review verdicts recorded
  • No substantive support or objection yet
  • Author simplified changes to avoid overengineering per reviewer feedback (instagibbs)
  • Minor open suggestions on stale comments and subscript cleanup (instagibbs)
  • 0 lines added or modified outside tests
  • 104 lines added or modified in tests
  • 90 lines removed in total
  • 13 files, 2 commits
(+)#36109 l0rinc test: fix coinbases built on arbitrary parentsP3 · cleanupReady0Strong0 + 63 tests
  • Prevent future unit tests from creating invalid fork blocks when attaching templates to arbitrary parents
  • Ensure rebuilt test blocks correctly set work targets, subsidies, and minimum coinbase script lengths
  • P3 because it hardens test block creation utilities against edge cases rather than fixing active failures
  • Existing callers work around these boundary conditions, so no tests currently fail on master
  • Ready to review
  • Concept approval after building commits and running before-and-after unit test comparisons (jeanpablojp)
  • Resolved objections on dropped mempool transaction fees and missing test coverage (jeanpablojp)
  • 0 lines added or modified outside tests
  • 63 lines added or modified in tests
  • 15 lines removed in total
  • 3 files, 5 commits
(+)#35827 arejula27 bench: add index benchmarksP3 · test coverageReady0Strong38 + 412 tests
  • Let developers benchmark index performance in under a minute without running a full initial block download
  • Add coverage for measuring index scaling across transaction counts and distinct outputs
  • P3 because it provides useful tooling for profiling index optimizations but is reasonably deferrable
  • Developers can measure index changes rapidly rather than running an entire initial block download
  • Ranking pass: Moved down into the benchmark cluster; no test currently fails and the benefit is profiling convenience.
  • Ready to review
  • Nothing is known that would invalidate review now
  • Substantive support with no open objections
  • Concept approval for the new index benchmark structure (l0rinc)
  • Addressed concern: measurement distortion from locking inside the measured loop (l0rinc)
  • Addressed concern: memory caching masking disk performance during benchmarks (l0rinc)
  • 38 lines added or modified outside tests
  • 412 lines added or modified in tests
  • 0 lines removed in total
  • 7 files, 3 commits
(+)#34360 w0xlt bench: add WalletBalanceManySpent for high-history wallet scenarioP3 · test coverageWaiting on author0 (+1)Blocked0 + 249 tests
  • Measure wallet balance calculation performance on wallets with large histories of mostly spent outputs
  • Helps developers evaluate optimizations for high-activity workloads like Lightning nodes and exchanges
  • P3 because it adds benchmark coverage for spent-heavy wallet histories to evaluate balance optimizations
  • Helps developers profile high-turnover wallet workloads like payment processors and Lightning nodes
  • Ranking pass: Moved down into the benchmark cluster; it serves one optimization PR (#27865) rather than general test signal.
  • Ready to review
  • Unaddressed objection: remove dead forward-compatibility assertion code, no author reply (l0rinc)
  • Reversed earlier approval to request simplification of output-state assertions (l0rinc)
  • 0 lines added or modified outside tests
  • 249 lines added or modified in tests
  • 60 lines removed in total
  • 3 files, 2 commits
(+)#36475 theStack bench: add BIP-352 pubkey extraction benchmarks (standard + P2PKH worst-case)P3 · test coverageWaiting on author2Strong0 + 112 tests
  • Benchmark Silent Payments public key extraction to measure performance overhead and catch regressions
  • Helps developers evaluate input parsing performance during ongoing protocol implementation updates
  • P3 because it adds performance regression coverage for recently added Silent Payments parsing logic
  • Catches performance issues and reveals worst-case transaction parsing slowdowns during ongoing work
  • Ready for review; standalone benchmark suite touches no production code
  • Strong support for establishing Silent Payments parsing benchmarks
  • Verified benchmarks on Apple M5 and checked test inputs against btclib-wallet (fametrano)
  • Verified benchmark numbers on Windows and endorsed the test scope (Yudis-bit)
  • Suggested hoisting allocations outside loop to avoid repeated reallocations (Yudis-bit)
  • 0 lines added or modified outside tests
  • 112 lines added or modified in tests
  • 0 lines removed in total
  • 2 files, 2 commits
(+)#36455 benthecarman Test: Add legacy script edge cases to taproot testP3 · test coverageWaiting on author1Positive0 + 32 tests
  • Explicitly exercise legacy script interpreter edge cases that alternative implementations have gotten wrong
  • Ensure test asset minimizers retain these edge cases when generating test vectors for downstream projects
  • P3 because Core already handles these cases correctly, but downstream implementations benefit from vectors
  • P3 because adding explicit edge-case regression tests is valuable but reasonably deferrable
  • Ready to review
  • Approval without stated reasons (instagibbs)
  • Suggests removing an unneeded comment (instagibbs)
  • Prefers moving legacy cases out of taproot functional tests into script_tests.json (darosior)
  • 0 lines added or modified outside tests
  • 32 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#36458 benthecarman Test: Add script vectors for interpreter edgesP3 · test coverageReady1Strong0 + 38 tests
  • Cover script interpreter and transaction validation edge cases in static test data files
  • Helps alternate implementations and downstream tools that rely on Core's static tests catch subtle bugs
  • P3 because it expands static test coverage for subtle script interpreter and policy validation edge cases
  • Mainly helps downstream consumers and alternate implementations rather than catching bugs in Core itself
  • Ready to review
  • Strong support with no open objections
  • Verified by running the new test vectors through btclib (fametrano)
  • Concept approval because covering gaps found by alternate implementations improves test suites (darosior)
  • 0 lines added or modified outside tests
  • 38 lines added or modified in tests
  • 1 lines removed in total
  • 2 files, 1 commits
(+)#36620 hebasto test: Add case for libstdc++ bug on WindowsP3 · test coverageReady0Positive0 + 26 tests
  • Detect an upstream Windows libstdc++ bug that fails when overwriting existing files
  • Protect wallet migration code that relies on overwriting backup files across affected GCC toolchains
  • P3 because it adds unit test coverage for an upstream Windows compiler bug during file copying
  • The benefit is marginal because real-world user impact from this toolchain bug is practically nonexistent
  • Ready for review
  • No review verdicts recorded
  • Support because adding the test seems harmless (maflcko)
  • Questions whether testing an upstream compiler bug is useful when user impact is low (fanquake, theuni)
  • Suggests rejecting affected compilers at configure or making migration not overwrite (maflcko, theuni)
  • 0 lines added or modified outside tests
  • 26 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#36686 KY-U test: cover cumulative input value range in CheckTxInput tests.P3 · test coverageReady1Strong0 + 18 tests
  • Ensure consensus tests verify transactions exceeding total money limits across multiple inputs are rejected
  • Prevents mutations or logic bugs in cumulative input value validation from going undetected
  • P3 because it closes a consensus unit test gap identified by mutation testing
  • Catches bugs where cumulative input limits could be bypassed or incorrectly evaluated
  • Ready to review
  • Support verified by confirming the surviving mutation is now killed (mercie-ux)
  • Open suggestion to add a test case covering the per-coin check as well (mercie-ux)
  • 0 lines added or modified outside tests
  • 18 lines added or modified in tests
  • 9 lines removed in total
  • 1 files, 2 commits
(+)#36679 Sjors ci: enable IPC in the i686 jobP3 · test coverageReady1Strong2 + 4 tests
  • Exercise IPC functionality on 32-bit x86 in continuous integration
  • Catches compiler ABI issues that previously went untested
  • P3 because it closes an existing test coverage gap for IPC on 32-bit x86 systems
  • Exercises IPC where compiler ABI differences previously went untested
  • Ready to review
  • Substantive support after confirming CI coverage history (maflcko)
  • Nonblocking concern on whether supporting 32-bit architectures is worth project effort (l0rinc)
  • Requested feedback on 32-bit issues from ryanofsky (fanquake)
  • 2 lines added or modified outside tests
  • 4 lines added or modified in tests
  • 5 lines removed in total
  • 2 files, 1 commits
(+)#35957 hebasto ci: Enable Boost.MultiIndex invariant-checking modeP3 · test coverageReady0Strong0 + 5 tests
  • Catch container corruption bugs early by enabling Boost.MultiIndex invariant checking in CI test jobs
  • Provides runtime validation of data structure invariants during debug test runs
  • P3 because it catches internal data structure corruption early during test suite runs
  • Provides modest test verification improvements while remaining deferrable maintenance
  • Ready to review
  • Nothing known that would invalidate a review now
  • Substantive support with no open objections
  • Verified the exclusion by testing local runtime of the heavy fuzz job (jeanpablojp)
  • Concerns about CI timeouts and commit wording were addressed and resolved (fanquake, jeanpablojp)
  • 0 lines added or modified outside tests
  • 5 lines added or modified in tests
  • 2 lines removed in total
  • 3 files, 1 commits
(+)#33145 m3dwards CI: silent merge checkP3 · new featureWaiting on author0Blocked412
  • Automatically catch logical merge conflicts between open pull requests and master before merge
  • Saves maintainers and reviewers manual effort testing PRs against updated master
  • P3 because it automates running the test suite on simulated PR merges with master
  • It prevents regressions from silent conflicts, but remains an auxiliary test runner
  • Author has been silent for 112 days; reviews may wait a long time for a response
  • Approach approval with open objections on draft filtering and SHA races (fjahr)
  • Approval of the redesigned scheduled workflow (maflcko)
  • Unaddressed objection: GitHub pulls endpoint ignores the draft query parameter (fjahr)
  • Unaddressed objection: head SHA race condition if a force push occurs during a run (fjahr)
  • 412 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 0 lines removed in total
  • 3 files, 1 commits
(+)#35686 Sjors lint: have git-subtree-check check for backportabilityP3 · test coverageReady0 (+2) -1Disputed10 + 66 tests
  • Ensure subtree merge commits can be reused verbatim when backporting to maintenance branches
  • Save maintainers from having to verify newly generated subtree merges for every release branch
  • P3 because it improves internal repository hygiene for subtree maintenance
  • The benefit affects an internal developer workflow and is reasonably deferrable
  • Code is ready for review
  • Contested objection: bash logic adds maintenance overhead for a style preference (maflcko)
  • Support because it simplifies backport verification and documents good practice (ryanofsky)
  • Verified by testing that the check and override flag behave as expected (BrandonOdiwuor)
  • Questioned whether checking backportability should be the default behavior (sedited)
  • 10 lines added or modified outside tests
  • 66 lines added or modified in tests
  • 20 lines removed in total
  • 4 files, 2 commits
(+)#35342 kevkevinpal test: fuzz wallet_rpc targetP4 · test coverageWaiting on author0 -1Mild0 + 530 tests
  • Add fuzz testing for wallet RPC commands with randomized arguments
  • Protects wallet RPC parameter parsing and validation against malformed inputs
  • P4 after comparing with the other PRs here (assessed alone as P3): Lowered to P4: reviewers argue fuzzing wallet RPCs without chain state or UTXOs has very low efficacy, so the claimed coverage gain is weakly supported.
  • P3 because expanding fuzz coverage to unexercised RPC parameter parsing paths improves test coverage
  • Fuzzing wallet RPCs in isolation does not exercise consensus or P2P code paths
  • Waiting on author to reply to an open objection from brunoerg
  • Approach objection: fuzzing wallet RPCs without context like blocks or coins has minimal value (brunoerg)
  • Unaddressed objection: keypool limits for performance further degrade fuzzing efficacy (brunoerg)
  • Questions raised about the performance of calling multiple wallet RPCs per run (maflcko)
  • 0 lines added or modified outside tests
  • 530 lines added or modified in tests
  • 176 lines removed in total
  • 6 files, 2 commits
(+)#36690 bartoli test: check guarantees of bech32 error detectionP4 · test coverageReady0Crickets2 + 92 tests
  • Verify Bech32m checksum error detection guarantees at standard and silent payment character limits
  • Clarify header comments so developers do not assume checksums can locate or repair errors
  • P4 because it adds unit test coverage for existing behavior rather than addressing bugs or flaky tests
  • Verifies bounds around silent payment limits without changing node runtime logic or test harnesses
  • Ranking pass: Moved up within P4: it tests a real boundary (the 1023-char silent-payments limit) and corrects misleading header comments.
  • Ready for review
  • No review verdicts recorded
  • No reviews or external comments yet
  • Awaiting initial review from maintainers or contributors
  • 2 lines added or modified outside tests
  • 92 lines added or modified in tests
  • 2 lines removed in total
  • 2 files, 2 commits
(+)#36022 cyb3ralbert test: add coverage for bitcoin wrapper argument handlingP4 · test coverageAuthor silent 69d1Positive0 + 51 tests
  • Verify CLI argument handling and error behavior for the bitcoin wrapper tool
  • Ensure wrapper paths that exit before executing child processes are tested
  • P4 because it covers low-risk CLI argument paths that return before executing a child process
  • Adds narrow functional coverage without touching test framework machinery or fixing flaky tests
  • Ready to review
  • Tested approval without stated reasons (mercie-ux)
  • Resolved earlier concern that tests bypassed Valgrind instrumentation (mercie-ux)
  • 0 lines added or modified outside tests
  • 51 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 2 commits
(+)#36074 maflcko scripted-diff: [test] Add util/check.h includes for assertionsP4 · cleanupReady0Strong14 + 319 tests
  • Ensure test assertions consistently use check utilities and avoid compilation failures or NDEBUG ambiguity
  • Enable automated include analysis across tests by standardizing assertion headers
  • P4 because standardizing assertion includes across tests is an internal test cleanup
  • Prevents rare compile issues without assertions in check headers but offers limited developer leverage
  • Ranking pass: Grouped with the other assertion-hygiene scripted diffs.
  • Ready to review
  • Support for systematically cleaning up assertion includes in tests (l0rinc)
  • Concept approval without detailed feedback (l0rinc)
  • Script regex gaps and path syntax errors were raised and resolved (jeanpablojp)
  • 14 lines added or modified outside tests
  • 319 lines added or modified in tests
  • 220 lines removed in total
  • 154 files, 3 commits
(+)#36087 maflcko util: Add and use AssertUnreachableP4 · cleanupAuthor silent 61d0Mild368 + 422 tests
  • Eliminate compiler return-type warnings caused by unreachable code assertions
  • Prevent assertion ambiguity and undefined behavior in unreachable code paths
  • P4 because new linters enforce assertion style without altering test coverage
  • Enforcement of assertion conventions provides minor maintenance value across the codebase
  • Worth reviewing now because the rebase conflict is mechanical
  • No review verdicts recorded
  • Objection pending code update: standalone consensus library build breaks (jeanpablojp)
  • Resolved prior concerns regarding linter regex matching and commit ordering (jeanpablojp)
  • 368 lines added or modified outside tests
  • 422 lines added or modified in tests
  • 546 lines removed in total
  • 312 files, 7 commits
(+)#36609 fanquake ci: update some infraP4 · cleanupReady0Crickets0 + 4 tests
  • Keep CI linting tools and container dependencies up to date with upstream fixes and improvements
  • P4 because updating linting utilities is routine test infra maintenance
  • Does not fix test flakiness, misleading signals, or core testing coverage
  • Ready to review
  • Nothing known that would invalidate a review now
  • No review verdicts recorded
  • No substantive discussion or reviews yet
  • 0 lines added or modified outside tests
  • 4 lines added or modified in tests
  • 4 lines removed in total
  • 3 files, 4 commits
(+)#35442 rkrux test: remove usages of MAX_BIP125_RBF_SEQUENCE constant from functional testsP4 · cleanupNeeds rebase0Blocked73 + 327 tests
  • Stop using BIP 125 opt-in sequence numbers in tests where signaling is irrelevant
  • Prepares the functional test suite for the deprecation and removal of BIP 125 signaling
  • P4 because it is purely internal test cleanup removing an obsolete constant
  • Provides minor leverage toward deprecating and removing BIP 125 signaling
  • Ranking pass: Placed after the assertion cleanups; it is blocked on #35433 and only partially advances BIP125 deprecation.
  • Review #35433 first
  • Needs rebase due to conflicts with master, but rebase is mechanical
  • No review verdicts recorded
  • Unaddressed objection: sendall default inputs disable locktimes and anti-fee-sniping (rreview)
  • Suggested documenting PR dependencies and updating release notes (pablomartin4btc)
  • Suggested folding into prior PR or prioritizing source code cleanup, answered by author (maflcko)
  • 73 lines added or modified outside tests
  • 327 lines added or modified in tests
  • 310 lines removed in total
  • 18 files, 13 commits
(+)#36694 alexanderwiederin test, bench: construct mempool inputs/outputs declarativelyP4 · cleanupReady0Crickets0 + 132 tests
  • Make transaction setup in mempool tests and benchmarks less verbose and easier to maintain
  • Prepare test call sites for potential direct immutable transaction construction
  • P4 because it is an internal cleanup of test and benchmark code
  • It improves transaction setup syntax without fixing bugs or adding test coverage
  • Ranking pass: Moved up ahead of #35994: it is the manual approach the #35994 author now prefers for the same #36692 goal.
  • Ready for review
  • No review verdicts recorded
  • No substantive reviews yet
  • Suggested waiting for issue #36692 and conflicting PR #36521 before proceeding (maflcko)
  • 0 lines added or modified outside tests
  • 132 lines added or modified in tests
  • 155 lines removed in total
  • 3 files, 3 commits
(+)#36257 hodlinator qa: assert_equals -> assert_true/assert_falseP4 · cleanupReady0Neutral0 + 644 tests
  • Make boolean checks in functional tests easier to read
  • Reduce cognitive overhead when scanning long test expressions
  • P4 because it is a cosmetic and syntactic cleanup across functional tests
  • Slightly reduces cognitive load when reading tests without expanding coverage or fixing bugs
  • Ready to review
  • No review verdicts recorded
  • Neutral sentiment with no reviewers speaking in favor yet
  • Resolved objection: enforce strict booleans rather than truthiness (l0rinc)
  • Neutral stance without objection (maflcko)
  • 0 lines added or modified outside tests
  • 644 lines added or modified in tests
  • 517 lines removed in total
  • 94 files, 5 commits
(+)#36547 ViniciusCestarii test: return typed P2PInterface from add_p2p_connection helpersP4 · cleanupReady1Strong0 + 28 tests
  • Improve autocompletion and static type checking for developers writing functional tests
  • P4 because type annotations in test helpers provide modest developer convenience
  • The change offers minor ergonomics without altering test coverage or fixing bugs
  • Ready to review
  • Broad support with no outstanding objections
  • Verified by testing editor autocompletion on connection helpers (tumutech)
  • Supportive if others find it helpful (maflcko)
  • Concept approval without stated reasons (fanquake)
  • 0 lines added or modified outside tests
  • 28 lines added or modified in tests
  • 3 lines removed in total
  • 1 files, 1 commits
(+)#36710 nebula-21 test: Replace hardcoded extended keys with ExtendedKey helpersP4 · cleanupNeeds rebase0Crickets0 + 42 tests
  • Standardize key generation across functional tests to remove inconsistent hardcoded key strings
  • P4 because standardizing key creation improves test cleanliness without altering coverage
  • No impact on test reliability or overall test framework capabilities
  • Worth reviewing now because the required rebase is mechanical
  • No review verdicts recorded
  • No review comments or feedback yet
  • No participants have weighed in on the proposed changes
  • 0 lines added or modified outside tests
  • 42 lines added or modified in tests
  • 39 lines removed in total
  • 10 files, 1 commits
(+)#35997 yancyribbens refactor: bench: make_hard_case to find a solutionP4 · cleanupAuthor silent 69d0Strong0 + 11 tests
  • Make coin selection benchmarks use realistic values and verify an actual solution is found
  • Gives developers more accurate performance metrics for coin selection search exhaustion
  • P4 because it only adjusts synthetic inputs and adds assertions in an isolated benchmark
  • Offers a minor benchmark improvement with no broader impact on CI signals or test frameworks
  • Ranking pass: Moved down: it tunes one isolated benchmark's synthetic inputs, below framework-wide readability/typing cleanups.
  • Ready for review
  • Nothing known that would invalidate a review now
  • Strong support with no open objections
  • Verified by running the benchmark locally and checking assertions pass at the limit (Dontbyshai)
  • 0 lines added or modified outside tests
  • 11 lines added or modified in tests
  • 6 lines removed in total
  • 1 files, 1 commits
(+)#36713 fanquake test: remove unused `DynSock::Pipe::GetNetMsg` and `PushNetMsg`P4 · cleanupReady1Positive0 + 3 tests
  • Remove unused socket helpers and synchronization code left in the test suite from an unmerged PR
  • Cleans up test framework utilities with no change to test behavior
  • P4 because it is minor dead code cleanup in the test framework
  • Touches only test socket utilities and does not affect production code or test coverage
  • Ready for review
  • Nothing known that would invalidate a review
  • Support without stated reasons (jpk68)
  • No objections raised
  • 0 lines added or modified outside tests
  • 3 lines added or modified in tests
  • 97 lines removed in total
  • 2 files, 1 commits
(+)#36574 maflcko ci: Reword stale readmeP4 · cleanupReady0Neutral0 + 26 tests
  • Update CI developer documentation to reflect modern container tooling and CI harness execution rules
  • P4 because it clarifies test harness mechanics in documentation only
  • Does not alter test runners, test execution, or test code
  • Ready to review
  • No review verdicts recorded
  • Objections settled but no reviewers have endorsed the changes yet
  • Nonblocking pushback on dependency-pinning rationale answered by author (l0rinc)
  • Suggestion to clarify depends path references resolved by dropping the change (Hamza1610)
  • 0 lines added or modified outside tests
  • 26 lines added or modified in tests
  • 16 lines removed in total
  • 1 files, 3 commits
(+)#32409 hebasto test: Introduce `SUPPRESS_ABORT_MESSAGE` environment variableP4 · platform fixAuthor silent 186d0 -1Mild0 + 17 tests
  • Prevent unattended MSVC debug test runs from hanging on blocking GUI popups during assertion failures
  • P4 because it only targets unattended test runs using the MSVC debug runtime
  • The suppression variable is not hooked up to or used by any in-tree CI job
  • Ranking pass: Moved to the bottom: the variable is set by nothing in-tree and has been NACKed as unused, so there is no problem being solved today.
  • Author has been silent for 148 days, so reviews may wait a long time for a response
  • Blocking objection: adds an undocumented and unused environment variable and code path (fanquake)
  • Concern that the added code is dead code unused by any in-tree configuration (sedited)
  • Concept approval to avoid GUI assertion popups stalling Windows CI runs (hodlinator)
  • 0 lines added or modified outside tests
  • 17 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#35994 purpleKarrot Primitives: Combine assignmentsP4 · cleanupAuthor silent 72d0Mild22 + 372 tests
  • Prevent accidental reuse of dirty state in tests by combining consecutive member assignments into constructor calls
  • Pave the way for making core transaction primitive types immutable across unit tests and benchmarks
  • P4 because it is low-priority test cleanup aimed at avoiding dirty state reuse rather than fixing flakiness or coverage
  • Ranking pass: Moved to the bottom: the author prefers abandoning it in favour of the manual rewrite (#36694), and the clang-tidy check introduced a witness-dropping bug.
  • Needs rebase, CI is failing, and the author has been silent for over two months
  • General concept support for declarative test setup and immutable structs (josibake, l0rinc, maflcko)
  • Unaddressed bug: automated transformation accidentally drops witness data, confirmed with no fix pushed (alexanderwiederin)
  • Suggests closing the draft PR due to failing CI and prolonged inactivity (maflcko)
  • 22 lines added or modified outside tests
  • 372 lines added or modified in tests
  • 366 lines removed in total
  • 42 files, 8 commits
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.
Ranking pass (2026-11-01): all PRs here were compared with each other; 26 notes on review order, overlaps, and band changes.

Covers

The machinery of testing rather than tests of a particular area: the functional test framework and runner, unit test utilities, the fuzzing harnesses and corpora, benchmarks, linters, sanitizer configuration, and fixes for flaky tests whose cause is in the framework. A test that pins the behavior of one area (a wallet migration test, a p2p relay test) belongs to that area, not here. The Tests and Fuzzing labels are a prior, but a labeled PR whose tests are about one area goes to that area instead.

What matters here

Signal first: fixes for flaky or misleading tests, since a red CI that nobody trusts hides real failures. Then coverage of high-risk code paths that the fuzzers or functional tests do not reach, especially consensus, mempool policy, and p2p message handling. Then framework capabilities that unblock tests other areas need. Then test speed, which every contributor pays for on every run. Then cleanliness of the test code.

Adding tests for their own sake ranks low; adding a test that catches a realistic regression ranks high.

generated 2026-11-02 01:17 UTC