LDK
← All projectsLightning Dev Kit

rust-lightning

Composable Rust libraries for building Lightning wallets, nodes, and services.

BitcoinCryptographic librariesLightning NetworkNormal
Repository coverage

1478 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

225security candidates208second-pass queue86AI analyses
63commits · 30 days
191commits · 60 days
647commits · 180 days
1475commits · 365 days
Backfill bands
Aug 5 → Feb 6819 seen18 candidatesComplete
Feb 6 → Jun 6468 seen16 candidatesComplete
Jun 6 → Jul 6128 seen8 candidatesComplete
Jul 6 → Aug 561 seen3 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

69/100 average clarity
352Strong · 80–100
782Adequate · 60–79
285Thin · 40–59
59Opaque · 0–39
3security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Elias Rohrer153158467
Matt Corallo3564717173
Leo Nash116136162
Jeffrey Czyz177416068
Wilmer Paulino1493915069
Joost Jager1622412069
elnosh30135056
Valentine Wallace135105069
shaavan2263069
Carla Kirk-Cohen6531069
benthecarman1833071
Duncan Dean831057
Analysis record

Published AI watches

Last scanned 43 minutes ago

Informational 15 AI analysisMessage 45 · Thin
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Update crate repository links to forgejo

This commit simply updates the 'repository' web links in 15 package metadata files from GitHub to a self-hosted Forgejo instance. It does not change any program code, build logic, dependencies, or security behavior. There is no security is…

eb77676dby benthecarman+15−1515 files
No security note in commit
Low 26 AI analysisMessage 90 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Include to_self_delay size in DelayedPaymentOutput weight calculation

This commit fixes a small accounting bug in how the Lightning wallet estimates the size (and therefore transaction fee) of a special Bitcoin transaction that sweeps funds back to the user after a channel closes. The old code always assumed…

debug assertion failure possible in development/testing buildstransaction weight/fee estimate overestimation up to 3 WUconstant replaced with per-descriptor length computation
e6652237by Matt Morehouse+97−83 files
No security note in commit
Informational 15 AI analysisMessage 63 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Require manual reviewer assignment

This commit changes the project's internal code-review workflow. It stops automatically assigning a human reviewer when a pull request is opened; instead, contributors must manually click a button to request a reviewer after first addressi…

9c1e5787by Joost Jager+21−232 files
No security note in commit
Moderate 60 AI analysisMessage 73 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Handle missing splice tx_signatures on reestablish

This commit fixes a bug in LDK's Lightning channel reconnection logic after a splice (a way to resize a channel's on-chain funds). If one peer had already received the splice signatures but the other had not, and then they disconnected and…

Protocol-state inconsistency on reconnection after splice signature exchangePotential channel stall/force-close due to quiescence not being exited before commitment updateFuzzer-discovered edge case in Lightning splicing retransmission
f93a7f0cby Wilmer Paulino+600−975 files
No security note in commit
Informational 17 AI analysisMessage 85 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

refactor(offers): extract payer key derivation helpers

This commit is a code cleanup (refactor) in the Lightning Dev Kit library. It moves existing payer key-derivation logic into shared helper functions so that future 'payer proof' features can reuse the same code. The change does not appear …

Refactor only: moves existing key derivation/verification logic into helpers without changing algorithmsAdds new public API `Bolt12Invoice::derive_payer_signing_keys` for payer proof key recoveryNo mention of vulnerability, bug, CVE, security fix, or exploit in commit title/message
2bd9266aby Vincenzo Palazzo+120−212 files
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Upload new fuzz corpus entries as a short-lived CI artifact

This commit changes a CI workflow for the rust-lightning project. It stops trying to push new fuzz test inputs directly to a corpus repository from automated test runs, and instead uploads them as a temporary artifact that a separate sched…

b9f55b6cby Matt Corallo+52−451 file
No security note in commit
Low 25 AI analysisMessage 100 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

ln: add trampoline mpp accumulation with rejection on completion

This commit adds partial support in the Lightning Dev Kit node software for receiving and temporarily holding multi-part trampoline payments, then deliberately rejects them once all parts arrive because full outbound forwarding is not yet …

