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 change stops LND from opening new Lightning channels using the old 'legacy' commitment format. The legacy format makes it harder to recover funds if something goes wrong, because the money owed to you is tied to a secret key that chan…
Prevents opening new channels with the legacy commitment type, whose tweaked to_remote output complicates data-loss recoveryCloses a negotiation path where an empty channel_type TLV bypassed feature checks and forced a legacy channelAdds explicit RPC and wire rejection with a dedicated error code
This update fixes a bug in how LND handles old-style punishment transactions when a channel partner tries to cheat. Previously, tiny (dust) HTLCs were left as blank placeholder entries in the punishment data, which could cause the node to …
nil-pointer dereference risk in breach retribution pathlegacy revocation log handling inconsistency with modern formatdefensive hardening added for trimmed/dust HTLCs
This change tightens how LND reads Lightning invoices (BOLT 11). Previously, if an invoice contained more than one payment hash field, LND would silently keep the first one and ignore the rest. Now it rejects the invoice entirely. The rele…
Behavior change from 'use first duplicate field' to 'reject duplicate fields'New error type ErrDuplicatePaymentHash returned on duplicate payment hash fieldsMalformed/unsupported-length duplicate payment hash now treated as duplicate and rejected
This change tightens how LND reads Lightning invoices. Previously, if an invoice contained more than one payment hash field, LND would silently keep the first valid one and ignore the rest. Now it rejects such invoices outright. This preve…
Behavioral change from silent first-field acceptance to explicit rejection of duplicate payment hash fieldsPrevents invoice parsing from depending on field ordering when multiple payment hashes are presentCovers malformed first field + valid second field, closing a potential bypass
This change fixes how LND answers network 'ping' messages from other Lightning nodes. Previously, LND would sometimes silently ignore valid pings to limit reply traffic, which violates the Lightning protocol (BOLT 1) and could make a peer …
Protocol compliance fix: BOLT 1 requires a Pong for every valid PingRemoved silent suppression of Pong replies that could cause peer timeout/misbehaviorUnified rate limiting now accounts for amplification bandwidth, not just ping count
This commit updates LND's integration tests to stop using an obsolete 'legacy' channel type and adds a test confirming that LND now rejects that legacy type. The commit message says the real fix is elsewhere in the same pull request: previ…
Deprecated commitment format (legacy) is now rejected by RPCTest added to verify legacy channel type is refusedUnused legacy node configuration flag removed
This change fixes a bug in LND's handling of AMP (Atomic Multi-Path) payments. Previously, if one partial payment set failed to reconstruct its secret preimage, the entire invoice was canceled, including unrelated partial payment sets from…
Denial-of-service against reusable static AMP invoices by causing unrelated accepted HTLC sets to be canceledIncorrect invoice state transition from set-local failure to global invoice cancellationAvailability impact on multi-payer AMP invoice scenarios
This commit updates the Go programming language version used to build LND from 1.25.13/1.26.6 to 1.26.8 (language version) and 1.27.1 (toolchain). It also regenerates many automatically generated RPC files and adjusts linter settings. The …
Go version bump may indirectly address unlisted runtime/standard-library security fixesLarge regenerated protobuf files suggest dependency/toolchain refresh rather than logic changeLinter configuration expanded to suppress new checks, consistent with a toolchain upgrade
This commit is a routine build-maintenance change. It updates the project's Go linter configuration to a newer version and fixes the resulting style warnings: a WebSocket header spelling and several documentation comments that didn't start…
This commit is a housekeeping change that regenerates automatically generated RPC binding files using a newer Go compiler version. The only differences are in code comments (doc-comment formatting), not in actual program logic or API behav…
This commit is a routine build-and-test maintenance patch to make the LND codebase compile and pass tests with the upcoming Go 1.27 release. It upgrades the project's custom linter tool, refreshes many indirect tool dependencies, adjusts o…
No production code changesNo vulnerability fix or CVE reference presentDependency-only refresh in tools module (development tooling)
This commit is a routine maintenance update that changes which version of the Go programming language is used to build the lnd project. It does not change any application logic, fix a bug, or address a security vulnerability. The project i…
This commit fixes a bug in LND's invoice handling for reusable AMP (Atomic Multi-Path) invoices. Previously, if one payment set failed to reconstruct its preimage, the entire invoice was canceled, even though other valid payment sets on th…
Denial-of-service-like availability impact: a malicious or buggy payer could cause a whole reusable AMP invoice to be canceled, blocking legitimate concurrent payersSet-local failure incorrectly escalated to invoice-global cancellationRegression test added for concurrent-set survival after reconstruction failure
This commit adds the missing cryptographic signature layer for BOLT 12 offers in LND. It builds a Merkle tree from the message fields, signs that tree with a BIP-340 Schnorr signature, and now rejects invoice requests and invoices whose si…
Adds BIP-340 Schnorr signature verification for BOLT 12 invoice_request and invoice messagesMerkle tree commits to canonical re-encoded TLV records; non-minimal feature/amount encodings now rejected to preserve byte-exactnessSignature TLV type 240 and reserved range 240-1000 excluded from the signed Merkle root
This commit adds a new optional wallet feature to LND that lets users lock UTXOs until the transaction spending them reaches a chosen confirmation depth, instead of relying on a wall-clock timeout. It is a feature addition with safety chec…
New RPC fields release_after_spend_confs and confirmed_spend_height added to LeaseOutput and FundPsbtCustom lock ID enforced as required for confirmation-controlled FundPsbt leases; all-zero and reserved internal IDs rejectedCapability check (ResolveOutputLeaser) prevents silent downgrade to time-only lease when confirmation control is requested
This commit is a large internal code reorganization for the LND Lightning node. It moves channel state storage logic from the `channeldb` package into a new `chanstate` package, while keeping the same database keys, serialization formats, …
Large refactoring with no change to cryptographic or consensus-critical logicCodec serialization moved verbatim to new package; wire format unchangedDatabase bucket keys and TLV record types preserved
This change fixes a data-handling bug in LND's channel-opening code. When opening a Lightning channel using an optional 'auxiliary funding controller' (used for custom channel types such as Taproot Assets), the funding manager was previous…
Data-correctness fix in funding handshake: negotiated channel configs now exposed to auxiliary funding controllerAuxiliary funding controller receives incomplete channel state before patch, complete state after patchNo explicit security claim, CVE, or advisory referenced in commit or supplied materials
This change makes LND's BOLT 12 invoice and invoice-request reader actually check that the digital signature is valid, instead of only checking that a signature field exists. Before, an attacker could craft or modify a BOLT 12 message and …
Missing cryptographic verification on parsed BOLT 12 messages replaced with BIP-340 Schnorr signature verificationReader accepted any 64-byte placeholder signature before the patchNew negative tests verify rejection of wrong-signer and tampered Merkle-root fields
This commit only adds a new integration test for an existing feature called confirmation-controlled leases. It does not change production code, so it cannot introduce a security vulnerability or fix one directly. The test exercises how lon…
This update fixes two security-related bugs in LND's REST WebSocket proxy. First, a specially crafted WebSocket protocol header could crash the proxy (a panic). Second, the proxy previously had no limit on how large an incoming WebSocket m…
panic fix in request header parsingunbounded incoming WebSocket message read now cappedincorrect header value assignment possible before fix
lnrpc: remove deprecated Send* RPC server implementations
Remove handler implementations and macaroon permission entries for the now-deleted lnrpc RPCs: SendPayment, SendPaymentSync, SendToRoute, and SendToRouteSync.
Also remove the dead payment infrastructure that was exclusively used by these handlers: paymentStream, rpcPaymentRequest, rpcPaymentIntent, extractPaymentIntent, dispatchPaymentIntent, sendPayment, and sendPaymentSync.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
credential or privilege state
AI analysis · Informational 15/100
This commit removes old, unused code paths for sending Lightning payments through the main RPC server. These RPCs (SendPayment, SendPaymentSync, SendToRoute, SendToRouteSync) were already deleted from the service definition in a prior change, so this patch only cleans up the leftover server-side implementations and their macaroon permissions. There is no security vulnerability here; it is routine code deletion of dead functionality.
Remove the SendPayment, SendToRoute, and TrackPayment shim methods from router_server_deprecated.go that delegated to their V2 counterparts. Remove their macaroon permission entries from router_server.go and the now-unused legacyTrackPaymentServer wrapper.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
credential or privilege state
AI analysis · Low 37/100
This commit removes three old, deprecated payment RPC methods (SendPayment, SendToRoute, and TrackPayment) from the LND Lightning node's router service. These methods were already replaced by newer V2 versions and were only thin wrappers around them. Removing them reduces the amount of code that could contain bugs and removes their access permissions, but it may also break older client software that still calls these methods.
itest: migrate deprecated lnrpc Send* calls to routerrpc V2
Remove SendToRoute and SendToRouteSync helpers from the test harness and update integration tests to use routerrpc.SendToRouteV2:
- lnd_routing_test.go: collapse three SendToRoute test cases (sync, stream, v2) into a single test using SendToRouteV2; update testSendToRouteErrorPropagation to assert on Failure.Code instead of PaymentError string - lnd_channel_policy_test.go: replace streaming SendToRoute with SendToRouteV2 and assert on HTLCAttempt.Failure instead of PaymentError string
83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100
This commit only changes integration tests for the Lightning Network Daemon (LND). It removes old test helper functions that called deprecated SendToRoute RPC methods and updates the tests to use the newer routerrpc.SendToRouteV2 API. No production code, user-facing RPC behavior, or security-sensitive logic is modified. It is a test-maintenance change with no direct security relevance.
routerrpc: remove deprecated outgoing_chan_id field handling
Remove the compatibility fallback in QueryRoutes and ExtractPaymentIntent that accepted the deprecated single outgoing_chan_id field alongside the replacement outgoing_chan_ids. Callers must now use outgoing_chan_ids.
Update TestQueryRoutes and TestExtractPaymentIntent accordingly.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Low 32/100
This commit removes backward-compatible handling of an old, single outgoing channel ID field in LND's router RPC. Previously, callers could use either the old field or the newer list field; now the old field is rejected with an error. The main risk is that existing callers still using the deprecated field will see their requests fail instead of being silently treated as unrestricted. This is a hardening/cleanup change rather than a fix for an active vulnerability.
Lower-priorityitest: add outgoing_chan_ids tests for EstimateRouteFeeby Jaewook Lee · b24fb172 · May 15, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Jaewook Lee
itest: add outgoing_chan_ids tests for EstimateRouteFee
60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100
This commit only adds new integration tests for an existing feature in LND. It does not change production code, fix a bug, or alter any security-relevant behavior. The tests verify that the EstimateRouteFee API correctly handles requests that restrict the first hop to a specific outgoing channel.
Lower-priorityrouterrpc: add outgoing_chan_ids to EstimateRouteFeeby Jaewook Lee · d625948e · May 15, 2026 · 4 filesMessage 50 · ThinInformational 15Details
Commit message · Jaewook Lee
routerrpc: add outgoing_chan_ids to EstimateRouteFee
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100
This commit adds a new optional feature to LND's EstimateRouteFee API that lets callers specify which channels can be used as the first hop when estimating fees or probing payments. It is a feature enhancement, not a security fix or vulnerability. There is no indication of a security issue in the code changes.
Lower-prioritycmd: add outgoing_chan_id flag to estimatefeeby Jaewook Lee · ea79df7a · May 15, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Jaewook Lee
cmd: add outgoing_chan_id flag to estimatefee
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100
This commit adds a new command-line option called outgoing_chan_id to the estimatefee command in LND. It lets users tell the fee estimator which payment channel(s) to consider for the first hop. There is nothing in the change that fixes a bug or addresses a security issue; it is a straightforward feature addition.
AI review queuedchancloser: remove dead ChannelFlushed.FreshFlush fieldby Jared Tobin · c5f3ad33 · May 14, 2026 · 3 filesMessage 83 · StrongInformational 15Details
Commit message · Jared Tobin
chancloser: remove dead ChannelFlushed.FreshFlush field
FreshFlush is never read in any transition handler. The only producer (peer/brontide.go) sets it unconditionally to true, and after the previous commit removed expectChanPendingClose, the test loops that iterated over {true, false} no longer differentiate between the two values.
Remove the field, the unconditional assignment, and collapse the test loops into single sub-tests.
83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit removes an unused data field called FreshFlush from the cooperative channel-closing logic. The field was always set to true and never actually checked by any code, so deleting it is a cleanup change with no security effect.
Lower-prioritydocs: add release note for coop close limbo fixby Jared Tobin · 242df464 · May 14, 2026 · 1 fileMessage 57 · ThinLow 30Details
Commit message · Jared Tobin
docs: add release note for coop close limbo fix
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 · Low 30/100
This commit only adds a release note describing a previously fixed bug in LND's cooperative channel closing flow. The actual code fix happened in an earlier pull request. The bug caused channel status to be marked as 'cooperatively broadcast' before any actual closing transaction existed, which could make channels temporarily disappear from normal listings or leave a waiting-close record with an empty transaction field. The release note confirms the fix but does not itself change any code.
AI review queuedchancloser: add nil-tx guard to legacy close testby Jared Tobin · ef7e084d · May 14, 2026 · 1 fileMessage 98 · StrongInformational 22Details
Commit message · Jared Tobin
chancloser: add nil-tx guard to legacy close test
Add call tracking to the legacy mockChannel so that every MarkCoopBroadcasted invocation is recorded. TestTaprootFastClose now asserts that at least one call was made and that every call carried a non-nil tx, guarding against the limbo state described in https://github.com/lightninglabs/taproot-assets/issues/2108.
98/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 22/100
This commit only changes a test file. It adds a safety check to make sure a function called during cooperative channel closes is always given a real transaction, not a blank one. The test now records every call and fails if any call has a nil transaction. It does not change the actual production code that users run, so it cannot by itself fix or introduce a live bug.
AI review queuedchancloser: remove MarkCoopBroadcasted(nil) callsby Jared Tobin · 711a4a40 · May 14, 2026 · 9 filesMessage 80 · StrongLow 46Details
Commit message · Jared Tobin
chancloser: remove MarkCoopBroadcasted(nil) calls
Remove the two call sites that set ChanStatusCoopBroadcasted before a cooperative close transaction exists:
- BeginNegotiation in the legacy close path (chancloser.go) - ChannelFlushed handling in the RBF close path (rbf_coop_transitions.go)
Both calls passed nil as the close tx, creating a "limbo" state where ChanStatusCoopBroadcasted is set but no close transaction is stored. This is unnecessary because ShutdownInfo — persisted earlier by MarkShutdownSent in initChanShutdown / the RBF ShutdownPending transition — already serves as the durable signal that the shutdown flow was entered.
ChanStatusCoopBroadcasted should only be set when a real close transaction exists, which this change preserves.
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 46/100
This commit cleans up how LND records that a Lightning channel is being closed cooperatively. Previously, the code would mark a channel as 'cooperatively closed' before an actual closing transaction existed, storing a placeholder 'nil' transaction. That created a confusing in-between state in the database. The change removes those premature marks and now requires a real, non-nil closing transaction before the status is set. It also updates restart logic so the node can still recover an unfinished close from other stored information. The commit is defensive hardening rather than a fix for an active exploit.
Lower-prioritykvdb: bump pgx/v4/stdlib to pgx/v5/stdlibby Boris Nagaev · 848af803 · May 14, 2026 · 3 filesMessage 68 · AdequateInformational 18Details
Commit message · Boris Nagaev
kvdb: bump pgx/v4/stdlib to pgx/v5/stdlib
Update the SQL driver registration import from pgx/v4/stdlib to pgx/v5/stdlib, completing the migration of the kvdb module away from the deprecated pgx v4.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 18/100
This commit updates the database driver used by LND's key-value database module from an older, deprecated PostgreSQL library (pgx v4) to its newer version (pgx v5). It is a routine dependency migration with no direct security fix described in the commit. The change could indirectly improve reliability and future maintainability, but it does not by itself patch a known vulnerability.
Lower-prioritylnd: bump pgx/v4 to pgx/v5 in main moduleby Boris Nagaev · 565cf115 · May 14, 2026 · 3 filesMessage 78 · AdequateInformational 17Details
Commit message · Boris Nagaev
lnd: bump pgx/v4 to pgx/v5 in main module
Update the main module's pgxpool usage from pgx/v4 to pgx/v5: - Change import from pgx/v4/pgxpool to pgx/v5/pgxpool - Update pgxpool.Connect to pgxpool.New (v5 API change) - Remove pgx/v4 and its transitive dependencies from go.mod
Note: pgxpool.New is lazy, but this is done in tests only and the very next line is pool.Exec, so if there is a connection error, it will be caught there.
78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 17/100
This commit updates the LND project's PostgreSQL database helper library from an older version (pgx v4) to a newer one (pgx v5). The only code change is in a test file, switching to the new library's way of creating a database connection pool. There is no direct security fix or vulnerability being patched here; it is routine dependency maintenance.
Lower-prioritygo.mod: add temporary replace directive for kvdbby Boris Nagaev · 59ab677d · May 14, 2026 · 1 fileMessage 48 · ThinInformational 15Details
Commit message · Boris Nagaev
go.mod: add temporary replace directive for kvdb
Add a local replace directive for kvdb so the main module can reference the local kvdb changes (pgx/v5 migration) before a new kvdb version is released.
48/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context! Contains work-in-progress language
AI analysis · Informational 15/100
This commit only adds a temporary Go module 'replace' directive so that the main lnd project uses a local copy of the kvdb package instead of a released version. It is a build/packaging convenience change with no security relevance visible in the diff or commit message.
AI review queuedsqldb: use pgx/v5/pgconn instead of standalone pgconnby Boris Nagaev · e9b422f7 · May 14, 2026 · 4 filesMessage 73 · AdequateInformational 18Details
Commit message · Boris Nagaev
sqldb: use pgx/v5/pgconn instead of standalone pgconn
In pgx v5, the pgconn package was absorbed into the main pgx module. Update imports from github.com/jackc/pgconn to github.com/jackc/pgx/v5/pgconn and remove the now-unnecessary standalone pgconn dependency from go.mod.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 18/100
This is a routine dependency cleanup. The project switched from a standalone PostgreSQL connection package to the version bundled inside the newer pgx v5 library. Only import paths and the dependency list changed; no program logic was modified. There is no indication this fixes or introduces a security vulnerability.
AI review queuedsqldb/v2: use pgx/v5/pgconn instead of standalone pgconnby Boris Nagaev · 548233fb · May 14, 2026 · 4 filesMessage 73 · AdequateInformational 15Details
Commit message · Boris Nagaev
sqldb/v2: use pgx/v5/pgconn instead of standalone pgconn
In pgx v5, the pgconn package was absorbed into the main pgx module. Update imports from github.com/jackc/pgconn to github.com/jackc/pgx/v5/pgconn and remove the now-unnecessary standalone pgconn dependency from go.mod.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100
This is a routine dependency cleanup. The project was using a standalone PostgreSQL connection helper package (pgconn) that has been merged into the main pgx database driver package in version 5. The change updates two source files to import pgconn from its new location and removes the old standalone package from the module files. There is no functional code change and no security fix or vulnerability introduced.
Document that bitcoind outbound peer health checks now use getnetworkinfo.connections_out instead of getpeerinfo.
Also mention that texts of zmq port mismatch warnings were fixed.
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
AI analysis · Informational 15/100
This commit only updates the release notes document. It adds text describing two earlier changes: a switch in how LND checks Bitcoin peer health, and clearer wording for a warning about ZMQ port mismatches. There is no code change in this commit itself.
Lower-prioritychainreg: clarify zmq port-mismatch warningsby Boris Nagaev · 9358ca32 · May 14, 2026 · 1 fileMessage 86 · StrongInformational 15Details
Commit message · Boris Nagaev
chainreg: clarify zmq port-mismatch warnings
The previous warning text ("unable to subscribe to zmq ... events") suggested that lnd failed to create the ZMQ connection, when in reality it only means the configured port differs from what bitcoind reports via getzmqnotifications. Reword both messages to say "port mismatch" and tell to verify the port.
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100
This commit only rewords two warning log messages in LND's chain registry. It changes the text from saying 'unable to subscribe to zmq ... events' to saying 'zmq ... port mismatch' when LND's configured ZMQ port differs from what the connected bitcoind reports. There is no code behavior change, no security fix, and no vulnerability addressed.
Lower-prioritychainreg: use getnetworkinfo for peer-countby Boris Nagaev · dae00811 · May 14, 2026 · 1 fileMessage 68 · AdequateInformational 19Details
Commit message · Boris Nagaev
chainreg: use getnetworkinfo for peer-count
Use getnetworkinfo.connections_out for bitcoind outbound peer checks instead of getpeerinfo. This keeps the isolation-safety signal while avoiding heavier per-peer work.
This helper is bitcoind-specific, btcd does not currently implement it.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 19/100
This change is a performance and reliability improvement, not a security fix. LND previously checked how many outbound peers its bitcoind backend had by calling getpeerinfo, which returns detailed information about every single peer and can be slow. The patch switches to using getnetworkinfo.connections_out, a lighter-weight RPC call that just reports the outbound peer count. The old getpeerinfo-based helper is kept for btcd because btcd does not support getnetworkinfo. There is no indication this change addresses a vulnerability or security incident.
Lower-prioritychainreg: use typed getzmqnotifications RPCby Boris Nagaev · 1c74c384 · May 14, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Boris Nagaev
chainreg: use typed getzmqnotifications RPC
Simplify the code. Use rpcclient's GetZmqNotifications method instead of a raw request and manual unmarshalling when validating bitcoind ZMQ subscriptions. The typed result already parses notification addresses, so the extra per-entry URL parsing is removed.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This is a routine code cleanup in LND's chain setup code. It replaces a hand-rolled JSON call to Bitcoin's getzmqnotifications RPC with a typed library method. There is no security-relevant change visible in the diff: the same ZMQ notification checks are still performed, just with less manual parsing.
Lower-prioritychainreg: use GetNetworkInfo for version checkby Boris Nagaev · 25188236 · May 14, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Boris Nagaev
chainreg: use GetNetworkInfo for version check
Simplify the code. Use rpcclient's typed GetNetworkInfo call in getBitcoindHealthCheckCmd instead of a raw JSON-RPC request and manual JSON decoding.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This commit is a straightforward code cleanup in LND's Bitcoin backend health check. It replaces a manual raw JSON-RPC call and hand-written JSON parsing with a typed library call that does the same thing. There is no security issue visible in the change.
Security candidatedocs: add v0.21.0 RC testing guides for humans and agentsby saubyk · 2d0187c6 · May 13, 2026 · 12 filesMessage 95 · StrongInformational 15Details
Commit message · saubyk
docs: add v0.21.0 RC testing guides for humans and agents
Adds docs/testing-guides/v0.21.0/ with a per-feature guide for the v0.21.0-beta.rc1 release. Each guide follows a fixed template (prereqs, setup, scenarios with concrete pass/fail signals, failure investigation) so RC testers and automated agents can work through them predictably.
This is a first draft intended for community review on the PR. payment-sql-migration.md carries a TBD callout for the SkipNativeSQLMigration rescue-path behavior, pending developer confirmation.
95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
update trustdocumentation-only discount
AI analysis · Informational 15/100
This commit only adds documentation: a set of release-candidate testing guides for the upcoming LND v0.21.0 release. No source code, configuration defaults, RPC behavior, or database logic is changed. The new Markdown files describe how testers (human or automated) can verify new features such as taproot channels, onion-message rate limiting, and a payment-store migration. Because nothing executable is modified, the commit itself does not introduce a security vulnerability or fix one.
Lower-priorityautopilot: pass pubkey in channel traversalby Elle Mouton · d0e90429 · May 12, 2026 · 5 filesMessage 80 · StrongInformational 14Details
Commit message · Elle Mouton
autopilot: pass pubkey in channel traversal
ForEachNodesChannels is a topology traversal: its callers only need the node identity plus channel edges. After removing address loading from ForEachNodeCached, constructing a Node for this callback is misleading because Addrs is either unused or empty.
Pass NodeID directly through the interface and update the scoring and simple graph callers to use that pubkey. This keeps the address-bearing Node interface on ForEachNode, where autopilot gathers connectable candidates and their addresses before dialing.
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 14/100
This is a routine internal code cleanup in LND's autopilot (automatic channel-opening assistant). It changes a callback to pass a node public key directly instead of wrapping it in a full Node object, and skips nodes with no channels during graph traversal. There is no security fix or externally visible behavior change.
Lower-prioritydocs: add release note for autopilot graph-cache fixby Elle Mouton · c18f139e · May 12, 2026 · 1 fileMessage 85 · StrongInformational 15Details
Commit message · Elle Mouton
docs: add release note for autopilot graph-cache fix
Note the performance improvement from dropping the unnecessary address load on the SQL backend and letting the kvdb in-memory graph cache serve autopilot's scoring traversal.
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
AI analysis · Informational 15/100
This commit only adds a release note describing a previous performance improvement in LND's autopilot feature. It is documentation-only and makes no code changes. There is no security issue present in this commit.
Lower-prioritysample-conf: sync neutrino useragentversion with upstreamby ziggie · 037549d9 · May 12, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · ziggie
sample-conf: sync neutrino useragentversion with upstream
The neutrino bump updates the default UserAgentVersion from "0.12.0-beta" to "0.16.2", which made the sample-conf check fail.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This commit only updates a commented-out example value in the sample configuration file so that it matches a newer default version from an upstream dependency. It is a documentation/sample-file maintenance change with no functional or security effect on running software.