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.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This commit only changes tests and clarifies a public comment. It does not alter the actual authentication behavior of the btcd RPC client. The code already only suppresses the internally generated Basic auth header when DisableAuth is tru…
No functional code change; only tests and commentsComment clarification that DisableAuth only suppresses generated Basic auth, not caller-provided Authorization headersTests now cover WebSocket handshake, cookie bypass, and caller-provided headers
This commit only adds new unit tests for an existing feature. It does not change any production code, so it cannot introduce a security vulnerability or fix one directly. The tests verify that an existing option called DisableAuth correctl…
This commit fixes a deadlock risk in btcd's new Bitcoin v2 transport handshake. Previously, the responder waited until it had received the initiator's full 64-byte key before doing any work, which could cause both sides to sit waiting for …
BIP324 handshake deadlock avoidanceCPU admission lease split to prevent resource exhaustion / lock holding across network I/OResponder now sends key material before full initiator key is received
This commit changes how btcd reads base64-encoded PSBT (Partially Signed Bitcoin Transaction) data. Previously, the code read the entire base64 input into memory before decoding, and it wrongly applied the Bitcoin P2P wire message size lim…
Removes an incorrect size bound that caused base64 PSBT parsing to reject valid large packets (denial-of-service / interoperability issue)Switches from full in-memory base64 decode to incremental streaming, reducing peak memory for large base64 PSBTsRetains strict base64 alphabet checks and rejects trailing data after the PSBT packet
This commit fixes a class of crash bugs in btcd's PSBT (Partially Signed Bitcoin Transaction) handling for Taproot transactions. Previously, if certain Taproot-related lists contained a nil (empty) entry, the code would panic when trying t…
nil-pointer dereference / panic prevention in Taproot PSBT finalizernil-pointer dereference / panic prevention in PSBT serializationinput validation added before sort.Slice and pointer dereference
This commit fixes two problems in the way btcd reads Partially Signed Bitcoin Transactions (PSBTs). First, the parser could hang forever when reading from a network connection or pipe because it tried to read one extra byte to check for le…
Denial-of-service via blocking read on open stream (potential infinite hang)Denial-of-service via unbounded memory allocation on base64 input before validationStrict parsing hardening for PSBT base64 decoding
This change tightens how a Bitcoin PSBT library extracts final witness data when turning a partially-signed transaction into a finished transaction. Previously, extra bytes after the declared witness stack were silently ignored. Now the li…
strict parsing of serialized witness datarejection of trailing bytes in PSBT final script witnesspotential malleability / ambiguity reduction in PSBT extraction
This commit adds a new test to the btcd PSBT (Partially Signed Bitcoin Transaction) library. The test checks that when extracting a final Bitcoin transaction from a PSBT, the library rejects a final witness value that has extra trailing by…
Strict parsing of final witness data to reject malformed/trailing bytesPrevents creation of transactions with non-standard witness encodingTest-only commit implies behavior enforcement elsewhere in the codebase
This commit fixes a bug in how btcd parses Schnorr (BIP-340) digital signatures. The code was supposed to reject signatures whose 's' number was larger than the allowed group order, but instead it silently wrapped the value around (modulo …
BIP-340 signature parsing non-compliancesilent modulo reduction of s componentsignature malleability risk from non-canonical encodings
This commit fixes a memory-usage issue, not a security vulnerability. When reading PSBT data, the code was keeping a pointer to a large 4 MiB internal memory block even for tiny scripts. The patch copies the small script into its own compa…
This commit only adds a new test case. It does not change any production code. The test checks that the PSBT parser rejects files that have extra bytes after a valid PSBT packet. Because no code behavior is changed, this commit by itself d…
Test-only commitNo production code changesTests input-validation behavior (trailing data rejection)
This change tightens how base64-encoded PSBT (Partially Signed Bitcoin Transaction) data is decoded. Previously, the decoder could silently ignore extra whitespace or unexpected characters in the base64 stream. Now it rejects anything that…
Strict input validation added for base64 decodingRejection of whitespace/newlines inside base64 payloadUse of strict base64 decoder to enforce RFC4648 padding rules
This commit only adds a new unit test that checks whether the MuSig2 partial signature decoder correctly rejects empty or too-short inputs. It does not change any production code, so by itself it cannot introduce or fix a security vulnerab…
This commit only adds new test code for the PSBT (Partially Signed Bitcoin Transaction) package. It does not change any production code. The tests verify that WitnessUtxo fields are parsed strictly and correctly, including rejecting extra …
Strict parsing tests for WitnessUtxo transaction outputsRejection of trailing data after serialized txOutCorrect handling of multi-byte CompactSize script lengths
This commit only adds a new test file. It does not change any production code. The test checks that the PSBT parser rejects transaction fields that have extra trailing bytes. Because no actual parser logic is modified, this commit by itsel…
Regression test added for strict parsing of transaction-valued PSBT fieldsNo production code changes
This commit only adds new test code to check that the PSBT (Partially Signed Bitcoin Transaction) parser rejects malformed base64 input such as whitespace, bad padding, or extra bytes. It does not change the actual parser logic. The tests …
strict base64 decoding validationPSBT packet format hardeningrejection of non-canonical base64 input
This change makes the PSBT (Partially Signed Bitcoin Transaction) parser reject files or data that have extra bytes after the end of a valid PSBT. Previously, extra trailing data was silently ignored, which could let an attacker hide malic…
Parser no longer ignores trailing bytesCould prevent smuggling of extra data inside PSBT containersCould prevent canonicalization attacks where different byte sequences parse to the same structure
This commit fixes a bug in the MuSig2 multi-signature code where reading a partial signature from an input stream could fail silently. Previously, if the stream ended early or had a read error, the function would return 'no error' as if th…
Silent failure in cryptographic decode pathPartial signature scalar left uninitialized on read errorMuSig2 signing correctness dependency
This commit tightens how a Bitcoin-related library reads transaction outputs stored inside PSBT (Partially Signed Bitcoin Transaction) data. Previously, the code read the output value and script in a loose, hand-rolled way that ignored ext…
Strict canonical parsing of serialized transaction outputsRemoval of hand-rolled length handling that ignored script length byteAddition of full-consumption check on parsed witness UTXO data
This commit adds a new helper function to the PSBT (Partially Signed Bitcoin Transaction) package that checks whether a data reader still has leftover bytes after parsing. Leftover bytes could mean a malformed or malicious PSBT file was no…
New validation helper for trailing/leftover data in a binary parserLocated in PSBT parsing utilities, an area where malformed input handling mattersNo caller added in this commit, so defensive effect is not yet active
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 36/100
This commit adds a new helper function to the PSBT (Partially Signed Bitcoin Transaction) package that checks whether a data reader still has leftover bytes after parsing. Leftover bytes could mean a malformed or malicious PSBT file was not fully processed. The helper lets the library reject such inputs. However, the commit only adds the helper; it does not yet wire it into any actual parsing path, so by itself it does not fix any vulnerability.
Lower-prioritybtcutil: test byte constructors reject trailing databy Boris Nagaev · e72a65de · Jun 26, 2026 · 2 filesMessage 60 · AdequateTriage 0Details
Commit message · Boris Nagaev
btcutil: test byte constructors reject trailing data
60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Lower-priorityrpc: decode block proposals strictlyby Boris Nagaev · 7840b814 · Jun 26, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Boris Nagaev
rpc: decode block proposals strictly
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 46/100
This change tightens how base64-encoded PSBT (Partially Signed Bitcoin Transaction) data is decoded. Previously, the decoder could silently ignore extra whitespace or unexpected characters in the base64 stream. Now it rejects anything that isn't strict, clean base64. This is a defensive hardening fix: it prevents malformed or cleverly padded base64 inputs from being accepted, which could in theory be used to sneak invalid data past validation or cause inconsistent parsing between different PSBT implementations.
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 46/100
This commit tightens how a Bitcoin-related library reads transaction outputs stored inside PSBT (Partially Signed Bitcoin Transaction) data. Previously, the code read the output value and script in a loose, hand-rolled way that ignored extra trailing bytes and misinterpreted the script length byte. The change now uses the project's standard parser and insists every byte is consumed. That removes a class of parsing inconsistencies that could, in theory, let a malformed PSBT slip past validation or be interpreted differently by different software.
Lower-priorityrpc: decode sent raw transactions strictlyby Boris Nagaev · 59db8355 · Jun 26, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Boris Nagaev
rpc: decode sent raw transactions strictly
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritybtcutil/bloom: fix malformed filter test transactionby Boris Nagaev · def22fa8 · Jun 26, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Boris Nagaev
btcutil/bloom: fix malformed filter test transaction
60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Lower-priorityrpc: test sendrawtransaction trailing byte rejectionby Boris Nagaev · 8074ebe9 · Jun 26, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Boris Nagaev
rpc: test sendrawtransaction trailing byte rejection
60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Lower-priorityrpc: test mempool accept trailing byte rejectionby Boris Nagaev · f3ec349a · Jun 26, 2026 · 1 fileMessage 55 · ThinTriage 0Details
Commit message · Boris Nagaev
rpc: test mempool accept trailing byte rejection
55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Lower-priorityblockchain: test strict best block loadingby Boris Nagaev · 934349f1 · Jun 26, 2026 · 1 fileMessage 55 · ThinTriage 0Details
Commit message · Boris Nagaev
blockchain: test strict best block loading
55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Security candidatebtcutil: zero range-check scalar before returning from DecodeWIFby Lrifton92 · f10224dd · Jun 24, 2026 · 1 fileMessage 86 · StrongLow 30Details
Commit message · Lrifton92
btcutil: zero range-check scalar before returning from DecodeWIF
Wipe the secp256k1 scalar used for the [1, N-1] range validation as soon as DecodeWIF returns, so the decoded private key value does not linger in this local after use. Addresses review feedback on #2545.
86/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
secret or key material
AI analysis · Low 30/100
This commit adds a cleanup step in the function that decodes Bitcoin private keys from Wallet Import Format (WIF). It ensures a temporary mathematical value used to check the key is valid gets wiped from memory right after use, so the private key value does not linger in that temporary variable. This is a defensive memory-hygiene improvement rather than a fix for an active remote attack.
Lower-priorityversion: bump to v0.26.0-beta for final releaseby Olaoluwa Osuntokun · abec1101 · Jun 18, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Olaoluwa Osuntokun
version: bump to v0.26.0-beta for final release
In this commit, we drop the rc1 pre-release suffix, taking the version from v0.26.0-beta.rc1 to v0.26.0-beta for the final release.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI review queuedrpcclient: add typed SubmitPackage methodby Elle Mouton · de3d460e · Jun 17, 2026 · 2 filesMessage 68 · AdequateTriage 12Details
Commit message · Elle Mouton
rpcclient: add typed SubmitPackage method
Add SubmitPackage / SubmitPackageAsync / FutureSubmitPackageResult, wrapping the submitpackage RPC the same way TestMempoolAccept wraps testmempoolaccept: serialize the topologically-sorted package to hex, issue the btcjson submitpackage command, and decode the response into btcjson.SubmitPackageResult (which already maps the raw fields to higher-level types via its UnmarshalJSON).
This keeps the multi-backend RPC layering intact so callers (e.g. btcwallet's chain.Interface) can invoke a typed method instead of a RawRequest. submitpackage is a Bitcoin Core RPC (v24+); btcd has no server handler for it.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
Lower-prioritynetsync: require block-serving services on regtest/simnet sync peersby Oli · a7e980dd · Jun 17, 2026 · 2 filesMessage 95 · StrongTriage 0Details
Commit message · Oli
netsync: require block-serving services on regtest/simnet sync peers
Commit 26124d275 made every peer a sync candidate on regtest and simnet so that nodes on non-localhost networks (e.g. Docker bridge networks) can be synced from. Dropping the address requirement was the intent, but the change also dropped the service-flag requirement, so light clients became eligible sync peers.
A light client (e.g. neutrino) advertises a recent best height but can serve neither headers nor blocks. Electing one as the sync peer stalls the sync until the stall handler disconnects it, and with other light client connections present the next one is elected and stalls again, livelocking the sync indefinitely. This surfaced in neutrino's sync tests, where a btcd simnet node connected to both a neutrino instance and other btcd nodes never synced.
Keep accepting any peer address on regtest/simnet, but require the peer to signal SFNodeNetwork or SFNodeNetworkLimited like on any other network.
95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
btcutil: reject out-of-range private keys in DecodeWIF
DecodeWIF did not validate that the decoded private key falls within the valid range [1, N-1] for a secp256k1 private key. The raw 32-byte key material was passed straight to btcec.PrivKeyFromBytes, which reduces the scalar modulo the group order N and clamps to zero, returning no error.
As a result, a WIF encoding a private key of zero, the group order N, or any value >= N was silently accepted. For keys >= N this is particularly dangerous: DecodeWIF returned a private key that differs from the one actually encoded in the WIF (e.g. a WIF for N+5 decoded to the key 5), so an application importing such a WIF would obtain a valid-looking but wrong key pair, with no indication that anything was off. This is also inconsistent with hdkeychain.NewKeyFromString in the same package, which already rejects private keys outside [1, N-1].
Validate the range using a ModNScalar (constant time): SetByteSlice reports an overflow when the value is >= N, and IsZero covers the zero key. Out-of-range keys now return ErrMalformedPrivateKey.
Add regression test cases (zero, N, and N+5) to TestEncodeDecodeWIF.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
secret or key materialmemory safetydefensive validationfuzzing or regression evidenceconstant-time or timing behavior
AI analysis · High 72/100
This commit fixes a bug in how btcd decodes Bitcoin private keys stored in the common Wallet Import Format (WIF). Previously, the software silently accepted invalid private keys, including the all-zero key and keys larger than the allowed secp256k1 group order. For keys larger than the allowed maximum, the library would quietly reduce the value modulo the group order, returning a different, valid-looking private key than the one actually encoded in the WIF. This could cause a wallet or application to import the wrong key without any warning, potentially leading to loss of funds or unexpected addresses. The fix now rejects these out-of-range keys and returns an error instead.
Security candidatepsbt: reject nil taproot leaf scriptsby Julio Cesar · 1a4dea6a · Jun 3, 2026 · 2 filesMessage 45 · ThinLow 36Details
Commit message · Julio Cesar
psbt: reject nil taproot leaf scripts
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 36/100
This commit adds a safety check in btcd's PSBT (Partially Signed Bitcoin Transaction) handling code. Previously, if a taproot leaf script entry was accidentally set to nil (empty/missing), the code could crash with a panic when trying to sort or encode the PSBT. The fix now rejects nil entries with a clear error message instead of crashing. This is a defensive hardening change rather than a remote exploit, but it prevents a denial-of-service-style crash for applications that process untrusted PSBTs.
AI review queuedrpctest: scope shared state to the current processby Calvin Kim · f8ce7a7d · May 30, 2026 · 2 filesMessage 88 · StrongTriage 0Details
Commit message · Calvin Kim
rpctest: scope shared state to the current process
Two pieces of rpctest's global state silently aliased across concurrent test processes (which is what `go test ./...` does by default, so any `make unit` that exercises -tags=rpctest hit this):
- btcdExecutablePath compiled to a fixed path /tmp/btcd/rpctest/btcd. Two `go build` invocations would race on the same file, occasionally yielding a truncated or stale binary and downstream "tls: certificate signed by unknown authority" failures when the harness tried to talk to the resulting node.
- lastPort started at the same defaultNodePort in every process. The bind-test in NextAvailablePort closes the listener before returning, so two processes climbing from the same base would frequently hand out the same port and one harness would die with "connection refused" when btcd failed to bind.
Suffix the executable with a random uint32 and seed lastPort with a random offset into a 50k-port window so each process climbs through its own range.
88/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
second-pass: broader security terminology
Lower-prioritynetsync: process inv announcements when no syncPeer is setby Calvin Kim · bfb36e52 · May 30, 2026 · 1 fileMessage 95 · StrongTriage 5Details
Commit message · Calvin Kim
netsync: process inv announcements when no syncPeer is set
handleInvMsg early-returned for any inv from a non-syncPeer whenever sm.current() was false, with the comment that it prevents fetching a mass of orphans. That guard assumes a syncPeer is already fetching blocks; when syncPeer is nil, the assumption breaks down and the early return becomes a deadlock.
The deadlock is reachable whenever two nodes connect at equal heights: startSync exits without picking a syncPeer (no peer is "higher"), and nothing later promotes the freshly-mined blocks the peer announces via inv. The pre-verack disconnect and sync-race regression tests in integration/sync_race_test.go fail consistently because of this.
Only skip the inv when we actually have a syncPeer. When syncPeer is nil, fall through and let the normal request path queue the block -- the inv is the only signal that there are blocks to fetch.
95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
Lower-priorityintegration: fix p2a_test build under -tags=rpctestby Calvin Kim · 22117850 · May 30, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Calvin Kim
integration: fix p2a_test build under -tags=rpctest
p2a_test.go calls btcutil.NewAddressPayToAnchor, but the NewAddressPayToAnchor constructor lives in the address/v2 module's address package. Import that package and call it through there so the integration package builds when -tags=rpctest is set.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritybtcjson: accept null in StringOrArray.UnmarshalJSONby Calvin Kim · 79752a88 · May 30, 2026 · 2 filesMessage 83 · StrongTriage 0Details
Commit message · Calvin Kim
btcjson: accept null in StringOrArray.UnmarshalJSON
StringOrArray.MarshalJSON emits JSON null for a nil slice (see existing test "nil slice marshals as null" in TestStringOrArrayMarshalJSON), but UnmarshalJSON did not have a matching case for null and fell to the default branch, returning "invalid string_or_array value: <nil>". A round trip of a nil slice therefore failed.
This bit the rpcclient against btcd's own getblockchaininfo, whose Warnings field is a StringOrArray that the server leaves as a nil slice when there are no warnings. Every rpctest integration test that touches GetBlockChainInfo (TestBIP0009, TestBIP0068AndBIP0112Activation, TestBIP0113Activation, TestPrune) failed to decode the response.
Handle the nil case explicitly so null decodes back to a nil slice, and add regression cases for "warnings: null" and an omitted warnings field to TestGetBlockChainInfoWarnings.
83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-priorityci: run rpctest integration testsby Calvin Kim · 61c215ec · May 30, 2026 · 1 fileMessage 90 · StrongTriage 0Details
Commit message · Calvin Kim
ci: run rpctest integration tests
`make build`, `make unit-cover`, and `make unit-race` all use plain `go test` without the rpctest build tag, so anything under //go:build rpctest -- the entire integration/ package outside of rpctest/, and parts of rpctest/ itself -- is not exercised by CI. Bugs that only surface under -tags=rpctest can land on master without detection.
Add a test-rpctest job that runs `make unit` (which sets -tags=rpctest) so rpctest-tagged tests are part of every push and PR.
90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
documentation-only discount
Security candidatemulti: pin new v2 submodule tags and bump to v0.26.0-beta.rc1by Olaoluwa Osuntokun · fdad1fab · May 15, 2026 · 18 filesMessage 81 · StrongInformational 15Details
Commit message · Olaoluwa Osuntokun
multi: pin new v2 submodule tags and bump to v0.26.0-beta.rc1
In this commit, we strip all of the local `replace ... => ../...` directives that were introduced as part of #1825 (the v2 module restructuring), now that proper tags exist for every freshly carved-out submodule. Every in-tree go.mod is pinned to the newly published tags: chainhash/v2.0.0, wire/v2.0.0, chaincfg/v2.0.0, address/v2.0.0, txscript/v2.0.0, btcutil/v2.0.0, psbt/v2.0.0, and btcec is bumped to v2.5.0 since it now depends on chainhash/v2 (previously chaincfg/chainhash).
While here, we also unify the Go toolchain to 1.25 across every submodule so the workspace resolves a consistent set of language features.
Finally, we bump the main btcd version to v0.26.0-beta.rc1 in preparation for the upcoming release candidate.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing boundaryaccess controlsigning or wallet path
AI analysis · Informational 15/100
This is a routine release-preparation commit. It removes temporary local path overrides in Go module files, pins submodules to newly published version tags, bumps one dependency version (btcec to v2.5.0), unifies the Go toolchain version to 1.25, and updates the project's own version number. There are no code logic changes and nothing in the commit suggests a security fix or vulnerability.
AI review queuedserver: fix linter issueby Oliver Gugger · 9dfa926f · May 15, 2026 · 1 fileMessage 28 · OpaqueTriage 0Details
Commit message · Oliver Gugger
server: fix linter issue
28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Security candidatemulti: use new v2 modules everywhereby Oliver Gugger · dccea8fe · May 15, 2026 · 169 filesMessage 45 · ThinInformational 15Details
Commit message · Oliver Gugger
multi: use new v2 modules everywhere
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy pathsigning or wallet pathboot or update path
AI analysis · Informational 15/100
This is a large, routine refactoring commit. It updates the btcd project to use new 'v2' versions of its own Go modules (such as btcutil/v2, chaincfg/v2, wire/v2, txscript/v2, and a newly split-out address/v2 package) across the entire codebase. It also updates some third-party dependencies and Go version requirements. There is no indication of a security fix or vulnerability being addressed.
Lower-priorityrpcwebsocket: fi linter complaint about unused functionsby Oliver Gugger · b29ce973 · May 15, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Oliver Gugger
rpcwebsocket: fi linter complaint about unused functions
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body