New trampoline forward handling path accumulates MPP parts before rejectingDebug assertion guards first-HTLC failure in MPP mergeTODO comment flags possible MPP inconsistency in next_node_id across trampoline parts
1afd35e6by Carla Kirk-Cohen+240−112 files
No security note in commit
Informational 19 AI analysisMessage 73 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Use Forgejo OIDC for review requests

This commit changes the project's automated reviewer-assignment workflow to stop using a long-lived secret token and instead request a short-lived authentication token from the Forgejo CI service. This is a security-hardening improvement: …

Removal of long-lived repository secret from CI workflowAdoption of OIDC-based short-lived token for API authorizationWorkflow runs in pull_request_target context with no code checkout
57c84bcaby Elias Rohrer+17−81 file
Vendor flagged security relevance
Informational 15 AI analysisMessage 78 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

fuzz: add chanmon holder signer fuzz ops

This commit only adds new fuzz-testing commands to an existing test harness. It lets the fuzzer temporarily block and then re-enable the local node's own signing operations during simulated channel failures. There is no change to productio…

6ae2634eby Joost Jager+26−31 file
No security note in commit
Moderate 64 AI analysisMessage 73 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Ignore stale splice initial commitment_signed

This patch fixes a bug in the Lightning Dev Kit where a delayed message from a peer could accidentally force-close a live payment channel. During a failed 'splice' (a way to resize a channel), the peer might already have sent a signature f…

Force-closure of a live Lightning channel due to stale signature validationRace condition between splice cancellation and in-flight commitment_signedIncorrect signature validation against post-abort channel state
b3e2dc8dby Wilmer Paulino+81−02 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 68 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Pin zeroize for old Rust CI

This commit only changes a CI script to pin a dependency version so older Rust toolchains can still build the project. It is a build-maintenance fix with no security relevance.

a8a4767fby Joost Jager+3−01 file
No security note in commit
High 76 AI analysisMessage 80 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Reject pre-epoch `LSPSDateTime` at parse time

This commit fixes a remote denial-of-service bug in rust-lightning's LSPS (Lightning Service Provider Specification) code. An attacker could send a specially crafted date string from before 1970 (like "1900-01-01T00:00:00Z") in certain pee…

Remote-triggerable panic (DoS) via peer-controlled inputInteger conversion panic: i64 negative timestamp coerced to u64 with .expect()Input validation bypass: serde transparent deserialization skipped custom parser
837763a6by Elias Rohrer+29−31 file
Vendor flagged security relevance
Low 32 AI analysisMessage 80 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Fix: reject fake scids with invalid vout

This commit fixes a validation bug in how Lightning Dev Kit checks 'fake' short channel IDs (SCIDs) used for routing tricks like phantom and intercept payments. The old check compared only the lowest byte of the vout field, so an attacker …

Input validation bypass in fake SCID checksType-cast truncation bug (u16 to u8) leading to incorrect equality checkPotential for spurious HTLCIntercepted event generation
6aea1020by Valentine Wallace+20−21 file
Vendor flagged security relevance
Low 46 AI analysisMessage 90 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Remove nonce from outbound payment OffersContexts

This commit removes an old cryptographic nonce from the data carried inside Lightning "blinded paths" used when sending BOLT 12 offers and refunds. The nonce is no longer needed because a newer "payer metadata" field already carries the sa…

Removes a redundant nonce from blinded-path context, relying on payer metadata for invoice authenticationRetains and enforces payment_id matching to prevent cross-payment invoice delivery over captured blinded pathsMaintains backward-compatible persistence of the nonce for downgrade/retry scenarios
b910f8ebby Jeffrey Czyz+33−354 files
Vendor flagged security relevance
Low 33 AI analysisMessage 86 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Include payer nonce in payer metadata again

This commit changes how BOLT12 invoices are verified in the Lightning Dev Kit. Previously, some invoices could be verified using a nonce stored in the blinded reply path context. Now, the nonce is always included inside the encrypted payer…

BOLT12 invoice verification now depends only on data inside the invoice request/refund, reducing reliance on external contextRemoves a verification path (verify_using_payer_data) that used reply-path context instead of invoice-contained metadataBreaks backward compatibility for prior-version invoice requests/refunds with blinded paths, causing payment failures
404d8c64by Jeffrey Czyz+47−995 files
No security note in commit
Low 44 AI analysisMessage 73 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Return P2WSH script pubkey for keyed anchor prevouts

