Summary
Partial refunds floor the proportional units removed on every call. Repeating small refunds can recover principal while retaining more units than the remaining investment economically supports.
Repository evidence
contracts/chainmove-pool/src/lib.rs computes refund_units = amount * position.units / position.invested with integer division.
- The floored result is subtracted independently on each partial refund, with no carried remainder or post-refund ratio invariant.
Scope
- Define an exact post-refund unit entitlement or carry deterministic rounding remainder.
- Enforce pool/position unit-to-principal invariants after every refund.
- Document minimum refundable granularity and terminal dust handling.
Acceptance criteria
Tests
Non-goals
- Changing initial funding allocation policy.
Summary
Partial refunds floor the proportional units removed on every call. Repeating small refunds can recover principal while retaining more units than the remaining investment economically supports.
Repository evidence
contracts/chainmove-pool/src/lib.rscomputesrefund_units = amount * position.units / position.investedwith integer division.Scope
Acceptance criteria
Tests
Non-goals