Repository navigation
Conversation
Unsolicited EURe from EUR 1 or any unsolicited USDC keeps a clone's batch
marker armed: every forward re-arms it, and past TRIGGER_DELAY the
client's next payment is open to the permissionless swap. The stranded
warning reported this as a missed payment window and pointed to the
refund procedure, and showed the marker age rounded down to whole hours
("0h" for 39 minutes on the sandbox). It now says when no settling
deposit owns the balance and points to the unattributed-balance
procedure, and shows the age to a tenth of an hour.
✅ Deploy Preview for vrtx-dashboard canceled.
|
✅ Deploy Preview for vortexfi canceled.
|
✅ Deploy Preview for vortex-sandbox ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The live unsolicited-funds test on the sandbox showed that a balance no deposit owns (EURe sent straight to a clone from EUR 1 upward, or any USDC that arrived outside a swap) keeps the clone's batch marker armed: each
forward()re-times it while that balance remains (_syncBatch(true)), and nothing closes it. Left alone pastTRIGGER_DELAY,swapandforwardAllare permissionless, so the client's next payment could be swapped by anyone as soon as it mints, against the Chainlink floor with no fee or subsidy.The stranded-balance monitor did warn, but as a missed payment window:
No deposit missed a window, the refund procedure does not apply, and "0h" was a 39-minute-old marker.
What changes
minted,convertingorrecoveringdeposit owns the balance. When none does, it says so ("no settling deposit owns this balance (unsolicited funds): clear it before the client's next payment") and cites the internal B2B runbook's unattributed-balance procedure (§2.8, added separately), at both severities. Lines for clones with a settling deposit keep their wording.recoverfirst, while the marker is old;forwardAllre-times it when EURe of EUR 1 or more remains).Tests
unattr:row, which the owner count must ignore) warns with the new wording and the age as3.0h, and errors pastTRIGGER_DELAYwith both the permissionless note and the procedure.Both fail on the old code.
monitoring.test.tspasses (68); lint, verify, api typecheck and wire-contract are clean.