A high-volume week with 75 PRs merged across 8 repos. In rippled, 33 PRs merged to develop — headlined by the new Cosign and fixCleanup3_4_0 amendments, a PermissionedDEX invariant fix, two large test migrations (Peerfinder and consensus suites from Beast to GTest), and extensive Nix/CI tooling improvements. Clio shipped three releases including the production 2.7.1 with fixCleanup3_2_0 support and release candidate 2.8.0-rc3, plus merged Confidential Transfer field support and an MPToken serialization fix. The developer portal merged 27 PRs including Dynamic MPT documentation, a new TypeScript tutorial, the Permissioned Domains tutorial rewrite, and amendment component UX fixes. In xrpl4j, Batch V1.1 (XLS-56) and Dynamic MPT flag updates merged to main — both pending release.
This was one of the bigger weeks across the XRPL ecosystem, with 75 pull requests merged across eight repositories. The headline for anyone running infrastructure is the release of Clio 2.7.1 — the API server that many services use to query the XRP Ledger. This update adds support for the fixCleanup3_2_0 amendment, which means if that amendment is enabled on the network and you haven't upgraded, your Clio instance will stop processing new ledgers. Operators running Clio should plan to upgrade. A release candidate for Clio 2.8.0 (rc3) was also published for testing.
On the developer experience side, there was a lot of documentation work. The developer portal (xrpl.org) now has a TypeScript getting-started tutorial — contributed by community member @naavyas — filling a gap that had been open for years. Documentation for Dynamic Multi-Purpose Tokens was migrated to xrpl.org, reflecting an important design change: MPTs are now mutable by default, with immutability as an opt-in choice. This is the opposite of the original design and affects how token issuers set up their tokens. The Java SDK (xrpl4j) merged support for Batch V1.1 transactions, which let developers bundle multiple transactions together and submit them atomically — though this won't be installable from Maven Central until xrpl4j publishes its next release. A new protocol feature called Cosign was proposed, which would allow multi-signature transactions to be coordinated directly on the ledger rather than requiring off-chain communication between signers. The amendment was registered in the server code and a formal specification was submitted for community review.
Under the hood, the server software (rippled) saw significant build system modernization — the Nix-based development environment is being refined so that developers on Linux get the same toolchain as the CI system, reducing "works on my machine" issues. Two large test migrations moved the Peerfinder and consensus test suites from the legacy Beast framework to Google Test, making them easier to maintain and extend.
For the latest updates, follow @XRPLF and @RippleXDev on X, or check the Clio 2.7.1 release notes and the XRPLF repos directly.
Note: All rippled changes below were merged to the develop branch and are not yet live on the network. A tagged release is required for any change to reach production.
Note: SDK PRs below were merged to each library's main branch. They become available to application developers only after a tagged release is published (npm for xrpl.js, Maven Central for xrpl4j, PyPI for xrpl-py). If no corresponding SDK release appears in the data, treat the feature as merged-but-pending-release and phrase availability accordingly.
Cosign amendment identifier. This adds the amendment entry only — no functionality yet.fixCleanup3_4_0 amendment stub: rippled#7854 adds a catchall amendment gate intended for small bug fixes in the upcoming 3.4 release. No functionality attached yet — it will be removed if unused.ValidPermissionedDEX invariant's domain tracking so that domains referenced only by deleted offers don't cause false invariant failures during valid offer replacements. Gated behind fixCleanup3_4_0.finish → escrow_finish: rippled#7840 (+602/−587) renames an internal function for clarity. Feature not yet live.nft_serial → nft_seq, mpt_issuance_id → mptoken_issuance_id, paychan_id → paychannel_id, etc.) and latest develop changes into feature branches.WasmNumber class: rippled#7833 (−50 net lines) simplifies the codebase by removing an unnecessary wrapper class.env.parseFailureExpected flag, reducing boilerplate in test code.rust-overlay: rippled#7837 (+154/−33 across 18 files) sources the Rust toolchain from oxalica/rust-overlay pinned by rust-toolchain.toml, making it the single source of truth for the Rust version across all environments and fixing a wasmi build failure in the Nix image.XRPLF/ci-tooling team to review CI-related changes.llvm-tools-preview to Rust toolchain (#7853), bumped actions/setup-python v6→v7 (#7830), improved test failure debuggability (#7619), cleaned up PR template grammar (#7846).MPToken, MPToken Issuance, and the mpt_holders API.libxrpl doesn't understand. ETL extraction now triggers a clean amendment-block, and cache load failures are handled safely.account_mptokens and account_mpt_issuances to serialize MPToken amount fields as base-10 JSON strings instead of JSON numbers, preventing silent rounding for values above 2^53 and matching rippled's behavior.channel_authorize admin-only by default.channel_authorize page move.golang.org/x/crypto from various versions to 0.52.0 across Go code samples (#3753–#3769).actions/setup-python from v6 to v7.CLEAR_ flags, renames CanMutate → CanEnable, and compacts SET_ bits. Merged but pending release.rippled — Performance fix for extreme exponents (rippled#7825, +110/−55) — Addresses a report that a JSON string with an out-of-range exponent (e.g. 1e2000000000) could tie up a node for 1–2 seconds in a digit-dropping loop. Short-circuits when the smaller value has no remaining significant digits. Approved by 4 reviewers — very close to merging.
rippled — AMM trading fee suppression fix (rippled#7867, +149/−0) — Newly opened PR to prevent an attacker from suppressing AMM trading fees indefinitely and extracting value from liquidity providers. No reviews yet.
rippled — VaultInvariant lower bound check (rippled#7863, +21/−0) — Adds a defense-in-depth check that lossUnrealized >= 0 in the VaultInvariant. Approved by AI reviewer. Submitted by community member @tyalymov.
rippled — LoanPay fund conservation fix (rippled#7843, +139/−49) — Fixes a fund conservation assertion failure when a LoanPay broker fee payee is below reserve. Approved by @gregtatcam.
rippled — Split LoanSet and LoanAccept (rippled#7820, +3427/−873 across 26 files) — Splits the LoanSet transaction into separate LoanSet and LoanAccept transactions. Has changes requested by @gregtatcam for missing test coverage.
rippled — Trivial GTest migrations (rippled#7865, +372/−276) — Migrates ApiVersion, Serializer, Zero, and varint tests from Beast to GTest.
rippled — Protocol version 2.3 (LedgerNodeDepth) (rippled#6353, +835/−181 across 21 files) — Long-running PR (172 reviews) replacing 32-byte node IDs with 2-byte depth values in TMLedgerNode messages. Has outstanding change requests from AI reviewer.
rippled — Prevent silent zero AMM clawbacks (rippled#7704, +191/−1) — Fixes a rounding issue where clawing back a fractional amount of an integer-based MPT could silently result in zero tokens recovered while still burning LP tokens. Approved by @gregtatcam.
rippled — Apply asfDisallowIncomingTrustline to OfferCreate (rippled#6307, +175/−4) — Enforces the asfDisallowIncomingTrustline flag in OfferCreate transactions to prevent unwanted trustline auto-creation when offers cross. Approved by @gregtatcam. Labeled Amendment.
Clio — Accounts filter for mpt_holders (clio#3154, +684/−54) — Adds an optional accounts parameter to mpt_holders for direct account lookups by key, skipping the full holder-index scan.
Clio — Filter transactions by mpt_id (clio#3153, +362/−1) — Adds an optional mpt_id field to account_tx to filter account transactions by a specific MPT.
xrpl.js — DynamicMPT (XLS-94) updates (xrpl.js#3417, +447/−369) — Updates DynamicMPT support to reflect the spec change that MPTs are now mutable by default.
xrpl.js — Confidential MPT (XLS-96) (xrpl.js#3364, +5736/−24 across 74 files) — Wire-format definitions, transaction and ledger models for Confidential MPT.
xrpl.js — Transaction model validation cleanup (xrpl.js#2895, +1568/−1379 across 133 files) — Approved by @achowdhry-ripple, cleans up validation functions using newer helpers. 98 reviews.
xrpl-py — XLS-68 Sponsored Fees and Reserves (xrpl-py#1020, +3654/−44 across 34 files) — Takes over previous work for Sponsored Fees support.
xrpl4j — Rework DynamicMPT to opt-in-immutable (xrpl4j#814, +1339/−1443 across 20 files) — Adds ImmutableFlags replacing MutableFlags to match the new default-mutable model.
xrpl-dev-portal — Sponsored Fees and Reserves docs (xrpl-dev-portal#3798, +651/−3 across 18 files) — Concept and reference documentation.
xrpl-dev-portal — Known Amendments updates (xrpl-dev-portal#3785, +49/−2) — Adds BatchV1_1, LendingProtocolV1_1, and fixCleanup3_3_0 to "Amendments in Development."
XRPL-Standards — Cosign spec (XRPL-Standards#586, +1083 lines) — Proposes native on-ledger proposal and multi-signature collection.
XRPL-Standards — Term Vault spec (XRPL-Standards#587, +274 lines) — New spec proposal.
XRPL-Standards — XLS-65 Vault spec suite — Seven PRs from @Tapanito syncing the Single Asset Vault spec with current implementation: VaultCreate (#549), VaultSet (#550), VaultDelete (#551), VaultDeposit (#552), VaultWithdraw (#553), VaultClawback (#554), and global invariants (#555). VaultDelete and VaultSet are approved by @tyalymov.
Community member @naavyas contributed the Get Started Using TypeScript tutorial (xrpl-dev-portal#3749), closing a long-standing documentation request (#1208).
Community member @tyalymov (authorAssociation: NONE) submitted two rippled PRs: a VaultInvariant lower-bound check (rippled#7863) and LoanPay regression tests for impaired overdue loans (rippled#7839). They also provided detailed reviews across seven Vault spec PRs on XRPL-Standards.
Community member @Platonenkov (authorAssociation: NONE) proposed adding an optional expanded response format to account_currencies (rippled#7829), which would return full issuer and capacity details instead of plain currency codes.
Community member @joshuahamsa (authorAssociation: NONE) opened a PR to add BatchV1_1, LendingProtocolV1_1, and fixCleanup3_3_0 to the Known Amendments page (xrpl-dev-portal#3785). They also continued iterating on custom HTTP header support for xrpl-py (xrpl-py#828).
Community member @akshitj11 contributed the channel_authorize documentation move to admin-only methods (xrpl-dev-portal#3708).
New discussion — On-Chain Cosigner (XRPL-Standards#589): A new XLS proposal for native on-ledger proposal and multi-signature collection for XRPL transactions, requiring XLS-49 (Multiple Signer Lists).
New issue — Stub landing pages (xrpl-dev-portal#3796): Identifying that certain "folder" pages like Use Cases are extremely barebones and need better UX.
New issue — xrp-ledger.toml checker error handling (xrpl-dev-portal#3793): The dev tool currently errors out instead of displaying a message when no valid TOML file is found.
New issue — SHAMap canonicalization discards linked children (rippled#7870): Contributor @sublimator identified that SHAMap::canonicalize discards linked children when two same-hash inner nodes meet in the TreeNodeCache, requiring resynthesization by hash.
Compared to last week (July 13–19, 2026):
| Metric | This Week | Last Week | Change |
| Repos with activity | 8 | 8 | flat |
| rippled PRs merged | 33 | 29 | ↑4 |
| rippled PRs opened | 15 | 26 | ↓11 |
| rippled new issues | 2 | 1 | ↑1 |
| rippled releases | 0 | 0 | flat |
| rippled commits | 25 | 29 | ↓4 |
| xrpl.js PRs merged | 1 | 2 | ↓1 |
| xrpl.js PRs opened | 14 | 3 | ↑11 |
| xrpl-py PRs merged | 1 | 1 | flat |
| xrpl-py PRs opened | 6 | 4 | ↑2 |
| xrpl4j PRs merged | 2 | 1 | ↑1 |
| xrpl4j PRs opened | 4 | 7 | ↓3 |
| xrpl4j new issues | 2 | 0 | ↑2 |
| xrpl-dev-portal PRs merged | 27 | 6 | ↑21 |
| xrpl-dev-portal PRs opened | 10 | 12 | ↓2 |
| xrpl-dev-portal new issues | 3 | 0 | ↑3 |
| xrpl-dev-portal closed issues | 3 | 0 | ↑3 |
| xrpl-dev-portal commits | 51 | 7 | ↑44 |
| Clio PRs merged | 9 | 1 | ↑8 |
| Clio PRs opened | 4 | 2 | ↑2 |
| Clio releases | 3 | 1 | ↑2 |
| Clio closed issues | 2 | 0 | ↑2 |
| XRPL-Standards PRs merged | 1 | 5 | ↓4 |
| XRPL-Standards PRs opened | 16 | 9 | ↑7 |
| opensource.ripple.com PRs merged | 1 | 1 | flat |
| opensource.ripple.com PRs opened | 2 | 1 | ↑1 |
| Total PRs merged (all repos) | 75 | 46 | ↑29 |
| Releases (total) | 3 | 1 | ↑2 |
The developer portal saw a dramatic increase in merges (6→27), driven largely by the batch of 16 Go dependency bumps plus substantive content merges including the TypeScript tutorial, Dynamic MPT docs, and Permissioned Domains rewrite. Clio rebounded strongly (1→9 merges) with the 2.7.1 release, 2.8.0-rc3, and several feature/fix merges. rippled merged slightly more (29→33) with continued emphasis on Nix/CI tooling and GTest migrations. XRPL-Standards opened 16 PRs (up from 9) reflecting the Vault spec synchronization effort and new Cosign/Term Vault proposals. Items tracked as "In Progress" last week that merged this week include the Clio MPToken serialization fix (clio#3139), the Clio 2.7.1 release blog post (xrpl-dev-portal#3783), and the TypeScript tutorial (xrpl-dev-portal#3749). The xrpl4j Batch V1.1 PR (xrpl4j#808), noted as a draft last week, also merged.