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
227commits · 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 53 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 candidateAdd GitHub Pages documentation site with orchestrated workflowsby Christian Decker · 8db09f6d · Dec 8, 2025 · 4 filesMessage 100 · StrongInformational 15Details
Commit message · Christian Decker

Add GitHub Pages documentation site with orchestrated workflows

This commit creates a comprehensive documentation publishing system that
combines coverage reports, Python API docs, and project documentation into
a unified GitHub Pages site.

Changes:
- Update coverage-nightly.yaml to support workflow_call trigger
- Update python-docs-nightly.yaml to support workflow_call trigger
- Add docs-nightly.yaml workflow for project documentation
- Add publish-site.yaml orchestrator workflow

The publish-site workflow:
- Triggers all three documentation workflows in parallel
- Collects artifacts from each workflow
- Organizes them into a unified site structure:
- / (root) - Beautiful landing page with navigation
- /docs/ - Project documentation
- /python/ - Python API reference (pdoc3)
- /coverage/ - Code coverage reports
- Deploys to GitHub Pages with proper permissions
- Runs nightly at 5 AM UTC, after all other workflows complete

Each workflow can be:
- Triggered manually via workflow_dispatch
- Called from other workflows via workflow_call
- Run on schedule (coverage: 2 AM, python-docs: 3 AM, docs: 4 AM)

The site includes:
- Modern, responsive landing page with gradient design
- Navigation cards for each documentation section
- 404 error page
- .nojekyll file to prevent Jekyll processing
- Automatic timestamp updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Changelog-None

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
credential or privilege statedocumentation-only discount
AI analysis · Informational 15/100

This commit adds GitHub Actions workflows to automatically build and publish a documentation website to GitHub Pages. It only touches CI/CD configuration and static HTML pages; it does not change any Core Lightning node code, wallet logic, or network handling. There is no apparent security vulnerability in the diff itself.

Lower-prioritytest_renepay.py: remove data dump into /tmpby Matt Whitlock · 7a1a3633 · Dec 8, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Matt Whitlock

test_renepay.py: remove data dump into /tmp

Changelog-None

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

This commit simply removes leftover debugging code from a test file that was writing temporary data dumps to /tmp. It is a cleanup change with no security relevance.

Lower-priorityci: Mark some tests as rerunby Christian Decker · 5c749fe4 · Dec 6, 2025 · 6 filesMessage 67 · AdequateInformational 15Details
Commit message · Christian Decker

ci: Mark some tests as rerun

67/100 · AdequateMessage clarity
✓ 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 only changes how the project's automated test suite handles a few tests that sometimes fail randomly. It removes the 'flaky' test dependency from the project configuration and instead marks five specific tests as flaky directly. There is no change to the actual Core Lightning software that users run, so there is no security impact.

Lower-priorityci: Add 2 shards to the UBSAN / ASAN runsby Christian Decker · 5c0827e4 · Dec 6, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Christian Decker

ci: Add 2 shards to the UBSAN / ASAN runs

57/100 · ThinMessage clarity
✓ 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 only changes the project's automated testing configuration. It increases the number of parallel test shards for the AddressSanitizer and UndefinedBehaviorSanitizer CI runs from 10 to 12. There is no change to the actual Core Lightning software, its network behavior, or any user-facing functionality.

Lower-priorityci: Run with rerunfailures rather than flakyby Christian Decker · 7c28fdb6 · Dec 6, 2025 · 3 filesMessage 57 · ThinInformational 15Details
Commit message · Christian Decker

ci: Run with rerunfailures rather than flaky

57/100 · ThinMessage clarity
✓ 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 changes how the project's automated tests are run. It swaps one pytest plugin (flaky) for another (pytest-rerunfailures), adds a global retry option, and updates the Python package lock file. There is no change to the Core Lightning node software itself, its network behavior, or any user-facing functionality. It is purely a CI/test-infrastructure change.

Lower-prioritygit: Ignore two more binariesby Christian Decker · fa31e6e4 · Dec 6, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Christian Decker

git: Ignore two more binaries

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

