<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ramkumar SG</title>
    <description>The latest articles on DEV Community by Ramkumar SG (@sgramkumar).</description>
    <link>https://dev.to/sgramkumar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3159438%2F3a552d2b-6cc9-4b8b-b62a-589cdb9dedf5.jpg</url>
      <title>DEV Community: Ramkumar SG</title>
      <link>https://dev.to/sgramkumar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sgramkumar"/>
    <language>en</language>
    <item>
      <title>Account Permission Delegation - QA Test Report</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Wed, 26 Aug 2026 19:18:57 +0000</pubDate>
      <link>https://dev.to/ripplexdev/account-permission-delegation-qa-test-report-4ia0</link>
      <guid>https://dev.to/ripplexdev/account-permission-delegation-qa-test-report-4ia0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Test Report Date&lt;/strong&gt;: 8/26/2026&lt;br&gt;
&lt;strong&gt;Prepared By&lt;/strong&gt;: QA Team [&lt;a href="https://github.com/sgramkumar" rel="noopener noreferrer"&gt;sgramkumar&lt;/a&gt;, &lt;a href="https://github.com/mkunasani" rel="noopener noreferrer"&gt;mkunasani&lt;/a&gt;, &lt;a href="https://github.com/manasip-prog" rel="noopener noreferrer"&gt;manasip-prog&lt;/a&gt;]&lt;br&gt;
&lt;strong&gt;Environment&lt;/strong&gt;: GitLab CI Runner (nix-debian)&lt;br&gt;
&lt;strong&gt;Network&lt;/strong&gt;: xrpld devnet + private CI network&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br&gt;
This report presents the updated results of QA testing performed on Account Permission Delegation across xrpld servers. It supersedes the initial report from May 2025, reflecting the substantial expansion of test coverage that has occurred as the feature evolved through follow-up xrpld changes.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Feature
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Feature Name&lt;/strong&gt;: Account Permission Delegation&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: Prior to this feature, critical issuer actions — such as authorizing trustlines — required direct control by the account's own keys, hindering operational efficiency and complex use cases. Account Permission Delegation empowers account holders to selectively delegate specific permissions to other accounts, enhancing account usability without compromising security. This mechanism unlocks new possibilities for XRPL applications, including multi-party workflows and advanced account management strategies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specification Reference&lt;/strong&gt;: &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0075-permission-delegation" rel="noopener noreferrer"&gt;https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0075-permission-delegation&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Test Scope
&lt;/h3&gt;

&lt;p&gt;This report covers the full delegation surface as it stands after the follow-up xrpld changes (PRs &lt;a href="https://github.com/XRPLF/rippled/pull/6126" rel="noopener noreferrer"&gt;#6126&lt;/a&gt;, &lt;a href="https://github.com/XRPLF/rippled/pull/7064" rel="noopener noreferrer"&gt;#7064&lt;/a&gt;, &lt;a href="https://github.com/XRPLF/rippled/pull/7584" rel="noopener noreferrer"&gt;#7584&lt;/a&gt;, &lt;a href="https://github.com/XRPLF/rippled/pull/7640" rel="noopener noreferrer"&gt;#7640&lt;/a&gt;). Testing focused on ensuring that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All specified functionalities behave per the XLS-0075 specification&lt;/li&gt;
&lt;li&gt;The API handles both valid and invalid input gracefully&lt;/li&gt;
&lt;li&gt;Delegated transactions interact correctly with adjacent features (Batch, Confidential MPT, transaction queue, multi-signing)&lt;/li&gt;
&lt;li&gt;Security-critical properties hold under adversarial input, including permission-escalation attempts via flag/field side-channels&lt;/li&gt;
&lt;li&gt;Behavior is consistent across both RPC and WebSocket interfaces&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Types of Testing Conducted
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Functional&lt;/td&gt;
&lt;td&gt;Verifying each transaction, permission grant, and RPC path against the feature specification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression&lt;/td&gt;
&lt;td&gt;Running full xrpld test suites to confirm delegation changes did not break existing functionality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adversarial / Security&lt;/td&gt;
&lt;td&gt;Attack-matrix scenarios probing self-delegation, permission-scope escalation, flag/field smuggling, granular-permission union semantics, and revocation edge cases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-Feature&lt;/td&gt;
&lt;td&gt;Interactions between Delegation and Batch (XLS-56), Confidential MPT, the transaction queue, and multi-signing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End-to-End&lt;/td&gt;
&lt;td&gt;Full flows spanning delegation setup, delegated submission, revocation, and downstream validation via xrpld&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  4. Test Results Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Total Tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Permission Delegation — Core Functional&lt;/td&gt;
&lt;td&gt;112&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permission Delegation — Adversarial / Security&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Permission Delegation — Cross-Feature (Batch, Confidential MPT, TxQ)&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Permission Delegation — Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;179&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Regression — xrpld (full suite)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5,088&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Testcases&lt;/strong&gt;: &lt;a href="https://dev.to/ripplexdev/account-permission-delegation-testcases-3j0b"&gt;https://dev.to/ripplexdev/account-permission-delegation-testcases-3j0b&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature commit history:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Introduced as `PermissionDelegation` in PR #5354 (2db2791805, 2025-05-08)
- Marked unsupported (2ae65d2fdb, 2025-09-18) pending security fix
- Renamed to `PermissionDelegationV1_1` with security fix in PR #5825
  (fa69918124, 2025-10-31)
- Re-supported (`Supported::Yes`) in PR #6613 (772ea80a25, 2026-06-17)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Related xrpld changes covered in this round:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/5354" rel="noopener noreferrer"&gt;#5354&lt;/a&gt; — Initial &lt;code&gt;PermissionDelegation&lt;/code&gt; feature&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/5650" rel="noopener noreferrer"&gt;#5650&lt;/a&gt; — &lt;code&gt;fixDelegateV1_1&lt;/code&gt; — restrictions on Permission Delegation&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/5825" rel="noopener noreferrer"&gt;#5825&lt;/a&gt; — Security vulnerability fix + rename to &lt;code&gt;PermissionDelegationV1_1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/6126" rel="noopener noreferrer"&gt;#6126&lt;/a&gt; — &lt;code&gt;account_tx&lt;/code&gt; delegate filter parameter&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/6729" rel="noopener noreferrer"&gt;#6729&lt;/a&gt; — Delegation tests for Confidential Transfers&lt;/li&gt;
&lt;li&gt;PR &lt;a href="https://github.com/XRPLF/rippled/pull/6808" rel="noopener noreferrer"&gt;#6808&lt;/a&gt; — Confidential delegation tests with tickets&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Bugs Reported
&lt;/h3&gt;

&lt;p&gt;All Internal bugs are fixed and there are no Critical Open bugs&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Conclusion
&lt;/h3&gt;

&lt;p&gt;Account Permission Delegation has now been exercised across 179 dedicated tests spanning core functional coverage, adversarial / security scenarios, and cross-feature interactions — a substantial expansion from the 66 tests reported at initial feature landing. In addition, the full xrpld (5,088) regression suites have been executed to confirm no downstream breakage.&lt;/p&gt;

&lt;p&gt;All security-critical properties documented in XLS-0075 have been validated, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Correct rejection of self-delegation, unknown permissions, and NotDelegable transaction types&lt;/li&gt;
&lt;li&gt;Enforcement of granular-permission field/flag restrictions with no side-channel escalation via  SetFlag / ClearFlag  or restricted-field assignment&lt;/li&gt;
&lt;li&gt;Correct interaction with the transaction queue (delegated transactions cannot queue — PR &lt;a href="https://github.com/XRPLF/rippled/pull/7640" rel="noopener noreferrer"&gt;#7640&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Correct  account_tx  attribution semantics under regular-key and multi-sign paths (PR &lt;a href="https://github.com/XRPLF/rippled/pull/6126" rel="noopener noreferrer"&gt;#6126&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Independence of delegation from  asfDisableMaster  (delegated payments continue to work after the master key is disabled)&lt;/li&gt;
&lt;li&gt;The feature is considered ready for production use at the tested commit level. Future updates to this report will follow any material additions to the delegation surface.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>software</category>
      <category>testing</category>
    </item>
    <item>
      <title>Account Permission Delegation - Testcases</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Wed, 26 Aug 2026 19:15:41 +0000</pubDate>
      <link>https://dev.to/ripplexdev/account-permission-delegation-testcases-3j0b</link>
      <guid>https://dev.to/ripplexdev/account-permission-delegation-testcases-3j0b</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Test Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core Functional&lt;/td&gt;
&lt;td&gt;112&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adversarial / Security&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-Feature Interactions&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;179&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Core Functional
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Test DelegateSet with permissions field&lt;/li&gt;
&lt;li&gt;Test DelegateSet skipped before payment&lt;/li&gt;
&lt;li&gt;Test DelegateSet without permissions field&lt;/li&gt;
&lt;li&gt;Test DelegateSet with empty list&lt;/li&gt;
&lt;li&gt;Test DelegateSet with permissions as non-JSON&lt;/li&gt;
&lt;li&gt;Test DelegateSet by non-existing account&lt;/li&gt;
&lt;li&gt;Test DelegateSet by non-existing authorize account&lt;/li&gt;
&lt;li&gt;Test DelegateSet by account with deposit auth enabled&lt;/li&gt;
&lt;li&gt;Test DelegateSet and submit different transaction&lt;/li&gt;
&lt;li&gt;Test DelegateSet and submit transaction as original account&lt;/li&gt;
&lt;li&gt;Test DelegateSet with same permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet to self&lt;/li&gt;
&lt;li&gt;Test DelegateSet with invalid permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet with restricted permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet with 10 permissions&lt;/li&gt;
&lt;li&gt;Test DelegateSet with more than 10 permissions&lt;/li&gt;
&lt;li&gt;Test DelegateSet with multiple permissions&lt;/li&gt;
&lt;li&gt;Test DelegateSet and delete delegated account&lt;/li&gt;
&lt;li&gt;Test DelegateSet and delete delegating account&lt;/li&gt;
&lt;li&gt;Test DelegateSet and make pay self&lt;/li&gt;
&lt;li&gt;Test DelegateSet and make pay delegated account without deposit auth&lt;/li&gt;
&lt;li&gt;Test DelegateSet and make pay delegated account with deposit auth&lt;/li&gt;
&lt;li&gt;Test DelegateSet authorize multiple users&lt;/li&gt;
&lt;li&gt;Test DelegateSet and submit AccountSet as original account&lt;/li&gt;
&lt;li&gt;Test DelegateSet and make payment&lt;/li&gt;
&lt;li&gt;Test DelegateSet and offer create&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and cash check&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and cancel check&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and finish escrow&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and cancel escrow&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and claim paychan&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create and fund paychan&lt;/li&gt;
&lt;li&gt;Test DelegateSet and payment on ticket&lt;/li&gt;
&lt;li&gt;Test DelegateSet and create trustline&lt;/li&gt;
&lt;li&gt;Test DelegateSet and clawback&lt;/li&gt;
&lt;li&gt;Test DelegateSet and AMM create&lt;/li&gt;
&lt;li&gt;Test DelegateSet and AMM deposit&lt;/li&gt;
&lt;li&gt;Test DelegateSet multiple times with same permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet remove permission add same permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet change in permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet and update with invalid permission&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission TrustlineAuthorize&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission TrustlineFreeze and TrustlineUnfreeze individual freeze&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission TrustlineFreeze global freeze&lt;/li&gt;
&lt;li&gt;Test DelegateSet and payment with deep freeze&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountDomainSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountEmailHashSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountMessageKeySet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountTransferRateSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission AccountTickSizeSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission PaymentMint&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission PaymentBurn&lt;/li&gt;
&lt;li&gt;Test DelegateSet granular permission MPTokenIssuanceLock and MPTokenIssuanceUnlock&lt;/li&gt;
&lt;li&gt;Test DelegateSet on account with master key disabled&lt;/li&gt;
&lt;li&gt;Test DelegateSet with empty Permissions revokes delegate authority&lt;/li&gt;
&lt;li&gt;Test DelegateSet with NotDelegable permission rejected&lt;/li&gt;
&lt;li&gt;Test DelegateSet with empty Permissions when no existing Delegate object is rejected&lt;/li&gt;
&lt;li&gt;Test Delegate object appears in authorized account's account_objects&lt;/li&gt;
&lt;li&gt;Test Delegated payment with basic permission succeeds&lt;/li&gt;
&lt;li&gt;Test Delegated unauthorized tx type returns terNO_DELEGATE_PERMISSION&lt;/li&gt;
&lt;li&gt;Test Delegated payment consumes delegate fee, not source fee&lt;/li&gt;
&lt;li&gt;Test AccountDelete on authorized account removes Delegate from both directories&lt;/li&gt;
&lt;li&gt;Test Token escrow — delegate create and finish escrow (IOU)&lt;/li&gt;
&lt;li&gt;Test Token escrow — delegate create and finish escrow (MPT)&lt;/li&gt;
&lt;li&gt;Test Circular delegation — positive scenario&lt;/li&gt;
&lt;li&gt;Test Circular delegation — negative scenario&lt;/li&gt;
&lt;li&gt;Test Chain delegation — positive scenario&lt;/li&gt;
&lt;li&gt;Test Chain delegation — negative scenario&lt;/li&gt;
&lt;li&gt;Test Delegated account with multiple signers and master key disabled&lt;/li&gt;
&lt;li&gt;Test Delegated account with multiple signers and master key not disabled&lt;/li&gt;
&lt;li&gt;Test Authorized account with multiple signers and master key disabled&lt;/li&gt;
&lt;li&gt;Test Authorized account with multiple signers and master key not disabled&lt;/li&gt;
&lt;li&gt;Test DelegateSet with base reserve on delegating account&lt;/li&gt;
&lt;li&gt;Test DelegateSet with base reserve on delegated account&lt;/li&gt;
&lt;li&gt;Test DelegateSet with no funds for fee on delegated account&lt;/li&gt;
&lt;li&gt;Test Delegation to Batch tfAllOrNothing — all payments (outer transaction)&lt;/li&gt;
&lt;li&gt;Test Delegation to Batch tfAllOrNothing — all payments (inner transaction)&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet WalletLocator granular permission&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet NFTokenMinter granular permission&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet combined field and flag&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet ClearFlag granular permission&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet SetFlag with granular permission&lt;/li&gt;
&lt;li&gt;Test Delegate granular permission exceeds scope&lt;/li&gt;
&lt;li&gt;Test Delegate multiple granular permissions with no full AccountSet&lt;/li&gt;
&lt;li&gt;Test Delegate AccountSet restricted field returns correct error code&lt;/li&gt;
&lt;li&gt;Test Delegate transaction with fee greater than account balance&lt;/li&gt;
&lt;li&gt;Test Delegate payment amount exceeds balance&lt;/li&gt;
&lt;li&gt;Test Delegate reserve manipulation via trustline creation&lt;/li&gt;
&lt;li&gt;Test Delegate using regular key instead of master&lt;/li&gt;
&lt;li&gt;Test Delegator regular key change during active delegation&lt;/li&gt;
&lt;li&gt;Test Batch tfAllOrNothing with payment and DelegateSet&lt;/li&gt;
&lt;li&gt;Test DelegateSet with Delegate field set&lt;/li&gt;
&lt;li&gt;Test Delegate trustline freeze without permission&lt;/li&gt;
&lt;li&gt;Test Delegate bypass RequireAuth flag&lt;/li&gt;
&lt;li&gt;Test Delegate permission change removes old permission&lt;/li&gt;
&lt;li&gt;Test Delegate payment with deposit auth bypass attempt&lt;/li&gt;
&lt;li&gt;Test Delegate offer crossing with unauthorized account&lt;/li&gt;
&lt;li&gt;Test Delegate conflicting granular permissions&lt;/li&gt;
&lt;li&gt;Test Delegate all granular AccountSet permissions — no flag access&lt;/li&gt;
&lt;li&gt;Test Delegate with zero-amount payment&lt;/li&gt;
&lt;li&gt;Test Delegate multi-signed transaction&lt;/li&gt;
&lt;li&gt;Test Delegate with multi-signers on delegated and authorized account&lt;/li&gt;
&lt;li&gt;Test Payment offline signing&lt;/li&gt;
&lt;li&gt;Test Delegate payment with offline signing&lt;/li&gt;
&lt;li&gt;Test Delegate payment by third party with offline signing&lt;/li&gt;
&lt;li&gt;Test account_tx  delegate_filter=actor  returns delegated txns&lt;/li&gt;
&lt;li&gt;Test account_tx  delegate_filter=authorizer  returns delegated txns&lt;/li&gt;
&lt;li&gt;Test account_tx  counter_party  narrows results&lt;/li&gt;
&lt;li&gt;Test account_tx  delegate_filter=actor  returns empty for authorizer&lt;/li&gt;
&lt;li&gt;Test account_tx  counter_party  no-match returns empty&lt;/li&gt;
&lt;li&gt;Test account_tx with malformed  delegate  returns invalidParams&lt;/li&gt;
&lt;li&gt;Test account_tx with malformed  counter_party  returns actMalformed&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Adversarial / Security
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Test DelegateSet replaces existing permissions (silently revoking dropped)&lt;/li&gt;
&lt;li&gt;Test DelegateSet to self rejected with temMALFORMED&lt;/li&gt;
&lt;li&gt;Test DelegateSet with duplicate PermissionValues rejected&lt;/li&gt;
&lt;li&gt;Test DelegateSet with eleven permissions rejected&lt;/li&gt;
&lt;li&gt;Test 3.2.0 Vault and Batch tx types are not delegable&lt;/li&gt;
&lt;li&gt;Test 3.2.0 Loan tx types are not delegable&lt;/li&gt;
&lt;li&gt;Test Delegated Batch outer returns terNO_DELEGATE_PERMISSION&lt;/li&gt;
&lt;li&gt;Test Account SignerList cannot authorize delegated tx (returns tefNOT_MULTI_SIGNING)&lt;/li&gt;
&lt;li&gt;Test Delegate SignerList can authorize delegated tx&lt;/li&gt;
&lt;li&gt;Test Delegated tx signed by delegate's master key succeeds&lt;/li&gt;
&lt;li&gt;Test PR #7064 — delegate  sign_for  on own delegated tx returns invalidParams&lt;/li&gt;
&lt;li&gt;Test PR #7064 — delegator can be signer when in delegate's SignerList&lt;/li&gt;
&lt;li&gt;Test Delegate to self rejected with temMALFORMED&lt;/li&gt;
&lt;li&gt;Test DelegateSet with duplicate permission rejected&lt;/li&gt;
&lt;li&gt;Test DelegateSet with unknown PermissionValue rejected&lt;/li&gt;
&lt;li&gt;Test DelegateSet to non-existent account returns tecNO_TARGET&lt;/li&gt;
&lt;li&gt;Test Batch transaction type is not delegable&lt;/li&gt;
&lt;li&gt;Test Delegated tx after revocation returns terNO_DELEGATE_PERMISSION&lt;/li&gt;
&lt;li&gt;Test Delegated payment works after master key disabled&lt;/li&gt;
&lt;li&gt;Test  Delegate  field set to own account rejected with temBAD_SIGNER&lt;/li&gt;
&lt;li&gt;Test Delegated no-op AccountSet rejected&lt;/li&gt;
&lt;li&gt;Test Delegated no-op TrustSet rejected&lt;/li&gt;
&lt;li&gt;Test Delegated SignerListSet rejected at preflight&lt;/li&gt;
&lt;li&gt;Test Delegated SetRegularKey rejected at preflight&lt;/li&gt;
&lt;li&gt;Test AccountSet WalletSize field rejected under granular AccountDomainSet delegate&lt;/li&gt;
&lt;li&gt;Test TrustlineFreeze rejects disallowed flag tfSetNoRipple&lt;/li&gt;
&lt;li&gt;Test TrustlineFreeze rejects disallowed field QualityIn&lt;/li&gt;
&lt;li&gt;Test PaymentBurn rejects disallowed flag tfPartialPayment&lt;/li&gt;
&lt;li&gt;Test PaymentBurn rejects disallowed field Paths&lt;/li&gt;
&lt;li&gt;Test Union of two granular permissions still forbids fields ungranted by either&lt;/li&gt;
&lt;li&gt;Test Union of Freeze and Unfreeze widens allowed flags but not fields&lt;/li&gt;
&lt;li&gt;Test AccountDomainSet delegate cannot smuggle SetFlag asfRequireAuth&lt;/li&gt;
&lt;li&gt;Test AccountDomainSet delegate cannot smuggle SetFlag asfDisableMaster&lt;/li&gt;
&lt;li&gt;Test AccountDomainSet delegate cannot smuggle NFTokenMinter via WalletSize&lt;/li&gt;
&lt;li&gt;Test MPTokenIssuanceLock rejects disallowed field DomainID&lt;/li&gt;
&lt;li&gt;Test MPTokenIssuanceLock rejects unlock flag&lt;/li&gt;
&lt;li&gt;Test PaymentBurn delegate cannot flip issuer to mint&lt;/li&gt;
&lt;li&gt;Test PaymentMint delegate cannot flip issuer to burn&lt;/li&gt;
&lt;li&gt;Test PaymentBurn delegate rejected when holder balance is zero&lt;/li&gt;
&lt;li&gt;Test PaymentMint delegate rejected when destination lacks trustline&lt;/li&gt;
&lt;li&gt;Test Granular Mint/Burn do not authorize XRP payment&lt;/li&gt;
&lt;li&gt;Test DelegateSet rejects truncating PermissionValue&lt;/li&gt;
&lt;li&gt;Test PR #6126 — actor filter ignores regular-key-signed payment&lt;/li&gt;
&lt;li&gt;Test PR #6126 — actor filter ignores multi-sig-signed non-delegated payment&lt;/li&gt;
&lt;li&gt;Test PR #6126 — delegate marker without  delegate  param rejected&lt;/li&gt;
&lt;li&gt;Test PR #6126 — non-delegate marker with  delegate  param rejected&lt;/li&gt;
&lt;li&gt;Test PR #6126 — delegated tx with multi-signed delegatee matches both filters&lt;/li&gt;
&lt;li&gt;Test PR #6126 — delegate actor filter paginates all delegated txns&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cross-Feature Interactions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Test Delegate as outer account executes delegated inner (succeeds)&lt;/li&gt;
&lt;li&gt;Test Delegate as BatchSigner authorizes delegated inner (succeeds)&lt;/li&gt;
&lt;li&gt;Test Delegated inner without BatchSigner rejected with temBAD_SIGNER&lt;/li&gt;
&lt;li&gt;Test Delegated inner signed by account holder rejected with temBAD_SIGNER&lt;/li&gt;
&lt;li&gt;Test Delegate without permission — inner fails and Batch rolls back&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTSend — basic&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTSend — missing permission&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTConvert&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTMergeInbox&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTConvertBack&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTClawback by issuer&lt;/li&gt;
&lt;li&gt;Test Delegate — send permission only cannot ConvertBack&lt;/li&gt;
&lt;li&gt;Test Delegate — ConvertBack permission only cannot send&lt;/li&gt;
&lt;li&gt;Test Delegate ConfidentialMPTClawback with non-issuer account rejected at preflight&lt;/li&gt;
&lt;li&gt;Test Delegate — revoked permission blocks subsequent use&lt;/li&gt;
&lt;li&gt;Test Delegate — self-delegation rejected&lt;/li&gt;
&lt;li&gt;Test Delegate — ConfidentialMPTSend with proof over delegate keys rejected&lt;/li&gt;
&lt;li&gt;Test PR #7640 — delegated payment rejected with telCAN_NOT_QUEUE when ledger full&lt;/li&gt;
&lt;li&gt;Test PR #7640 — delegated payment succeeds when paying open ledger fee&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>security</category>
      <category>softwareengineering</category>
      <category>testing</category>
    </item>
    <item>
      <title>Batch Transaction - QA Test Report</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Mon, 09 Feb 2026 20:09:39 +0000</pubDate>
      <link>https://dev.to/ripplexdev/batch-transaction-qa-test-report-17em</link>
      <guid>https://dev.to/ripplexdev/batch-transaction-qa-test-report-17em</guid>
      <description>&lt;p&gt;&lt;strong&gt;Test Report Date&lt;/strong&gt;: 2/6/2026&lt;br&gt;
&lt;strong&gt;Prepared By&lt;/strong&gt;: QA Team [&lt;a href="https://github.com/sgramkumar" rel="noopener noreferrer"&gt;sgramkumar&lt;/a&gt;]&lt;br&gt;
&lt;strong&gt;Environment&lt;/strong&gt;: GitLab CI Runner (Ubuntu 22.04)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br&gt;
This report presents the results of QA testing performed on &lt;code&gt;Batch&lt;/code&gt; transaction on xrpld network.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Feature
&lt;/h3&gt;

&lt;p&gt;This section provides a brief summary of the feature being tested. The feature under test is designed to deliver specific functionality as defined in the project specifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature Name&lt;/strong&gt;: Batch Transaction&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: The proposed Batch amendment to the XRP Ledger (XRPL) protocol allows multiple transactions to be packaged together and executed as a single unit. It's like laying the foundation, building the walls, and raising the roof all in one single secure step, leveraging the existing strengths of the XRP Ledger. If you're unable to afford the roof, you won't even bother laying the foundation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specification Reference&lt;/strong&gt;: &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0056-batch" rel="noopener noreferrer"&gt;https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0056-batch&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Test Scope
&lt;/h3&gt;

&lt;p&gt;This round of testing focuses solely on ensuring that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All specified functionalities are working as expected.&lt;/li&gt;
&lt;li&gt;The API handles valid and invalid input gracefully.&lt;/li&gt;
&lt;li&gt;Integration with other features is functioning correctly.&lt;/li&gt;
&lt;li&gt;Feature validation includes both RPC and WebSockets to ensure consistent behavior across different interfaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Types of Testing Conducted
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Functional Testing&lt;/td&gt;
&lt;td&gt;Verifying each endpoint against defined specifications to ensure it behaves as expected.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression Testing&lt;/td&gt;
&lt;td&gt;Running relevant test cases to confirm that recent changes did not break existing functionalities.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End to end Testing&lt;/td&gt;
&lt;td&gt;Involves testing the complete flow of a feature confirming that different components of the application, potentially developed by different teams work together as expected.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  4. Test Environment
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;Ubuntu 22.04 (LTS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU Cores&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;128 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test Framework&lt;/td&gt;
&lt;td&gt;Pytest/Shell script&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  5. Test Results Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Total Tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Feature Testing&lt;/td&gt;
&lt;td&gt;232&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression Testing&lt;/td&gt;
&lt;td&gt;3356&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Feature commit:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;commit 2a61aee5620725f8249e3066616ef6e20c99c857
Author: Denis Angell &amp;lt;dangell@transia.co&amp;gt;
Date:   Fri May 23 21:53:53 2025 +0200

    Add Batch feature (XLS-56) (#5060)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Testcases&lt;/strong&gt;: &lt;a href="https://dev.to/ripplexdev/batch-transaction-testcases-273j"&gt;https://dev.to/ripplexdev/batch-transaction-testcases-273j&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Bugs Reported
&lt;/h3&gt;

&lt;p&gt;No new bugs have been reported post-feature commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Conclusion
&lt;/h3&gt;

&lt;p&gt;This feature has undergone comprehensive functional, regression, and end to end testing. The majority of the test cases have been executed successfully, with positive outcomes confirming that the core functionalities are working as expected.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>cicd</category>
      <category>testing</category>
      <category>web3</category>
    </item>
    <item>
      <title>Batch Transaction - Testcases</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Mon, 09 Feb 2026 20:09:17 +0000</pubDate>
      <link>https://dev.to/ripplexdev/batch-transaction-testcases-273j</link>
      <guid>https://dev.to/ripplexdev/batch-transaction-testcases-273j</guid>
      <description>&lt;p&gt;&lt;strong&gt;Mode: allornothing&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch allornothing all payments succeed&lt;/li&gt;
&lt;li&gt;Test Batch allornothing submit batch multiple times&lt;/li&gt;
&lt;li&gt;Test Batch allornothing one payment fails&lt;/li&gt;
&lt;li&gt;Test Batch allornothing all payments fail&lt;/li&gt;
&lt;li&gt;Test Batch allornothing mixed transaction types&lt;/li&gt;
&lt;li&gt;Test Batch allornothing fee calculation&lt;/li&gt;
&lt;li&gt;Test Batch allornothing max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch allornothing more than max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch allornothing cash same check multiple times&lt;/li&gt;
&lt;li&gt;Test Batch allornothing fail and then succeed&lt;/li&gt;
&lt;li&gt;Test Batch allornothing with tickets&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Mode: onlyone&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch onlyone first succeeds&lt;/li&gt;
&lt;li&gt;Test Batch onlyone first fails second succeeds&lt;/li&gt;
&lt;li&gt;Test Batch onlyone all fail&lt;/li&gt;
&lt;li&gt;Test Batch onlyone offer priority&lt;/li&gt;
&lt;li&gt;Test Batch onlyone max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch onlyone more than max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch onlyone cash same check multiple times&lt;/li&gt;
&lt;li&gt;Test Batch onlyone fail and then succeed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Mode: untilfailure&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch untilfailure all succeed&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure stops at first&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure stops at second&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure stops at third&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure sequential setup&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure progressive payments&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure mixed success failure pattern&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure more than max inner transactions&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure cash same check multiple times&lt;/li&gt;
&lt;li&gt;Test Batch untilfailure fail and then succeed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Mode: independent&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch independent all succeed&lt;/li&gt;
&lt;li&gt;Test Batch independent some fail&lt;/li&gt;
&lt;li&gt;Test Batch independent all fail&lt;/li&gt;
&lt;li&gt;Test Batch independent parallel operations&lt;/li&gt;
&lt;li&gt;Test Batch independent mixed transaction types&lt;/li&gt;
&lt;li&gt;Test Batch independent account setup operations&lt;/li&gt;
&lt;li&gt;Test Batch independent max transactions&lt;/li&gt;
&lt;li&gt;Test Batch independent more than max transactions&lt;/li&gt;
&lt;li&gt;Test Batch independent cash same check multiple times&lt;/li&gt;
&lt;li&gt;Test Batch independent fail and then succeed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Multi account tests (with signers)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch multiaccount workflow all payments succeed&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount atomic swap xrp for xrp&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount atomic swap xrp for token&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount circular three way swap&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount with submitter not in inner txns&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount without signers&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount with max signers&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount with more than max signers&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount txn1 fails txn2 succeeds&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount create check succeeds cash check fails&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete accounts too soon with other account as signer[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete accounts too soon with other account as signer[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete accounts too soon with other account as signer[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete accounts too soon with other account as signer[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete accounts after flag ledger with other account as signer&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete submitting account after flag ledger with no signer&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount delete submitting account after flag ledger with signer&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount alice creates offer bob creates offer[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount alice creates offer bob creates offer[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount alice creates offer bob creates offer[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount alice creates offer bob creates offer[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount create nftokenmint nftokenoffercreate fails reverts nftokenmint[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount create nftokenmint nftokenoffercreate fails reverts nftokenmint[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount create nftokenmint nftokenoffercreate fails reverts nftokenmint[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch multiaccount create nftokenmint nftokenoffercreate fails reverts nftokenmint[Batch.tfIndependent]&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Batch with Vault transactions&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch with vault create[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with vault create[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with vault create[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with vault create[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with vault set[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with vault set[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with vault set[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with vault set[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with vault deposit[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with vault deposit[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with vault deposit[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with vault deposit[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with vault withdraw[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with vault withdraw[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with vault withdraw[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with vault withdraw[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with vault delete[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with vault delete[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with vault delete[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with vault delete[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with vault clawback[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with vault clawback[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with vault clawback[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with vault clawback[Batch
.tfIndependent]&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Batch with LoanBroker/Loan transactions&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch with loan broker set[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker set[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker set[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker set[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker delete[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker delete[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker delete[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker delete[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover deposit[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover deposit[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover deposit[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover deposit[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover withdraw[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover withdraw[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover withdraw[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover withdraw[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover clawback[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover clawback[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover clawback[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan broker cover clawback[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with loan set[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan set[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan set[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan set[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with loan pay[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan pay[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan pay[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan pay[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with loan delete[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan delete[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan delete[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan delete[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with loan manage[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with loan manage[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with loan manage[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with loan manage[Batch
.tfIndependent]&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Batch with various transaction types&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch transaction type trustset[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type trustset[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type trustset[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type trustset[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type offercreate[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type offercreate[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type offercreate[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type offercreate[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type account set[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type account set[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type account set[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type account set[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type escrow create[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type escrow create[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type escrow create[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type escrow create[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type check create[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type check create[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type check create[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type check create[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type nftokenmint[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type nftokenmint[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type nftokenmint[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type nftokenmint[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with ticket create transaction&lt;/li&gt;
&lt;li&gt;Test Batch transaction type signerlistset[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type signerlistset[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type signerlistset[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type signerlistset[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type depositpreauth[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type depositpreauth[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type depositpreauth[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch transaction type depositpreauth[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;TODO: Batch transaction with MPT as inner transactions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Miscellaneous tests&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Test Batch empty raw transactions[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch empty raw transactions[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch empty raw transactions[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch empty raw transactions[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with one raw transaction[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with one raw transaction[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with one raw transaction[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with one raw transaction[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with all inner transactions having no tfInnerBatchTxn flag[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with all inner transactions having no tfInnerBatchTxn flag[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with all inner transactions having no tfInnerBatchTxn flag[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with all inner transactions having no tfInnerBatchTxn flag[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with some inner transactions having no tfInnerBatchTxn flag[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with some inner transactions having no tfInnerBatchTxn flag[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with some inner transactions having no tfInnerBatchTxn flag[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with some inner transactions having no tfInnerBatchTxn flag[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with all inner transactions having incorrect tfInnerBatchTxn flag&lt;/li&gt;
&lt;li&gt;Test Batch with tfInnerBatchTxn flag set for outer transaction&lt;/li&gt;
&lt;li&gt;Test Batch with no mode set for outer transaction&lt;/li&gt;
&lt;li&gt;Test Batch with invalid mode set for outer transaction&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having no fee field[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having no fee field[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having no fee field[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having no fee field[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having invalid fee values[-1.5]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having invalid fee values[1.5]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having invalid fee values[58E4CD288]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having invalid fee values[fee value3]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having invalid fee values[~!@#$%^&amp;amp;*() -=+[{&amp;lt;&amp;gt;]};&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having bad fee values[-1]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions having bad fee values[1]&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with SigningPubKey&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with fee and SigningPubKey&lt;/li&gt;
&lt;li&gt;Test Batch with inner transactions with TxnSignature&lt;/li&gt;
&lt;li&gt;Test Batch with invalid inner transactions[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with invalid inner transactions[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with invalid inner transactions[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with invalid inner transactions[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch inside non empty batch[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch inside non empty batch[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch inside non empty batch[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch inside non empty batch[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch inside empty batch[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch inside empty batch[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch inside empty batch[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch inside empty batch[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with same sequence[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with same sequence[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with same sequence[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with same sequence[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with past sequence[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with past sequence[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with past sequence[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with past sequence[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with future not incremental sequences[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with future not incremental sequences[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with future not incremental sequences[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch inner txns with future not incremental sequences[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with account does not exist[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with account does not exist[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with account does not exist[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with account does not exist[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with deposit auth on account[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with deposit auth on account[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with deposit auth on account[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with deposit auth on account[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch with master key disabled on account[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch with master key disabled on account[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch with master key disabled on account[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch with master key disabled on account[Batch.tfIndependent]&lt;/li&gt;
&lt;li&gt;Test Batch all payments with destination account not funded[Batch.tfAllOrNothing]&lt;/li&gt;
&lt;li&gt;Test Batch all payments with destination account not funded[Batch.tfOnlyOne]&lt;/li&gt;
&lt;li&gt;Test Batch all payments with destination account not funded[Batch.tfUntilFailure]&lt;/li&gt;
&lt;li&gt;Test Batch all payments with destination account not funded[Batch.tfIndependent]&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pending Tests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TODO: Batch transaction with MPT as inner transactions&lt;/p&gt;

</description>
      <category>backend</category>
      <category>blockchain</category>
      <category>softwaredevelopment</category>
      <category>testing</category>
    </item>
    <item>
      <title>Permissioned DEX - QA Test Report</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Wed, 16 Jul 2025 17:43:47 +0000</pubDate>
      <link>https://dev.to/ripplexdev/permissioned-dex-qa-test-report-ajp</link>
      <guid>https://dev.to/ripplexdev/permissioned-dex-qa-test-report-ajp</guid>
      <description>&lt;p&gt;&lt;strong&gt;Test Report Date&lt;/strong&gt;: 7/7/2025&lt;br&gt;
&lt;strong&gt;Prepared By&lt;/strong&gt;: QA Team [&lt;a href="https://github.com/sgramkumar" rel="noopener noreferrer"&gt;sgramkumar&lt;/a&gt;, &lt;a href="https://github.com/mkunasani" rel="noopener noreferrer"&gt;mkunasani&lt;/a&gt;]&lt;br&gt;
&lt;strong&gt;Environment&lt;/strong&gt;: GitLab CI Runner (Ubuntu 22.04)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br&gt;
This report presents the results of QA testing performed on &lt;code&gt;Permissioned DEX&lt;/code&gt; across rippled and Clio servers.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Feature
&lt;/h3&gt;

&lt;p&gt;This section provides a brief summary of the feature being tested. The feature under test is designed to deliver specific functionality as defined in the project specifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature Name&lt;/strong&gt;: Permissioned DEX&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: This proposal introduces a permissioned DEX system for the XRPL. By integrating permissioning features directly within the DEX protocol, regulated financial institutions gain the ability to participate in the XRPL's DEX while still adhering to their compliance requirements. This approach avoids the drawbacks of isolated, permissioned tokens or private blockchains, ensuring a vibrant and liquid marketplace that facilitates seamless arbitrage opportunities. Ultimately, this permissioned DEX system paves the way for wider institutional adoption of XRPL, fostering a more inclusive and efficient financial landscape.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specification Reference&lt;/strong&gt;: &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/5709728274e5a32cd6d4e06d508aeac63d18154f/XLS-0081d-permissioned-dex" rel="noopener noreferrer"&gt;https://github.com/XRPLF/XRPL-Standards/tree/5709728274e5a32cd6d4e06d508aeac63d18154f/XLS-0081d-permissioned-dex&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Test Scope
&lt;/h3&gt;

&lt;p&gt;This round of testing focuses solely on ensuring that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All specified functionalities are working as expected.&lt;/li&gt;
&lt;li&gt;The API handles valid and invalid input gracefully.&lt;/li&gt;
&lt;li&gt;Integration with other features is functioning correctly.&lt;/li&gt;
&lt;li&gt;Feature validation includes both RPC and WebSockets to ensure consistent behavior across different interfaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Types of Testing Conducted
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Functional Testing&lt;/td&gt;
&lt;td&gt;Verifying each endpoint against defined specifications to ensure it behaves as expected.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression Testing&lt;/td&gt;
&lt;td&gt;Running relevant test cases to confirm that recent changes did not break existing functionalities.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End to end Testing&lt;/td&gt;
&lt;td&gt;Involves testing the complete flow of a feature confirming that different components of the application, potentially developed by different teams work together as expected.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  4. Test Environment
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;Ubuntu 22.04 (LTS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU Cores&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;128 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test Framework&lt;/td&gt;
&lt;td&gt;Pytest/Shell script&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  5. Test Results Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Total Tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Feature Testing&lt;/td&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression Testing (rippled &amp;amp; Clio)&lt;/td&gt;
&lt;td&gt;3978&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Feature commit:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;commit 0a34b5c691d3a205146a706b460473b3bfb84205
Author: Shawn Xie &amp;lt;35279399+shawnxie999@users.noreply.github.com&amp;gt;
Date:   Fri May 30 13:24:48 2025 -0400

    Add support for XLS-81 Permissioned DEX (#5404)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Testcases&lt;/strong&gt;: &lt;a href="https://dev.to/ripplexdev/permissioned-dex-testcases-4oj1"&gt;https://dev.to/ripplexdev/permissioned-dex-testcases-4oj1&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Bugs Reported
&lt;/h3&gt;

&lt;p&gt;No new bugs have been reported post-feature commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Conclusion
&lt;/h3&gt;

&lt;p&gt;This feature has undergone comprehensive functional, regression, and end to end testing. The majority of the test cases have been executed successfully, with positive outcomes confirming that the core functionalities are working as expected.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Token Escrow - QA Test Report</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Wed, 16 Jul 2025 17:43:18 +0000</pubDate>
      <link>https://dev.to/ripplexdev/token-escrow-qa-test-report-306i</link>
      <guid>https://dev.to/ripplexdev/token-escrow-qa-test-report-306i</guid>
      <description>&lt;p&gt;&lt;strong&gt;Test Report Date&lt;/strong&gt;: 7/7/2025&lt;br&gt;
&lt;strong&gt;Prepared By&lt;/strong&gt;: QA Team [&lt;a href="https://github.com/sgramkumar" rel="noopener noreferrer"&gt;sgramkumar&lt;/a&gt;, &lt;a href="https://github.com/mkunasani" rel="noopener noreferrer"&gt;mkunasani&lt;/a&gt;]&lt;br&gt;
&lt;strong&gt;Environment&lt;/strong&gt;: GitLab CI Runner (Ubuntu 22.04)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br&gt;
This report presents the results of QA testing performed on &lt;code&gt;Token Escrow&lt;/code&gt; across rippled and Clio servers.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Feature
&lt;/h3&gt;

&lt;p&gt;This section provides a brief summary of the feature being tested. The feature under test is designed to deliver specific functionality as defined in the project specifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature Name&lt;/strong&gt;: Token Escrow&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Description&lt;/strong&gt;: The proposed TokenEscrow amendment to the XRP Ledger (XRPL) protocol enhances the existing Escrow functionality by enabling support for both Trustline-based tokens (IOUs) and Multi-Purpose Tokens (MPTs). This amendment introduces changes to ledger objects, transactions, and transaction processing logic to allow escrows to use IOU tokens and MPTs, while respecting issuer controls and maintaining ledger integrity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specification Reference&lt;/strong&gt;: &lt;a href="https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0085-token-escrow" rel="noopener noreferrer"&gt;https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0085-token-escrow&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Test Scope
&lt;/h3&gt;

&lt;p&gt;This round of testing focuses solely on ensuring that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All specified functionalities are working as expected.&lt;/li&gt;
&lt;li&gt;The API handles valid and invalid input gracefully.&lt;/li&gt;
&lt;li&gt;Integration with other features is functioning correctly.&lt;/li&gt;
&lt;li&gt;Feature validation includes both RPC and WebSockets to ensure consistent behavior across different interfaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  3. Types of Testing Conducted
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Functional Testing&lt;/td&gt;
&lt;td&gt;Verifying each endpoint against defined specifications to ensure it behaves as expected.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression Testing&lt;/td&gt;
&lt;td&gt;Running relevant test cases to confirm that recent changes did not break existing functionalities.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;End to end Testing&lt;/td&gt;
&lt;td&gt;Involves testing the complete flow of a feature confirming that different components of the application, potentially developed by different teams work together as expected.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  4. Test Environment
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;Ubuntu 22.04 (LTS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CPU Cores&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;128 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test Framework&lt;/td&gt;
&lt;td&gt;Pytest/Shell script&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  5. Test Results Summary
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Testing Type&lt;/th&gt;
&lt;th&gt;Total Tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Feature Testing&lt;/td&gt;
&lt;td&gt;73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Regression Testing (rippled &amp;amp; Clio)&lt;/td&gt;
&lt;td&gt;3976&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Feature commit:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;commit 053e1af7ff4886d84a278317cbdfcdab1ecd557f
Author: Denis Angell &amp;lt;dangell@transia.co&amp;gt;
Date:   Tue Jun 3 18:51:55 2025 +0200

    Add support for XLS-85 Token Escrow (#5185)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Testcases&lt;/strong&gt;: &lt;a href="https://dev.to/ripplexdev/token-escrow-testcases-2e1e"&gt;https://dev.to/ripplexdev/token-escrow-testcases-2e1e&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Bugs Reported
&lt;/h3&gt;

&lt;p&gt;No new bugs have been reported post-feature commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Conclusion
&lt;/h3&gt;

&lt;p&gt;This feature has undergone comprehensive functional, regression, and end to end testing. The majority of the test cases have been executed successfully, with positive outcomes confirming that the core functionalities are working as expected.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Permissioned DEX - Testcases</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Mon, 14 Jul 2025 22:27:48 +0000</pubDate>
      <link>https://dev.to/ripplexdev/permissioned-dex-testcases-4oj1</link>
      <guid>https://dev.to/ripplexdev/permissioned-dex-testcases-4oj1</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Test Permissioned Dex offer create both parties in same domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create parties from different domains&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create both parties in 2 different domains&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create parties in domain and non domain with no hybrid flag set&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create parties in domain and non domain with hybrid flag set&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create parties in different domains with hybrid flag set&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create parties in same domain with hybrid flag set&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create hybrid flag set and no domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create with domain and offer cancel&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer cancel with domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create with invalid domain[-1]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create with invalid domain[37FB1D6396D6FA]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create with invalid domain[invalid domain id2]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create with invalid domain[~!@#$%^&amp;amp;*() -=+[{&amp;lt;&amp;gt;]};&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create with different domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create not using domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create after credential expiration&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create before credential expiration&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer create with empty domain id field&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex multiple offer create with domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex offer claim after expiration&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with both parties on domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with source not on domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with destination not on domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with no domain but both parties on pd&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with parties in domain and non domain with hybrid flag set&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with deposit auth set&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with preauth set&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with one party on domain and preauth set&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment after credential expiration&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment before credential expiration&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex payment with invalid domain[-1]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex payment with invalid domain[37FB1D6396D6FA]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex payment with invalid domain[invalid domain id2]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex payment with invalid domain[~!@#$%^&amp;amp;*() -=+[{&amp;lt;&amp;gt;]};&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment with empty domain id field&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex xrp payment not using domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex make payment on offer&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex deep freeze make payment on offer&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[-1]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[37FB1D6396D6FA]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[invalid domain id3]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[~!@#$%^&amp;amp;*() -=+[{&amp;lt;&amp;gt;]};&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[-1]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[37FB1D6396D6FA]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[invalid domain id3]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[~!@#$%^&amp;amp;*() -=+[{&amp;lt;&amp;gt;]};&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex path find with domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex path find with invalid domain[-1]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex path find with invalid domain[]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex path find with invalid domain[37FB1D6396D6FA]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex path find with invalid domain[invalid domain id3]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex path find with invalid domain[~!@#$%^&amp;amp;*() -=+[{&amp;lt;&amp;gt;]};&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[-1]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[37FB1D6396D6FA]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[invalid domain id3]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex book offers with invalid domain[~!@#$%^&amp;amp;*() -=+[{&amp;lt;&amp;gt;]};&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with domain&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[-1]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[37FB1D6396D6FA]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[invalid domain id3]&lt;/li&gt;
&lt;li&gt;Test Permissioned Dex ripple path find with invalid domain[~!@#$%^&amp;amp;*() -=+[{&amp;lt;&amp;gt;]};&lt;/li&gt;
&lt;li&gt;Test subscribe to order books with domain and create offer&lt;/li&gt;
&lt;li&gt;Test subscribe to book changes with domain and trigger book change&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Token Escrow - Testcases</title>
      <dc:creator>Ramkumar SG</dc:creator>
      <pubDate>Mon, 14 Jul 2025 22:27:42 +0000</pubDate>
      <link>https://dev.to/ripplexdev/token-escrow-testcases-2e1e</link>
      <guid>https://dev.to/ripplexdev/token-escrow-testcases-2e1e</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Test Token Escrow create and finish iou with lsfAllowTokenEscrow flag&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with requires authorization and both parties authorized&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with requires authorization and destination unauthorized&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou after global freeze&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou after global freeze&lt;/li&gt;
&lt;li&gt;Test Token Escrow cancel iou after global freeze&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou after individual freeze source&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou after individual freeze source&lt;/li&gt;
&lt;li&gt;Test Token Escrow cancel iou after individual freeze source&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou after individual freeze destination&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou after individual freeze destination&lt;/li&gt;
&lt;li&gt;Test Token Escrow cancel iou after individual freeze destination&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou after deep freeze source&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou after deep freeze source&lt;/li&gt;
&lt;li&gt;Test Token Escrow cancel iou after deep freeze source&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou after deep freeze destination&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou after deep freeze destination&lt;/li&gt;
&lt;li&gt;Test Token Escrow cancel iou after deep freeze destination&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou without lsfAllowTokenEscrow flag&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou and cancel&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou finishafter in past&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou cancelafter in past&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with non existent destination account&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with invalid funds[None]&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with invalid funds[]&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with bad funds[0]&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with bad funds[-1]&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with more than available&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with both finishafter and cancelafter missing&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou by third party&lt;/li&gt;
&lt;li&gt;Test Token Escrow cancel iou by third party&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou with incorrect owner&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou with self as owner&lt;/li&gt;
&lt;li&gt;Test Token Escrow iou with regular key to create and finish&lt;/li&gt;
&lt;li&gt;Test Token Escrow iou with regular key to create and cancel&lt;/li&gt;
&lt;li&gt;Test Token Escrow create and finish iou with destination same as source&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou with destination same as source after global freeze&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou with destination same as source after deep freeze&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with same finish after and cancel after&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with no source address&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with no destination address&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with non existent source&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou cancel after before finish after&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with only cancel after&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with no trustline on source&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with no trustline on destination&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou with just base reserve&lt;/li&gt;
&lt;li&gt;Test Token Escrow create finish iou multiple escrows&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou and delete source&lt;/li&gt;
&lt;li&gt;Test Token Escrow create iou and delete destination&lt;/li&gt;
&lt;li&gt;Test Token Escrow cancel iou and delete source&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish iou with destination having preauth enabled&lt;/li&gt;
&lt;li&gt;Test Token Escrow finish with different iou than in escrow create&lt;/li&gt;
&lt;li&gt;Test Token Escrow iou with offer create&lt;/li&gt;
&lt;li&gt;Test Token Escrow iou with multi sign key escrow finish cash using regular key&lt;/li&gt;
&lt;li&gt;Test Token Escrow iou with regular key escrow finish cash using multi sign key&lt;/li&gt;
&lt;li&gt;Test Token Escrow create and finish iou on tickets&lt;/li&gt;
&lt;li&gt;Test Token Escrow delegate create and finish escrow iou&lt;/li&gt;
&lt;li&gt;Test Token Escrow clawback iou after escrow finish&lt;/li&gt;
&lt;li&gt;Test account objects of Token Escrow iou create and finish&lt;/li&gt;
&lt;li&gt;Test account objects of Token Escrow iou create and cancel&lt;/li&gt;
&lt;li&gt;Test account objects of Token Escrow mpt create and finish&lt;/li&gt;
&lt;li&gt;Test account objects of Token Escrow create mpt and cancel&lt;/li&gt;
&lt;li&gt;Test tx of Token Escrow iou create and finish&lt;/li&gt;
&lt;li&gt;Test tx of Token Escrow iou create and cancel&lt;/li&gt;
&lt;li&gt;Test tx of Token Escrow mpt create and finish&lt;/li&gt;
&lt;li&gt;Test tx of Token Escrow create mpt and cancel&lt;/li&gt;
&lt;li&gt;Test ledger entry of Token Escrow iou create and finish&lt;/li&gt;
&lt;li&gt;Test ledger entry of Token Escrow iou create and cancel&lt;/li&gt;
&lt;li&gt;Test ledger entry of Token Escrow mpt create and finish&lt;/li&gt;
&lt;li&gt;Test ledger entry of Token Escrow create mpt and cancel&lt;/li&gt;
&lt;li&gt;Test mpt holders of Token Escrow mpt create and finish&lt;/li&gt;
&lt;li&gt;Test mpt holders of Token Escrow mpt create and cancel&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
  </channel>
</rss>
