Skip to content

Mark Settling Flow

Trigger: The underlying prediction market has resolved. The operator confirms the outcome before claiming settlement. Caller: Governance (operator)

This is the mandatory first step in the normal settlement path. closePosition() requires SETTLING status — it cannot be called directly from ACTIVE.


Steps

  1. Prediction market resolves. adapter.isSettled() returns true.

  2. Operator calls vault.markSettling(slotIndex).

  3. Vault validates:

  4. positions[slotIndex].status == ACTIVE
  5. adapter.isSettled() == true

  6. Slot status → SETTLING.

  7. PositionMarkedSettling(slotIndex) emitted.

  8. From this point forward, positionModeledValue() for this slot returns adapter.positionValue() instead of linear accrual. The gap contribution of this slot collapses to zero. Linear accrual is frozen permanently.

  9. Proceed to closePosition(slotIndex) to claim settlement proceeds and free the slot. See Position Settlement Flow.


Immediate NAV Effect

markSettling() called on Slot 1
  Before: positionModeledValue(1) = linear accrual value (e.g. $415,000)
          positionMarketValue(1)  = adapter.positionValue() (e.g. $405,000)
          gap contribution of Slot 1 = $10,000

  After:  positionModeledValue(1) = adapter.positionValue() = $405,000
          positionMarketValue(1)  = adapter.positionValue() = $405,000
          gap contribution of Slot 1 = $0

Direction of impact

  • Position was underwater (gap > 0): aggModeledNAV drops to meet aggMarketNAV for this slot — the gap collapses. This is the most common case.
  • Position was above accrual price (market price > modeled price): aggModeledNAV drops slightly. The slot was over-accruing; marking settling corrects this.
  • In either case, the gap contribution of this slot is zero from this point forward.

Settlement Path Summary

ACTIVE ──── markSettling() ────► SETTLING ──── closePosition() ────► EMPTY
               ↑                                        ↑
      adapter.isSettled()=true               USDC returned to idleReserve
      gap collapses immediately

Write-Off From SETTLING

If the market resolved YES (NO shares are worthless) and the slot is already SETTLING, call writeOff() instead of closePosition(). See Write-Off Flow for the SETTLING case.