This commit fixes a bug in how Lightning Dev Kit describes anchor outputs when preparing transactions for external wallets to sign. Previously, for a type of anchor tied to a specific channel key, the code returned the raw 'witness script'…

Incorrect scriptPubKey in PSBT witness_utxo metadata for anchor prevoutsPotential wallet/signer validation failure when signing fee-bumping transactionsRisk of misidentification of on-chain anchor output during CPFP/RBF bumping
ccf45e4fby Elias Rohrer+24−01 file
No security note in commit
Informational 16 AI analysisMessage 90 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Ignore stale splice signing fuzz events

This commit changes a fuzz test (a randomized testing harness) so it no longer crashes when a simulated splice-funding signing event becomes stale. The change only affects test code, not the production Lightning library, and it ignores an …

Error-handling change in fuzz targetReference to tx_abort invalidating queued signing eventsNo production code modified
13791448by Wilmer Paulino+14−31 file
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Rename read-write TLV ser macros

This commit is a pure code cleanup: it renames internal Rust macros from impl_writeable_tlv_based* to impl_ser_tlv_based* across many files. The generated serialization and deserialization code is unchanged, so there is no functional or se…

ba7e36e0by Joost Jager+157−15738 files
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Allow stdin fuzz targets to suppress logs

This change is a developer convenience tweak for the project's internal fuzz-testing programs. It adds an environment variable switch (LDK_FUZZ_SUPPRESS_LOGS) that lets automated fuzzing runs stay quiet, while keeping normal manual runs ve…

No changes to production library codeNo changes to parsing, serialization, or cryptographic codeOnly affects fuzz target harness logging behavior
c5fa6131by Joost Jager+365−7373 files
No security note in commit
Informational 15 AI analysisMessage 38 · Opaque
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Fix fuzz build warnings

This commit only fixes compiler warnings that appear when building the project's fuzzing test harness. It removes one unused import, narrows three conditional compilation flags so they don't conflict during fuzz builds, and reduces the vis…

f0ce340cby Wilmer Paulino+4−55 files
No security note in commit
Repository ledger

Explore captured commits

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

Lower-priorityfuzz: track payment send resolutionsby Joost Jager · fed08b48 · Jul 28, 2026 · 1 fileMessage 78 · AdequateTriage 5Details
Commit message · Joost Jager

fuzz: track payment send resolutions

Register every send as pending, then move immediate outcomes through
one strict pending-to-resolved transition. Reuse that transition for
terminal events and manager rollback, while handling repeated terminal
events only after confirming the payment was already resolved.

Keep abandoned payments pending while they still have outbound HTLC
state, including holding-cell HTLCs. Later success checks need complete
tracker state and must reject terminal events for payments the harness
never recorded.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
Lower-priorityblinded_path: only compact introduction nodes via channels enabled both waysby Vincenzo Palazzo · 0c352c55 · Jul 27, 2026 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · Vincenzo Palazzo

blinded_path: only compact introduction nodes via channels enabled both ways

When selecting a channel to reference a compact (DirectedShortChannelId)
introduction node, only consider channels that are enabled in both
directions. Disabled channels cannot be used to reach the introduction
node, and such channels may linger in the local network graph long after
being disabled or even closed (e.g., when sourcing gossip from rapid
gossip sync, which never removes closed channels). Previously, the
oldest channel of the introduction node was selected unconditionally,
which could produce blinded paths that senders cannot resolve or route
to, silently breaking long-lived paths such as those embedded in BOLT 12
offers.

If no enabled channel is found, the NodeId encoding is kept.

Fixes #4826.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Security candidateRequire manual reviewer assignmentby Joost Jager · 9c1e5787 · Jul 27, 2026 · 2 filesMessage 63 · AdequateInformational 15Details
Commit message · Joost Jager

Require manual reviewer assignment

Stop assigning reviewers when pull requests are opened. Keep the manual
workflow trigger available for Forgejo's "Assign random reviewer"
button. Only members of the reviewer pool may request an additional
reviewer.

