EP
← All projectsElements Project

Core Lightning

Modular C implementation of the Lightning Network protocol and node stack.

BitcoinLightning NetworkNormal
Repository coverage

1854 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.

158security candidates263second-pass queue538AI analyses
145commits · 30 days
226commits · 60 days
804commits · 180 days
1850commits · 365 days
Backfill bands
Aug 5 → Feb 61049 seen37 candidatesComplete
Feb 6 → Jun 6579 seen10 candidatesComplete
Jun 6 → Jul 678 seen1 candidatesComplete
Jul 6 → Aug 5147 seen16 candidatesComplete
Commit communication

Does the history explain itself?

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

70/100 average clarity
431Strong · 80–100
1163Adequate · 60–79
231Thin · 40–59
29Opaque · 0–39
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
dovgopoly1502164
Rusty Russell95873237072
Sangbida Chaudhuri1473171066
Dusty Daemon771314066
ShahanaFarooqui931020063
daywalker9089532062
Níckolas Goline40513076
Lagrang376428069
Christian Decker3647072
Vincenzo Palazzo834080
Chandra Pratap56250082
ekzyis222063
Analysis record

Published AI watches

Last scanned 29 minutes ago

Informational 15 AI analysisMessage 65 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

Revert "doc: require Homebrew GNU make and gpatch on macOS"

This commit is a simple documentation revert. It undoes a previous change that told macOS users to install GNU make and GNU patch from Homebrew and to put those tools first in their command path. The reverted instructions now omit gpatch a…

0cfa949fby Sangbida Chaudhuri+4−81 file
No security note in commit
Informational 15 AI analysisMessage 75 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

Revert "tests: drop obsolete x-prefix in compacter-slow.sh"

This commit re-adds an old-style 'x' prefix to a string comparison in a test helper script. It is a test-only change with no effect on the actual Core Lightning node software, user funds, network behavior, or security. The change simply re…

116fd7cdby Sangbida Chaudhuri+1−11 file
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

doc: require Homebrew GNU make and gpatch on macOS

This commit only updates macOS installation instructions in the documentation. It tells macOS users to install newer GNU versions of 'make' and 'patch' from Homebrew because Apple's built-in tools are too old for building and running sourc…

d3ff1474by Sangbida Chaudhuri+8−41 file
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

tests: drop obsolete x-prefix in compacter-slow.sh

This commit is a trivial shell script cleanup. It removes an old-fashioned 'x' prefix from a string comparison in a test helper script so that a newer version of the Shellcheck linter stops warning about it. The change does not alter progr…

474c272aby Sangbida Chaudhuri+1−11 file
No security note in commit
Informational 18 AI analysisMessage 65 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

common: hoist amount+currency parsing into common code.

This commit moves existing code that parses payment amounts (Bitcoin millisatoshis, 'any' amount, or fiat currency amounts) from one plugin file into a shared library so it can be reused by a future feature. It is a code refactoring with n…

Refactoring of amount-parsing code into a shared helperAddition of explicit u64 overflow guards (mul_overflows_u64, add_overflows_u64) in the new common codeNo change to wire protocol or RPC interface semantics
e0f86c17by Rusty Russell+112−723 files
No security note in commit
Informational 17 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

lightningd: internal cleanups since all non-command JSON IDs are strings.

This is a routine internal cleanup commit in Core Lightning. It removes an unused helper function and simplifies how JSON-RPC request IDs are stored and formatted, since the project now always uses string IDs for non-command JSON traffic. …

No security-relevant keywords in commit title or messageNo CVE, advisory, or bug reference presentChanges are refactor/cleanup in nature
a70ae963by Rusty Russell+25−378 files
No security note in commit
Informational 15 AI analysisMessage 65 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

common: hoist hash_str helper into its own header.

This commit is a routine code cleanup: it moves a small string-hashing helper function into a shared header file so it can be reused without being copied and pasted. There is no change to behavior, no bug fix, and no security relevance.

581bbb1fby Rusty Russell+16−176 files
No security note in commit
Informational 23 AI analysisMessage 65 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

downgrade: we need to remove "impressions" from askrene datastore when downgrading to v26.06.

