Skip to content

Graduation & the locked LP

The threshold

A launch graduates when its curve has raised 15,876 PONS net (≈ 4.2 ETH at calibration). There is no separate "migration event" to wait for: the buy that crosses the threshold performs the migration inside the same transaction.

What migrates

  • A Uniswap v4 pool (1% fee, BondHook attached) is initialized at exactly the curve's final price — no gap, no repricing window to snipe.
  • All remaining tokens and all PONS backing — buyer reserves plus any converted collateral — move in.
  • Liquidity is minted as a full-range position owned by the LPLocker.
  • Anything full-range math can't absorb is donated into the pool in the same breath, so nothing is ever left stranded outside it.

Locked means locked

The LPLocker is the sole owner of every launch's LP position, and the contract does not contain a withdraw or decrease-liquidity function. Not "renounced", not "timelocked" — the code path doesn't exist. The only thing the locker can do with a position is collect its trading fees and forward them to the FeeSplitter.

Where converted collateral lands

  • Converted before graduation → the collateral is earmarked on the curve (injectedPons), doesn't touch pricing, and rides the migration into the pool.
  • Converted after graduation → it is donated directly into the locked LP. Donations to a position that can never be withdrawn are, effectively, value locked into the pool forever.
  • If a conversion fires mid-swap (the common case), the donation is queued for a beat and landed by the next caller of executeInjection — the app does this automatically, and the caller earns a 0.1% keeper tip.

We don't police hidden wallets — we lock LP and we lock a bond.