EP
← All projectsElements Project

Core Lightning

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

BitcoinLightning NetworkNormal
Repository coverage

1856 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 queue1853AI analyses
140commits · 30 days
224commits · 60 days
803commits · 180 days
1839commits · 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
432Strong · 80–100
1164Adequate · 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.
dovgopoly15015164
Rusty Russell95873958072
Sangbida Chaudhuri14731146066
Dusty Daemon771377066
ShahanaFarooqui931093063
daywalker9090589062
Níckolas Goline40540076
Lagrang376476069
Christian Decker36436072
Vincenzo Palazzo838080
Chandra Pratap56256082
ekzyis222063
Analysis record

Published AI watches

Last scanned 26 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.

Security candidatesplice: Change abort rules to sent sigsby Dusty Daemon · dd1e183b · Aug 13, 2025 · 1 fileMessage 68 · AdequateLow 43Details
Commit message · Dusty Daemon

splice: Change abort rules to sent sigs

Previous behavior was to fail on abort when we have signatures in the inflight — change this behavior to fail on abort if we have sent our peer our signatures.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundary
AI analysis · Low 43/100

This commit tightens the conditions under which Core Lightning's channel daemon will abort a splice operation. Previously, the daemon treated a splice as unabortable if any signatures existed in the 'inflight' (pending) channel state. Now it only blocks abort if this specific node has actually sent its signatures to the peer. The change is one line and appears aimed at preventing a node from backing out of a splice after it has already committed to it cryptographically, which could otherwise let a malicious or buggy peer exploit inconsistent state.

Security candidatesplice: Add details to log messageby Dusty Daemon · 87ae3559 · Aug 13, 2025 · 1 fileMessage 65 · AdequateInformational 16Details
Commit message · Dusty Daemon

splice: Add details to log message

Make the failure reason more clear by adding more information to the signature failure message.

65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
signing boundary
AI analysis · Informational 16/100

This change only improves an error message shown when a splicing (channel funding update) negotiation fails because the remote peer did not send enough signatures. It adds a count of how many remote inputs need signatures and how many signature bundles were actually received. There is no code behavior change that fixes or introduces a vulnerability; it is purely a diagnostic/logging improvement.

Security candidatesplice: Sign shared output earlyby Dusty Daemon · e3e08135 · Aug 13, 2025 · 1 fileMessage 68 · AdequateLow 31Details
Commit message · Dusty Daemon

splice: Sign shared output early

When doing a multi channel splice, we need to break the deadlock by signing the shared output early (even though it is not sent to the peer until later).

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundary
AI analysis · Low 31/100

