_requireTCRoverMCR (TroveManager.sol:318, :1470-1475). A system condition, not yours.
_requireAmountGreaterThanZero (:319, :1612-1614).
_requireMUSDBalanceCoversRedemption (:320, :1477-1486).
No Trove is at or above MCR, so the loop finds nothing and draws nothing.
The one that had no field before MK-048. The amount falls in the gap: too large to take
as a partial without pushing the first eligible Trove's net debt below minNetDebt, and too
small to consume that Trove whole.
Act on it with RedemptionPreview.maxWithoutConsuming or RedemptionPreview.nextViableAmount, which are the two edges of the gap.
A Trove the call would consume whole is the last one in the system (MK-245). Consuming it closes it,
_closeTrove(_borrower, Status.closedByRedemption) (TroveManager.sol:1252-1261), and _closeTrove
requires TroveOwners.length > 1 && sortedTroves.getSize() > 1 whenever BorrowerOperations is on the
MUSD mint list (:1397-1399, :1488-1496). A failed require reverts the WHOLE call, unlike a
cancelled partial, which only stops the loop. Both counts fall by one with every Trove the walk
consumes, so a large enough redemption reaches it on a later Trove too.
Why a redemption would be refused. Machine readable, in contract call order.