This is a database downgrade helper fix, not a live network vulnerability. Core Lightning's downgrade tool previously failed to strip out new 'channel impression' records when rolling a database back to version v26.06. The patch teaches th…

Database downgrade path could leave incompatible records in older schemaOffline tool only; no remote or on-chain triggerFix prevents potential node startup failure after version rollback
4d926285by Rusty Russell+43−111 file
No security note in commit
Low 31 AI analysisMessage 68 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

downgrade tool: fix invalid memory bug

This commit fixes a typo in a database downgrade helper tool. The bug caused the tool to pass a negative number (turned into a huge positive size) when copying data, which led to an out-of-memory (OOM) error. The fix swaps two variable nam…

Integer underflow / negative-to-size_t wrap leading to excessive allocationOut-of-memory crash in maintenance toolMemory corruption potential if allocation somehow succeeded
42995326by Lagrang3+8−81 file
No security note in commit
Informational 24 AI analysisMessage 65 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

xpay: actually tell askrene when a payment succeeded.

This commit fixes a bookkeeping bug in Core Lightning's xpay plugin. Previously, when a payment succeeded, xpay did not tell the askrene routing-helper that the route worked. As a result, askrene kept stale or overly pessimistic ideas abou…

Missing success feedback to routing layer can degrade payment reliabilityStale negative impressions may bias future path selection toward worse or failing routesNo direct funds-loss primitive is introduced or fixed
a66fabd4by Rusty Russell+40−02 files
No security note in commit
Low 49 AI analysisMessage 58 · Thin
EP Elements ProjectCore Lightning BitcoinLightning Network

askrene: correctly order constraints.

This commit fixes a bug in Core Lightning's routing helper (askrene) where two kinds of channel information—hard limits called 'constraints' and usage estimates called 'impressions'—were being applied in the wrong order. Because impression…

Routing decision bug caused by incorrect ordering of time-relative channel statePotential payment failure or acceptance of an over-capacity routeRegression test added demonstrating incorrect route acceptance before fix
4b6fe4a1by Rusty Russell+211−1182 files
No security note in commit
Low 35 AI analysisMessage 68 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

askrene: don't leak channel intel entries

