Skip to content

Fix fork CI - #9

Merged
kaloudis merged 9 commits into
zeusfrom
ci/fix-fork-ci-zeus
Oct 3, 2026
Merged

kaloudis merged 9 commits into
zeusfrom
ci/fix-fork-ci-zeus

Conversation

@kaloudis

@kaloudis kaloudis commented Oct 2, 2026

Copy link
Copy Markdown

CI on the fork has been failing on every workflow except Swift, Benchmarks and SemVer. This makes all nine workflows pass again on zeus. #8 will be rebased on top of this afterwards.

The upstream base (0.7.0-rc.1, 3ed1d13) passed all of these jobs upstream. Most of the failures came from fork changes; three came from external changes since then.

Caused by fork changes:

  • rustfmt: fork-modified files weren't formatted. cargo fmt only, no code changes.
  • -D warnings uniffi build: lib.rs imports bitcoin::OutPoint directly (added with the coin control work), which shadows the ffi re-export and leaves it unused under --features uniffi. I dropped the re-export.
  • Documentation: public DualStore docs linked to the private vss_push_verdict, and rustdoc::private_intra_doc_links is denied.
  • Stale send call sites: payment_timeout_secs (c38d28f) was never threaded through the tests. I updated the Rust integration tests and benches (cherry-picked from 02c62cb on Re-pin rust-lightning to zeus-0.2 (v0.2.5 + Zeus patches) #5, conflict hunks only), the CLN and LND integration tests, the Kotlin and Python binding tests, the crate-level doctest and the README.

External drift:

  • vss-server moved out of rust/: backport of upstream bfad8e6.
  • vss-server requires auth by default: since vss-server 52fd919 it accepts unauthenticated requests only when built with --cfg noop_authorizer. The fork's VSS tests send no auth, so CI now starts the server the way upstream's no-auth workflow does. Upstream moved its own tests to signature auth (e4da11e), which needs VssStore changes this fork doesn't have.
  • Rust 1.99 rejects trailing semicolons in macros used in expression position, which breaks the -D warnings build on stable. The untouched upstream base fails the same way. This uses the same approach as upstream b6e37fa, applied by hand because it doesn't cherry-pick onto this base.

Testing:

  • Local: cargo fmt --check. The -D warnings build passes with and without uniffi on 1.99.0 and 1.85.0 (MSRV), and the -D warnings uniffi release check passes. cargo doc is clean, lib tests pass 23/23, doctests 2/2, and all test and bench targets compile.
  • CI: the same fixes, stacked on Re-pin rust-lightning to v0.2.7 + Zeus patches #8 (branch ci/fix-fork-ci), passed all nine workflows. That includes the regtest integration_tests_rust suite (32/32), CLN, LND, VSS, Kotlin, Python and Swift.

…D warnings

lib.rs imports bitcoin::OutPoint directly (added with the coin control
and remote-closed sweep work), which shadows the ffi glob re-export.
Under --features uniffi the re-export is unused, and CI's -D warnings
build fails on it. Both names refer to the same type.
rustdoc::private_intra_doc_links is denied in lib.rs, so cargo doc (and
CI's docs-rs job) fails on these links. Keep the name in code formatting
without the link.
c38d28f added a third payment_timeout_secs parameter to
Bolt11Payment::send, and 02c62cb updated the Rust integration tests and
benches, but the CLN and LND integration tests and the Kotlin and Python
binding tests still called the two-argument form, so check-cln,
check-lnd, check-kotlin and check-python failed to compile or errored.
Backport of upstream bfad8e6: vss-server moved its Rust server out of
the rust/ subdirectory, so the VSS integration job failed at cd.
Rust 1.99 reports trailing semicolons inside macros used in expression
position, which fails CI's -D warnings build on stable. The upstream
0.7.0-rc.1 base fails the same way under 1.99, so this is toolchain
drift, not a fork regression. Same approach as upstream b6e37fa, which
does not cherry-pick cleanly onto this base.
vss-server main gates NoopAuthorizer behind --cfg noop_authorizer
(vss-server 52fd919) and otherwise requires an Authorization header, so
the fork's VSS tests, which send none, fail with 'Authorization header
not found'. Upstream ldk-node moved its tests to signature auth instead
(e4da11e), which depends on VssStore changes this fork does not have.
Start the server the way upstream's no-auth workflow does.
The crate-level example (compiled as a doctest) and the README still
used the two-argument Bolt11Payment::send.
Append the trailing per-call retry-timeout argument (None) at every
bolt11/bolt12/spontaneous send call site in tests/ and benches/.
These targets stopped compiling when the configurable payment retry
timeout parameter was added; with this, cargo check --all-targets is
green again.

(cherry picked from commit 02c62cb)
CI's format check fails on files changed by fork commits; the upstream
base (3ed1d13) is clean under the same rustfmt. Formatting only.
@kaloudis

kaloudis commented Oct 2, 2026

Copy link
Copy Markdown
Author

/athena review

@athena-zeusln athena-zeusln Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Athena Review

Pinned commit: e0e4fd8

anthropic:claude-opus-5-5: completed openai:gpt-6-sol: completed

1 validated findings. This is a nonblocking COMMENT review, not an approval. No findings does not establish correctness.

Limitations:

  • src/lib.rs: patch omitted by context bound
  • src/liquidity.rs: patch omitted by context bound
  • tests/common/mod.rs: patch omitted by context bound
  • tests/integration_tests_cln.rs: patch omitted by context bound
  • tests/integration_tests_lnd.rs: patch omitted by context bound
  • tests/integration_tests_rust.rs: patch omitted by context bound
  • Patches for src/lib.rs, src/liquidity.rs, tests/common/mod.rs, tests/integration_tests_cln.rs, tests/integration_tests_lnd.rs and tests/integration_tests_rust.rs were omitted. API changes behind the new extra None argument to the Bolt11 and spontaneous send calls could not be verified.
  • src/ffi/types.rs drops OutPoint from the public bitcoin re-export. Without the UDL file or the rest of the ffi module, it cannot be confirmed whether OutPoint is still exported for uniffi bindings and downstream users, or whether removing it breaks the bindings.
  • The VSS workflow now builds from the vss-server root with RUSTFLAGS=--cfg=noop\_authorizer and --no-default-features, using the config path server/vss-server-config.toml. No upstream vss-server layout or feature evidence was supplied to confirm this path and these flags are valid for the checked-out revision.
  • The remaining Rust changes appear to be rustfmt-only reformatting, import reordering and rustdoc link-to-code-span edits. No behavioral change was identified in the visible hunks.
  • The omitted src/lib.rs patch prevents verification of whether another OutPoint re-export preserves the API.
  • The VSS server manifest and feature configuration are not supplied, so the workflow command's compatibility with the new working directory cannot be verified.

Comment thread src/ffi/types.rs
use bitcoin::hashes::Hash;
use bitcoin::secp256k1::PublicKey;
pub use bitcoin::{Address, BlockHash, FeeRate, Network, OutPoint, ScriptBuf, Txid};
pub use bitcoin::{Address, BlockHash, FeeRate, Network, ScriptBuf, Txid};

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

MEDIUM: OutPoint public re-export removed

Downstream code importing OutPoint through this public re-export will fail to compile after the removal. Preserve the re-export, or provide a compatible alias if it must move.

Reviewers: openai:gpt-6-sol

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

This doesn't apply. The removed line is not a public export.

  • ffi is a private module (mod ffi; in src/lib.rs), and its contents are only pulled in by a private use ffi::*; under #[cfg(feature = "uniffi")]. No downstream crate could import OutPoint through it.
  • lib.rs also imports bitcoin::OutPoint directly, and that explicit import shadows the glob. That is why rustc reported the ffi re-export as unused under --features uniffi, which failed CI's -D warnings build.
  • The public path is ldk_node::bitcoin::OutPoint, through the existing pub use { bitcoin, ... }. This PR doesn't change it.
  • The UDL OutPoint dictionary still resolves to the same bitcoin::OutPoint through the direct import. check-kotlin, check-python and check-swift pass on this PR.

@kaloudis
kaloudis merged commit f7b7c13 into zeus Oct 3, 2026
36 checks passed
@kaloudis
kaloudis deleted the ci/fix-fork-ci-zeus branch October 3, 2026 00:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant