Skip to content

Pin xrpl-py to main; drop the SponsorshipSet compat shim - #92

Merged
lmaisons merged 1 commit into
mainfrom
manasip/xrpl-py-main-pin-clean
Sep 2, 2026
Merged

Pin xrpl-py to main; drop the SponsorshipSet compat shim#92
lmaisons merged 1 commit into
mainfrom
manasip/xrpl-py-main-pin-clean

Conversation

@manasip-prog

Copy link
Copy Markdown
Collaborator

Independent of #91 — one commit off main, no lending v1.1 changes.

xrpl-py's main branch now carries every 3.3.0 feature, including the confidential MPT and sponsor models that kept us on pre-3.3-release-group. Both refs move together (pyproject.toml branch + Dockerfile.workload XRPL_PY_REF) so proofs and models come from one ref. xrpl-py 5.0.0 → 5.1.0.

sponsorship_compat.py is deleted

SponsorshipSet with FeeAmountDelta / RemainingOwnerCountDelta ships upstream, so the field-header injection shim has no reason to exist — import from xrpl.models again.

mpt-crypto version gate is a compatibility class, not string equality

main targets mpt-crypto 1.0.4; both xrpld develop and staging/3.3.x-private pin 1.0.2. Under the old equality check the crypto build would be skipped on every run, taking all five ConfidentialMPT* valid paths dark. git diff 1.0.2 1.0.4 -- include src is empty (CMake/packaging/tests only), so setup-confidential-crypto.sh now lists that pair in _COMPATIBLE_CLASSES and the build stays live. 1.0.5 is deliberately not listed — it adds a BSGS DLP solver, a real library change.

Faulty vectors main's tightened validation now blocks at construction

Each moves onto submit_raw dict mutation, so rippled still does the rejecting:

  • SponsorshipSet — zero deltas and the neither-field-set case raise XRPLModelException; caught and re-routed to keep temBAD_AMOUNT / temINVALID reachable.
  • ConfidentialMPT* — the models now enforce the MPTokenIssuanceID length plus the issuer roles rippled checks in preflight: the issuer may not be the Account of MergeInbox / Convert / ConvertBack / Send nor the Destination of a Send, and Clawback's Account must be the issuer. Adds _pick_holder_pool() so the four holder-shaped types draw a non-issuer account, rebuilds _clawback_faulty from a tracked issuer, and moves the send_to_issuer, non_issuer and fake_mpt_id vectors onto mutate.

Checks

check-imports, check-endpoints, check-fuzz-coverage, check-modifier-coverage, check-assembler-roundtrip, ruff, ruff format all pass.

Two things only an image build can prove, worth watching on the first run: the crypto build succeeding with 1.0.4 bindings against a 1.0.2-pinned xrpld, and the rerouted ConfidentialMPT* vectors returning the expected tem*/tec* from rippled rather than just constructing cleanly.


Pull Request opened by Augment Code with guidance from the PR author

xrpl-py's main branch now carries every 3.3.0 feature, including the
confidential MPT and sponsor models that kept us on pre-3.3-release-group.
Move both refs together (pyproject branch + Dockerfile XRPL_PY_REF) so the
proofs and the models stay on one ref.

Knock-on changes:

- sponsorship_compat.py is deleted. SponsorshipSet with FeeAmountDelta /
  RemainingOwnerCountDelta ships upstream, so the field-header injection
  shim has no reason to exist.

- setup-confidential-crypto.sh gates the mpt-crypto version on a
  compatibility class rather than string equality. main targets 1.0.4
  while both xrpld develop and staging/3.3.x-private pin 1.0.2, and
  git diff 1.0.2 1.0.4 -- include src is empty, so the pair is listed as
  equivalent and the crypto build (and the confidential valid paths) stay
  live. 1.0.5 is deliberately not listed: it adds a BSGS DLP solver.

- Faulty vectors that main's tightened model validation now rejects at
  construction move onto submit_raw dict mutation, so rippled still does
  the rejecting:

  SponsorshipSet - zero deltas and the neither-field-set case raise
  XRPLModelException; caught and re-routed to keep temBAD_AMOUNT /
  temINVALID reachable.

  ConfidentialMPT* - the models now enforce the MPTokenIssuanceID length
  plus the issuer roles rippled checks in preflight: the issuer may not be
  the Account of MergeInbox / Convert / ConvertBack / Send nor the
  Destination of a Send, and Clawback's Account must be the issuer. Adds
  _pick_holder_pool() so the four holder-shaped types draw a non-issuer
  account, rebuilds _clawback_faulty from a tracked issuer, and moves the
  send_to_issuer, non_issuer and fake_mpt_id vectors onto mutate.

All five check-* gates pass.
@lmaisons

lmaisons commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

To my ignorant eyes, this appears to be a grab-bag of not terribly related changes. For example, it's not clear what requires the XRPL_PY_REF changes related to confidential MPT transactions and the Sponsored Fees changes to be in the same commit / PR.

Nothing obviously jumps out as functionally problematic, but it's stretching my working memory enough that it's hard to approve with confidence.

@lmaisons

lmaisons commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Having reviewed the commit message itself, the amalgam makes sense. FWIW the commit message is tighter than the PR description above; I recommend using it directly.

@manasip-prog
manasip-prog marked this pull request as ready for review September 2, 2026 17:44
@lmaisons
lmaisons self-requested a review September 2, 2026 19:23

@lmaisons lmaisons left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed both manually and with Claude assistance. Neither pass revealed anything obviously problematic. The only suggestion that came up was to replace the PR description with the description used in the commit message itself, as that flowed better and made the necessity of the scope of the changes much more obvious.

@lmaisons
lmaisons merged commit 9cfa834 into main Sep 2, 2026
1 check passed
@lmaisons
lmaisons deleted the manasip/xrpl-py-main-pin-clean branch September 2, 2026 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants