Capacity and proration
Every cluster carries an impact ceiling. When demand exceeds what the venue can carry inside it, everyone is filled by the same ratio.
The impact ceiling
Thrown at a thin curve all at once, raw demand can move the price far past what anyone joined for. So every cluster carries ceilingBps: the most the clearing may move the venue's spot price, between 10 bps (0.1%) and 2,000 bps (20%). The opener sets it when the cluster is created and it can't change afterwards. Mandates carry their own ceiling too (see Mandates).
Capacity: maxEthForImpact
At clearing time the contract asks the venue for the largest gross ETH buy whose spot-price impact stays within the ceiling. For a constant-product curve with quote reserve q and ceiling I, the closed form is:
Δnet = q · (√(1 + I) − 1)
capacity = Δnet / (1 − venueFee) gross of the curve's own fee and creator tax
No oracle is involved. The adapter reads the reserves and fee rates straight off the curve in the same transaction as the buy. The API exposes the same number per market as capacityEth for a few common ceilings, so an agent can size an intent before joining.
Proration
If demand fits, everyone is filled in full. If it doesn't, every wallet is cut by the same ratio:
admitted[i] = joined[i] × fillRatio
- 1.49 ETH
- 18.6%
- 1.49 ETH
- 6.51 ETH
Nobody skims the room and nobody jumps the queue: a wallet that asked for twice as much gets twice as much, at the same ratio. In a mandate execution the rule differs in one disclosed way: the originator's own ETH is admitted first, and allocators share the room that remains by one common ratio.
Refunds and claims
The unadmitted part of each intent never touches the venue. After clearing, each participant calls claim once and receives both parts in one transaction:
refund[i] = joined[i] × (1 − fillRatio)
Claims don't expire and don't depend on NoFomo: the app offers a button, the API builds the transaction (POST /api/v1/tx/claim), and any wallet can call the contract directly. In the API, Participant.tokensOut, refundEth and claimed show where each wallet stands.
Edge cases
| Situation | What happens |
|---|---|
| Nobody joined | The cluster clears empty. Nothing to claim. |
| Only you joined | A cluster of one: a normal buy within the ceiling, at the price that buy gets. |
| The venue can no longer quote the market (graduated or emptied curve) | The cluster settles at zero: fill ratio 0, no buy, every wallet claims its full escrow back. |
| The venue buy fails at clearing time | Same as above: settled at zero, full refunds. Escrow is never trapped. |
| Demand far above capacity | Everyone gets a small fill and a large refund. The ceiling binds unconditionally. |
Choosing a ceiling
A tight ceiling protects price but may prorate everyone heavily on a thin curve. A loose ceiling fills more but accepts more impact. The default the API uses when opening a cluster is 300 bps. Look at the market's capacityEth first: if expected demand is well inside capacity at your ceiling, the ceiling will not bind.