When the borrowing fee is actually charged, in one place (MK-004, MK-018).
The contract applies the same two conditions everywhere it charges the fee:
on open, !isRecoveryMode && !isAccountFeeExempt(borrower)
(BorrowerOperations.sol:637-643);
on a debt increase, the same pair (:810-818);
on refinance, exemption alone, because the whole path already requires normal mode
(:1024, :1034-1036).
Kept as one exported pure function so the rule lives in a single place, is testable
without a chain, and cannot drift between the preview and the write path.
When the borrowing fee is actually charged, in one place (MK-004, MK-018).
The contract applies the same two conditions everywhere it charges the fee:
!isRecoveryMode && !isAccountFeeExempt(borrower)(BorrowerOperations.sol:637-643);:810-818);:1024,:1034-1036).Kept as one exported pure function so the rule lives in a single place, is testable without a chain, and cannot drift between the preview and the write path.