A prolific week across the ecosystem: rippled merged 44 PRs to develop, headlined by the Cosign v1 amendment implementation (XLS-103), a confidential MPT holder key update feature, an MPT transaction stream for the subscribe RPC, and a massive CamelCase typedef enforcement sweep across 943 files. xrpl.js shipped four releases — xrpl@4.7.0, xrpl@3.2.0, ripple-keypairs@2.1.0, and ripple-keypairs@1.4.0 — all carrying an entropy validation fix for Wallet.fromEntropy and generateSeed. Clio merged 11 PRs including an account_objects pagination fix and rpc-spec conformance updates. The developer portal merged 8 PRs consolidating Deep Freeze docs, updating OS support requirements, and continuing wiki migration.
This was one of the more productive weeks across the XRP Ledger's open-source repositories, with 74 pull requests merged — up from 58 last week. The headline is a new on-chain feature called "Cosign" (formally XLS-103), which was merged into the development branch of rippled (the core server software). Cosign introduces a new way for multiple parties to propose and approve transactions directly on the ledger, rather than coordinating off-chain. It's now in the development pipeline but won't reach the live network until a future tagged release ships.
The JavaScript library (xrpl.js) published four new versions — xrpl 4.7.0, xrpl 3.2.0, ripple-keypairs 2.1.0, and ripple-keypairs 1.4.0 — all fixing a subtle but important bug where the Wallet.fromEntropy function could silently accept invalid input (like a text string) and generate real-looking but compromised wallets. Developers using any version of xrpl.js should update to the latest release in their version line. Several smaller but significant fixes also landed: the Clio API server fixed a bug where requesting an account's objects with a type filter still scanned through all NFT pages unnecessarily (wasting time), and the developer portal at xrpl.org consolidated its documentation about "Deep Freeze" (a way to permanently lock a token's frozen state) into a single, clearer page.
Behind the scenes, the codebase saw major housekeeping. A sweep of 943 files enforced consistent naming conventions for type aliases across rippled, while another PR documented every declaration in the LedgerMaster class — the component responsible for tracking which ledgers have been validated, published, and made available for history. These kinds of changes don't affect users directly but make the code more maintainable and easier for new contributors to understand. Multiple fixes also landed for Multi-Purpose Tokens (MPTs), improving arithmetic precision, fixing deletion edge cases, and adding a new subscription stream so applications can monitor MPT activity in real time. The Python SDK has a large, approved PR adding MPT DEX support that should land soon, and the Java SDK has an approved PR adding vault support — both pending final merge and release.
For the latest, follow @XRPLF and @RippleXDev on X. Check the XRPLF repos for full activity.
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.
TransactionProposalCreate: rippled#8205 (+4,035/−6, 32 files) — Implements the On-Chain Cosigner feature (XLS-103), adding the TransactionProposalCreate transaction type. The companion merge commit rippled#8324 (+15,844/−3,588, 269 files) brought the full cosign branch into develop.subscribe RPC: rippled#5671 (+912/−45, 12 files) — Adds a new MPT-specific transaction stream, allowing clients to subscribe to MPT activity. A long-lived PR that has finally landed.featureMPTokensV2 to the amendment set that enables the large 19-digit mantissa, so MPT arithmetic never runs at the smaller 16-digit scale regardless of amendment activation order.fv shell, supporting upcoming formal verification work.rpc-spec integration: rippled#8284 (+903/−5, 13 files) — Begins integrating the xrpl-rpc-spec library into rippled with a JSON bridge for field-view types. A foundational step toward shared RPC validation between rippled and Clio.IntrusivePointer leak: rippled#8328 (+118/−36, 3 files) — Fixes a leak and missed partial destruction when SharedWeakUnion::convertToWeak() converts the last strong reference to a weak one. Also resolves a UBSan unsigned-underflow report.ValidConfidentialMPToken invariant incorrectly folded an erased MPToken's pre-transaction public balance into the confidential-state check, causing tecINVARIANT_FAILED when any unrelated holder of the same issuance had a confidential balance.account_lines/offers/channels past new owner-dir types: rippled#8274 (+155/−32, 4 files) — Fixes pagination when encountering new ledger entry types in owner directories.book_offers: rippled#8213 (+70/−1) — The RPC kept one unit too many per offer due to rounding to nearest instead of rounding up. Now matches BookStep behavior.txReduceRelayEnabled() guard to the queue-only path that was already used in the relay path.mtCLUSTER to the Cluster traffic category (previously unreported), then ensures only actual cluster members' traffic is categorized as cluster traffic.accountReserve and ownerReserve FeeSetup defaults from multiplier-based expressions back to the correct hardcoded drop values (1,000,000 and 200,000), fixing a tenfold reserve inflation bug in defaults.reserveToAdd when sponsored: rippled#8304 (+57/−4) — EscrowCreate now uses the bytecode-proportional reserve when computing the owner's pre-lock reserve in the unsponsored case.getLedgerEntryOwnerCount now handles the smart escrow case, delegating to calculateAdditionalReserve for bytecode-proportional reserve.simulate: rippled#8295 (+118, 2 files) — Uses a thread-local entry counter to detect whether the WASM engine was invoked during a simulate call, bumping the RPC load type accordingly.float_from_stnumber and float_from_stamount now return canonicalized floats, preventing out-of-range MPT magnitude that could cause signed-overflow UB.STI_VL against kMaxWasmDataLength: rippled#8289 (+41, 2 files) — Bounds-checks blob length before copying into a Bytes buffer, preventing eager copy of oversized bytecode.update_data host call: rippled#8291 (+81/−4) — Closes a transfer-budget bypass.getBaseFee host function: rippled#8441 (+3/−1).libxrpl consumers: some types have been renamed (e.g., UInt256).Throw messages with std::format: rippled#8474 (+201/−194, 21 files) — Replaces string concatenation in error messages with format strings for readability.constexpr string_view: rippled#8332 (+7/−11) — Moves four Config file-name constants from out-of-line char const* to in-header constexpr std::string_view.Config_test.cpp.Limits.cpp benchmark for gasLimit and bytecodeSizeLimit sweeps.cxx 1.0.199 → 1.0.202: rippled#8224.codegen-units = 1 for improved wasm translation performance.LedgerMaster class: rippled#8160 (+778/−40, 2 files) — Comprehensive Doxygen documentation for every declaration, covering locking, state machines, and publication logic.release/3.4.x into develop: rippled#8408 (empty diff).account_objects: clio#3231 (+35/−17) — When the type filter excludes NFTokenPage, the handler now skips NFT-page traversal, preserving the pagination budget. Closes clio#3060.RippledError to XrpldError and decoupling from boost::json.server_info: clio#3234 (+143/−44).use_tx_tables (wiki migration): xrpl-dev-portal#3974 (+13).fixCleanup3_4_0.tesSUCCESS.xrpllabsofficial/xrpld with rippleci/xrpld.fixCleanup3_4_0 in delegation spec: XRPL-Standards#645 (+3) — Recommends not using the PaymentBurn granular permission until fixCleanup3_4_0 activates.Four releases shipped this week, all carrying a fix that throws on invalid entropy in Wallet.fromEntropy and generateSeed:
Additionally, the 1.x backport xrpl.js#3489 merged, requiring exactly 16 bytes of entropy in generateAddress.
A community contributor's fix requiring the sponsor of a sponsored inner transaction to sign a Batch (XLS-56) also merged: xrpl.js#3483 (+101/−3) — merged, pending release.
rippled — IOU rounding in Clawback invariant (rippled#8475, +101/−1) — The ValidClawback invariant now compares against the same rounded subtraction the actual balance update performs. Approved by AI reviewer; in active review.
rippled — MPT/DEX offer fixes (rippled#8468, +192/−17) — Handles exceptions from consumeOffer in BookStep and rejects issuer-sourced strands looping back to their own MPT. Approved by 2 reviewers.
rippled — Reject VaultClawback with nonexistent holder (rippled#8470, +83) — Gated on fixCleanup3_5_0. Approved by AI reviewer.
rippled — Detect int64 overflow in XRPAmount and MPTAmount (rippled#8453, +426/−56) — Replaces raw signed arithmetic with checked helpers under featureMPTokensV2. Approved by 2 reviewers; has outstanding Copilot comments.
rippled — Replace node_size with memory_limit (rippled#7965, +903/−205, 17 files) — Replaces the opaque [node_size] config with a GB-denominated [memory_limit] that auto-detects available RAM. Approved by AI reviewer; under active review.
rippled — Report rejected config section instead of aborting (rippled#8473, +15/−4) — Prints a message to stderr instead of crashing when a config section is rejected. Approved by AI reviewer.
rippled — Record Batch inner results for validated ledgers (rippled#8164, +403/−27) — Records each inner transaction's outcome and surfaces them via the tx RPC. Approved by 2 reviewers.
rippled — Increase default WebSocket send_queue_limit (rippled#8465, +10/−5) — A community member proposes raising the default from 100 to 1,000 to prevent disconnects during busy ledger closes. Has unsigned commits.
rippled — SHAMapAddNode verdict as counts (rippled#8080, +237/−26) — Part 1 of a 28-PR stack adding getBad() and getDuplicate() accessors. Approved by AI reviewer.
xrpl4j — Single Asset Vault model changes (xrpl4j#832, +2,022/−31, 35 files) — Adds LendingProtocolV1_1 vault transaction/object models. Approved — close to merging.
xrpl-py — MPT DEX support (XLS-82) (xrpl-py#1043, +1,792/−52, 34 files) — Adds MPTokensV2 amendment models. Approved by AI reviewer.
Clio — Wire format regression fix (clio#3242, +92/−2) — Fixes get_aggregate_price returning oracleMalformed instead of invalidParams for invalid oracle_document_id. Closes clio#3241.
Clio — Reject CTID network IDs above 16 bits (clio#3232, +42/−4) — Prevents truncation of 32-bit network IDs into misleading CTIDs. Has a dismissed review with requested clang-tidy fix.
XRPL-Standards — XLS-65.4 Vault Donation (XRPL-Standards#648, +169/−7) — Specifies tfVaultDonate flag on VaultDeposit under LendingProtocolV1_2.
opensource.ripple.com — Smart Escrow reference docs (#240, +623/−1) — Adds reference doc pages for XLS-100 Smart Escrows and Fee Voting. Has changes requested from a reviewer.
LendingProtocolV1_1 vault support.MPTokensV2 support.get_aggregate_price regression: clio#3242 fixes a compatibility issue where Clio 2.9.0-b4 returns a different error than xrpld for invalid oracle requests. Important for applications relying on consistent error behavior across API servers.Community contributions: A community member submitted rippled#8465 proposing to increase the default WebSocket send_queue_limit from 100 to 1,000, noting that the current limit causes disconnects during busy ledger closes for clients subscribing to the transaction stream. The PR has had two rounds of review but contains unsigned commits. Community contributor @Platonenkov landed a Batch sponsor-signing fix in xrpl.js (xrpl.js#3483). Community contributor @GautamBytes landed the account_objects NFT page skip fix in Clio (clio#3231).
External contributor on dev portal: @RyanHealey updated Docker image references from the deprecated xrpllabsofficial/xrpld to rippleci/xrpld (xrpl-dev-portal#3959), and @chiliec fixed the TOML checker crash (xrpl-dev-portal#3924).
Automated vulnerability scans: The xrpl.js release pipeline flagged critical/high vulnerabilities in the newly released packages (#3528, #3526, #3525, #3524, #3523) — all automatically generated and awaiting review.
New issues: A proposed terminology change was filed (rippled#8472) asking whether wiki content suggesting renaming "Consensus Process" to "Election" is still relevant. A corrupt NuDB node object crash-loop issue was reported (rippled#8343), where a single corrupt LZ4-compressed object causes repeated aborts instead of graceful handling. In Clio, a compatibility issue was filed for get_aggregate_price error mismatches between Clio and xrpld (clio#3241).
XRPL-Standards activity: Multiple lending protocol spec proposals remain in review, including XLS-65.4 Vault Donation (XRPL-Standards#648), two-step loan creation (XRPL-Standards#570), Vault deposit block (XRPL-Standards#469), and Token PayChan XLS-93 (XRPL-Standards#536).
Compared to last week (September 21–27, 2026):
| Metric | This Week | Last Week | Change |
| Repos with activity | 8 | 8 | flat |
| rippled PRs merged | 44 | 26 | ↑18 |
| rippled PRs opened | 13 | 24 | ↓11 |
| rippled new issues | 3 | 3 | flat |
| rippled closed issues | 4 | 2 | ↑2 |
| rippled releases | 0 | 0 | flat |
| rippled commits | 31 | 13 | ↑18 |
| xrpl.js PRs merged | 10 | 5 | ↑5 |
| xrpl.js PRs opened | 23 | 8 | ↑15 |
| xrpl.js new issues | 6 | 3 | ↑3 |
| xrpl.js closed issues | 1 | 1 | flat |
| xrpl.js releases | 4 | 2 | ↑2 |
| xrpl.js commits | 1 | 5 | ↓4 |
| xrpl-py PRs merged | 0 | 1 | ↓1 |
| xrpl-py PRs opened | 16 | 1 | ↑15 |
| xrpl-py new issues | 0 | 0 | flat |
| xrpl-py releases | 0 | 0 | flat |
| xrpl-py commits | 0 | 1 | ↓1 |
| xrpl-dev-portal PRs merged | 8 | 13 | ↓5 |
| xrpl-dev-portal PRs opened | 10 | 9 | ↑1 |
| xrpl-dev-portal new issues | 2 | 1 | ↑1 |
| xrpl-dev-portal closed issues | 1 | 0 | ↑1 |
| xrpl-dev-portal commits | 9 | 31 | ↓22 |
| Clio PRs merged | 11 | 8 | ↑3 |
| Clio PRs opened | 2 | 8 | ↓6 |
| Clio new issues | 2 | 2 | flat |
| Clio closed issues | 2 | 0 | ↑2 |
| Clio releases | 1 | 4 | ↓3 |
| Clio commits | 11 | 5 | ↑6 |
| XRPL-Standards PRs merged | 1 | 2 | ↓1 |
| XRPL-Standards PRs opened | 11 | 6 | ↑5 |
| XRPL-Standards commits | 1 | 2 | ↓1 |
| xrpl4j PRs merged | 0 | 2 | ↓2 |
| xrpl4j PRs opened | 1 | 5 | ↓4 |
| xrpl4j releases | 0 | 1 | ↓1 |
| xrpl4j commits | 0 | 2 | ↓2 |
| opensource.ripple.com PRs merged | 0 | 1 | ↓1 |
| opensource.ripple.com PRs opened | 2 | 0 | ↑2 |
| Total PRs merged (all repos) | 74 | 58 | ↑16 |
| Total releases | 5 | 7 | ↓2 |
Carryovers from last week: Several items noted as "In Progress" last week merged this week: the Cosign v1 TransactionProposalCreate (rippled#8205), the LedgerMaster documentation (rippled#8160), the account_lines/offers/channels pagination fix (rippled#8274), the rpc-spec initial integration (rippled#8284), the Clio rpc-spec 0.1.19 conformance (clio#3233), and the xrpl.js entropy validation backports across all four maintenance lines. The xrpl4j vault model PR (xrpl4j#832) remains open but approved.
Trends: rippled's merge rate nearly doubled again (26→44), driven by the Cosign v1 branch integration, a wave of smart escrow/WASM host-call fixes, and MPT-related improvements. xrpl.js saw a surge in opened PRs (8→23), mostly from Dependabot, alongside its busiest release week with 4 tagged versions. xrpl-py opened 16 dependency PRs (up from 1) while its MPT DEX feature PR went through review. Total merged PRs across all repos rose 28% (58→74).