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
225commits · 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 47 minutes ago

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

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

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

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

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

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

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

doc: require Homebrew GNU make and gpatch on macOS

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

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

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

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

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

common: hoist amount+currency parsing into common code.

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

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

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

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

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

common: hoist hash_str helper into its own header.

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

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

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

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

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

downgrade tool: fix invalid memory bug

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

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

xpay: actually tell askrene when a payment succeeded.

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

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

askrene: correctly order constraints.

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

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

askrene: don't leak channel intel entries

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

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

xpay: tests should expect the new error messages

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

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

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

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

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

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

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

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

fetchinvoice: don't bother with checking recurrence timing.

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

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

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

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

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

fetchinvoice: handle weird labels in recurrence_label parameter.

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

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

Add unit tests for str_to_u64

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

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

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

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

518620aeby Rusty Russell+67−01 file
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

AI review queuedfuzz-tests: Add coverage-increasing inputs to seed corporaby Chandra Pratap · 6e16f944 · Sep 22, 2025 · 137 filesMessage 83 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Add coverage-increasing inputs to seed corpora

Change in the fuzzing scheme of fuzz-bech32 led to the
discovery of test inputs that result in greater in code
coverage. Add these inputs to the test's seed corpus.

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
fuzzing or regression evidencesecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit only adds and removes test input files used for fuzzing the bech32 address parser. It is a routine test-data update with no changes to the actual software code that runs on users' systems. There is no indication of a security fix or vulnerability.

Lower-priorityfuzz-tests: Test over all possible witness version valuesby Chandra Pratap · f4fdb196 · Sep 22, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Test over all possible witness version values

According to `common/bech32.h`, the valid values of witness
program version are between 0 and 16 (inclusive). Update the
test to iterate over all of these values.

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
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only changes a fuzz test file. Fuzz tests are automated security exercises that throw random inputs at code to find bugs. The change expands the test to loop through all valid SegWit witness program versions (0 to 16) instead of just versions 0 and 1. It does not modify any production code, so it cannot by itself introduce or fix a vulnerability in the running software.

Lower-prioritycommon/test: Add a test to trigger the bugby Chandra Pratap · f3ddc076 · Sep 22, 2025 · 2 filesMessage 70 · AdequateLow 45Details
Commit message · Chandra Pratap

common/test: Add a test to trigger the bug

Add a test in `common/test/run-wireaddr.c` that reproduces the
out-of-bounds error when the fix is not applied.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Low 45/100

This commit adds a unit test that reproduces a one-byte buffer overflow when Core Lightning decodes a very long DNS network address. The test itself does not fix the bug; it only demonstrates it so that a separate fix can be verified. The overflow happens because the decoder tries to add a null terminator one byte past the end of a 255-byte address buffer.

Lower-prioritycommon/wireaddr: Fix an out-of-bounds bug in the address parserby Chandra Pratap · 9fe88b43 · Sep 22, 2025 · 1 fileMessage 85 · StrongModerate 60Details
Commit message · Chandra Pratap

common/wireaddr: Fix an out-of-bounds bug in the address parser

Changelog-Fixed: In `struct wireaddr`, the `addr` buffer is defined
with a length of DNS_ADDRLEN (255). When parsing a valid DNS name
that is exactly 255 bytes long, the subsequent attempt to append a
`NULL` terminator overruns the buffer and triggers an out-of-bounds
error under UBSan.

Fix this by removing the line that appends `NULL`. This change is
safe because the preceding call to:

`memset(&addr->addr, 0, sizeof(addr->addr))`

already zeroes the entire buffer.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Moderate 60/100

This commit fixes a one-byte buffer overflow in Core Lightning's network address parser. When handling a DNS address that is exactly 255 bytes long, the code tried to add a trailing zero byte past the end of a 255-byte buffer. The fix simply removes that extra write, because the buffer is already fully zeroed beforehand. It is a genuine bug fix, but the practical security impact is limited because the overflow is only one byte and occurs in a controlled parsing path.

