Pause Condition¶
The vault implements an automatic withdrawal pause triggered by two conditions. When paused, processWithdrawals() reverts — no redemptions are paid out until the pause clears.
Pause Formula¶
Trigger Conditions¶
Condition 1: Aggregate Gap Exceeds 15%¶
When the spread between what the model says the vault is worth and what the market prices it at exceeds 1500 bps (15%), the system pauses. This indicates significant unacknowledged impairment — for example, one or more positions are deteriorating but have not been rebased or written off yet.
Aggregate, not per-position
The gap is computed on the aggregate, not per-position. A single position deteriorating may or may not trigger the pause depending on its size relative to total NAV. A small position with a large gap may not trigger the system pause, while a large position with a moderate gap may.
Condition 2: Idle Reserve Below Daily Cap¶
If the vault does not have enough idle USDC to satisfy even one full day of maximum redemptions, the system pauses. This protects against a scenario where redemptions would exceed available cash.
Automatic Unpause¶
The pause clears automatically when both conditions are resolved: 1. The aggregate gap drops below 1500 bps (e.g., the market recovers, a rebase is applied, or a write-off is processed) 2. The idle reserve rises above one daily cap (e.g., a HouseBuffer topup is received or a position settles)
There is no explicit unpause() function — the system checks the live state on every processWithdrawals() call.
Effect on the Queue¶
When paused:
- requestWithdraw() still works — investors can queue requests
- processWithdrawals() reverts — queued requests accumulate but are not paid
- cancelWithdraw() still works — investors can cancel and reclaim shares
When the system unpauses, the keeper can resume calling processWithdrawals() and the queue drains normally.
Operator Response to Pause¶
When paused, the operator should:
1. Diagnose: Is it a gap issue, a reserve issue, or both?
2. If gap issue: Consider rebasePosition() to realign modeled price to market reality, or wait for market recovery
3. If reserve issue: Request HouseBuffer topup, or wait for a position to settle
4. Last resort: emergencyLiquidate() — see Emergency Liquidation