Graduation
When a curve accumulates enough quote, it graduates: liquidity migrates from the bonding curve into a Uniswap v4 pool managed by Pons's hook + pool manager.
The threshold
Observed on live curves: ~4.2 ETH in quote reserves. The exact value is read per-curve rather than hardcoded — check phase() and the threshold field on your token.
What changes
| Before graduation | After |
|---|---|
buy/sell on the curve contract | swaps through the v4 pool (Universal Router) |
price from getReserves() | price from pool state |
phase() = 0 | phase() advances |
The engine's sell paths handle both phases — curve sells pre-graduation, v4 swaps after. GET /api/state exposes pons.degraded which flags features running on approximations.
The quoter gap
Robinhood has no deployed V4Quoter contract — post-graduation sell quotes are approximations, and the app says so rather than pretending precision. Pre-graduation everything is exact; post-graduation set realistic slippage tolerance.
Strategy note
Graduation is a phase change for your bundle too: curve-level mechanics (reserves, snipe tax) stop applying, and the position management that mattered is pool liquidity and your share of it. The sniper table keeps working — it reads Transfer events, which exist on the token regardless of venue.