Skip to content

Reclaim stalled dispute - #211

Open
gloskull wants to merge 5 commits into
drydocs:mainfrom
gloskull:reclaim_stalled_dispute
Open

Reclaim stalled dispute#211
gloskull wants to merge 5 commits into
drydocs:mainfrom
gloskull:reclaim_stalled_dispute

Conversation

@gloskull

@gloskull gloskull commented Sep 8, 2026

Copy link
Copy Markdown

Fixes issue where reclaim_stalled_dispute did not account for fee-on-transfer token shortfalls. Now tracks incoming token deposit balance deltas in AssertionEscrow and caps outgoing refunds in reclaim_stalled_dispute (as well as finalize and resolve) against the actual escrowed amounts. Includes unit test using a fee-on-transfer token mock.

Closes #207

google-labs-jules Bot and others added 2 commits September 8, 2026 18:50
…_dispute

Cap refunds in reclaim_stalled_dispute against tracked AssertionEscrow balance deltas, preventing contract traps or overpaying from pooled balances.

Co-authored-by: gloskull <189399494+gloskull@users.noreply.github.com>
…23233312752

fix(tholos): account for fee-on-transfer shortfall in reclaim_stalled_dispute
@collinsezedike

Copy link
Copy Markdown
Collaborator

This PR's diff includes a large number of unrelated test snapshots across asserter-consumer, demo-consumer, and tholos-v2 that have nothing to do with this fix, plus a self-merge commit in the history. This looks like a branch mix-up on your end (possibly branched from a stale fork main). Please rebase this onto a fresh branch from drydocs/tholos's actual main so the diff only contains the reclaim_stalled_dispute fix and its own test, this is unreviewable as currently scoped.

Separately: this issue explicitly depends on #180's AssertionEscrow mechanism, which is still open with requested changes, not yet merged. Once you've rebased cleanly, make sure your fix builds on top of #180's actual final version rather than reimplementing the escrow tracking separately.

@collinsezedike

Copy link
Copy Markdown
Collaborator

@gloskull Checking in, any progress on rebasing this? Let us know if you're still working it or need to hand it off.

@collinsezedike collinsezedike 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.

@gloskull Three things need fixing before this can merge:

  1. cargo fmt --check fails on lib.rs (two spots around reclaim_stalled_dispute where the multi-line token_client.transfer(...) calls should collapse to one line). Run cargo fmt and commit the result.

  2. packages/tholos-sdk/src/index.ts is out of date with the contract's new public interface. Regenerate it per packages/tholos-sdk/README.md and commit the result.

  3. This branch now conflicts with main: PR #214 (merged after this branch was opened) moved admin assignment from initialize's first parameter into a __constructor(admin) call made at deploy time, so initialize no longer takes an admin argument. Rebase onto main and update test.rs's initialize calls (including the new test_reclaim_stalled_dispute_fee_on_transfer test) to register with env.register(Tholos, (admin,)) and drop admin from the initialize/try_initialize argument lists, matching the rest of the suite.

@collinsezedike

Copy link
Copy Markdown
Collaborator

@gloskull Checking in, any progress on the three items above? Let us know if you're still working it or need to hand it off.

@gloskull

Copy link
Copy Markdown
Author

Hello @collinsezedike , I'd work on it now.

@collinsezedike

Copy link
Copy Markdown
Collaborator

@gloskull This has drifted into two separate PRs for the same issue: this one and #220, both fixing the same escrow-accounting logic. Please consolidate into one, close the other, and rebase onto main; both are currently marked CONFLICTING.

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.

[Bug] reclaim_stalled_dispute doesn't account for fee-on-transfer shortfall

2 participants