EP
← All projectsElements Project

Core Lightning

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

BitcoinLightning NetworkActive incident
Repository coverage

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

184security candidates280second-pass queue1894AI analyses
55commits · 30 days
210commits · 60 days
682commits · 180 days
1670commits · 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
488Strong · 80–100
1231Adequate · 60–79
259Thin · 40–59
30Opaque · 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.
cdecker14910384
Níckolas Goline63844277
Rusty Russell96475958172
daywalker90117895165
Lagrang386578170
Vincenzo Palazzo13411182
dovgopoly15015164
Sangbida Chaudhuri14931146066
Dusty Daemon821378066
ShahanaFarooqui931093063
Peter Neuroth1024101071
Christian Decker36436072
Analysis record

Published AI watches

Last scanned 47 minutes ago

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

contrib: add jaonoctus's signing key

This commit simply adds a new person's PGP public-key fingerprint to the list of trusted release signers in two documentation files. It does not change any code, fix any bug, or alter any security behavior of the software itself.

41278b4eby jaonoctus+2−02 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

wallet: fixed timestamps for invented bookkeeper deposits

This is a tiny internal fix to make a bookkeeping migration produce stable event ordering. It changes the timestamp used when creating historical 'deposit' records during a one-time database migration, so the records sort consistently with…

498e5086by daywalker90+2−01 file
No security note in commit
Informational 21 AI analysisMessage 85 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

docs: document missing and fix erroneous JSON-RPC error codes

This commit is a documentation-only cleanup of the JSON-RPC command help files. It corrects which numeric error codes are listed for each command so the published schemas match what the software actually returns. No program logic, validati…

Documentation-only change with no executable code modificationsCorrects RPC schema error-code metadata to match actual handler behaviorNo change to input parsing, authorization, cryptography, or network behavior
d1b6963bby daywalker90+204−1224 files
No security note in commit
Low 46 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

channeld: initialize tx_sigs_allowed on startup

This commit fixes a bug where a setting that controls whether unexpected transaction signatures are allowed was not initialized when the channel daemon starts. If a peer sent such signatures before the channel was fully ready, the program …

use of uninitialized variableundefined behavior (invalid bool load)network-triggered code path
c09c4520by Erick Cestari+1−01 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

ci: fix the coverage nightly's profile handling

This commit fixes the project's internal nightly code-coverage CI workflow. It changes how test coverage files are collected, ensures the same LLVM compiler version is used to generate and merge coverage data, and uploads a Codecov-compati…

5685c9a3by cdecker+12−211 file
No security note in commit
Low 37 AI analysisMessage 78 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

schemas: make required fields match the code

This commit is a large cleanup of Core Lightning's API schemas, generated RPC bindings, and related plugin code. The stated goal is to make the documented 'required' fields match what the C code actually always produces or expects. In prac…

Large schema-only change with no accompanying security advisory or CVEOne semantic change to plugin hook response: invoice_payment hook can now reject with only failure_message and no resultMany fields change from optional to required in public RPC/protobuf interfaces
ddbd2963by daywalker90+1786−173950 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

doc: document error 313 on every command which can return it

This commit only updates documentation. It adds error code 313 to the documented error lists for several Core Lightning commands (fundpsbt, utxopsbt, txprepare, multiwithdraw, and upgradewallet). The error code already existed in the code …

a34b9758by Peter Neuroth+30−86 files
No security note in commit
Low 25 AI analysisMessage 88 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

tools/build-release.sh: name the checksum file when verifying the signature

This commit fixes a release-script check that verifies the cryptographic signature on a file of checksums. Previously, the script only told GPG to verify the signature file itself. If someone replaced that signature file with an inline-sig…

Incorrect cryptographic verification logic in release toolingPotential false-positive signature verification with inline-signed .asc substitutionRelease-integrity hardening
8e495707by Peter Neuroth+5−21 file
No security note in commit
Low 42 AI analysisMessage 95 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

doc: pass the manifest explicitly to gpg --verify

This commit updates Core Lightning's release documentation to tell users and release managers to run gpg --verify with both the signature file and the manifest file named explicitly. The old one-argument form can silently succeed even if t…

Verification bypass risk in release artifact validationgpg --verify single-argument form can exit 0 without reading the intended manifestDocumentation-only hardening of release process
2dee8699by Peter Neuroth+9−62 files
Vendor flagged security relevance
Low 25 AI analysisMessage 58 · Thin
EP Elements ProjectCore Lightning BitcoinLightning Network

Cargo.lock: update dependencies

This commit is a routine update to the Rust dependency lock file (Cargo.lock), bumping many third-party libraries to newer patch or minor versions. The commit message gives no security reason for the update, and no verified references link…

Routine dependency refresh with no stated security rationaleUpdates to security-sensitive transitive crates (rustls, hyper, h2, tokio, webpki-roots) but no evidence these versions fix known vulnerabilitiesNo source-code changes or patch-specific fixes visible in the diff
c1551c55by daywalker90+298−2761 file
No security note in commit
High 80 AI analysisMessage 85 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

common: bound JSON nesting depth when parsing

This commit fixes a stack-overflow risk in Core Lightning's JSON parser. Before the fix, an attacker could send a valid JSON-RPC message containing thousands of nested brackets or braces. The parser's own helper functions used recursion fo…

Stack-overflow via deeply nested JSONRecursive JSON traversal without depth boundDenial-of-service vector in JSON-RPC input parsing
83f92e4bby Níckolas Goline+90−22 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 28 · Opaque
EP Elements ProjectCore Lightning BitcoinLightning Network

common: minor typo fixes

This commit only fixes typos and comment style. It changes two C-style comments from // to /* */ and corrects a grammar error in a documentation comment ('element' to 'elements'). There are no code behavior changes, no bug fixes, and no se…

273d7f02by w3lld1+3−32 files
No security note in commit
Informational 20 AI analysisMessage 90 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

pyln-testing: truncate long testnames

This change fixes a test-infrastructure bug in Core Lightning's Python testing helpers. When running tests against a PostgreSQL database, very long test names could be silently shortened by PostgreSQL, causing different test runs or nodes …

No security-relevant signal: change is in test framework code onlyFixes a test reliability issue, not a runtime vulnerabilityNo input sanitization, authentication, cryptography, or network changes
c4fe4cbaby Peter Neuroth+59−12 files
No security note in commit
Moderate 60 AI analysisMessage 73 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

wallet: exclude immature coinbase outputs from fee rescue selection

This fix prevents Core Lightning from trying to use freshly created bitcoins (immature coinbase rewards) as emergency funds for fee-bump transactions. Such a transaction would be invalid under Bitcoin's rules and would be rejected by the n…

Consensus-invalid transaction generation preventedFee rescue / CPFP failure mode mitigatedCoinbase maturity check added to coin selection
34883ff7by cdecker+5−12 files
Vendor flagged security relevance
Moderate 59 AI analysisMessage 91 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

askrene: fix crash loading node bias with description

This commit fixes a bug in Core Lightning's askrene plugin that could prevent a node from restarting. When a saved routing layer contained a node bias with a description, the plugin accidentally freed the description's memory while using i…

Use-after-free / double-take of a tal-allocated string during plugin startupDenial-of-service-like symptom: lightningd aborts before replying to init, node cannot restartFixes publicly reported issue #9433 by endothermicdev
4681177dby Vincenzo Palazzo+2−32 files
No security note in commit
Informational 12 AI analysisMessage 91 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

tests: restart the node which owns the layer in node bias test

This commit only fixes a test case so it actually exercises the intended code path. It does not change any production code, so it cannot introduce or fix a real-world security vulnerability by itself. The test change is a reproducer for a …

0f3f67a0by Vincenzo Palazzo+3−21 file
No security note in commit
High 78 AI analysisMessage 68 · Adequate
EP Elements ProjectCore Lightning BitcoinLightning Network

dualopend: bound the feerates a peer opens at

This commit fixes a bug in Core Lightning's experimental dual-funded channel feature. When another node tried to open a channel, Core Lightning was not checking whether the proposed transaction fees were reasonable. A peer could request a …

Missing input validation on wire-parsed feerate fieldsPeer could induce signing and storage of feerate == 0RBF remote path allowed unbounded upward feerate walks
ba08356fby cdecker+140−04 files
Vendor flagged security relevance
High 72 AI analysisMessage 100 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

tests: regression coverage for out-of-range feerates