This commit simply adds two newly-created program names to the .gitignore file, which tells Git not to track compiled binaries. It is a routine housekeeping change with no security relevance.

Lower-priorityci: Remove nix check from the critical path in ci.yamlby Christian Decker · 2a2def32 · Dec 6, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Christian Decker

ci: Remove nix check from the critical path in ci.yaml

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 removes a Nix flake validation job from the project's GitHub Actions CI workflow. It is a routine build-infrastructure change with no direct security relevance to the Core Lightning software itself.

Lower-priorityci: Add a simple plugin to report test results to our falkiness trackerby Christian Decker · 287abfbd · Dec 6, 2025 · 6 filesMessage 72 · AdequateInformational 23Details
Commit message · Christian Decker

ci: Add a simple plugin to report test results to our falkiness tracker

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

This commit adds a new pytest plugin called pytest-trackflaky that reports test results (test names, pass/fail status, timing, GitHub Actions metadata, and git commit info) to a configurable server URL. It is a CI/testing infrastructure change, not a change to the Core Lightning node software itself. There is no direct security vulnerability in the diff, but it introduces a new data-exfiltration-like path: if an attacker can set the CI_SERVER_URL environment variable in a CI environment, test metadata could be sent to an unexpected destination. The plugin also runs git commands and reads environment variables, which is normal for CI tooling but worth noting.

Lower-priorityci: Add new `version-vls` tag for Docker imageby ShahanaFarooqui · a5268e57 · Dec 5, 2025 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · ShahanaFarooqui

ci: Add new `version-vls` tag for Docker image

Changelog-Added: Added a new `version-vls` tag with includes VLS's `remote_hsmd_socket` binary with the Core Lightning image.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a routine update to the project's automated Docker publishing workflow. It adds a second Docker image variant tagged with '-vls' that includes an extra signer component from the Validating Lightning Signer (VLS) project. There is no code change to Core Lightning itself, no bug fix, and no security patch.

Lower-prioritydocker: Add vls remote_hsmd_socket binaryby ShahanaFarooqui · be471e59 · Dec 5, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · ShahanaFarooqui

docker: Add vls remote_hsmd_socket binary

This Dockerfile builds the VLS binaries during the builder stage and copies only the `remote_hsmd_socket` binary into the `lightningd-vls-signer` target.

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 routine Docker build change. It adds a new optional container image that bundles an external signing tool (VLS) with Core Lightning, and renames the final image stage for clarity. There is no indication of a security vulnerability being fixed or introduced.

Lower-prioritydoc: Add instructions to run CLN node with remote_hsmd_socketby ShahanaFarooqui · d18efbb0 · Dec 5, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · ShahanaFarooqui

doc: Add instructions to run CLN node with remote_hsmd_socket

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds documentation explaining how to run a Core Lightning node with an external, optional signing component called VLS remote_hsmd_socket. It changes no source code, no configuration defaults, and no runtime behavior. There is no security issue in the commit itself.

AI review queueddoc: Update release instructionsby ShahanaFarooqui · c03288cf · Dec 5, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · ShahanaFarooqui

doc: Update release instructions

35/100 · OpaqueMessage clarity
✓ Descriptive 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 project's internal release checklist documentation. It changes wording and commands used by maintainers when publishing a new version, such as pushing a specific tag to the origin remote instead of pushing all tags. There is no change to the actual Core Lightning software, its network behavior, or any user-facing functionality, so it has no security impact on users.

Lower-prioritytools: Capture Shasums for current version onlyby ShahanaFarooqui · bc64d92b · Dec 5, 2025 · 1 fileMessage 68 · AdequateInformational 18Details
Commit message · ShahanaFarooqui

tools: Capture Shasums for current version only

Fixes #8753.

Changelog-None: Release process fix.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 18/100

This is a release-script fix that changes which files get their checksums recorded. Previously, the script would include every file whose name started with the current version string, which could accidentally pick up leftover files from older releases sitting in the same directory. Now it only records checksums for the exact tarballs and zip file produced for this release. The risk is low, but a bad checksum list could in theory mislead users or build systems about what they are downloading.