Document that contributors should address the initial AI review before
requesting human review. Clarify that one human reviewer is the default,
with a second requested when the primary reviewer considers it
necessary.

63/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 15/100

This commit changes the project's internal code-review workflow. It stops automatically assigning a human reviewer when a pull request is opened; instead, contributors must manually click a button to request a reviewer after first addressing an AI review. It also limits who can request extra reviewers. There is no change to the actual Lightning node software, cryptography, network protocol, or any user-facing security behavior.

Lower-priorityf names in test lookupsby Matt Corallo · 081a8e10 · Jul 24, 2026 · 1 fileMessage 48 · ThinTriage 0Details
Commit message · Matt Corallo

f names in test lookups

48/100 · ThinMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Lower-priorityExpose DNS query failure on invalid proofs or bad BIP 353 recordsby Matt Corallo · 204134c0 · Jul 24, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · Matt Corallo

Expose DNS query failure on invalid proofs or bad BIP 353 records

In the previous commit we started handling the new `DNSSECError`
onion messages and using them to expose when a BIP 353 resolution
over onion messages should be considered failed due to all of our
queries having filed. However, queries can also fail if all of our
queries either errored or returned bogus proofs, or if we received
a valid proof which proved there is no BIP 353 record or `Offer`.

Here we consider such failures and expose them as well.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Lower-priorityf note that only one resolution will fail at a timeby Matt Corallo · a2fe23f5 · Jul 24, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Matt Corallo

f note that only one resolution will fail at a time

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityGenerate `DNSSECError` messages when DNSSEC resolution failsby Matt Corallo · 1a4694bf · Jul 24, 2026 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · Matt Corallo

Generate `DNSSECError` messages when DNSSEC resolution fails

https://github.com/lightning/blips/pull/71 updated the DNSSEC
resolution bLIP to include an explicit error message when DNS(SEC)
resolution was attempted but failed, allowing for faster fallback
to LN-Address (for clients that do) and faster payment failure.

Here we add service-side support for generating the error messages,
informing requesters that their resolutions have failed.

Largely written by an LLM

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Lower-priorityCorrect DNSSEC proof validity time gap applied to header timeby Matt Corallo · d14c22a3 · Jul 24, 2026 · 1 fileMessage 95 · StrongTriage 0Details
Commit message · Matt Corallo

Correct DNSSEC proof validity time gap applied to header time

We intended to apply DNSSEC proof validity tests to constrain them
to within two hours of the latest block header time, but the code
landed with a two minute gap instead.

Given DNSSEC proof validity is usually many hours and grace periods
are used to ensure records close to expiry aren't used, this is
somewhat unlikely to have bitten anyone.

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
Lower-priorityRename `OMNameResolver::resolve_name` to `initiate_resolution`by Matt Corallo · 0460fda6 · Jul 24, 2026 · 2 filesMessage 65 · AdequateTriage 0Details
Commit message · Matt Corallo

Rename `OMNameResolver::resolve_name` to `initiate_resolution`

This better captures what the method actually does.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityReport the used success probabilities in scorer accessor methodsby Matt Corallo · 68123876 · Jul 24, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · Matt Corallo

Report the used success probabilities in scorer accessor methods

`live_estimated_payment_success_probability` and
`historical_estimated_payment_success_probability` allow clients to
fetch the estimated success probability of a channel directly,
rather than as a score.

Sadly, because they did not check that the amount was strictly
smaller than `max_liquidity_msat`, `success_probability` could hit
a (otherwise-harmless) debug assertion, which is fixed here.

While doing so, we also update them to return the actual
probability estimate used in scoring, applying the 1% lower-bound.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI review queuedFormat changed functionsby Matt Corallo · 05ce4204 · Jul 24, 2026 · 1 fileMessage 28 · OpaqueTriage 0Details
Commit message · Matt Corallo

Format changed functions

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Lower-priorityCorrect + update scoring attempts right at the maximum amountsby Matt Corallo · a6964ab9 · Jul 24, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Matt Corallo

Correct + update scoring attempts right at the maximum amounts

While sending a payment at exactly a channel's max or the liquidity
upper bound we've calculated is unlikely to work, we shouldn't
consider it impossible. Here we fix a few cases where we previously
did so.

