Skip to content

Restore splice coverage in chanmon_consistency fuzz target - #4634

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing
May 22, 2026
Merged

Restore splice coverage in chanmon_consistency fuzz target#4634
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing

Conversation

@wpaulino

@wpaulinowpaulino commented May 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#4502
Fixes#4504
Fixes#4581

In certain cases, we may need to terminate quiescence as a result of
some error via a `ChannelError::WarnAndDisconnect`. We don't need to
necessarily reconnect the peers, so we choose to manually terminate
quiescence via the existing `ChannelManager::exit_quiescence` test
helper.
This removes the temporary cfg flag that was added while the splice
fuzzer was broken. We also include coverage for the newly supported
async signing of a splice's shared input.
@wpaulinowpaulino added this to the 0.3 milestone May 22, 2026
@wpaulino
wpaulino requested a review from TheBlueMattMay 22, 2026 21:52
@wpaulinowpaulino self-assigned this May 22, 2026
@ldk-reviews-bot

ldk-reviews-bot commented May 22, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-claude-review-bot

Copy link
Copy Markdown
Collaborator

After a thorough review of every file and hunk in this diff, I found no bugs, security vulnerabilities, or logic errors.

Summary of review:

No issues found.

The PR makes consistent, well-structured changes:

  • Removes cfg(splicing) gating to always enable splice coverage in the fuzz target
  • Adds SignSpliceSharedInput to supported signer ops with matching fuzz opcodes (0xcf-0xd2) following the existing 4-opcode-per-op pattern
  • Refactors assert_action_timeout_awaiting_responseassert_disconnect_action to detect and handle quiescence-related disconnect warnings, correctly calling exit_quiescence on both sides of the channel
  • Fixes fuzz build warnings by properly gating time-related imports/exports with not(fuzzing), consistent with existing usage sites that already had these guards
  • Minor cleanup: unused Filter import removal, encrypt_message visibility tightening to pub(crate)