Lower-priorityrelease branch for 25.12 releaseby Madeline Paech · ed439772 · Dec 4, 2025 · 10 filesMessage 45 · ThinInformational 15Details
Commit message · Madeline Paech

release branch for 25.12 release

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

This commit is purely a release-versioning change. It renames the release candidate label from v25.12rc3 to the final v25.12 across version files, changelogs, and Python package metadata. There are no code behavior changes, bug fixes, or security fixes in the diff.

Security candidategitignore: Ignore lightning-downgrade and check-bolt toolsby ShahanaFarooqui · af5d02a9 · Dec 3, 2025 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · ShahanaFarooqui

gitignore: Ignore lightning-downgrade and check-bolt tools

Changelog-None.

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
update trust
AI analysis · Informational 15/100

This commit simply adds two generated tool names to .gitignore files so that Git does not accidentally track compiled binaries. It does not change any executable code, configuration defaults, or security behavior.

Lower-priorityCHANGELOG: update for 25.12rc3by Rusty Russell · e02f76bd · Nov 29, 2025 · 10 filesMessage 60 · AdequateInformational 15Details
Commit message · Rusty Russell

CHANGELOG: update for 25.12rc3

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

This commit is a routine release-candidate version bump from v25.12rc2 to v25.12rc3. It updates version strings across packaging files and adds changelog notes for the new release candidate. The commit itself does not change any executable logic, cryptographic code, network handling, or security-sensitive behavior.

Lower-prioritycontrib: Update startup_regtest for taprootby Dusty Daemon · 377802ce · Nov 28, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Dusty Daemon

contrib: Update startup_regtest for taproot

Wallet address default to taproot now — update the startup_regtest.sh script to use taproot addresses.

Changelog-None

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

This is a tiny update to a helper shell script used only for local developer testing. It changes the address type the script asks for from 'bech32' (SegWit) to 'p2tr' (Taproot) because the software now defaults to Taproot addresses. It does not touch any production code, network protocol, wallet security, or cryptographic logic.

Lower-prioritytests/test_misc.py: fix another "AF_UNIX path too long"by Matt Whitlock · 6db80536 · Nov 28, 2025 · 1 fileMessage 75 · AdequateInformational 13Details
Commit message · Matt Whitlock

tests/test_misc.py: fix another "AF_UNIX path too long"

Also, avoid resource leak by explicitly closing socket.

Changelog-None

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

This is a tiny test-only cleanup. It replaces a direct Unix socket connection helper with a shared test helper and explicitly closes an old socket to avoid a resource leak during automated tests. There is no change to production code or user-facing security.

Lower-priorityxpay: fix misleading "route hint" label in error messagesby wqxoxo · 3c08a8bd · Nov 28, 2025 · 1 fileMessage 81 · StrongInformational 19Details
Commit message · wqxoxo

xpay: fix misleading "route hint" label in error messages

describe_scidd() was labeling any channel as "the invoice's route hint"
when there was a single-hop route hint, even if the error occurred on
an unrelated intermediate channel.

Now we check the channel actually matches the route hint's
short_channel_id before using that label.

Fixes: #8252
Changelog-Fixed: xpay: error messages no longer incorrectly label intermediate channels as "the invoice's route hint".

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 19/100

This commit fixes a wording bug in error messages produced by the xpay plugin. Previously, when an invoice had a single-hop route hint, any failed channel along the payment path could be incorrectly labeled as 'the invoice's route hint' in the error message, even if the failure happened on an unrelated intermediate channel. The fix adds a check that the failed channel actually matches the route hint's channel ID before using that label. This is a user-facing diagnostic improvement, not a security vulnerability.

AI review queuedpytest: add test that we correctly scan back for missed UTXOs.by Rusty Russell · 9d4a150b · Nov 28, 2025 · 2 filesMessage 83 · StrongInformational 15Details
Commit message · Rusty Russell

pytest: add test that we correctly scan back for missed UTXOs.

I took the node from the original test which missed the UTXO, and
added some more blocks.

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

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds a new regression test for an existing wallet fix. It does not change any production code, so it cannot introduce a new security vulnerability or directly fix one in the shipped software. The test verifies that Core Lightning correctly rescans older blocks to find UTXOs it previously missed after a database upgrade.