Lower-priorityfuzz-tests: Add a test for `calculate_our_funding()`by Chandra Pratap · 48ced70f · Sep 22, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Add a test for `calculate_our_funding()`

Changelog-None: `calculate_our_funding()` in `plugins/funder_policy.c`
is responsible for calculating our funding policy. Add a test for it.

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
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit adds a new automated fuzz test for an existing function called calculate_our_funding(), which decides how much bitcoin a Core Lightning node contributes when opening a payment channel. The commit only creates a test file and does not change the actual funding logic. It includes built-in checks that would crash the test if the function ever returns results violating simple rules, such as contributing more than the allowed channel size or more than available funds. There is no indication this commit fixes a security bug or changes production code.

AI review queuedfuzz-tests: Add a seed corpus for the new testby Chandra Pratap · 5cc8d0ad · Sep 22, 2025 · 97 filesMessage 78 · AdequateInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Add a seed corpus for the new test

Add a minimal input set as a seed corpus for the newly introduced
test. This leads to discovery of interesting code paths faster.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidencesecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit only adds test data files (a fuzzing seed corpus) for a new fuzz test called fuzz-funder-policy. It does not change any production code, so it cannot directly introduce a security vulnerability or fix one. The files are inputs used by an automated testing tool to exercise the funder policy code more quickly.

Lower-prioritycommon/json_parse_simple: drop redundant and wrong json_str_to_u64()by Matt Whitlock · 71ddba28 · Sep 22, 2025 · 3 filesMessage 73 · AdequateModerate 62Details
Commit message · Matt Whitlock

common/json_parse_simple: drop redundant and wrong json_str_to_u64()

The json_str_to_u64() function contains incorrect logic. It chops one character
off of the beginning and end of the JSMN token and then parses the remainder as
a u64, but JSMN_STRING tokens already do not include the enclosing quotation
marks, so json_str_to_u64() would actually parse the JSON string "1234" into
the integer 23. Oops! Also note that it would simply fail on all input strings
shorter than two characters since tok->end would wind up *before* tok->start.

Just drop the function entirely. It was only used in one place, and that place
explicitly doesn't care whether its input is a JSON number or a numeric string,
and it was already calling json_to_u64() as an alternative, and that function
already accepts both JSON strings and JSON numbers as input, so the call to
json_str_to_u64() would have been entirely redundant if it had been correct.

Changelog-Fixed: The `keysend` command no longer corrupts the type numbers of extra TLVs when they are specified as numeric strings longer than 2 digits.

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

This commit fixes a bug in Core Lightning's JSON parsing. A helper function meant to read a number from a quoted JSON string was accidentally stripping one digit from each end. For example, the string "1234" was being read as 23, and single-digit strings failed entirely. The only user of this broken helper was the `keysend` command's handling of extra TLV (custom data) type numbers. As a result, when a user specified extra TLV type numbers as quoted numeric strings of more than two digits, the wrong type number would be stored and sent. This could cause payments to include malformed custom data, potentially making them fail or be misinterpreted by the recipient.

Lower-priorityci: Add a new step to update pyln versions out of WORKDIRby ShahanaFarooqui · 2e2a0859 · Sep 19, 2025 · 1 fileMessage 97 · StrongInformational 15Details
Commit message · ShahanaFarooqui

ci: Add a new step to update pyln versions out of WORKDIR

The Publish distribution stage was failing because it executed the update-pyln-versions script from within the WORKDIR, which created an invalid context. To resolve this, we have decoupled the process, separating the updating of version state into its own step that runs from the root directory before the publish operation.

Changelog-None.

97/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This is a routine fix to the project's automated package-publishing workflow. The change moves a version-update step so it runs from the correct directory before publishing Python packages. There is no security-relevant change and no indication of a vulnerability.

Lower-prioritydoc: adding madeline's security details Changelog-Noneby madelinevibes · 35795f10 · Sep 18, 2025 · 1 fileMessage 70 · AdequateInformational 15Details
Commit message · madelinevibes

