Skip to content

Conversation

@Bronek
Copy link
Collaborator

@Bronek Bronek commented Oct 27, 2025

High Level Overview of Change

Proposed set of PRs to cherry-pick to release-3.0

This should be manually merged as --ff-only to release-3.0 branch

This PR will be updated/rewritten as we reject/add changes to release

Includes new features, fixes, CI improvements and improvements in unit tests.

5b2ab90 (chore: exclude all UNREACHABLE blocks from codecov (#5846), 2025-10-08)
a34b36e (refactor: Update CI strategy matrix to use new RHEL 9 and RHEL 10 images (#5856), 2025-10-08)
7bc2d5c (chore: Fix release build error (#5864), 2025-10-08)
89d8165 (test: Add more tests for Simulate RPC metadata (#5827), 2025-10-08)
220ab26 (Add vault invariants (#5518), 2025-10-08)
4f076cb (chore: Add wildcard to support triggering for release pipelines (#5879), 2025-10-10)
b444457 (chore: Exclude code/unreachable transaction code from Codecov (#5847), 2025-10-13)
d032bd6 (chore: Support CMake 4 without workarounds (#5866), 2025-10-14)
9907fa0 (refactor: Add paychan namespace and update related tests (#5840), 2025-10-15)
adad20b (docs: Fix typo in JSON writer documentation (#5881), 2025-10-14)
e4b334f (fix: Update tools image shas (#5896), 2025-10-15)
5c3b44d (chore: Reduce build log verbosity on Windows (#5865), 2025-10-15)
eb66ae1 (refactor: replace JSON LastLedgerSequence with last_ledger_seq (#5884), 2025-10-15)
0754cca (refactor: replace boost::lexical_caststd::string with to_string (#5883), 2025-10-16)
a127314 (refactor: replace string JSONs with Json::Value (#5886), 2025-10-16)
97b8f5c (refactor: Update pre-commit workflow to latest version (#5902), 2025-10-17)
51917be (chore: Add support for RHEL 8 (#5880), 2025-10-17)
12fb54c (chore: Clean up Conan variables in CI (#5903), 2025-10-17)
a2594b6 (chore: Set fail fast to false, except for when the merge group is used (#5897), 2025-10-17)
f99c115 (chore: Set explicit timeouts for build and test jobs (#5912), 2025-10-20)
224b055 (chore: remove unnecessary LCOV_EXCL_LINE (#5913), 2025-10-20)
5ebc29c (fix: Enforce reserve when creating trust line or MPToken in VaultWithdraw (#5857), 2025-10-21)
e8069a4 (Use "${ENVVAR}" instead of ${{ env.ENVVAR }} syntax in GitHub Actions (#5923), 2025-10-22)
178f424 (fix: Clean up build profile options (#5934), 2025-10-24)
8ca2140 (chore: Better pre-commit failure message (#5940), 2025-10-27)
9507d9c (fix: Upload all test binaries (#5932), 2025-10-27)
7c8b167 (Change fixMPTDeliveredAmount to Supported::yes (#5833), 2025-10-27)
994b490 (refactor: Migrate json unit tests to use doctest (#5533), 2025-10-28)
a8b1a01 (ci: Only run .exe files during test phase on Windows (#5947), 2025-10-28)
8951419 (fix: invariant error in fee-sized VaultWithdraw (#5876), 2025-10-28)
f38f299 (ci: Only log into Conan when uploading packages (#5952), 2025-10-28)
405575f (ci: Only upload codecov reports in the original repo, not in forks (#5953), 2025-10-28)
6e326e6 (ci: Use commit hash so workflows are not canceled when merging multiple PRs (#5950), 2025-10-28)
da0eff9 (ci: Use nproc-2 to set parallelism for builds and tests (#5939), 2025-10-28)
6b56c80 (chore: Use new prepare-runner (#5970), 2025-10-30)
3eec6ff (ci: Check whether test failures are caused by port exhaustion (#5938), 2025-10-30)
8a6cc3d (fix: Change Credential sfSubjectNode to optional (#5936), 2025-10-30)
4425f84 (Remove directory size limit (#5935), 2025-10-30)
0f1b607 (refactor: Improve txset handling (#5951), 2025-10-31)
9add957 (ci: Update CI image hashes to use netstat (#5987), 2025-11-03)
102a89f (test: Count crashed test suites (#5924), 2025-10-31)
ee2dff3 (fix: domain order book insertion #5998, 2025-11-05)
2a2881e (chore: Unify build & test, add ctest to coverage (#6013), 2025-11-10)
f1dbb20 (chore: Make CMake improvements (#6010), 2025-11-10)
91b96d6 (chore: Move running of unit tests out of coverage target (#6018), 2025-11-11)
8655570 (ci: Specify bash as the default shell in workflows (#6021), 2025-11-11)
4135d56 (fix: floating point representation errors in vault (#5997), 2025-11-11)
e7e4d52 (Version 3.0.0-rc1, 2025-10-27)

Context of Change

Type of Change

  • Release

@Bronek Bronek changed the base branch from develop to release-3.0 October 27, 2025 15:59
@Bronek
Copy link
Collaborator Author

Bronek commented Oct 27, 2025

The idea behind the set of changes picked here is:

  • take everything planned for release which is not in release-3.0 branch yet
  • take trivial changes e.g. changes in comments, including ones affecting coverage reports
  • take changes which cleanup or improve tests
  • take changes which cleanup or improve CI
  • take single change to bump version number in BuildInfo.cpp

@Bronek Bronek changed the title Release 3.0-rc1 Release 3.0.0-rc1 Oct 27, 2025
mvadari and others added 27 commits October 31, 2025 14:26
…ges (#5856)

This change uses the new RHEL 9 and 10 images to build and test the binary, and adds support for having different Docker image SHAs per distro-compiler combination.

Instead of supporting RHEL each minor version, we are simplifying our pipelines by only supporting RHEL major versions. Our CI Docker images have already been updated accordingly, and we recently added support for RHEL 10 as well. Up until now, the CI Docker images had all been rebuilt at the same time, but that is not necessarily true as the most recent push to the CI repo has shown where the RHEL images now have a different SHA than the Debian and Ubuntu ones.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
This change fixes a release build error with GCC 15.2.

The `fields` variable is only used in `XRPL_ASSERT`, which evaluates to nothing in a Release build, leaving the variable unused. This change silences the build warning.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
This change adds invariants for SingleAssetVault #5224 (XLS-065), which had been intentionally skipped earlier to keep the SAV PR size manageable.
This change adds a wildcard to the release branch in the CI pipeline spec. Namely, after adopting an improved release process, with release branches that now look like release-X.Y, the trigger pipeline was no longer running as it only searched for an exact match to release.
This change excludes from Codecov unreachable/difficult-to-test transaction code (such as `tecINTERNAL`) and old code (from amendments that have been enabled for a long time that are only around for ledger replay reasons). This removes about 200 lines of misses and increases the Codecov coverage by 0.3% (79.2% to 79.5%).
This change adds a paychan namespace to the TestHelpers and implementation files, improving organization and clarity. Additionally, it updates the AMM test to use the new `paychan::create` function for payment channel creation.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
This change updates the Docker image hashes of the tools-rippled images to fix a missing dependency.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
Windows is extremely chatty and generates tons of logs when building, making it practically impossible to use the build logs to debug issues. This change sets the verbosity to 'quiet' on Windows.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
This change replaces instances of JSON LastLedgerSequence with last_ledger_seq, which makes the tests a bit simpler and easier to read.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
)

This change replaces boost::lexical_cast<std::string> with to_string in some of the tests to make them more readable.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
There are some tests that write out JSONs as a string instead of using the Json::Value library, which are cleaned up by this change.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
This change sanitizes inputs by setting them as environment variables, and adjusts the number of CPUs used for building. Namely, GitHub inputs should be sanitized, per recommendation by Semgrep, as using them directly poses a security risk. A recent change further overrode the global configuration by having builds use all cores, but as we have noticed an increased number of job cancelation this change updates it to use all cores less one.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
#5897)

This PR sets the fail-fast strategy option to false (it defaults to true), unless it is run by a merge group.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
The default job timeout is 5 hours, while build times are anywhere between 4-20 mins and test times between 2-10. As a runner occasionally gets stuck, we should fail much quicker.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
…draw (#5857)

Similarly to other transaction typed that can create a trust line or MPToken for the transaction submitter (e.g. CashCheck #5285, EscrowFinish #5185 ), VaultWithdraw should enforce reserve before creating a new object. Additionally, the lsfRequireDestTag account flag should be enforced for the transaction submitter.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
The `-Wno-missing-template-arg-list-after-template-kw` flag is only needed for the grpc library. Use `+=` for the default build flags to make it easier to extend in the future.

Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
Co-authored-by: Bart Thomee <11445373+bthomee@users.noreply.github.com>
@Bronek Bronek force-pushed the Bronek/release-3.0-rc1 branch from e1bf24b to aaa2210 Compare October 31, 2025 14:27
@Bronek Bronek marked this pull request as ready for review October 31, 2025 14:33
@Bronek Bronek requested a review from a team as a code owner October 31, 2025 14:33
@Bronek Bronek requested review from bthomee and ximinez October 31, 2025 14:33
@codecov
Copy link

codecov bot commented Oct 31, 2025

Codecov Report

❌ Patch coverage is 94.00000% with 36 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (release-3.0@5e43e91). Learn more about missing BASE report.

Files with missing lines Patch % Lines
src/xrpld/shamap/detail/SHAMapSync.cpp 60.0% 18 Missing ⚠️
src/xrpld/app/tx/detail/InvariantCheck.cpp 97.5% 13 Missing ⚠️
src/xrpld/overlay/detail/OverlayImpl.cpp 25.0% 3 Missing ⚠️
src/xrpld/app/ledger/OrderBookDB.cpp 0.0% 1 Missing ⚠️
src/xrpld/app/tx/detail/VaultWithdraw.cpp 94.7% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@              Coverage Diff              @@
##             release-3.0   #5943   +/-   ##
=============================================
  Coverage               ?   78.8%           
=============================================
  Files                  ?     816           
  Lines                  ?   68833           
  Branches               ?    8164           
=============================================
  Hits                   ?   54216           
  Misses                 ?   14617           
  Partials               ?       0           
Files with missing lines Coverage Δ
include/xrpl/basics/IntrusivePointer.ipp 87.4% <ø> (ø)
include/xrpl/beast/net/IPAddress.h 100.0% <ø> (ø)
include/xrpl/json/json_writer.h 100.0% <ø> (ø)
include/xrpl/ledger/ApplyView.h 100.0% <ø> (ø)
include/xrpl/protocol/detail/b58_utils.h 96.9% <ø> (ø)
include/xrpl/protocol/detail/ledger_entries.macro 100.0% <ø> (ø)
include/xrpl/protocol/detail/transactions.macro 100.0% <ø> (ø)
include/xrpl/resource/detail/Logic.h 57.1% <ø> (ø)
src/libxrpl/basics/Log.cpp 18.8% <ø> (ø)
src/libxrpl/basics/contract.cpp 66.7% <ø> (ø)
... and 87 more

Impacted file tree graph

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

@Bronek Bronek requested a review from vvysokikh1 November 3, 2025 11:25
@Bronek Bronek force-pushed the Bronek/release-3.0-rc1 branch from aaa2210 to e14ecb7 Compare November 3, 2025 11:34
@Bronek Bronek force-pushed the Bronek/release-3.0-rc1 branch from e14ecb7 to 1526b43 Compare November 3, 2025 11:37
@bthomee
Copy link
Collaborator

bthomee commented Nov 3, 2025

LGTM so far.

@vvysokikh1 vvysokikh1 self-requested a review November 3, 2025 11:58
@Bronek Bronek force-pushed the Bronek/release-3.0-rc1 branch from 1526b43 to 0ccabf9 Compare November 5, 2025 09:42
bthomee and others added 5 commits November 11, 2025 12:06
To debug test failures we would like to use `netstat`, but that package wasn't installed yet in the CI images. This change uses the new CI images created by XRPLF/ci#79.
When outputting the unit test summary, this change counts crashed tests as failures.
This change unifies the build and test jobs into a single job, and adds `ctest` to coverage reporting.

The mechanics of coverage reporting is slightly complex and most of it is encapsulated in the `coverage` target. The status quo way of preparing coverage reports involves running a single target `cmake --build . --target coverage`, which does three things:
* Build the `rippled` binary (via target dependency)
* Prepare coverage reports:
  * Run `./rippled -u` unit tests.
  * Gather test output and build reports.

This makes it awkward to add an additional `ctest` step between build and coverage reporting steps. The better solution is to split `coverage` target into separate build, followed by `ctest`, followed by test generation. Luckily, the `coverage` target has been designed specifically to support such case; it does not need to build `rippled`, it's just a dependency. Similarly it allows additional tests to be run before gathering test outputs; in principle we could even strip it from running tests and run them separately instead. This means we can keep build, `ctest` and generation of coverage reports as separate steps, as long as the state of build directory is fully (including file timestamps, additional coverage files etc.) preserved between the steps. This means that in order to run `ctest` for coverage reporting we need to integrate build and test into a single job, which this change does.
This change removes unused definitions from the CMake files, moves variable definitions from `XrplSanity` to `XrplSettings` where they better belong, and updates the minimum GCC and Clang versions to match what we actually minimally support.
@Bronek Bronek force-pushed the Bronek/release-3.0-rc1 branch from 0ccabf9 to 2345a3f Compare November 11, 2025 12:14
This change makes the progress of unit tests visible and also gives more flexibility when running them.
@Bronek Bronek force-pushed the Bronek/release-3.0-rc1 branch from 2345a3f to 3141550 Compare November 11, 2025 15:42
mathbunnyru and others added 3 commits November 12, 2025 09:30
This change fixes floating point errors in conversion of shares to assets and other way, used in `VaultDeposit`, `VaultWithdraw` and `VaultClawback`. In the floating point calculations the division introduces a larger error than multiplication. If we do division first, then the error introduced will be increased by the multiplication that follows, which is therefore the wrong order to perform these two operations. This change flips the order of arithmetic operations, which minimizes the error.
@Bronek Bronek force-pushed the Bronek/release-3.0-rc1 branch from 3141550 to e7e4d52 Compare November 12, 2025 09:34
@Bronek Bronek merged commit e7e4d52 into release-3.0 Nov 12, 2025
25 checks passed
@Bronek Bronek deleted the Bronek/release-3.0-rc1 branch November 12, 2025 16:26
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.