This isn't really fixing anything, as we only shift the boundary by
1 msat, but it makes the next commit more logical.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Security candidateHandle missing splice tx_signatures on reestablishby Wilmer Paulino · f93a7f0c · Jul 23, 2026 · 5 filesMessage 73 · AdequateModerate 60Details
Commit message · Wilmer Paulino

Handle missing splice tx_signatures on reestablish

When reconnecting after one side has received `tx_signatures` for a
splice but the peer has not, `channel_reestablish` may need to recover
two different pieces of state: the missing `tx_signatures` and a later
commitment update generated after quiescence ended locally.

Previously the lost-remote-commitment path discarded any `tx_signatures`
prepared while processing the peer's `next_funding` TLV, as we assumed
that if a `tx_signatures` is owed, then no pending updates must exist.
That left the peer awaiting splice signatures and still treating the
channel as quiescent, so the subsequent HTLC commitment update was
rejected as a normal update while quiescent.

This was incorrect as the fuzzer highlighted that a new update can be
made after the `tx_signatures` exchange (while the counterparty has yet
to process the responding `tx_signatures`) and both messages need to be
retransmistted after a reconnect.

We fix this by carrying `tx_signatures` through that reestablish branch
and making the `tx_signatures/commitment_update` order explicit. Initial
splice funding retransmission remains
commitment_signed-before-tx_signatures, while post-splice reconnect
recovery sends tx_signatures before normal commitment updates so the
peer can exit quiescence first.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundaryfuzzing or regression evidencesigning or wallet path
AI analysis · Moderate 60/100

This commit fixes a bug in LDK's Lightning channel reconnection logic after a splice (a way to resize a channel's on-chain funds). If one peer had already received the splice signatures but the other had not, and then they disconnected and reconnected, the recovering peer could drop its own splice signatures while trying to resend a later commitment update. That left the counterparty still waiting for splice signatures and still treating the channel as 'frozen' (quiescent), so it would reject the normal commitment update. The fix ensures both the missing splice signatures and any later commitment update are retransmitted in the correct order after reconnect.

Security candidateoffers: Allow disabling invoice response MPPby Elias Rohrer · 00aabf81 · Jul 22, 2026 · 1 fileMessage 68 · AdequateTriage 18Details
Commit message · Elias Rohrer

offers: Allow disabling invoice response MPP

Preserve the MPP-enabled default for invoice-request response builders
so existing OffersMessageFlow callers retain their prior behavior.

Allow callers with single-path requirements to explicitly remove the
advertised MPP feature before signing. This controls feature
advertisement only; receive-side enforcement remains the caller's
responsibility.

Co-Authored-By: HAL 9000

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundary
Lower-prioritychannelmanager: upgrade best_block_updated log from trace to infoby Alkamal01 · bce5ef2f · Jul 21, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Alkamal01

channelmanager: upgrade best_block_updated log from trace to info

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedChange assign-reviewer authorized integration token to a bot acctby Matt Corallo · f734d1eb · Jul 20, 2026 · 1 fileMessage 81 · StrongTriage 12Details
Commit message · Matt Corallo

Change assign-reviewer authorized integration token to a bot acct

I didn't realize using my own authorized integration token would
result in every assignment being listed as coming from me, which is
weird so here we swap it for a bot.

Fixes #4804

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 or wallet pathsecond-pass: security-sensitive path
Lower-priorityIncrease probabilistic scorer defaults 5xby benthecarman · 687b851b · Jul 20, 2026 · 1 fileMessage 90 · StrongTriage 0Details
Commit message · benthecarman

Increase probabilistic scorer defaults 5x

Increase the base and historical-liquidity penalties fivefold. This
applies to both the fixed and payment-size parts, so their balance stays
the same. The router will now pay more to avoid longer routes and routes
the scorer considers less likely to work.

I tested this using the graph and scorer pulled from my ldk-server. The
scorer was kept unchanged during the test. Codex randomly assigned 600
different high-degree nodes to the old or new settings, with 300 probes
per setting. The test was balanced across 100 rounds and used amounts of
1,000, 10,000, and 30,000 sats. Only one probe ran at a time.

The old settings reached 167/300 targets (55.7%) within 10 seconds. The
5x settings reached 214/300 (71.3%), an improvement of 15.7 percentage
points. Results were 69% vs 82% at 1,000 sats, 47% vs 72% at 10,000
sats, and 51% vs 60% at 30,000 sats.

Across the 587 targets where both settings found a route, the quoted fee
rose by 2.4 sats on average. These probes used one node and did not
settle, so they do not guarantee payment success elsewhere.

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Lower-priorityExpose sources for pending outbound HTLCsby Joost Jager · feb838da · Jul 20, 2026 · 4 filesMessage 68 · AdequateTriage 0Details
Commit message · Joost Jager

Expose sources for pending outbound HTLCs

Pending outbound HTLC details do not identify which payment or
inbound HTLC produced them. A payment hash cannot provide that
mapping when multiple parts of a multipart payment share both a hash
and route.

Expose an optional source enum containing the payment ID for locally
initiated HTLCs, the inbound HTLC for normal forwards, or all inbound
HTLCs aggregated by a trampoline forward. Derive it from the existing
HTLC source for committed and holding-cell HTLCs.

Serialize the source as an optional upgradable TLV so older data
remains readable and unknown future source variants degrade to None.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityHandle `DNSSECError` messages when attempting DNSSEC resolutionby Matt Corallo · a705abdb · Jul 18, 2026 · 2 filesMessage 81 · StrongTriage 0Details
Commit message · Matt Corallo

Handle `DNSSECError` messages when attempting DNSSEC resolution

https://github.com/lightning/blips/pull/71 updated the DNSSEC
resolution bLIP to include an explicit error message when DNS(SEC)
resolution was attempted but failed, allowing for faster fallback
to LN-Address (for clients that do) and faster payment failure.

Here we add client-side support for the new message, accepting
`DNSSECError` messages and marking payments as failed when all our
queries have failed.

Largely writen by an LLM

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Lower-priorityAdd infrastructure for handling `DNSSECError` onion messagesby Matt Corallo · c37b0dc4 · Jul 18, 2026 · 5 filesMessage 81 · StrongTriage 0Details
Commit message · Matt Corallo

Add infrastructure for handling `DNSSECError` onion messages

https://github.com/lightning/blips/pull/71 updated the DNSSEC
resolution bLIP to include an explicit error message when DNS(SEC)
resolution was attempted but failed, allowing for faster fallback
to LN-Address (for clients that do) and faster payment failure.

Here we simply add the new message framing and empty handlers.

Largely writen by an LLM

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI review queuedRemove taproot build checkby elnosh · 81a7b82d · Jul 16, 2026 · 1 fileMessage 35 · OpaqueTriage 0Details
Commit message · elnosh

Remove taproot build check

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Lower-priorityIncrease no-channel peer limitby SaidAlaoui · 56b0c2e7 · Jul 15, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · SaidAlaoui

Increase no-channel peer limit

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidatePin jobserver to 0.1.34 on pre-1.85 rustcby Matt Corallo · a4641403 · Jul 9, 2026 · 1 fileMessage 45 · ThinTriage 18Details
Commit message · Matt Corallo

Pin jobserver to 0.1.34 on pre-1.85 rustc

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
access control
AI review queuedBump esplora-client to 0.13 to switch from `reqwest` to `bitreq`by Matt Corallo · 5cd499e0 · Jul 9, 2026 · 2 filesMessage 50 · ThinTriage 12Details
Commit message · Matt Corallo

Bump esplora-client to 0.13 to switch from `reqwest` to `bitreq`

...fixing MSRV builds

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
Security candidateTest cross-version serialization of pending splicesby Jeffrey Czyz · 0beadb3b · Jul 9, 2026 · 1 fileMessage 83 · StrongTriage 18Details
Commit message · Jeffrey Czyz

Test cross-version serialization of pending splices

Add tests exercising the 0.2/current wire boundary for pending splices:
- A current node with a single pending splice (whether or not we
contributed to it) is loadable by LDK 0.2.
- A current node with a splice under RBF is refused by 0.2 via the even
RBF-gate TLV.
- A single pending splice written by 0.2 is read by current with no
contribution recorded, since 0.2 never tracked one.

The downgrade reload configs enable anchors so 0.2 accepts the current
channel type rather than refusing it before the splice state is reached.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

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
update trust