This change adjusts how Core Lightning handles 'splicing' (a way to resize a Lightning channel's on-chain funding). When a user splices multiple channels at the same time, the software now signs a shared piece of the transaction earlier than before, so it can build a complete signatures message for all peers. The commit describes this as fixing a deadlock, not as a security vulnerability. There is no direct evidence in the commit or supplied references that this is exploitable by an attacker.

Security candidatesplice: Even if the psbt’s “match” the sig data may varyby Dusty Daemon · 122dae10 · Aug 13, 2025 · 1 fileMessage 78 · AdequateModerate 52Details
Commit message · Dusty Daemon

splice: Even if the psbt’s “match” the sig data may vary

Since the signature data may vary, we must copy the new psbt into splicing->current_psbt.

This never occured during normal operation, but when doing a cross splice there may be vital signature(s) in the psbt that came from another splice that get dropped without this step.

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundary
AI analysis · Moderate 52/100

This change fixes a bug in Core Lightning's channel-splicing code. During a splice, two versions of a Bitcoin transaction structure (a PSBT) might look identical in their main transaction data but differ in their attached signatures. Previously, the code would skip copying the new PSBT if the main transaction hadn't changed, which could discard signatures from a related splice. The fix always copies the latest PSBT so signatures are preserved. The commit describes this as a bug that could affect 'cross splice' scenarios, but it does not label it as a security vulnerability.

Security candidatesplice: Fix cross-channel splicesby Dusty Daemon · 2e660d9f · Aug 13, 2025 · 1 fileMessage 68 · AdequateLow 41Details
Commit message · Dusty Daemon

splice: Fix cross-channel splices

When doing a cross channel splice, inputs move from having no SIGHASH to having SIGHASH_ALL assigned.

This causes psbt_get_changeset to flag the input as having changed, as the sighash value is compared.

This causes the second channel splice to `tx_remove_input` the input as it doesn’t match anymore, breaking the splice.

We fix this by removing the sighash value from input comparisions.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 41/100

This commit fixes a bug in Core Lightning's splicing feature where a transaction input could be incorrectly removed during a 'cross-channel splice' because the software compared a newly-added signature hash flag. The fix tells the comparison logic to ignore the signature-hash value so the input is not treated as changed and wrongly dropped. It is a functional bug fix rather than an obvious security vulnerability, but it could cause a splice to fail or funds to be handled incorrectly.

Security candidateplugin: Allow json_object and json_group_array functions in sql pluginby ShahanaFarooqui · d5c73185 · Aug 13, 2025 · 1 fileMessage 78 · AdequateInformational 18Details
Commit message · ShahanaFarooqui

plugin: Allow json_object and json_group_array functions in sql plugin

Changelog-Added: Plugins: `sql` also supports functions `json_object(key1, value1, ...)` to construct JSON objects and `json_group_array(value)` to aggregate rows into JSON array.

Security Considerations
- No new SQL injection risks: Functions only process explicitly provided column values (no arbitrary string parsing).
- Explicit column requirements: Wildcards (*) are not supported, all fields must be named (e.g., json_object('peer_id', id)).
- Permission-bound data access: Functions adhere to the same table/row permissions as the underlying query.

Performance Impact
- Optimized native execution: Leverages SQLite’s built-in JSON1 extension (when available) for efficiency.
- Moderate CPU overhead: Complex nesting may impact performance on large datasets but still faster than application-layer JSON conversion.

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
credential or privilege state
AI analysis · Informational 18/100

This commit adds two SQLite JSON helper functions, json_object and json_group_array, to the list of functions allowed by Core Lightning's SQL plugin. The change is a small whitelist expansion in the plugin's query authorization code. The commit message explicitly states this does not introduce new SQL injection risks and that the functions follow existing table and row permissions. There is no direct evidence in the commit of a security vulnerability.

Lower-prioritydocs: Added json_object and json_group_array to permitted_sqlite3_functions listby ShahanaFarooqui · 2e58ed6f · Aug 13, 2025 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · ShahanaFarooqui

docs: Added json_object and json_group_array to permitted_sqlite3_functions list

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only updates two documentation/schema files to list two additional SQLite functions (`json_object` and `json_group_array`) as permitted. There is no code change, no behavior change, and no security-relevant change visible in the diff.

Lower-prioritytests: add sql json function testsby ShahanaFarooqui · bab6429d · Aug 13, 2025 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · ShahanaFarooqui

tests: add sql json function tests

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds new automated tests for SQL JSON functions in the Core Lightning project. It does not change any production code, fix a bug, or introduce a security feature. There is no security relevance.

Lower-priorityopeningd/dualopend: don't allow peer not to send channel_type.by Rusty Russell · cd90576f · Aug 13, 2025 · 2 filesMessage 65 · AdequateLow 44Details
Commit message · Rusty Russell

openingd/dualopend: don't allow peer not to send channel_type.

Simplifies our logic somewhat.

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
AI analysis · Low 44/100

This change makes Core Lightning stricter during Lightning channel opening: it now refuses to open a channel if the other peer does not include a 'channel_type' field. Previously, Core Lightning would guess a default channel type when the peer omitted it. The commit author frames this as a simplification, but it also removes a fallback path that could have led to mismatched assumptions between nodes about what kind of channel they were creating.

Lower-prioritypytest: use _ not - in plugin options to zeroconf-selective.py.by Rusty Russell · 7893c878 · Aug 13, 2025 · 5 filesMessage 73 · AdequateInformational 15Details
Commit message · Rusty Russell

pytest: use _ not - in plugin options to zeroconf-selective.py.

This allows us to specify:

l2.rpc.plugin_start(plugin_path, zeroconf_allow=l1.info['id'])

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 · Informational 15/100

This is a test-only change that renames plugin option names from using hyphens (zeroconf-allow, zeroconf-mindepth) to underscores (zeroconf_allow, zeroconf_mindepth). It only affects test files and a test helper plugin, making the tests work correctly with pytest's option handling. There is no security issue here.

Lower-prioritylightningd: make option_channel_type compulsory.by Rusty Russell · 4e94a6cb · Aug 13, 2025 · 3 filesMessage 66 · AdequateLow 29Details
Commit message · Rusty Russell

lightningd: make option_channel_type compulsory.

As per BOLT recommendation https://github.com/lightning/bolts/pull/1232, this means
we will insist on this being available.

For CLN, we added this in 0.12.0 (2022-08-23), though there were fixes as late as 24.02. Either way that's well outside our support window.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Closes: https://github.com/ElementsProject/lightning/issues/8152
Changelog-Changed: Protocol: We now insist that peers support `option_channel_type` (in CLN since 0.12.0 in late 2022, similar for other implementations).

66/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 29/100

This change makes a Lightning protocol feature called 'option_channel_type' mandatory instead of optional. It tells peers that Core Lightning will now require them to support this feature, which has been widely available since 2022. This is a protocol compatibility change, not a fix for an active security flaw, but it removes a path where older or non-standard peers could negotiate channels without this feature.

Lower-prioritypytest: test what happens if we *explicitly* ask for a zeroconf channel.by Rusty Russell · 193ac6fc · Aug 13, 2025 · 1 fileMessage 75 · AdequateInformational 15Details
Commit message · Rusty Russell

pytest: test what happens if we *explicitly* ask for a zeroconf channel.

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

75/100 · AdequateMessage clarity
✓ Specific, 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 a new automated test to Core Lightning. The test checks that when a user explicitly requests a zero-confirmation (zeroconf) channel from a node that does not allow it, the node returns a clear refusal message. It then checks that adding the requester to an allowlist permits the channel. There is no code change to the actual lightning node behavior—only a test is added.

Lower-prioritypytest: actually test channel_type when negotiating prviate channel.by Rusty Russell · a7316fef · Aug 13, 2025 · 1 fileMessage 75 · AdequateInformational 15Details
Commit message · Rusty Russell

pytest: actually test channel_type when negotiating prviate channel.

Makes sure we don't break it!

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

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

This commit adds a single assertion to an existing test to verify that private channels include the expected 'scid_alias/even' channel type. It is purely a test improvement and does not change any production code, fix a bug, or address a security issue.

Lower-priorityopeningd: remove compat hacks to "intuit" opt_scid_alias.by Rusty Russell · b3774d4d · Aug 13, 2025 · 1 fileMessage 73 · AdequateInformational 21Details
Commit message · Rusty Russell

openingd: remove compat hacks to "intuit" opt_scid_alias.

This was needed for v23.05 which would set opt_scid_alias even if we didn't.

Now everyone handles it properly, we can simply set it unconditionally.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Removed: Protocol: backwards compatibility allowances for CLN before 23.08 which didn't handle option_scid_alias properly.

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

This commit removes old compatibility workarounds in Core Lightning's channel-opening code. Previously, the software had to guess whether a peer wanted a private channel alias feature because older versions mishandled it. Now that all supported versions handle the feature correctly, the code simply sets it directly. This is a cleanup change, not a fix for an active security flaw, but removing compatibility shims can reduce hidden bug surface.

Lower-prioritylightningd: always tell openingd/dualopend what channel type we want.by Rusty Russell · 506fa914 · Aug 13, 2025 · 11 filesMessage 73 · AdequateLow 27Details
Commit message · Rusty Russell

lightningd: always tell openingd/dualopend what channel type we want.

Prior to it being compulsory, these daemons would need a default value. Now it's
always required, it's clearer if it's always told.

There's no "default_channel_type" now everyone has to specify channel_type either,
so rename it to "desired_channel_type" and put it in lightningd specifically.

Note that the channel_type can have options added: either option_scid_alias or option_zeroconf.

This results in a slight behavior change: we will get type zeroconf even if we didn't ask for it, if they gave it to us.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Changed: JSON-RPC: fundchannel / fundchannel_start returned `channel_type` will include option_zeroconf if it was implied by a 0 minimum_depth, even if we didn't explicitly ask for a zero conf channel.

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

This commit changes how Core Lightning decides what kind of channel to open with another node. Previously, the opening daemon could fall back to a default channel type if none was specified. Now, the main lightningd process always picks and sends a specific desired channel type. A side effect is that if the peer signals support for zero-confirmation channels (by setting minimum_depth to 0), the returned channel type will include the zeroconf feature even if the user did not ask for it. The commit is described as a behavior change, not a security fix, and there is no evidence of a disclosed vulnerability.

Lower-prioritydocs: Update the developer getting started guideby Dusty Daemon · 5a98d1bd · Aug 13, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Dusty Daemon

docs: Update the developer getting started guide

Push the beginer to the more useful `fund_nodes` instead of `connect`

Changelog-None

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a documentation-only change. It updates the developer getting-started guide to recommend a different helper command (`fund_nodes` instead of `connect`) when setting up a local test environment. There is no code change and no security relevance.

Lower-prioritypytest: add reckless regex searchby Alex Myers · da737d22 · Aug 11, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Alex Myers

pytest: add reckless regex search

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only changes test code. It refactors how the reckless plugin-manager tests search through command output, replacing exact string checks with regular-expression searches and adding a small helper class. There is no change to production code, no security fix, and no vulnerability introduced.

Lower-prioritypytest: test python plugin installation via uvby Alex Myers · d427a664 · Aug 11, 2025 · 6 filesMessage 55 · ThinInformational 15Details
Commit message · Alex Myers

pytest: test python plugin installation via uv

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit adds a new automated test for installing a Python plugin using the 'uv' package manager. It only touches test files and test data, not the actual Core Lightning node or wallet code. There is no security issue visible in the change itself.

Lower-priorityreckless: add uv installer support for legacy projectsby Alex Myers · ebbe5a27 · Aug 11, 2025 · 1 fileMessage 65 · AdequateLow 25Details
Commit message · Alex Myers

reckless: add uv installer support for legacy projects

Those that only have a requirements.txt can be installed
with uv even if it's not managing the project requirements.

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

This commit adds a new installer path in Core Lightning's reckless plugin manager so that older Python plugins using a simple requirements.txt file can be installed with the fast uv tool. The change creates symlinks to the plugin's pyproject.toml and requirements.txt, builds a virtual environment, and runs a shell command to install dependencies. The shell command is constructed as a single string and executed with shell=True, which is a well-known risky pattern, but the inputs come from local plugin metadata rather than remote or attacker-controlled data in the scenario shown. There is no direct evidence in the commit that this is a security bug or that it fixes a reported vulnerability.

Lower-priorityreckless: add uv python env installation methodby Alex Myers · 1bb809a6 · Aug 11, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Alex Myers

reckless: add uv python env installation method

uv is a python installation and package manager written in
rust. We can use it to quickly install python package
dependencies and configure our plugin's python virtual environment.
To maintain consistency with our other reckless python
installations, the venv is still activated in a wrapper which then
imports the original python source.

Changelog-added: reckless can now install python plugins using the uv package manager.

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

This commit adds a new way for Core Lightning's reckless plugin installer to set up Python plugins using 'uv', a fast Python package manager. It is a feature addition with no apparent security relevance in the code itself.

Lower-priorityreckless: fix installer searchby Alex Myers · bd26f726 · Aug 11, 2025 · 1 fileMessage 58 · ThinInformational 18Details
Commit message · Alex Myers

reckless: fix installer search

Some installer procedures have more options for valid entypoint
names than others. We iterate through each of their first choices,
then their second choices, etc..

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
AI analysis · Informational 18/100

This is a small bug fix in a helper tool called 'reckless' that installs plugins for Core Lightning. The tool tries several possible file names to find a plugin's main entry point. Before this fix, if an installer had fewer possible names than the loop expected, the code could crash with an index error. The patch simply skips installers once their list of possible names is exhausted. There is no direct security relevance in the commit itself.

Lower-priorityreckless: correct direct install from local repo subdirectoryby Alex Myers · 0364282e · Aug 11, 2025 · 1 fileMessage 50 · ThinInformational 17Details
Commit message · Alex Myers

reckless: correct direct install from local repo subdirectory

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 17/100

This is a small bugfix in a helper tool called 'reckless' that installs plugins for Core Lightning. The change fixes how the tool handles installing a plugin directly from a subdirectory inside a local git repository. Previously, the tool could fail to find plugin details because it passed the wrong name/location. The fix reorders two steps so the local repository is treated like a plain directory before trying to read plugin details. There is no clear security issue here; it appears to be a normal correctness fix for a development/testing convenience feature.

AI review queuedpytest: refactor reckless check_stderrby Alex Myers · 542b54c6 · Aug 11, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Alex Myers

pytest: refactor reckless check_stderr

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a minor internal cleanup of a test helper. It moves an existing stderr-checking function into a class method and slightly expands the list of harmless warning strings that tests ignore. It does not change any production code, network behavior, or security logic.

Security candidatesqlite3: consistently comment where we want to upgrade.by Rusty Russell · e051ba6b · Aug 11, 2025 · 3 filesMessage 78 · AdequateInformational 15Details
Commit message · Rusty Russell

sqlite3: consistently comment where we want to upgrade.

Now you can grep for 'sqlite3 version' and see where we would like
to update.

Debian 11 (Bullseye) and Ubuntu 20.04 (Focal) ship with SQLite 3.31.1.
RHEL 9 ships with 3.34.1. Fedora 38+ uses SQLite 3.40+.

Unfortunately, RHEL8 ships with 3.26.0, and is still on maintenance Support
(security fixes, no new features): runs until May 31, 2029.

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

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
explicit security languagesigning or wallet path
AI analysis · Informational 15/100

This commit only adds and rewords comments in the source code to make it easier to find places where the project would like to require a newer SQLite version in the future. It does not change any actual behavior, fix any bug, or alter any security-related logic.

Lower-prioritydb: drop support for sqlite3 < 3.14.by Rusty Russell · f5429491 · Aug 11, 2025 · 2 filesMessage 60 · AdequateInformational 19Details
Commit message · Rusty Russell

db: drop support for sqlite3 < 3.14.

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

This commit removes support for very old SQLite versions (before 3.14) in Core Lightning. It deletes a fallback mechanism that used SQLite's tracing feature to log expanded SQL statements when the newer sqlite3_expanded_sql function wasn't available. The change simplifies the code and requires SQLite 3.14 or newer. There is no direct security fix here, but running outdated SQLite versions can carry general security risks.