Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This 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…
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…
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…
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…
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
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
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.
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
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
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
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
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)
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…
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
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
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
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
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
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…
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…
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Lower-prioritybookkeeper: don't use int128.by Rusty Russell · 93ff0fe9 · Apr 24, 2026 · 2 filesMessage 68 · AdequateTriage 0Details
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 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.
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 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.
✓ 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.
crates: explicitly set workspace wide `rust-version` to 1.85
Also bump the resolver version so `cargo update` will respect this MSRV.
Changelog-None
65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityCI: add workflow to verify MSRV on any rust file changesby daywalker90 · aafd2a83 · Apr 24, 2026 · 1 fileMessage 72 · AdequateTriage 0Details
Commit message · daywalker90
CI: add workflow to verify MSRV on any rust file changes
Changelog-None
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
I've ran `cargo fix --edition` and three changes were noticeable: - set_var is now unsafe, i've added a SAFETY comment on each to explain why this is fine here. - conversions of several if let to match because of the new if let temporary scope I have reviewed and restored all of them since the behaviour was the same on each. - the macro expr was converted to expr_2021 in the lsps plugin, i have reverted those aswell since we don't use const or _ expressions
Changelog-None
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI review queuedcrates: formatting with new 2024 edition rulesby daywalker90 · 28147d38 · Apr 24, 2026 · 35 filesMessage 45 · ThinInformational 15Details
Commit message · daywalker90
crates: formatting with new 2024 edition rules
`cargo fmt --all`
Changelog-None
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 15/100
This commit is purely a code-formatting cleanup. It runs `cargo fmt --all` to apply the Rust 2024 edition style rules across many Rust source files. The changes only reorder imports, re-wrap long lines, add trailing commas, and adjust indentation. No program logic, security checks, or behavior were changed.
! Very short subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Low 39/100
This is a version-bump point release (v26.04.1) for Core Lightning. The changelog says it fixes two issues: a build failure caused by a wrong printf format, and a Lightning gossip protocol problem where malformed channel announcements could stress the gossip store. The actual code changes for those fixes are not present in this commit; it only updates version strings and the changelog. So this commit itself is mostly administrative, but it signals that security-relevant fixes were released.
Lower-prioritylightningd: fix format specifier for bitcoin_tx_weight in splice log.by Sangbida Chaudhuri · a55585e6 · Apr 24, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · Sangbida Chaudhuri
lightningd: fix format specifier for bitcoin_tx_weight in splice log.
bitcoin_tx_weight() returns size_t, so use %zu instead of %lu to avoid a -Wformat error under -Werror on platforms where size_t != unsigned long.
Changelog-Fixed: Builds on linux/amd64 to push to Dockerhub
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
gossipd: don't accept malformed channel_announcements with mis-ordered node-ids.
See https://github.com/lightning/bolts/pull/1333
Every reader of the gossip_store gets upset, and we get many errors if this happens :(
Reported-by: https://github.com/NishantBansal2003 Changelog-Fixed: Protocol: We correctly reject invalidly ordered channel_announcement messages. 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
Why it was queued
defensive validation
AI analysis · Moderate 52/100
This update fixes a bug in Core Lightning's gossip daemon, which handles network routing announcements. The daemon was accepting malformed channel announcements where the two node IDs were in the wrong order. Such messages are invalid per the Lightning protocol and can cause errors for any node that later reads them from its stored gossip data. The fix makes the node reject these invalid announcements, preventing downstream error cascades.
Lower-prioritypython: upgrade min python version to 3.10by daywalker90 · db7dfcd9 · Apr 20, 2026 · 13 filesMessage 45 · ThinTriage 0Details
Commit message · daywalker90
python: upgrade min python version to 3.10
python 3.9 is EOL
45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit is a routine version bump from release candidate 3 (v26.04rc3) to the final release (v26.04). It only changes version strings in packaging files, the changelog, and a lock file. There are no code logic changes and no security fixes or new features introduced.
Lower-prioritylightningd: `--message-padding` to allow users to disable padding altogether.by Rusty Russell · deddd8e4 · Apr 20, 2026 · 10 filesMessage 73 · AdequateTriage 0Details
Commit message · Rusty Russell
lightningd: `--message-padding` to allow users to disable padding altogether.
In case there are more cases we missed, this lets users disable it.
Changelog-Added: Config: `message-padding` option can be set to `false` to disable it for all peers. 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
! Very short subject! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit is a routine version bump from v26.04rc2 to v26.04rc3 for Core Lightning. It updates version strings in packaging files, a changelog, and a lock file. There are no code changes that fix or introduce any security-relevant behavior.