let (msg, is_quiescent) = assert_disconnect_action(action);
let dest_idx = log_peer_message(node_idx, node_id, nodes, out, "warning");
if is_quiescent {
nodes[node_idx].node.exit_quiescence(node_id, &msg.channel_id).unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just actually disconnect in this case and drop the manual exit_quiescence method?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually use exit_quiescence in production code now. I chose to use it here rather than disconnecting because we're in the middle of the fuzz settle loop and wanted to avoid taking on more complexity.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt
TheBlueMatt merged commit 090e09f into lightningdevkit:mainMay 22, 2026
20 checks passed
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Landing, but one comment that might be nice to address.

@codecov

codecovBot commented May 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.74%. Comparing base (4fac0fe) to head (f0ce340).
⚠️ Report is 24 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #4634 +/- ##
==========================================
+ Coverage 86.69% 86.74% +0.05% 
==========================================
Files 159 159 Lines 110604 110713 +109 Branches 110604 110713 +109 ==========================================
+ Hits 95888 96041 +153 + Misses 12198 12165 -33 + Partials 2518 2507 -11 
FlagCoverage Δ
fuzzing-fake-hashes7.01% <0.00%> (-0.02%)⬇️
fuzzing-real-hashes29.42% <0.00%> (+6.14%)⬆️
tests86.26% <100.00%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wpaulino
wpaulino deleted the restore-splicing-fuzzing branch May 23, 2026 01:52
@joostjagerjoostjager mentioned this pull request May 26, 2026
@joostjager

joostjager commented May 26, 2026

Copy link
Copy Markdown
Contributor

Quite a few failures introduced: #4636

I'd strongly suggest reverting this PR.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants

@wpaulino@ldk-reviews-bot@ldk-claude-review-bot@TheBlueMatt@joostjager
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Restore splice coverage in chanmon_consistency fuzz target by wpaulino · Pull Request #4634 · lightningdevkit/rust-lightning · GitHub
Skip to content

Restore splice coverage in chanmon_consistency fuzz target - #4634

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing
May 22, 2026
Merged

Restore splice coverage in chanmon_consistency fuzz target#4634
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing

Conversation

@wpaulino

@wpaulinowpaulino commented May 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#4502
Fixes#4504
Fixes#4581

In certain cases, we may need to terminate quiescence as a result of
some error via a `ChannelError::WarnAndDisconnect`. We don't need to
necessarily reconnect the peers, so we choose to manually terminate
quiescence via the existing `ChannelManager::exit_quiescence` test
helper.
This removes the temporary cfg flag that was added while the splice
fuzzer was broken. We also include coverage for the newly supported
async signing of a splice's shared input.
@wpaulinowpaulino added this to the 0.3 milestone May 22, 2026
@wpaulino
wpaulino requested a review from TheBlueMattMay 22, 2026 21:52
@wpaulinowpaulino self-assigned this May 22, 2026
@ldk-reviews-bot

ldk-reviews-bot commented May 22, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-claude-review-bot

Copy link
Copy Markdown
Collaborator

After a thorough review of every file and hunk in this diff, I found no bugs, security vulnerabilities, or logic errors.

Summary of review:

No issues found.

The PR makes consistent, well-structured changes:

  • Removes cfg(splicing) gating to always enable splice coverage in the fuzz target
  • Adds SignSpliceSharedInput to supported signer ops with matching fuzz opcodes (0xcf-0xd2) following the existing 4-opcode-per-op pattern
  • Refactors assert_action_timeout_awaiting_responseassert_disconnect_action to detect and handle quiescence-related disconnect warnings, correctly calling exit_quiescence on both sides of the channel
  • Fixes fuzz build warnings by properly gating time-related imports/exports with not(fuzzing), consistent with existing usage sites that already had these guards
  • Minor cleanup: unused Filter import removal, encrypt_message visibility tightening to pub(crate)

let (msg, is_quiescent) = assert_disconnect_action(action);
let dest_idx = log_peer_message(node_idx, node_id, nodes, out, "warning");
if is_quiescent {
nodes[node_idx].node.exit_quiescence(node_id, &msg.channel_id).unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just actually disconnect in this case and drop the manual exit_quiescence method?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually use exit_quiescence in production code now. I chose to use it here rather than disconnecting because we're in the middle of the fuzz settle loop and wanted to avoid taking on more complexity.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt
TheBlueMatt merged commit 090e09f into lightningdevkit:mainMay 22, 2026
20 checks passed
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Landing, but one comment that might be nice to address.

@codecov

codecovBot commented May 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.74%. Comparing base (4fac0fe) to head (f0ce340).
⚠️ Report is 24 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #4634 +/- ##
==========================================
+ Coverage 86.69% 86.74% +0.05% 
==========================================
Files 159 159 Lines 110604 110713 +109 Branches 110604 110713 +109 ==========================================
+ Hits 95888 96041 +153 + Misses 12198 12165 -33 + Partials 2518 2507 -11 
FlagCoverage Δ
fuzzing-fake-hashes7.01% <0.00%> (-0.02%)⬇️
fuzzing-real-hashes29.42% <0.00%> (+6.14%)⬆️
tests86.26% <100.00%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wpaulino
wpaulino deleted the restore-splicing-fuzzing branch May 23, 2026 01:52
@joostjagerjoostjager mentioned this pull request May 26, 2026
@joostjager

joostjager commented May 26, 2026

Copy link
Copy Markdown
Contributor

Quite a few failures introduced: #4636

I'd strongly suggest reverting this PR.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants

@wpaulino@ldk-reviews-bot@ldk-claude-review-bot@TheBlueMatt@joostjager
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Restore splice coverage in chanmon_consistency fuzz target by wpaulino · Pull Request #4634 · lightningdevkit/rust-lightning · GitHub
Skip to content

Restore splice coverage in chanmon_consistency fuzz target - #4634

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing
May 22, 2026
Merged

Restore splice coverage in chanmon_consistency fuzz target#4634
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing

Conversation

@wpaulino

@wpaulinowpaulino commented May 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#4502
Fixes#4504
Fixes#4581

In certain cases, we may need to terminate quiescence as a result of
some error via a `ChannelError::WarnAndDisconnect`. We don't need to
necessarily reconnect the peers, so we choose to manually terminate
quiescence via the existing `ChannelManager::exit_quiescence` test
helper.
This removes the temporary cfg flag that was added while the splice
fuzzer was broken. We also include coverage for the newly supported
async signing of a splice's shared input.
@wpaulinowpaulino added this to the 0.3 milestone May 22, 2026
@wpaulino
wpaulino requested a review from TheBlueMattMay 22, 2026 21:52
@wpaulinowpaulino self-assigned this May 22, 2026
@ldk-reviews-bot

ldk-reviews-bot commented May 22, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-claude-review-bot

Copy link
Copy Markdown
Collaborator

After a thorough review of every file and hunk in this diff, I found no bugs, security vulnerabilities, or logic errors.

Summary of review:

No issues found.

The PR makes consistent, well-structured changes:

  • Removes cfg(splicing) gating to always enable splice coverage in the fuzz target
  • Adds SignSpliceSharedInput to supported signer ops with matching fuzz opcodes (0xcf-0xd2) following the existing 4-opcode-per-op pattern
  • Refactors assert_action_timeout_awaiting_responseassert_disconnect_action to detect and handle quiescence-related disconnect warnings, correctly calling exit_quiescence on both sides of the channel
  • Fixes fuzz build warnings by properly gating time-related imports/exports with not(fuzzing), consistent with existing usage sites that already had these guards
  • Minor cleanup: unused Filter import removal, encrypt_message visibility tightening to pub(crate)

let (msg, is_quiescent) = assert_disconnect_action(action);
let dest_idx = log_peer_message(node_idx, node_id, nodes, out, "warning");
if is_quiescent {
nodes[node_idx].node.exit_quiescence(node_id, &msg.channel_id).unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just actually disconnect in this case and drop the manual exit_quiescence method?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually use exit_quiescence in production code now. I chose to use it here rather than disconnecting because we're in the middle of the fuzz settle loop and wanted to avoid taking on more complexity.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt
TheBlueMatt merged commit 090e09f into lightningdevkit:mainMay 22, 2026
20 checks passed
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Landing, but one comment that might be nice to address.

@codecov

codecovBot commented May 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.74%. Comparing base (4fac0fe) to head (f0ce340).
⚠️ Report is 24 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #4634 +/- ##
==========================================
+ Coverage 86.69% 86.74% +0.05% 
==========================================
Files 159 159 Lines 110604 110713 +109 Branches 110604 110713 +109 ==========================================
+ Hits 95888 96041 +153 + Misses 12198 12165 -33 + Partials 2518 2507 -11 
FlagCoverage Δ
fuzzing-fake-hashes7.01% <0.00%> (-0.02%)⬇️
fuzzing-real-hashes29.42% <0.00%> (+6.14%)⬆️
tests86.26% <100.00%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wpaulino
wpaulino deleted the restore-splicing-fuzzing branch May 23, 2026 01:52
@joostjagerjoostjager mentioned this pull request May 26, 2026
@joostjager

joostjager commented May 26, 2026

Copy link
Copy Markdown
Contributor

Quite a few failures introduced: #4636

I'd strongly suggest reverting this PR.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants

@wpaulino@ldk-reviews-bot@ldk-claude-review-bot@TheBlueMatt@joostjager
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Restore splice coverage in chanmon_consistency fuzz target by wpaulino · Pull Request #4634 · lightningdevkit/rust-lightning · GitHub
Skip to content

Restore splice coverage in chanmon_consistency fuzz target - #4634

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing
May 22, 2026
Merged

Restore splice coverage in chanmon_consistency fuzz target#4634
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing

Conversation

@wpaulino

@wpaulinowpaulino commented May 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#4502
Fixes#4504
Fixes#4581

In certain cases, we may need to terminate quiescence as a result of
some error via a `ChannelError::WarnAndDisconnect`. We don't need to
necessarily reconnect the peers, so we choose to manually terminate
quiescence via the existing `ChannelManager::exit_quiescence` test
helper.
This removes the temporary cfg flag that was added while the splice
fuzzer was broken. We also include coverage for the newly supported
async signing of a splice's shared input.
@wpaulinowpaulino added this to the 0.3 milestone May 22, 2026
@wpaulino
wpaulino requested a review from TheBlueMattMay 22, 2026 21:52
@wpaulinowpaulino self-assigned this May 22, 2026
@ldk-reviews-bot

ldk-reviews-bot commented May 22, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-claude-review-bot

Copy link
Copy Markdown
Collaborator

After a thorough review of every file and hunk in this diff, I found no bugs, security vulnerabilities, or logic errors.

Summary of review:

No issues found.

The PR makes consistent, well-structured changes:

  • Removes cfg(splicing) gating to always enable splice coverage in the fuzz target
  • Adds SignSpliceSharedInput to supported signer ops with matching fuzz opcodes (0xcf-0xd2) following the existing 4-opcode-per-op pattern
  • Refactors assert_action_timeout_awaiting_responseassert_disconnect_action to detect and handle quiescence-related disconnect warnings, correctly calling exit_quiescence on both sides of the channel
  • Fixes fuzz build warnings by properly gating time-related imports/exports with not(fuzzing), consistent with existing usage sites that already had these guards
  • Minor cleanup: unused Filter import removal, encrypt_message visibility tightening to pub(crate)

let (msg, is_quiescent) = assert_disconnect_action(action);
let dest_idx = log_peer_message(node_idx, node_id, nodes, out, "warning");
if is_quiescent {
nodes[node_idx].node.exit_quiescence(node_id, &msg.channel_id).unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just actually disconnect in this case and drop the manual exit_quiescence method?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually use exit_quiescence in production code now. I chose to use it here rather than disconnecting because we're in the middle of the fuzz settle loop and wanted to avoid taking on more complexity.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt
TheBlueMatt merged commit 090e09f into lightningdevkit:mainMay 22, 2026
20 checks passed
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Landing, but one comment that might be nice to address.

@codecov

codecovBot commented May 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.74%. Comparing base (4fac0fe) to head (f0ce340).
⚠️ Report is 24 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #4634 +/- ##
==========================================
+ Coverage 86.69% 86.74% +0.05% 
==========================================
Files 159 159 Lines 110604 110713 +109 Branches 110604 110713 +109 ==========================================
+ Hits 95888 96041 +153 + Misses 12198 12165 -33 + Partials 2518 2507 -11 
FlagCoverage Δ
fuzzing-fake-hashes7.01% <0.00%> (-0.02%)⬇️
fuzzing-real-hashes29.42% <0.00%> (+6.14%)⬆️
tests86.26% <100.00%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wpaulino
wpaulino deleted the restore-splicing-fuzzing branch May 23, 2026 01:52
@joostjagerjoostjager mentioned this pull request May 26, 2026
@joostjager

joostjager commented May 26, 2026

Copy link
Copy Markdown
Contributor

Quite a few failures introduced: #4636

I'd strongly suggest reverting this PR.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants

@wpaulino@ldk-reviews-bot@ldk-claude-review-bot@TheBlueMatt@joostjager
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Restore splice coverage in chanmon_consistency fuzz target by wpaulino · Pull Request #4634 · lightningdevkit/rust-lightning · GitHub
Skip to content

Restore splice coverage in chanmon_consistency fuzz target - #4634

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing
May 22, 2026
Merged

Restore splice coverage in chanmon_consistency fuzz target#4634
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing

Conversation

@wpaulino

@wpaulinowpaulino commented May 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#4502
Fixes#4504
Fixes#4581

In certain cases, we may need to terminate quiescence as a result of
some error via a `ChannelError::WarnAndDisconnect`. We don't need to
necessarily reconnect the peers, so we choose to manually terminate
quiescence via the existing `ChannelManager::exit_quiescence` test
helper.
This removes the temporary cfg flag that was added while the splice
fuzzer was broken. We also include coverage for the newly supported
async signing of a splice's shared input.
@wpaulinowpaulino added this to the 0.3 milestone May 22, 2026
@wpaulino
wpaulino requested a review from TheBlueMattMay 22, 2026 21:52
@wpaulinowpaulino self-assigned this May 22, 2026
@ldk-reviews-bot

ldk-reviews-bot commented May 22, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-claude-review-bot

Copy link
Copy Markdown
Collaborator

After a thorough review of every file and hunk in this diff, I found no bugs, security vulnerabilities, or logic errors.

Summary of review:

No issues found.

The PR makes consistent, well-structured changes:

  • Removes cfg(splicing) gating to always enable splice coverage in the fuzz target
  • Adds SignSpliceSharedInput to supported signer ops with matching fuzz opcodes (0xcf-0xd2) following the existing 4-opcode-per-op pattern
  • Refactors assert_action_timeout_awaiting_responseassert_disconnect_action to detect and handle quiescence-related disconnect warnings, correctly calling exit_quiescence on both sides of the channel
  • Fixes fuzz build warnings by properly gating time-related imports/exports with not(fuzzing), consistent with existing usage sites that already had these guards
  • Minor cleanup: unused Filter import removal, encrypt_message visibility tightening to pub(crate)

let (msg, is_quiescent) = assert_disconnect_action(action);
let dest_idx = log_peer_message(node_idx, node_id, nodes, out, "warning");
if is_quiescent {
nodes[node_idx].node.exit_quiescence(node_id, &msg.channel_id).unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just actually disconnect in this case and drop the manual exit_quiescence method?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually use exit_quiescence in production code now. I chose to use it here rather than disconnecting because we're in the middle of the fuzz settle loop and wanted to avoid taking on more complexity.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt
TheBlueMatt merged commit 090e09f into lightningdevkit:mainMay 22, 2026
20 checks passed
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Landing, but one comment that might be nice to address.

@codecov

codecovBot commented May 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.74%. Comparing base (4fac0fe) to head (f0ce340).
⚠️ Report is 24 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #4634 +/- ##
==========================================
+ Coverage 86.69% 86.74% +0.05% 
==========================================
Files 159 159 Lines 110604 110713 +109 Branches 110604 110713 +109 ==========================================
+ Hits 95888 96041 +153 + Misses 12198 12165 -33 + Partials 2518 2507 -11 
FlagCoverage Δ
fuzzing-fake-hashes7.01% <0.00%> (-0.02%)⬇️
fuzzing-real-hashes29.42% <0.00%> (+6.14%)⬆️
tests86.26% <100.00%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wpaulino
wpaulino deleted the restore-splicing-fuzzing branch May 23, 2026 01:52
@joostjagerjoostjager mentioned this pull request May 26, 2026
@joostjager

joostjager commented May 26, 2026

Copy link
Copy Markdown
Contributor

Quite a few failures introduced: #4636

I'd strongly suggest reverting this PR.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants

@wpaulino@ldk-reviews-bot@ldk-claude-review-bot@TheBlueMatt@joostjager
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Restore splice coverage in chanmon_consistency fuzz target by wpaulino · Pull Request #4634 · lightningdevkit/rust-lightning · GitHub
Skip to content

Restore splice coverage in chanmon_consistency fuzz target - #4634

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing
May 22, 2026
Merged

Restore splice coverage in chanmon_consistency fuzz target#4634
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing

Conversation

@wpaulino

@wpaulinowpaulino commented May 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#4502
Fixes#4504
Fixes#4581

In certain cases, we may need to terminate quiescence as a result of
some error via a `ChannelError::WarnAndDisconnect`. We don't need to
necessarily reconnect the peers, so we choose to manually terminate
quiescence via the existing `ChannelManager::exit_quiescence` test
helper.
This removes the temporary cfg flag that was added while the splice
fuzzer was broken. We also include coverage for the newly supported
async signing of a splice's shared input.
@wpaulinowpaulino added this to the 0.3 milestone May 22, 2026
@wpaulino
wpaulino requested a review from TheBlueMattMay 22, 2026 21:52
@wpaulinowpaulino self-assigned this May 22, 2026
@ldk-reviews-bot

ldk-reviews-bot commented May 22, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-claude-review-bot

Copy link
Copy Markdown
Collaborator

After a thorough review of every file and hunk in this diff, I found no bugs, security vulnerabilities, or logic errors.

Summary of review:

No issues found.

The PR makes consistent, well-structured changes:

  • Removes cfg(splicing) gating to always enable splice coverage in the fuzz target
  • Adds SignSpliceSharedInput to supported signer ops with matching fuzz opcodes (0xcf-0xd2) following the existing 4-opcode-per-op pattern
  • Refactors assert_action_timeout_awaiting_responseassert_disconnect_action to detect and handle quiescence-related disconnect warnings, correctly calling exit_quiescence on both sides of the channel
  • Fixes fuzz build warnings by properly gating time-related imports/exports with not(fuzzing), consistent with existing usage sites that already had these guards
  • Minor cleanup: unused Filter import removal, encrypt_message visibility tightening to pub(crate)

let (msg, is_quiescent) = assert_disconnect_action(action);
let dest_idx = log_peer_message(node_idx, node_id, nodes, out, "warning");
if is_quiescent {
nodes[node_idx].node.exit_quiescence(node_id, &msg.channel_id).unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just actually disconnect in this case and drop the manual exit_quiescence method?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually use exit_quiescence in production code now. I chose to use it here rather than disconnecting because we're in the middle of the fuzz settle loop and wanted to avoid taking on more complexity.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt
TheBlueMatt merged commit 090e09f into lightningdevkit:mainMay 22, 2026
20 checks passed
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Landing, but one comment that might be nice to address.

@codecov

codecovBot commented May 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.74%. Comparing base (4fac0fe) to head (f0ce340).
⚠️ Report is 24 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #4634 +/- ##
==========================================
+ Coverage 86.69% 86.74% +0.05% 
==========================================
Files 159 159 Lines 110604 110713 +109 Branches 110604 110713 +109 ==========================================
+ Hits 95888 96041 +153 + Misses 12198 12165 -33 + Partials 2518 2507 -11 
FlagCoverage Δ
fuzzing-fake-hashes7.01% <0.00%> (-0.02%)⬇️
fuzzing-real-hashes29.42% <0.00%> (+6.14%)⬆️
tests86.26% <100.00%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wpaulino
wpaulino deleted the restore-splicing-fuzzing branch May 23, 2026 01:52
@joostjagerjoostjager mentioned this pull request May 26, 2026
@joostjager

joostjager commented May 26, 2026

Copy link
Copy Markdown
Contributor

Quite a few failures introduced: #4636

I'd strongly suggest reverting this PR.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants

@wpaulino@ldk-reviews-bot@ldk-claude-review-bot@TheBlueMatt@joostjager
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Restore splice coverage in chanmon_consistency fuzz target by wpaulino · Pull Request #4634 · lightningdevkit/rust-lightning · GitHub
Skip to content

Restore splice coverage in chanmon_consistency fuzz target - #4634

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing
May 22, 2026
Merged

Restore splice coverage in chanmon_consistency fuzz target#4634
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing

Conversation

@wpaulino

@wpaulinowpaulino commented May 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#4502
Fixes#4504
Fixes#4581

In certain cases, we may need to terminate quiescence as a result of
some error via a `ChannelError::WarnAndDisconnect`. We don't need to
necessarily reconnect the peers, so we choose to manually terminate
quiescence via the existing `ChannelManager::exit_quiescence` test
helper.
This removes the temporary cfg flag that was added while the splice
fuzzer was broken. We also include coverage for the newly supported
async signing of a splice's shared input.
@wpaulinowpaulino added this to the 0.3 milestone May 22, 2026
@wpaulino
wpaulino requested a review from TheBlueMattMay 22, 2026 21:52
@wpaulinowpaulino self-assigned this May 22, 2026
@ldk-reviews-bot

ldk-reviews-bot commented May 22, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-claude-review-bot

Copy link
Copy Markdown
Collaborator

After a thorough review of every file and hunk in this diff, I found no bugs, security vulnerabilities, or logic errors.

Summary of review:

No issues found.

The PR makes consistent, well-structured changes:

  • Removes cfg(splicing) gating to always enable splice coverage in the fuzz target
  • Adds SignSpliceSharedInput to supported signer ops with matching fuzz opcodes (0xcf-0xd2) following the existing 4-opcode-per-op pattern
  • Refactors assert_action_timeout_awaiting_responseassert_disconnect_action to detect and handle quiescence-related disconnect warnings, correctly calling exit_quiescence on both sides of the channel
  • Fixes fuzz build warnings by properly gating time-related imports/exports with not(fuzzing), consistent with existing usage sites that already had these guards
  • Minor cleanup: unused Filter import removal, encrypt_message visibility tightening to pub(crate)

let (msg, is_quiescent) = assert_disconnect_action(action);
let dest_idx = log_peer_message(node_idx, node_id, nodes, out, "warning");
if is_quiescent {
nodes[node_idx].node.exit_quiescence(node_id, &msg.channel_id).unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just actually disconnect in this case and drop the manual exit_quiescence method?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually use exit_quiescence in production code now. I chose to use it here rather than disconnecting because we're in the middle of the fuzz settle loop and wanted to avoid taking on more complexity.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt
TheBlueMatt merged commit 090e09f into lightningdevkit:mainMay 22, 2026
20 checks passed
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Landing, but one comment that might be nice to address.

@codecov

codecovBot commented May 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.74%. Comparing base (4fac0fe) to head (f0ce340).
⚠️ Report is 24 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #4634 +/- ##
==========================================
+ Coverage 86.69% 86.74% +0.05% 
==========================================
Files 159 159 Lines 110604 110713 +109 Branches 110604 110713 +109 ==========================================
+ Hits 95888 96041 +153 + Misses 12198 12165 -33 + Partials 2518 2507 -11 
FlagCoverage Δ
fuzzing-fake-hashes7.01% <0.00%> (-0.02%)⬇️
fuzzing-real-hashes29.42% <0.00%> (+6.14%)⬆️
tests86.26% <100.00%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wpaulino
wpaulino deleted the restore-splicing-fuzzing branch May 23, 2026 01:52
@joostjagerjoostjager mentioned this pull request May 26, 2026
@joostjager

joostjager commented May 26, 2026

Copy link
Copy Markdown
Contributor

Quite a few failures introduced: #4636

I'd strongly suggest reverting this PR.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants

@wpaulino@ldk-reviews-bot@ldk-claude-review-bot@TheBlueMatt@joostjager
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Restore splice coverage in chanmon_consistency fuzz target by wpaulino · Pull Request #4634 · lightningdevkit/rust-lightning · GitHub
Skip to content

Restore splice coverage in chanmon_consistency fuzz target - #4634

Merged
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing
May 22, 2026
Merged

Restore splice coverage in chanmon_consistency fuzz target#4634
TheBlueMatt merged 3 commits into
lightningdevkit:mainfrom
wpaulino:restore-splicing-fuzzing

Conversation

@wpaulino

@wpaulinowpaulino commented May 22, 2026

Copy link
Copy Markdown
Contributor

Fixes#4502
Fixes#4504
Fixes#4581

In certain cases, we may need to terminate quiescence as a result of
some error via a `ChannelError::WarnAndDisconnect`. We don't need to
necessarily reconnect the peers, so we choose to manually terminate
quiescence via the existing `ChannelManager::exit_quiescence` test
helper.
This removes the temporary cfg flag that was added while the splice
fuzzer was broken. We also include coverage for the newly supported
async signing of a splice's shared input.
@wpaulinowpaulino added this to the 0.3 milestone May 22, 2026
@wpaulino
wpaulino requested a review from TheBlueMattMay 22, 2026 21:52
@wpaulinowpaulino self-assigned this May 22, 2026
@ldk-reviews-bot

ldk-reviews-bot commented May 22, 2026

Copy link
Copy Markdown

👋 Thanks for assigning @TheBlueMatt as a reviewer!
I'll wait for their review and will help manage the review process.
Once they submit their review, I'll check if a second reviewer would be helpful.

@ldk-claude-review-bot

Copy link
Copy Markdown
Collaborator

After a thorough review of every file and hunk in this diff, I found no bugs, security vulnerabilities, or logic errors.

Summary of review:

No issues found.

The PR makes consistent, well-structured changes:

  • Removes cfg(splicing) gating to always enable splice coverage in the fuzz target
  • Adds SignSpliceSharedInput to supported signer ops with matching fuzz opcodes (0xcf-0xd2) following the existing 4-opcode-per-op pattern
  • Refactors assert_action_timeout_awaiting_responseassert_disconnect_action to detect and handle quiescence-related disconnect warnings, correctly calling exit_quiescence on both sides of the channel
  • Fixes fuzz build warnings by properly gating time-related imports/exports with not(fuzzing), consistent with existing usage sites that already had these guards
  • Minor cleanup: unused Filter import removal, encrypt_message visibility tightening to pub(crate)

let (msg, is_quiescent) = assert_disconnect_action(action);
let dest_idx = log_peer_message(node_idx, node_id, nodes, out, "warning");
if is_quiescent {
nodes[node_idx].node.exit_quiescence(node_id, &msg.channel_id).unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just actually disconnect in this case and drop the manual exit_quiescence method?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We actually use exit_quiescence in production code now. I chose to use it here rather than disconnecting because we're in the middle of the fuzz settle loop and wanted to avoid taking on more complexity.

@ldk-reviews-bot

Copy link
Copy Markdown

👋 The first review has been submitted!

Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer.

@TheBlueMatt
TheBlueMatt merged commit 090e09f into lightningdevkit:mainMay 22, 2026
20 checks passed
@TheBlueMatt

Copy link
Copy Markdown
Collaborator

Landing, but one comment that might be nice to address.

@codecov

codecovBot commented May 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.74%. Comparing base (4fac0fe) to head (f0ce340).
⚠️ Report is 24 commits behind head on main.

Additional details and impacted files
@@ Coverage Diff @@## main #4634 +/- ##
==========================================
+ Coverage 86.69% 86.74% +0.05% 
==========================================
Files 159 159 Lines 110604 110713 +109 Branches 110604 110713 +109 ==========================================
+ Hits 95888 96041 +153 + Misses 12198 12165 -33 + Partials 2518 2507 -11 
FlagCoverage Δ
fuzzing-fake-hashes7.01% <0.00%> (-0.02%)⬇️
fuzzing-real-hashes29.42% <0.00%> (+6.14%)⬆️
tests86.26% <100.00%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wpaulino
wpaulino deleted the restore-splicing-fuzzing branch May 23, 2026 01:52
@joostjagerjoostjager mentioned this pull request May 26, 2026
@joostjager

joostjager commented May 26, 2026

Copy link
Copy Markdown
Contributor

Quite a few failures introduced: #4636

I'd strongly suggest reverting this PR.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

5 participants

@wpaulino@ldk-reviews-bot@ldk-claude-review-bot@TheBlueMatt@joostjager