This commit fixes a memory leak in the askrene plugin of Core Lightning. When individual channel intelligence entries were deleted, the code removed the entry from its array but forgot to free two internal pointers (impression and constrai…

Memory leak in plugin data structure cleanupMissing deallocation of nested pointers before array removalFix located in routing/intelligence plugin (askrene)
8891f414by Lagrang3+5−01 file
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

xpay: tests should expect the new error messages

This commit only updates test files so that automated checks expect slightly different error wording from the xpay payment command. It does not change any production code, so it cannot introduce a security vulnerability or fix one on its o…

0b67601fby Lagrang3+24−32 files
No security note in commit
Low 43 AI analysisMessage 65 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

offers: limit invoices to 10 minutes for recurring offers in other currencies.

This change tightens the lifetime of recurring invoices priced in foreign currencies (like USD) to 10 minutes by default, and refreshes them with current exchange rates when they expire. Previously, such invoices could remain valid for the…

Fixes stale exchange-rate exposure for currency-denominated recurring invoicesAdds configurable expiry cap for recurring currency invoicesDistinguishes user-cancellation (0s expiry) from natural expiry to avoid misleading errors
446312cfby Rusty Russell+134−148 files
No security note in commit
Low 45 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

offers: limit expiry to offer limit, or 10 minutes with currency conversion.

This commit tightens the expiration time on invoices created from BOLT12 offers. Previously, all such invoices defaulted to a 2-hour payment window. Now, if the offer has an absolute expiry, the invoice expires when the offer expires; and …

BOLT12 invoice expiry now bounded by offer absolute expiryCurrency-converted invoices use short expiry to limit exchange-rate exposureNew regression test added for expiry behavior
a6cf4915by Rusty Russell+55−22 files
No security note in commit
Low 29 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

fetchinvoice: don't bother with checking recurrence timing.

This commit removes local timing checks in Core Lightning's fetchinvoice plugin for recurring payments. Instead of the plugin refusing too-early or too-late invoice requests, it now lets the remote node decide and report back. The change i…

Removal of local input-validation checks for recurring invoice requestsReliance on remote-party enforcement for recurrence period limits and pay windowsTest expectations changed from local rejection to remote failure messages
3e49d908by Rusty Russell+2−682 files
No security note in commit
Low 32 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

lightningd: don't do previous invoice checking in createinvoicerequest.

This commit removes a local sanity check in Core Lightning's experimental 'createinvoicerequest' command. Previously, when creating a recurring invoice request, the code looked up past payments by label to verify the previous recurrence wa…

Removal of local payment-state validation for recurring invoice requestsParameter rename from recurrence_label to label in internal RPC callsTest expectations changed from local 'previous invoice has not been paid' errors to remote failure messages
4348d8acby Rusty Russell+5−1224 files
No security note in commit
Low 35 AI analysisMessage 65 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

fetchinvoice: handle weird labels in recurrence_label parameter.

This commit fixes how the fetchinvoice plugin handles user-supplied labels that contain special characters such as backslashes, quotes, tabs, and newlines. Previously these labels were passed as raw strings, which could cause JSON encoding…

JSON injection / improper escaping of user-controlled input passed between RPC componentsPotential mismatch between label parsing and label serialization leading to functional failures or unexpected behaviorFix is narrowly scoped to a single plugin and parameter
d7f87f2dby Rusty Russell+37−102 files
No security note in commit
Informational 15 AI analysisMessage 70 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

Add unit tests for str_to_u64

This commit only adds a new automated test file that checks how a helper function (str_to_u64) converts text strings to unsigned 64-bit integers. It does not change any production code, so it cannot by itself introduce a security vulnerabi…

dddb455dby Lagrang3+203−01 file
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

pytest: add tests for what we want askrene to do.

This commit only adds a new pytest test file. It does not change any production code. The test describes desired future behavior for the askrene routing module's error messages when a payment source or destination lacks enough channel capa…

518620aeby Rusty Russell+67−01 file
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.

AI review queuedglobal: more missing BOLT quotes.by Rusty Russell · c6f18ff7 · Apr 30, 2026 · 21 filesMessage 60 · AdequateInformational 20Details
Commit message · Rusty Russell

global: more missing BOLT quotes.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 20/100

This commit only adds documentation comments quoting the BOLT (Basis of Lightning Technology) specification and explaining how the existing code follows it. It does not change any program logic, function behavior, or security controls. A few comments note that the current implementation is incomplete ("FIXME"), but those are observations, not fixes. There is no evidence this commit addresses a security vulnerability or changes anything an attacker could exploit.

Lower-prioritycheck-source-bolt: replace C check-bolt tool with Python check_quotes.py, check Rust and Python tooby Rusty Russell · 021a5777 · Apr 30, 2026 · 3 filesMessage 73 · AdequateTriage 0Details
Commit message · Rusty Russell

check-source-bolt: replace C check-bolt tool with Python check_quotes.py, check Rust and Python too

Extend check-source-bolt to also check Python and Rust source files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityMakefile: add check-requirements-coverageby Rusty Russell · 7a77230d · Apr 30, 2026 · 1 fileMessage 78 · AdequateTriage 0Details
Commit message · Rusty Russell

Makefile: add check-requirements-coverage

Prints out a report of uncovered Requirements sections of the BOLTs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-priorityglobal: add the "easy" missing quotes.by Rusty Russell · 0759a3a4 · Apr 30, 2026 · 12 filesMessage 68 · AdequateTriage 0Details
Commit message · Rusty Russell

global: add the "easy" missing quotes.

Claude messed up about half of these: putting them too far from the
appropriate code. After this I did it myself.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritycommon/sphinx: don't create unused keys, fill in BOLT quotes.by Rusty Russell · c883870e · Apr 30, 2026 · 1 fileMessage 65 · AdequateTriage 0Details
Commit message · Rusty Russell

common/sphinx: don't create unused keys, fill in BOLT quotes.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Security candidatecommon: follow BOLT 4 requirements to make decryption constant time.by Rusty Russell · d5508e1e · Apr 30, 2026 · 1 fileMessage 73 · AdequateModerate 67Details
Commit message · Rusty Russell

common: follow BOLT 4 requirements to make decryption constant time.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Fixed: Protocol: use BOLT4's paranoid advice about doing constant-time error decryption.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
constant-time or timing behavior
AI analysis · Moderate 67/100

This change fixes a privacy weakness in how Core Lightning processes returned error messages from the Lightning network routing protocol. Previously, the software stopped decrypting as soon as it found the error's origin, which could let a malicious routing node figure out its position in the payment path by measuring how quickly the sender reacted. The patch now always performs 27 decryption rounds and uses dummy keys after the real origin is found, following the BOLT 4 specification's 'paranoid' advice to make the process take the same amount of time regardless of where the failure occurred.

Lower-prioritylightningd: make sure we don't send channel_updates for unasked for channels.by Rusty Russell · a7abb0a2 · Apr 30, 2026 · 3 filesMessage 73 · AdequateTriage 0Details
Commit message · Rusty Russell

lightningd: make sure we don't send channel_updates for unasked for channels.

We can decide to send an HTLC down a preferred channel which leads to the same peer
as the one they asked for, but the spec is clear that you shouldn't send the "wrong"
channel_update in that case.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Fixed: Protocol: when we send errors, we won't include a `channel_update` if we chose a different channel than the one they told us to.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritycommon: correctly refuse to accept wireaddr with port == 0.by Rusty Russell · 3d9bdab1 · Apr 30, 2026 · 7 filesMessage 81 · StrongTriage 0Details
Commit message · Rusty Russell

common: correctly refuse to accept wireaddr with port == 0.

BOLT 7 says this, but we don't do it. (Actually, it only says that for certain types,
but I've fixed that in https://github.com/lightning/bolts/pull/1331).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

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-prioritygossipd: correclty ignore channel_announcement and channel_update for other chains.by Rusty Russell · cdab8f4e · Apr 30, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Rusty Russell

gossipd: correclty ignore channel_announcement and channel_update for other chains.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Fixed: Protocol: `gossipd` will now silently ignore gossip for other chains (rather than sending warnings).

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritychanneld: update dust limit checks to the final version of PR 919.by Rusty Russell · e5c73745 · Apr 30, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Rusty Russell

channeld: update dust limit checks to the final version of PR 919.

This is what was merged in the spec, so update our checks (and bolt quote).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritypatch fix-features-quote.patchby Rusty Russell · 60e418cc · Apr 30, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Rusty Russell

patch fix-features-quote.patch

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityBOLT quote corrections in Python files (previously unchecked).by Rusty Russell · c7baf64a · Apr 30, 2026 · 7 filesMessage 91 · StrongTriage 0Details
Commit message · Rusty Russell

BOLT quote corrections in Python files (previously unchecked).

Update BOLT quotes in test and library Python files to match current BOLT
text: punctuation (periods to semicolons), capitalization (Lightning on
Bitcoin mainnet), fix field ordering in invoice breakdowns, add ... to skip
features fields and SHA256 hex details, correct backtick-quoting of field
names, and remove incorrect BOLT #7 label from a plain comment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI review queuedFix C comments which will accidentally trigger Python BOLT quote checker.by Rusty Russell · 69f1e720 · Apr 30, 2026 · 7 filesMessage 73 · AdequateInformational 15Details
Commit message · Rusty Russell

Fix C comments which will accidentally trigger Python BOLT quote checker.

We're going to get stricter, so "/* BOLT #N to-local output */" or "/* BOLT11 ... */"
will upset it.

Also remove a stray bare blank line in a BOLT comment block.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

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

This commit only rewords C code comments to avoid confusing an internal Python tool that checks documentation quotes. No program behavior, network protocol handling, or security logic is changed. It is a code-comment cleanup with no security relevance.

Security candidateUpdate outdated BOLT quotes in channel open/close handling.by Rusty Russell · 39ac3f14 · Apr 30, 2026 · 4 filesMessage 86 · StrongInformational 18Details
Commit message · Rusty Russell

Update outdated BOLT quotes in channel open/close handling.

Some of these are malformed (thus were unchecked!), some are from the
stricter interpretation of `...` which won't cross section boundaries.

Several BOLT quotes had drifted from the current spec text:
- connectd/queries.c: BOLT #7 uses 'full_information' not 'complete';
remove a second quote that referenced query_channel_range but was
actually wrong (that requirement is for query_short_channel_ids).
- lightningd/dual_open_control.c: channel reserve is 1% rounded down
(not just 1%); witness weight check now says SHOULD broadcast rather
than MUST fail; RBF quotes simplified to match actual BOLT wording.
- openingd/openingd.c: 'The sending node' became 'The sender';
invalid signature response now says MUST send warning/error not just
MUST fail the channel.
- openingd/dualopend.c: same invalid-signature quote as openingd.c.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

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
signing boundary
AI analysis · Informational 18/100

This commit updates code comments that quote the Lightning Network specification (BOLT) in four files. Most changes are cosmetic: fixing outdated wording, malformed quote markers, and removing one incorrect quote. One change in connectd/queries.c removes a stale BOLT requirement comment but does not alter the actual behavior, which already replies with sync_complete=false for an unknown chain. Another change in dual_open_control.c updates a comment about what to do when a transaction's effective feerate is too low, but the surrounding code still calls a failure path. Overall, the commit is primarily documentation cleanup and does not appear to introduce or fix a security vulnerability on its own.

Lower-prioritycheck_quotes.py: add --coverage tracking; add devtools/bolt-coverage.py.by Rusty Russell · 63aa7650 · Apr 30, 2026 · 2 filesMessage 83 · StrongTriage 0Details
Commit message · Rusty Russell

check_quotes.py: add --coverage tracking; add devtools/bolt-coverage.py.

check_quotes.py gains --coverage=FILE: on each successful match, atomically
appends one line '{bolt} {section_idx} {start} {end}' to FILE using a single
os.write() call so parallel make invocations don't interleave records.

find_quote() and find_quote_immediate() are updated to return match start
positions (needed to record the covered range, not just the end).

bolt-coverage.py reads the coverage file and reports BOLT text not covered
by any source comment. By default it restricts output to Requirements
sections; --all-sections shows every section. --bolt N restricts to
a single BOLT number.

Exit status is 0 if everything in the selected sections is covered, 1 if
anything is uncovered.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-prioritysplice-script: Test for msat chan balancesby Dusty Daemon · b00ff16c · Apr 29, 2026 · 1 fileMessage 70 · AdequateTriage 0Details
Commit message · Dusty Daemon

splice-script: Test for msat chan balances

Test splice scripts where the existing channel balance has fractions of a sat in them.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Lower-prioritysplice-script: Round channel balances downby Dusty Daemon · 30a6b4c4 · Apr 29, 2026 · 2 filesMessage 68 · AdequateTriage 0Details
Commit message · Dusty Daemon

splice-script: Round channel balances down

When getting channel balances, we round off the msats for splice script.

Changelog-Fixed: Fix for `splicein`, `spliceout`, and `dev-splice` commands where channel balances included partial sats.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-prioritycommon/wireaddr: fix GCC 15 const-qualifier errorsby Vincenzo Palazzo · 81f63b67 · Apr 28, 2026 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · Vincenzo Palazzo

common/wireaddr: fix GCC 15 const-qualifier errors

GCC 15 propagates the const qualifier through strchr/strrchr, so the
result of strchr(const char *, c) is const char *. Declaring the locals
as char * triggers -Werror=discarded-qualifiers:

common/wireaddr.c: In function 'separate_address_and_port':
common/wireaddr.c:297:29: error: initialization discards 'const'
qualifier from pointer target type [-Werror=discarded-qualifiers]
common/wireaddr.c:304:27: error: assignment discards 'const'
qualifier from pointer target type [-Werror=discarded-qualifiers]

Make portcolon and end const char * to match; both are only read.

Fixes: https://github.com/ElementsProject/lightning/issues/9074
Changelog-Fixed: build: fix build errors with GCC 15 (Arch Linux).

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-prioritydoc: document UDS datagram tracing backend and envvar tableby Christian Decker · 01083cf7 · Apr 28, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Christian Decker

doc: document UDS datagram tracing backend and envvar table

Add Backend 2 section for the new CLN_TRACE_SOCKET UDS datagram
transport. Restructure the existing USDT docs as Backend 1. Add
an environment variable reference table and a minimal Python
collector example.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
Lower-prioritytest: Add a test for the UDS opentelemetry trace sinkby Christian Decker · 1fbf809d · Apr 28, 2026 · 1 fileMessage 72 · AdequateTriage 0Details
Commit message · Christian Decker

test: Add a test for the UDS opentelemetry trace sink

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Lower-prioritytrace: add UDS datagram socket backend, decouple from USDTby Christian Decker · 71ae98b2 · Apr 28, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Christian Decker

trace: add UDS datagram socket backend, decouple from USDT

Add a new tracing backend that sends completed spans as atomic
datagrams over a Unix Domain Socket (AF_UNIX + SOCK_DGRAM), enabled
via the CLN_TRACE_SOCKET envvar.

Refactor trace.c so span management logic compiles unconditionally
rather than being gated behind #if HAVE_USDT. DTRACE_PROBE macros
are defined as no-ops when USDT is unavailable. When no backend is
active (no USDT, no trace file, no socket), all tracing functions
return early via disable_trace.

Changelog-Added: tracing: Add a unix-domain socket sink for opentelemetry traces

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityCI: add hook and notification schema paths to readme rpc syncby daywalker90 · 5ab7b946 · Apr 27, 2026 · 1 fileMessage 62 · AdequateTriage 0Details
Commit message · daywalker90

CI: add hook and notification schema paths to readme rpc sync

Changelog-None

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
Security candidatepytest: fix flake in test_closing_anchorspend_htlc_tx_rbfby Níckolas Goline · 26b162dc · Apr 27, 2026 · 1 fileMessage 96 · StrongInformational 15Details
Commit message · Níckolas Goline

pytest: fix flake in test_closing_anchorspend_htlc_tx_rbf

Fixes: #9088

```
FAILED tests/test_closing.py::test_closing_anchorspend_htlc_tx_rbf - assert (None or 3001.3083296990844 < (3000 + 1))
+ where None = did_short_sig(<fixtures.LightningNode object at 0x7f1a89bb9c90>)
```

The previous fix #9027 misdiagnosed the cause: the identical value
3001.3083296990844 appears with and without a short signature, so this
is not signature-length variation but deterministic floating-point
rounding in `fees / weight * 1000` for this specific transaction
structure. Replace the hand-rolled ±1 assertions with check_feerate(),
which already uses a ±2 window and has the did_short_sig escape hatch
built in.

Changelog-None

96/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
signing boundary
AI analysis · Informational 15/100

This commit fixes a flaky automated test in Core Lightning. The test was occasionally failing because of tiny floating-point rounding differences when calculating transaction fees, not because of a real bug or security issue. The change replaces a strict hand-rolled tolerance check with a more forgiving helper function already designed for this purpose. There is no security impact.

AI review queuedv26.04.1by Sangbida Chaudhuri · 1ad1ea99 · Apr 24, 2026 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · Sangbida Chaudhuri

v26.04.1

0/100 · OpaqueMessage clarity
! Very short subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates the CHANGELOG.md file for the v26.04.1 release. It does not change any source code, so it cannot introduce or fix a security vulnerability by itself. The changelog text mentions fixes for a gossip protocol issue and several build failures, but those actual code changes are in other commits/pull requests, not in this diff.

Lower-prioritylightningd: fix format specifier for bitcoin_tx_weightby Sangbida Chaudhuri · 6f4fd1bd · Apr 24, 2026 · 2 filesMessage 73 · AdequateTriage 0Details
Commit message · Sangbida Chaudhuri

lightningd: fix format specifier for bitcoin_tx_weight

Replaces %lu in channeld and spender splice calc_weight output so
format matches size_t;

Changelog-Fixed: Builds on linux/amd64 to push to Dockerhub

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