doc: adding madeline's security details
Changelog-None

70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit simply adds a new person's name, email, and PGP key fingerprint to the project's SECURITY.md file. It is a documentation-only change with no code modifications and no security vulnerability.

Lower-priorityci: Update sqlite3 version and shasums for noble repro buildby ShahanaFarooqui · e92203c1 · Sep 16, 2025 · 1 fileMessage 77 · AdequateInformational 15Details
Commit message · ShahanaFarooqui

ci: Update sqlite3 version and shasums for noble repro build

Changelog-Fixed: Reproducible build for Ubuntu noble by updating sqlite3 version and shasums.

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

This commit updates a single checksum in a reproducible build script. The script verifies that the exact same SQLite development package is used when building Core Lightning on Ubuntu Noble. Ubuntu released a minor update to the package (from version 3.45.1-1ubuntu2.4 to 3.45.1-1ubuntu2.5), which changed its file hash. The commit simply records the new expected hash so the build can succeed. There is no code change to Core Lightning itself and no security issue introduced or fixed here.

Lower-priorityfix: Remove "Printing" from listdatastore debug log.by Se7enZ · b49ccfa4 · Sep 16, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Se7enZ

fix: Remove "Printing" from listdatastore debug log.

Changelog-None

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

This commit simply removes several noisy debug log messages from the listdatastore command. It does not change program behavior, fix a bug, or affect security. The removed messages were developer-only diagnostics that could leak datastore key names into logs, but they were already at the debug log level and not a security vulnerability.

AI review queuedcontrib: Added fixed SOURCE_DATE_EPOCH flag for reproducible ubuntu buildsby ShahanaFarooqui · 490fb0fc · Sep 15, 2025 · 4 filesMessage 93 · StrongInformational 21Details
Commit message · ShahanaFarooqui

contrib: Added fixed SOURCE_DATE_EPOCH flag for reproducible ubuntu builds

clnrest's `utoipa-swagger-ui` library has an indirect `rust-embed` dependency which by default includes timestamps in build. It results in non-deterministic build for clnrest. Using environment variable `SOURCE_DATE_EPOCH` with fixed value will enforce a consistent timestamp for builds.

Also adding the `--locked` flag to ensure the release build uses exact dependencies from Cargo.lock. The `--locked` flag is particularly important for deterministic builds as it prevents Cargo from updating the lockfile.

Fixes #8288.

Changelog-Fixed: Core lightning builds for Ubuntu Focal, Jammy and Noble are deterministic again.

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 21/100

This change makes Core Lightning's Ubuntu release builds produce identical output every time (reproducible builds). It does not fix a vulnerability in running software; instead, it removes a source of randomness in build timestamps and dependency versions that could make it hard to verify that a published binary truly came from the published source code. Reproducible builds help users and developers detect supply-chain tampering, but the patch itself is a build-hardening improvement, not an exploit fix.

AI review queuedfuzz-tests: Add coverage-increasing inputs to seed corporaby Chandra Pratap · 6f4cfede · Sep 15, 2025 · 41 filesMessage 83 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Add coverage-increasing inputs to seed corpora

Change in the fuzzing scheme of `fuzz-close_tx` led to the
discovery of test inputs that result in greater in code
coverage. Add these inputs to the test's seed corpus.

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
fuzzing or regression evidencesecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit only adds 41 new binary test files to a fuzz-testing seed corpus. Fuzzing seeds are like practice questions used to exercise code during automated testing; they are not part of the live Lightning node software and cannot directly affect real users or funds. There is no code change, no bug fix, and no security patch in this commit.

Security candidatefuzz-tests: fix overflow of u32 in `fuzz-close-tx`by Chandra Pratap · 20e252b5 · Sep 15, 2025 · 1 fileMessage 88 · StrongInformational 18Details
Commit message · Chandra Pratap