AI review queuedlightningd: scan back to seek missing UTXOs.by Rusty Russell · 6c603756 · Nov 28, 2025 · 4 filesMessage 60 · AdequateLow 44Details
Commit message · Rusty Russell

lightningd: scan back to seek missing UTXOs.

We only do this once, and not on new nodes.

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: security-sensitive path
AI analysis · Low 44/100

This commit adds a one-time background scan that re-examines old blocks to find UTXOs (unspent transaction outputs) the wallet may have missed earlier. It is a data-recovery / consistency fix, not an obvious exploit patch. The commit message does not call it a security fix, and there are no supplied references linking it to an attack. The change could matter for security because missed UTXOs can affect channel balances and on-chain funds, but the diff itself is defensive housekeeping.

AI review queuedwallet: make sure we re-watch outpoints after blocks are rolled back.by Rusty Russell · 1e66414b · Nov 28, 2025 · 2 filesMessage 73 · AdequateModerate 58Details
Commit message · Rusty Russell

wallet: make sure we re-watch outpoints after blocks are rolled back.

At startup, we load the outpoints to watch, *then* roll back 15
blocks. If there were things in those blocks we wanted to watch, we
no longer do!

1. We load the utxoset into memory: everything in the utxoset table
which has spendheight null.
2. We roll back 15 blocks to re-read. Deleting a block from the
database causes the utxo spentheights referring to it to be set
to null.
3. We roll forward, but we didn't update the in-memory utxoset,
so we're not watching those utxos which are spent.

The main symptom of this is that we spam peers with obsolete gossip
(if we get sent a channel announcement for a closed channel, we can
think it isn't spent yet). But it could *also* mean we don't notice
onchain txs, if we restart at the wrong time!

Changelog-Fixed: lightningd: we could miss tx spends which happened in the past blocks when we restarted.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

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

This fix corrects a startup bug in Core Lightning where, after rolling back recent blocks to re-read them, the node could forget to keep watching certain spent transaction outputs. The main visible symptom was stale network gossip, but it could also cause the node to miss on-chain transactions if it restarted at the wrong time. The patch makes the node refresh its watch list after block rollbacks.

AI review queuedpytest: test for watching utxos over restart reorg.by Rusty Russell · 8caffde0 · Nov 28, 2025 · 1 fileMessage 75 · AdequateInformational 12Details
Commit message · Rusty Russell

pytest: test for watching utxos over restart reorg.

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
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 12/100

This commit only adds a new automated test to the project's test suite. It does not change any production code, so it cannot directly introduce or fix a security vulnerability in running software. The test is currently marked as expected to fail (xfail), meaning it documents behavior that is not yet working correctly—specifically, how the wallet tracks whether a coin is spent across a blockchain reorganization and a node restart. It may be a regression test for a future bug fix, but by itself it poses no security risk.

Lower-priorityci: Remove lowdown and configure from the sign release job stepby ShahanaFarooqui · 534e3ae8 · Nov 28, 2025 · 1 fileMessage 77 · AdequateInformational 15Details
Commit message · ShahanaFarooqui

ci: Remove lowdown and configure from the sign release job step

Changelog-None: Fixes draft release job creation in CI.

77/100 · AdequateMessage clarity
✓ Specific, 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 is a routine GitHub Actions CI maintenance change. It removes two unnecessary setup commands (installing a documentation tool called lowdown and running a build configuration script) from the automated step that signs release artifacts. There is no security-relevant change visible in the diff.

Lower-prioritytools: remove accidentally-committed obsolete hsmtool binary.by Rusty Russell · 7e9ec3ef · Nov 28, 2025 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · Rusty Russell

tools: remove accidentally-committed obsolete hsmtool binary.

And keep it in the .gitignore, as others may have old ones lying around too.

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 commit simply deletes an old, accidentally included binary file named hsmtool from the repository and adds its name to the ignore list so it won't be committed again. There is no code change, no vulnerability fix, and no security issue introduced or resolved by this commit.