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 simply adds a new person's PGP public-key fingerprint to the list of trusted release signers in two documentation files. It does not change any code, fix any bug, or alter any security behavior of the software itself.
This is a tiny internal fix to make a bookkeeping migration produce stable event ordering. It changes the timestamp used when creating historical 'deposit' records during a one-time database migration, so the records sort consistently with…
This commit is a documentation-only cleanup of the JSON-RPC command help files. It corrects which numeric error codes are listed for each command so the published schemas match what the software actually returns. No program logic, validati…
Documentation-only change with no executable code modificationsCorrects RPC schema error-code metadata to match actual handler behaviorNo change to input parsing, authorization, cryptography, or network behavior
This commit fixes a bug where a setting that controls whether unexpected transaction signatures are allowed was not initialized when the channel daemon starts. If a peer sent such signatures before the channel was fully ready, the program …
use of uninitialized variableundefined behavior (invalid bool load)network-triggered code path
This commit fixes the project's internal nightly code-coverage CI workflow. It changes how test coverage files are collected, ensures the same LLVM compiler version is used to generate and merge coverage data, and uploads a Codecov-compati…
This commit is a large cleanup of Core Lightning's API schemas, generated RPC bindings, and related plugin code. The stated goal is to make the documented 'required' fields match what the C code actually always produces or expects. In prac…
Large schema-only change with no accompanying security advisory or CVEOne semantic change to plugin hook response: invoice_payment hook can now reject with only failure_message and no resultMany fields change from optional to required in public RPC/protobuf interfaces
This commit only updates documentation. It adds error code 313 to the documented error lists for several Core Lightning commands (fundpsbt, utxopsbt, txprepare, multiwithdraw, and upgradewallet). The error code already existed in the code …
This commit fixes a release-script check that verifies the cryptographic signature on a file of checksums. Previously, the script only told GPG to verify the signature file itself. If someone replaced that signature file with an inline-sig…
Incorrect cryptographic verification logic in release toolingPotential false-positive signature verification with inline-signed .asc substitutionRelease-integrity hardening
This commit updates Core Lightning's release documentation to tell users and release managers to run gpg --verify with both the signature file and the manifest file named explicitly. The old one-argument form can silently succeed even if t…
Verification bypass risk in release artifact validationgpg --verify single-argument form can exit 0 without reading the intended manifestDocumentation-only hardening of release process
This commit is a routine update to the Rust dependency lock file (Cargo.lock), bumping many third-party libraries to newer patch or minor versions. The commit message gives no security reason for the update, and no verified references link…
Routine dependency refresh with no stated security rationaleUpdates to security-sensitive transitive crates (rustls, hyper, h2, tokio, webpki-roots) but no evidence these versions fix known vulnerabilitiesNo source-code changes or patch-specific fixes visible in the diff
This commit fixes a stack-overflow risk in Core Lightning's JSON parser. Before the fix, an attacker could send a valid JSON-RPC message containing thousands of nested brackets or braces. The parser's own helper functions used recursion fo…
Stack-overflow via deeply nested JSONRecursive JSON traversal without depth boundDenial-of-service vector in JSON-RPC input parsing
This commit only fixes typos and comment style. It changes two C-style comments from // to /* */ and corrects a grammar error in a documentation comment ('element' to 'elements'). There are no code behavior changes, no bug fixes, and no se…
This change fixes a test-infrastructure bug in Core Lightning's Python testing helpers. When running tests against a PostgreSQL database, very long test names could be silently shortened by PostgreSQL, causing different test runs or nodes …
No security-relevant signal: change is in test framework code onlyFixes a test reliability issue, not a runtime vulnerabilityNo input sanitization, authentication, cryptography, or network changes
This fix prevents Core Lightning from trying to use freshly created bitcoins (immature coinbase rewards) as emergency funds for fee-bump transactions. Such a transaction would be invalid under Bitcoin's rules and would be rejected by the n…
This commit fixes a bug in Core Lightning's askrene plugin that could prevent a node from restarting. When a saved routing layer contained a node bias with a description, the plugin accidentally freed the description's memory while using i…
Use-after-free / double-take of a tal-allocated string during plugin startupDenial-of-service-like symptom: lightningd aborts before replying to init, node cannot restartFixes publicly reported issue #9433 by endothermicdev
This commit only fixes a test case so it actually exercises the intended code path. It does not change any production code, so it cannot introduce or fix a real-world security vulnerability by itself. The test change is a reproducer for a …
This commit fixes a bug in Core Lightning's experimental dual-funded channel feature. When another node tried to open a channel, Core Lightning was not checking whether the proposed transaction fees were reasonable. A peer could request a …
Missing input validation on wire-parsed feerate fieldsPeer could induce signing and storage of feerate == 0RBF remote path allowed unbounded upward feerate walks
This commit adds regression tests for three related bugs where wildly wrong Bitcoin transaction feerates could enter Core Lightning. In the worst case, a malicious or broken fee source could make the node think a feerate was zero (due to a…
Integer overflow in feerate conversion (u32 wrap from 0xFFFFFFFF perkb to 0 perkw)Absurd feerate from external fee source bypassing sanity ceilingDatabase-stored out-of-range feerate causing startup abort/crash loop
This update fixes a crash bug in Core Lightning. When the software tried to list details of a channel opening in progress, it could crash if a stored fee rate was extremely large or zero. The crash happened because the code used an interna…
Integer overflow in RBF escalation (u32 * 25 / 24) leading to assertion failureAssertion failure in read-only introspection RPC (listpeerchannels) causing crash-loop at startupDatabase value treated as invariant despite originating from external fee estimator
This commit fixes a bug where Core Lightning nodes could get stuck in a crash loop. If a node had previously stored an extremely high or zero fee rate for an in-progress channel funding operation (a 'splice' or dual-funded channel RBF), a …
Integer overflow in fee-rate calculation (u32 overflow when multiplying by 25/24)Assertion failure leading to daemon crash loop at startupDatabase migration clamps out-of-range stored funding feerates
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Lower-priorityDEV.md: cheat sheet for developers and LLMs.by Rusty Russell · fb8b81d0 · Jun 16, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Rusty Russell
DEV.md: cheat sheet for developers and LLMs.
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
documentation-only discount
AI analysis · Informational 15/100
This commit adds a new developer cheat-sheet file (DEV.md) with tips for building, testing, and contributing to Core Lightning. It contains only documentation and no code changes. There is no security issue.
Lower-priorityCI: Update Mac CI to use gmakeby Dusty Daemon · aff06192 · Jun 16, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Dusty Daemon
CI: Update Mac CI to use gmake
`gmake` is kept up to date while `make` is apple’s built in mac that is not updated and very old at this point.
Changelog-None
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 Mac CI (Continuous Integration) workflow. It installs the GNU version of make (called gmake) via Homebrew and uses gmake instead of the older Apple-provided make when building the project in CI. There is no security relevance in this change.
This commit is a routine update of third-party Rust libraries used by Core Lightning's REST plugin. It bumps versions in the package lock file and raises one direct dependency (quick-xml) from 0.39 to 0.40. The commit message does not say it fixes any security bug, and no verified security advisory was supplied. Dependency updates can sometimes include security fixes, but this change alone does not demonstrate a vulnerability in Core Lightning.
Lower-priorityschemas: add offer_id to invoice_creation notificationby daywalker90 · 46b039d5 · Jun 10, 2026 · 8 filesMessage 65 · AdequateInformational 15Details
Commit message · daywalker90
schemas: add offer_id to invoice_creation notification
Also partially reverts f96099691bee5df41c4ce87f396bcabad0d547d3 which was not properly rebased
Changelog-None
65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100
This commit adds a new optional field, offer_id, to the invoice_creation notification that Core Lightning sends when an invoice is created. It is a schema/API enhancement so plugins and gRPC clients can see which BOLT 12 offer an invoice came from. There is no security-relevant change in the diff.
watchman is the lightningd-side counterpart to the bwatch plugin landed in the previous group: it tracks how far we've processed the chain, queues outbound watch ops while bwatch is starting up, and dispatches watch_found/watch_revert/blockdepth notifications to subdaemon-specific handlers.
This commit adds only the public surface (struct watchman, the three handler typedefs, and prototypes for watchman_new, watchman_ack, watchman_replay_pending) plus an empty watchman.c so the header is exercised by the build. Definitions land in subsequent commits.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This commit only adds a new header file describing a future component and an empty source file. No actual code logic is implemented, so there is nothing an attacker could exploit or that could directly affect users. It is a structural preparation step for later work.
lightningd: add watchman RPC handlers and typed watch API
Register watch_found, watch_revert, block_processed, revert_block_processed, getwatchmanheight, and chaininfo handlers. Add typed watchman_watch_* helpers and the dispatch-table skeleton for future subsystem handlers.
Changelog-Added: lightningd: watchman module registers getwatchmanheight, chaininfo, watch_found, watch_revert, block_processed and revert_block_processed RPCs for bwatch plugin integration.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 14/100
This commit adds new internal JSON-RPC handlers and helper functions for a 'watchman' component that tracks Bitcoin blockchain events (like transactions and block reorganizations) for the Core Lightning node. It is a feature/refactoring commit that wires up a new plugin interface. There is no direct evidence in the commit that it fixes a security vulnerability, and the changelog describes it as a new feature, not a security fix.
Lower-prioritylightningd: instantiate watchman at startupby Sangbida Chaudhuri · 3df0fbbb · Jun 10, 2026 · 5 filesMessage 68 · AdequateInformational 18Details
Commit message · Sangbida Chaudhuri
lightningd: instantiate watchman at startup
Create watchman after setup_topology so it can queue bwatch RPC requests and replay pending ops once the plugin is ready. No subsystems register watches yet — that lands in the wallet migration PR.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 18/100
This commit changes when Core Lightning starts its internal 'watchman' component, which tracks blockchain events. Previously the watchman was created later; now it is created earlier at startup so it can queue requests for the bwatch plugin and replay them once that plugin is ready. The commit also wraps database loading in a transaction and replaces a callback hook with an explicit notification function. No subsystems actually register watches yet, so this is preparatory infrastructure work rather than a live security fix.
AI review queuedlightningd: replay pending ops on plugin readyby Sangbida Chaudhuri · 549ca307 · Jun 10, 2026 · 1 fileMessage 68 · AdequateLow 31Details
Commit message · Sangbida Chaudhuri
lightningd: replay pending ops on plugin ready
Both bwatch and watchman must be crash-resistant: a watch_send or an add_watch/del_watch op may be in flight when lightningd crashes, and neither side is allowed to lose it. We solve this by persisting every pending op to the datastore in enqueue_op and dropping it from the datastore in watchman_ack. On startup load_pending_ops rebuilds the in-memory queue from the datastore, and watchman_on_plugin_ready replays it once bwatch reaches INIT_COMPLETE.
watchman_add cancels any prior add for the same owner; watchman_del cancels any pending add for the same owner before queueing the delete. This keeps the queue from accumulating stale or self-cancelling op pairs across restarts.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Low 31/100
This commit makes the bitcoin 'watchman' subsystem crash-resistant. Previously, if the lightning node crashed while telling its external plugin to add or remove a watch on a bitcoin address, that instruction could be lost. Now each pending instruction is saved to the database, reloaded on startup, and resent once the plugin is ready again. It also cancels stale paired requests (e.g. a pending 'add' is dropped if a matching 'del' arrives). This is a reliability/robustness improvement rather than a fix for an active exploit.
AI review queuedlightningd: add send_to_bwatch and watchman_ackby Sangbida Chaudhuri · a202ae63 · Jun 10, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Sangbida Chaudhuri
lightningd: add send_to_bwatch and watchman_ack
Introduce the outbound RPC path from watchman to the bwatch plugin plus the ack lifecycle that drops a pending op once bwatch confirms it.
- struct pending_op carries an op_id of the form "{method}:{owner}" (e.g. "addscriptpubkeywatch:wallet/p2wpkh/42"); method and owner are recoverable without a separate field. - Datastore helpers (make_key, db_save, db_remove) persist pending ops at ["watchman", "pending", op_id] for crash recovery. - send_to_bwatch finds the bwatch plugin via find_plugin_for_command on the method name; if bwatch is not yet INIT_COMPLETE, the send is silently dropped (the op stays queued and will be replayed when bwatch comes up). Otherwise it builds a JSON-RPC request with the owner suffix and the caller-supplied json_params body, registers bwatch_ack_response as the callback, and sends it. - watchman_ack searches pending_ops by op_id; on a hit it removes the datastore entry and drops the in-memory op.
db_save and send_to_bwatch are marked __attribute__((unused)) here because their callers (enqueue_op, watchman_replay_pending) land in the next commit; the markers are removed there.
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100
This commit adds internal plumbing for a new 'watchman' component in Core Lightning. It introduces a queue of pending operations, a way to send them to a plugin called 'bwatch', and a way to remove them once acknowledged. The code is not yet wired up to actual callers in this commit (some functions are explicitly marked unused), so it cannot by itself change node behavior or be exploited. It is a normal, incremental infrastructure change.
lightningd: add watchman storage and persistence skeleton
Introduce the minimal storage scaffolding for the watchman module:
- db_set_blobvar / db_get_blobvar helpers for persisting binary values (e.g. block hashes) in the SQL `vars` table. - load_tip(): recover last_processed_height and last_processed_hash from the wallet db. - apply_rescan(): honour --rescan by adjusting the loaded tip downward (negative = absolute height, positive = N blocks back). - watchman_new(): allocate the struct, initialise the pending-op array, and call load_tip + apply_rescan.
Wire the watchman field into struct lightningd via a forward declaration; instantiation at startup lands in a later commit along with the rest of the wiring.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 12/100
This commit adds the first pieces of a new 'watchman' subsystem in Core Lightning. It creates helper functions to save and load binary data (like block hashes) from the wallet database, reads the last processed blockchain height/hash at startup, and applies the existing --rescan option to move the starting height backward if requested. The watchman object is declared in the main daemon structure but is not yet created or used anywhere. There is no user-facing functionality or active network behavior in this commit.
Register the two startup RPCs that bwatch calls on launch:
- getwatchmanheight: bwatch asks how far we've already processed the chain so it knows what height to (re)scan from. Returns {height, blockhash?} from wm->last_processed_{height,hash}. - chaininfo: bwatch reports the chain name, header/block counts, and IBD status. We fatal() on a network mismatch (wrong bitcoind), toggle bitcoind->synced based on IBD/header-vs-block lag, fire notify_new_block on the transition to synced, and remember the blockcount on watchman.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Low 27/100
This commit adds two internal startup RPC endpoints used by a new component called bwatch. One endpoint reports how far the node has processed the blockchain; the other receives chain status from bwatch and updates the node's sync state. The code includes a safety check that shuts down the node if the connected Bitcoin backend is on the wrong network. There is no obvious vulnerability in the diff, but the commit is adding new RPC surface area and changing sync-state logic, which is security-relevant infrastructure.
Lower-prioritycurrencyrate: propagate http errors to currencyrate rpc if a source is providedby daywalker90 · 97700774 · Jun 10, 2026 · 2 filesMessage 83 · StrongInformational 19Details
Commit message · daywalker90
currencyrate: propagate http errors to currencyrate rpc if a source is provided
specifically coindesk was constantly hitting API rate limits causing our tests to fail so lets unit tests all endpoints with a snapshot of real responses and only allow for http error 401/429 in integration tests
Also fix a flake in test_bkpr_currencyrate_persisted that would pick up a cached rate from CLN's own caching
Changelog-None
83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 19/100
This commit improves error reporting in the currency-rate plugin. Previously, when a price source like CoinDesk returned an HTTP error (for example, rate-limiting or authentication failure), the plugin treated it as a generic failure and did not tell the user what actually went wrong. Now the HTTP status code and response body are passed through to the RPC caller. It also adds unit tests using saved real-world API responses and fixes a flaky test by waiting out an internal cache. There is no indication this fixes an exploitable vulnerability; it is a reliability and diagnostics improvement.
Lower-prioritydocker: Fix base image inconsistency in reprobuild for noble and resoluteby ShahanaFarooqui · 0b43e919 · Jun 10, 2026 · 3 filesMessage 73 · AdequateInformational 17Details
Commit message · ShahanaFarooqui
docker: Fix base image inconsistency in reprobuild for noble and resolute
Switch `Dockerfile.noble` and `Dockerfile.resolute` to noble / resolute to match the debootstrap-based minimal image approach.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 17/100
This commit adjusts the reproducible build Dockerfiles for Core Lightning so they use a locally-built minimal base image named 'noble' or 'resolute' instead of the official Ubuntu Docker Hub images. It also updates expected package checksums and adds the 'universe' software repository. There is no direct security vulnerability in the diff itself; it is a build-maintenance change aimed at making builds more consistent and reproducible.
Security candidatetools: Fix `sign` and `docker` target detection when passed as single argumentby ShahanaFarooqui · 19992371 · Jun 10, 2026 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · ShahanaFarooqui
tools: Fix `sign` and `docker` target detection when passed as single argument
The sign target detection uses pattern matching that requires spaces on both sides of "sign" in the TARGETS variable. When only "sign" is passed as an argument, TARGETS becomes " sign" (leading space only), causing the condition to fail.
Add an additional pattern match to detect "sign" with a leading space but no trailing space, which occurs when "sign" is the only target or the last target in the list.
This regression seems to have been exposed by GitHub Actions runner updates (Ubuntu 22.04 → 24.04), which changed argument passing behavior.
Changelog-None: Fixes the release signing issue in CI only.
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 boundary
AI analysis · Informational 15/100
This commit fixes a shell-script pattern-matching bug in the release build tool. When a maintainer ran the release script with only 'sign' or 'docker' as the target, the script failed to detect it because it expected spaces on both sides of the word. The fix adds an extra check for when the word appears at the end of the target list. It is a CI/release workflow bug, not a vulnerability in the Lightning node software itself.
Lower-prioritypytest: fix broken test_pay_bolt11_metadataby Rusty Russell · d07eb809 · Jun 9, 2026 · 1 fileMessage 58 · ThinInformational 15Details
Commit message · Rusty Russell
pytest: fix broken test_pay_bolt11_metadata
It uses a canned, but now expired invoice. Instead, use bolt11-cli to add metadata to an existing invoice.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit fixes a failing test in the Core Lightning test suite. The test previously relied on a hard-coded invoice that has now expired, causing automated tests to fail. The update dynamically generates a fresh invoice and adds payment metadata using a developer tool. There is no security vulnerability or product code change here—only a test maintenance fix.
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundarydocumentation-only discount
AI analysis · Informational 15/100
This commit simply adds a new developer's PGP public key to the project's list of trusted signing keys. It is an administrative/key-management change, not a code change, and introduces no security vulnerability.
✓ 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 updates the project's release notes in CHANGELOG.md. It documents that version 26.06.1 fixes a plugin registration problem and corrects the configuration option name for the new bwatch plugin. There are no code changes and no security issue is described.
plugins: rename bwatch output binary to cln-bwatch
The bwatch plugin lived in plugins/bwatch/ and output its binary as plugins/bwatch/bwatch. This caused make install to install it flat as <plugindir>/bwatch, while lightningd expected it at <plugindir>/bwatch/bwatch, so plugin registration failed at startup with "failed to register plugin".
Fix by renaming the output to plugins/cln-bwatch, following the same convention as cln-renepay, cln-xpay and cln-askrene.
Changelog-Fixed: bwatch plugin failed to register on startup after make install
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 20/100
This commit fixes a build/installation bug where a newly added plugin, bwatch, was not being registered when Core Lightning started after running 'make install'. The plugin's binary was being installed to the wrong path, so lightningd could not find it. The fix renames the plugin binary to follow the same naming convention as other plugins. There is no security vulnerability here—just a packaging/startup bug.
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarydocumentation-only discount
AI analysis · Informational 15/100
This commit simply adds a new developer's PGP public key to the project's list of trusted signing keys. It is an administrative/key-management change, not a code change, and introduces no security vulnerability by itself.
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100
This commit simply updates the project's security contact information. It removes a personal email address (rusty@rustcorp.com.au) and keeps only the corporate security address (security@blockstream.com). There is no code change, no vulnerability fix, and no security flaw introduced.
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundarydocumentation-only discount
AI analysis · Informational 15/100
This commit simply adds a new developer's PGP public key to the project's list of trusted signing keys. It is an administrative/key-management change, not a code change, and introduces no security vulnerability by itself.
AI review queuedrelease: prepare v26.06by Madeline · a98d2e46 · Jun 4, 2026 · 9 filesMessage 28 · OpaqueInformational 15Details
Commit message · Madeline
release: prepare v26.06
28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit is a routine release version bump from 'v26.06rc2' (release candidate 2) to 'v26.06' (final release). It only changes version strings in packaging files and contains no code logic changes, bug fixes, or security-related modifications.
AI review queuedDescribe the changeby Madeline · 55617a52 · Jun 1, 2026 · 1 fileMessage 28 · OpaqueInformational 23Details
Commit message · Madeline
Describe the change
28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
This commit only edits the project's CHANGELOG.md file. It adds a one-line note saying the xpay plugin no longer crashes when handling circular route hints in bolt11 invoices, and adds a link to pull request #9174. The actual code fix is not present in this commit, so we can only judge the issue from the changelog description: a crash bug in a payment plugin triggered by unusual invoice route hints.
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100
This commit is a routine update to the Rust dependency lock file (Cargo.lock). It bumps many third-party libraries to their latest compatible patch or minor versions, including Bitcoin-related crates, HTTP libraries, and various utility crates. There is no indication in the commit message or diff that this update fixes any specific security vulnerability, and no security advisory references are provided.
AI review queuedxpay: don't crash on circular routehints.by Rusty Russell · 703d737d · Jun 1, 2026 · 9 filesMessage 68 · AdequateLow 45Details
Commit message · Rusty Russell
xpay: don't crash on circular routehints.
We earlier fixed the cases of gossipd inserting a same-node channel, but didn't prevent it for local modifications:
Reported-by: Won Hoi Kim and Ahmad Elmoursi Changelog-Fixed: Plugins: xpay no longer crashes on circular bolt11 routehints. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Low 45/100
This commit fixes a crash in Core Lightning's xpay plugin. When processing a BOLT11 invoice containing a circular route hint (where the start and end node are the same), the code would create an invalid self-loop channel and trigger a fatal assertion failure, killing the cln-askrene process. The patch rejects such self-loop channels at multiple layers so the payment plugin can skip them gracefully instead of crashing.