fuzz-tests: fix overflow of u32 in `fuzz-close-tx`

Changelog-None: The value WALLY_SATOSHI_PER_BTC * WALLY_BTC_MAX
is equal to 2.1e15, which is much higher than the maximum capacity
of a u32, which is 4.29e9.

Hence, use a u64 to store this value instead.

88/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
memory safetyfuzzing or regression evidence
AI analysis · Informational 18/100

This commit fixes a variable type bug in a fuzz test, not in the main Core Lightning software. A fuzz test is an automated testing tool that feeds random data to a program to find crashes. The bug was that a calculation used a 32-bit integer (u32) to hold a value far larger than it can represent, causing an overflow. The fix changes the variable type to a 64-bit integer (u64). Because this is only in a test file, it does not directly affect real Lightning nodes or user funds.

AI review queuedfuzz-tests: Add coverage increasing inputs to seed corporaby Chandra Pratap · 17cf63ae · Sep 15, 2025 · 124 filesMessage 83 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Add coverage increasing inputs to seed corpora

Improvements in the fuzz-testing scheme of `fuzz-channel_id led
to the discovery of test inputs that result in greater in code
coverage. Add these inputs to the test's seed corpus.

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
fuzzing or regression evidencesecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit only adds new test input files to a fuzz-testing seed corpus. Fuzz testing is an automated quality-assurance technique that feeds random or unusual inputs to a program to find bugs. These added files are not part of the live Core Lightning software that users run, so the commit does not change any production code or fix any security issue. It is purely a testing-data update.

Lower-priorityfuzz-tests: Make the `channel_id` wire test roundtripby Chandra Pratap · bc57dc9b · Sep 15, 2025 · 1 fileMessage 95 · StrongInformational 12Details
Commit message · Chandra Pratap

fuzz-tests: Make the `channel_id` wire test roundtrip

Changelog-None: `memcmp()` the output of `towire_channel_id()`
and the input to `fromwire_channel_id()` to ensure that wire
encoding-decoding is correctly performed.

95/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
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 12/100

This commit adds a consistency check inside a fuzz test for channel ID encoding and decoding. It does not change production code, fix a vulnerability, or alter any runtime behavior of the Lightning node. The change only strengthens a test to verify that converting a channel ID to wire format and back produces the original bytes.

Lower-priorityfuzz-tests: Get rid of magic numbersby Chandra Pratap · 9e341453 · Sep 15, 2025 · 1 fileMessage 78 · AdequateInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Get rid of magic numbers

Replace instances of 36 with sizeof(outpoint) and 32 with
sizeof(chan_id) since that's what they represent. This makes
the test more future-proof.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only cleans up a fuzz test file by replacing hard-coded numbers (36 and 32) with size-of expressions. It does not change any runtime behavior or fix a security bug.

Lower-priorityfuzz-tests: Remove unnecessary #includes in the BOLT #11 testby Chandra Pratap · 2a877633 · Sep 15, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Remove unnecessary #includes in the BOLT #11 test

The fuzz target for BOLT #11 has some unnecessary #includes.
Get rid of them.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit simply removes unused header file imports from a fuzz testing file. It does not change any running code, fix a bug, or alter behavior. There is no security relevance.

Lower-priorityfuzz-tests: add a check for `bolt11_encode()`by Chandra Pratap · 974af91c · Sep 15, 2025 · 1 fileMessage 86 · StrongInformational 14Details
Commit message · Chandra Pratap

fuzz-tests: add a check for `bolt11_encode()`

Changelog-None: Since `bolt11_decode()` defined in `common/bolt11.c`
is untested by the current BOLT #11 fuzz test, add a test for it.

86/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 14/100

This commit adds a new software test (a fuzz test) that exercises an existing invoice encoding function called bolt11_encode(). It does not change any production code, fix a bug, or alter how the software handles user data. It only adds test coverage.

AI review queuedfuzz-tests: Add coverage-increasing inputs to seed corporaby Chandra Pratap · 271356f6 · Sep 15, 2025 · 41 filesMessage 83 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Add coverage-increasing inputs to seed corpora

Change in the fuzzing scheme of `fuzz-bolt11` led to the
discovery of test inputs that result in greater in code
coverage. Add these inputs to the test's seed corpus.

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
fuzzing or regression evidencesecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit only adds new test input files (seed corpus) for an existing fuzz test that exercises BOLT11 invoice parsing. It does not change any production code, configuration, or behavior of the Core Lightning node. The added files are malformed or unusual invoice strings intended to improve test coverage. There is no indication this commit fixes or introduces a security issue.

Lower-priorityfuzz-tests: add a test for handle_peer_error_or_warning()by Chandra Pratap · 69a604fc · Sep 15, 2025 · 2 filesMessage 91 · StrongInformational 12Details
Commit message · Chandra Pratap

fuzz-tests: add a test for handle_peer_error_or_warning()

Changelog-None: `handle_peer_error_or_warning()` in
`common/read_peer_message.{c, h}` is responsible for parsing any
incoming `error` or `warning` messages as defined in BOLT #1.

Add a test for it.

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 12/100

This commit only adds a new automated fuzz test for a message-handling function. It does not change the actual network or message-handling code, so it cannot introduce a security vulnerability by itself. It is a testing improvement.

AI review queuedfuzz-tests: Add a seed corpus for the new testby Chandra Pratap · fc549b3b · Sep 15, 2025 · 140 filesMessage 78 · AdequateInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Add a seed corpus for the new test

Add a minimal input set as a seed corpus for the newly introduced
test. This leads to discovery of interesting code paths faster.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidencesecond-pass: unusually broad change
AI analysis · Informational 15/100

This commit only adds test data files (a fuzzing seed corpus) for a new fuzz test. It does not change any production code, configuration, or runtime behavior, so it has no direct security impact on users of Core Lightning.

Lower-priorityfuzz-tests: order FUZZ_COMMON_OBJS lexicographicby Chandra Pratap · 7b4e182f · Sep 15, 2025 · 1 fileMessage 78 · AdequateInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: order FUZZ_COMMON_OBJS lexicographic

The FUZZ_COMMON_OBJS list roughly follows lexicographic
order. Make it adhere strictly to the order. This makes adding
and reviewing changes to the file easier.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit simply reorders a list of file names in a Makefile so they are in strict alphabetical order. It does not change any code, fix any bug, or alter how the software behaves. There is no security relevance.

Lower-priorityfuzz-tests: Replace hardcoded chunk size with iteration over sizesby Chandra Pratap · 8ab0a01e · Sep 15, 2025 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Replace hardcoded chunk size with iteration over sizes

Changelog-None: The exisiting fuzz test only extracts chunks of
a fixed size (8) from the fuzzer's input. Replace this with an
iteration over a set of chunk sizes (1 to BIGSIZE_MAX_LEN) for
better coverage.

While at it, get rid of the check `if (bs != 0)` because 0 is a
valid value for bigsize_t as well.

95/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
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only changes a fuzz test file. Fuzz tests are automated tools used to find bugs by feeding random data into functions. The change makes the test try more input chunk sizes and removes a special-case skip for zero values. There is no change to the actual production code that handles real network data or funds, so this commit does not introduce or fix a security vulnerability in the running software.

Lower-priorityfuzz-tests: Add a roundtrip check for `bigsize_put()`by Chandra Pratap · 66e0d9c2 · Sep 15, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Chandra Pratap

fuzz-tests: Add a roundtrip check for `bigsize_put()`

Add a roundtrip check for `bigsize_put()` using `bigsize_get()`.
This enforces a stricter check for the former and adds a test
for the latter, which is currently untested.

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
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only adds an extra self-check to an existing software test. It makes the test verify that encoding a number and then decoding it gives back the same number. There is no change to the actual program code that users run, and nothing in the commit suggests a security problem was found or fixed.