This commit adds regression tests for three related bugs where wildly wrong Bitcoin transaction feerates could enter Core Lightning. In the worst case, a malicious or broken fee source could make the node think a feerate was zero (due to a…

Integer overflow in feerate conversion (u32 wrap from 0xFFFFFFFF perkb to 0 perkw)Absurd feerate from external fee source bypassing sanity ceilingDatabase-stored out-of-range feerate causing startup abort/crash loop
65bdbc47by cdecker+137−02 files
No security note in commit
Moderate 64 AI analysisMessage 86 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

lightningd: don't assert on funding feerates read from the db

This update fixes a crash bug in Core Lightning. When the software tried to list details of a channel opening in progress, it could crash if a stored fee rate was extremely large or zero. The crash happened because the code used an interna…

Integer overflow in RBF escalation (u32 * 25 / 24) leading to assertion failureAssertion failure in read-only introspection RPC (listpeerchannels) causing crash-loop at startupDatabase value treated as invariant despite originating from external fee estimator
d67c4936by cdecker+72−227 files
Vendor flagged security relevance
Moderate 53 AI analysisMessage 86 · Strong
EP Elements ProjectCore Lightning BitcoinLightning Network

wallet: clamp absurd inflight funding feerates on upgrade

This commit fixes a bug where Core Lightning nodes could get stuck in a crash loop. If a node had previously stored an extremely high or zero fee rate for an in-progress channel funding operation (a 'splice' or dual-funded channel RBF), a …

Integer overflow in fee-rate calculation (u32 overflow when multiplying by 25/24)Assertion failure leading to daemon crash loop at startupDatabase migration clamps out-of-range stored funding feerates
f057c692by cdecker+34−01 file
Vendor flagged security relevance
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-priorityglobal: add the "easy" missing quotes.by Rusty Russell · 0759a3a4 · Apr 30, 2026 · 12 filesMessage 68 · AdequateInformational 15Details
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
AI analysis · Informational 15/100

This commit only adds missing BOLT (Bitcoin Lightning specification) quote references inside code comments across 12 files. There are no code behavior changes, no bug fixes, and no security fixes. It is a documentation-only cleanup.

Lower-prioritychanneld: update dust limit checks to the final version of PR 919.by Rusty Russell · e5c73745 · Apr 30, 2026 · 1 fileMessage 73 · AdequateLow 38Details
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
AI analysis · Low 38/100

This commit tightens the rules for when a Lightning node rejects a fee-rate change from the other party. It now skips certain 'dust exposure' checks when a modern anchor-based channel is in use, and only checks the remote side's dust exposure when the fee is actually increasing. This aligns the code with the final version of a published protocol specification change (BOLT PR 919). The change is defensive: it reduces the chance that a peer can force your node to close a channel by manipulating fees, but it is a partial patch that only updates one of the places where dust limits matter.

Lower-priorityBOLT quote corrections in Python files (previously unchecked).by Rusty Russell · c7baf64a · Apr 30, 2026 · 7 filesMessage 91 · StrongInformational 15Details
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 analysis · Informational 15/100

This commit only updates comments and documentation strings in Python test and library files to match the current wording of the BOLT (Basis of Lightning Technology) specifications. It changes punctuation, capitalization, field ordering in invoice breakdowns, and backtick formatting. No executable code behavior is changed, so there is no security impact.

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-prioritysplice-script: Round channel balances downby Dusty Daemon · 30a6b4c4 · Apr 29, 2026 · 2 filesMessage 68 · AdequateLow 32Details
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
AI analysis · Low 32/100

This commit fixes a rounding bug in Core Lightning's splice commands. Previously, when reading a channel balance expressed in milli-satoshis (msat), the code rounded to the nearest whole satoshi. Now it always rounds down. The change removes two test markers that expected the old behavior to fail, suggesting the bug was causing real splice-in/splice-out failures when balances had fractional satoshis.

Lower-prioritysplice-script: Test for msat chan balancesby Dusty Daemon · b00ff16c · Apr 29, 2026 · 1 fileMessage 70 · AdequateInformational 15Details
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
AI analysis · Informational 15/100

This commit only adds two new automated tests for a feature called 'splice scripting' in Core Lightning. The tests check how the software handles very small fractional bitcoin amounts (millisatoshis) during channel splicing. There is no change to production code, no bug fix, and no security patch.

Lower-prioritycommon/wireaddr: fix GCC 15 const-qualifier errorsby Vincenzo Palazzo · 81f63b67 · Apr 28, 2026 · 1 fileMessage 81 · StrongInformational 15Details
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
AI analysis · Informational 15/100

This is a minor build-compatibility fix for the GCC 15 compiler. It changes two local variables from `char *` to `const char *` so the code compiles cleanly with newer, stricter compiler warnings. There is no functional change and no security impact.

Lower-prioritytrace: add UDS datagram socket backend, decouple from USDTby Christian Decker · 71ae98b2 · Apr 28, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
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
AI analysis · Informational 15/100

This commit adds a new diagnostic feature: it lets Core Lightning send internal tracing data (timing and span information) over a local Unix Domain Socket, and it makes the tracing code always compile even when USDT probes are not available. It is a feature/refactoring patch, not a security fix. There is no indication it addresses a vulnerability.

Lower-prioritydoc: document UDS datagram tracing backend and envvar tableby Christian Decker · 01083cf7 · Apr 28, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
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
AI analysis · Informational 15/100

This commit only updates developer documentation. It describes a new Unix Domain Socket tracing backend and lists environment variables. There are no code changes, no bug fixes, and no security-related modifications.

Lower-prioritytest: Add a test for the UDS opentelemetry trace sinkby Christian Decker · 1fbf809d · Apr 28, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
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
AI analysis · Informational 15/100

This commit adds a new automated test that checks whether Core Lightning can send tracing data over a Unix domain socket. It is purely a test file change and does not modify any production code, configuration defaults, or network behavior. There is no security-relevant change.

Lower-priorityCI: add hook and notification schema paths to readme rpc syncby daywalker90 · 5ab7b946 · Apr 27, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
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
AI analysis · Informational 15/100

This commit is a minor GitHub Actions workflow update. It tells the project's automated documentation checker to also run when JSON schema files inside two new subdirectories ('hook' and 'notification') are changed. There is no change to the actual Lightning node software, no user-facing behavior change, and no security relevance.

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 · AdequateInformational 19Details
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
AI analysis · Informational 19/100

This commit fixes the type of placeholder used in debug log messages when printing transaction weight values. On some platforms, using the wrong placeholder can cause the program to crash or print garbage when logging is enabled, but it does not create a security vulnerability that an attacker can exploit. It is a build/robustness fix, not a flaw in transaction handling itself.

Lower-prioritybookkeeper: don't use int128.by Rusty Russell · 93ff0fe9 · Apr 24, 2026 · 2 filesMessage 68 · AdequateInformational 19Details
Commit message · Rusty Russell

bookkeeper: don't use int128.

32-bit ARM doesn't like it :(

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Fixed: Build: we now build on 32 bit systems again.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 19/100

This commit fixes a build problem on 32-bit ARM computers by removing the use of a 128-bit integer type that those systems do not support. It changes one currency-conversion calculation in the bookkeeper plugin to use ordinary 64-bit math with a floating-point fallback, and adds a test file to check the results. There is no direct security vulnerability being patched; it is primarily a portability/build fix.

Lower-prioritydocs: generate notification and hook documentation from schemasby daywalker90 · 5fec682c · Apr 24, 2026 · 6 filesMessage 77 · AdequateInformational 15Details
Commit message · daywalker90

docs: generate notification and hook documentation from schemas

and publish them to the readme.com instance of course!

Changelog-None

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a documentation-only change for the Core Lightning project. It updates the build system and scripts so that notification and hook documentation is automatically generated from JSON schemas and published to the project's ReadMe.com documentation site. It removes large manually-written sections from two developer guide pages and replaces them with links to the auto-generated documentation. There is no change to the actual lightning node software, its network behavior, or its security-sensitive logic.

AI review queuedschemas: neaten notification and hook schemas in preparation for markdown generationby daywalker90 · a1cdf8e8 · Apr 24, 2026 · 41 filesMessage 65 · AdequateInformational 15Details
Commit message · daywalker90

schemas: neaten notification and hook schemas in preparation for markdown generation

also includes formatting fixes for the bkpr-report schema, brackets usually need escaping in mdx

Changelog-None

65/100 · AdequateMessage clarity
✓ Specific, 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 15/100

This commit is a documentation and schema cleanup. It fixes formatting in JSON schema files so they render correctly as Markdown, removes redundant 'added' version labels from nested schema fields, corrects some labels from 'notification' to 'hook' where the schema describes a hook, and adds a small clarification to the shutdown notification description. There are no code changes that affect how Core Lightning processes payments, channels, or peer messages.

Lower-prioritylsps: remove unmaintained crate `paste`by daywalker90 · 193afeb8 · Apr 24, 2026 · 5 filesMessage 60 · AdequateInformational 15Details
Commit message · daywalker90

lsps: remove unmaintained crate `paste`

Instead we use a more verbose approach of requiring an additional name input

Changelog-None

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit removes an unmaintained Rust helper crate called `paste` from the LSPS plugin and replaces its macro-generated function names with manually written ones. There is no functional change to the program's behavior, no bug fix, and no security patch. It is a routine dependency cleanup.

AI review queuedcrates: upgraded dependencies to latest 1.85 compatible versions as of the commit timeby daywalker90 · 88f259ec · Apr 24, 2026 · 14 filesMessage 73 · AdequateLow 34Details
Commit message · daywalker90

crates: upgraded dependencies to latest 1.85 compatible versions as of the commit time

notable upgrades requiring code changes:

rcgen: signed_by now takes an Issuer instead of a Certificate and KeyPair

tonic/prost: prost feature was stripped out of tonic and moved into tonic_prost crates

rand: OsRng was renamed to SysRng

Changelog-None

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 · Low 34/100

This commit is a routine bulk upgrade of Rust third-party libraries to versions compatible with Rust 1.85. The changes are mostly mechanical adaptations to new library APIs: certificate signing now uses an 'Issuer' object instead of separate certificate and key, gRPC/protobuf code generation moved to new 'tonic_prost' crates, and the random-number generator name changed from OsRng to SysRng. There is no explicit security fix or vulnerability disclosure in the commit message or diff, but dependency upgrades can indirectly affect security by picking up upstream bug fixes or, conversely, introducing new bugs.

Lower-prioritycln-plugin: add support for structured logging dependenciesby daywalker90 · 28385496 · Apr 24, 2026 · 1 fileMessage 65 · AdequateInformational 19Details
Commit message · daywalker90

cln-plugin: add support for structured logging dependencies

We filter out the metadata fields from the log-tracing bridge

Changelog-None

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 19/100

This commit changes how log messages are collected from Rust tracing events in the cln-plugin library. Previously, only the main message text was captured. Now, extra structured fields attached by logging dependencies are appended to the message, while internal metadata fields like file and line number are filtered out. This is a feature enhancement to improve log readability and avoid duplicate metadata, not a security fix.

AI review queuedschemas: add schemas for all plugin hooksby daywalker90 · fa2ec626 · Apr 24, 2026 · 16 filesMessage 68 · AdequateInformational 15Details
Commit message · daywalker90

schemas: add schemas for all plugin hooks

Added schemas for: peer_connected, recover, commitment_revocation, db_write,
invoice_payment, openchannel, openchannel2, openchannel2_changed,
openchannel2_sign, rbf_channel, htlc_accepted, rpc_command, custommsg,
onion_message_recv and onion_message_recv_secret

Changelog-None

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathdocumentation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds JSON documentation schemas for existing plugin hooks. It does not change any executable code, runtime behavior, or security logic. It is a documentation-only change that describes what data plugin hooks already send and receive.

Lower-prioritymsggen: add generation for hook schemasby daywalker90 · ad97882b · Apr 24, 2026 · 19 filesMessage 68 · AdequateInformational 15Details
Commit message · daywalker90

msggen: add generation for hook schemas

hooks are not for grpc, so we create a new object "rpc-only-enum-map" in .msggen.json
and don't generate any grpc related code

Changelog-None

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 code-generation tooling change for Core Lightning. It extends the existing message generator (msggen) to also produce Rust data structures for plugin hooks, and adds the generated file cln-rpc/src/hooks.rs. It does not change how the node processes payments, channels, or RPC commands; it only adds type definitions and tests so that Rust code can more easily deserialize hook events and actions. There is no indication this fixes or introduces a security vulnerability.

Lower-prioritycrates: add JsonObjectOrArray and JsonScalar types for raw json rpc parametersby daywalker90 · 842a8f37 · Apr 24, 2026 · 4 filesMessage 65 · AdequateInformational 15Details
Commit message · daywalker90

crates: add JsonObjectOrArray and JsonScalar types for raw json rpc parameters

We use it later for the `rpc_command` hook

Changelog-None

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit adds new Rust types and matching gRPC protobuf messages for carrying arbitrary JSON data (objects, arrays, and scalar values) through Core Lightning's RPC and plugin interfaces. It is a pure infrastructure/serialization change with no security-relevant behavior visible in the diff.

Lower-prioritycrates: add convenience typed methods for hook subscriptionsby daywalker90 · d13e0623 · Apr 24, 2026 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · daywalker90

crates: add convenience typed methods for hook subscriptions

We can now make practical use of the generated code from the hook schemas.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit adds new convenience methods to the Core Lightning plugin library in Rust. It lets plugin authors register 'hooks' (callbacks triggered by the lightning daemon) using typed request/response structures instead of raw JSON. The change is purely additive and does not fix any known bug or vulnerability.