# Lifecycle

A launch moves through four states. Everything an integration does depends on which one it is
in, so read the phase rather than inferring it.

```
  launchToken / launchAndBuy
            |
            v
  [0] NotGraduated  ── curve.buy / curve.sell ──┐
            |                                    |
            |  sellable allocation hits zero     |
            v                                    |
  [1] Swept          NO TRADEABLE VENUE          |
            |                                    |
            |  createGraduatedPool               |
            v                                    |
  [2] PoolCreated  ── UniversalRouter ───────────┘
```

## 0 · Launch

The factory deploys a curve and a token via CREATE2, mints the whole supply to the curve,
takes the launch fee, and writes a launch record. Trading is live immediately.

The curve reserves a fraction of supply that it will never sell — that reserve is what seeds
the pool at graduation, and it is why the curve has a hard stop rather than an asymptote.

## 1 · Curve trading

Constant product against a **virtual** reserve: the curve behaves as though it already held
`phantomQuote` of the quote asset, which sets the opening price. Every fee comes off the
quote leg.

The launch is finished when the sellable allocation reaches zero, which is by construction the
same moment the real reserve reaches the graduation threshold.

## 2 · Sweep

`factory.graduate(token)` sets the curve's `graduated` flag, sweeps fees, and moves the
reserves into the factory. Phase becomes **1**.

**In this phase the token has no venue.** The curve is closed and the pool does not exist.
Normally it lasts one instruction, because the crossing buy performs both steps — but it can
persist. See [Graduation](/documentation/graduation).

## 3 · Pool seed

`factory.createGraduatedPool(token)` initialises the V4 pool at the curve's closing price,
registers it with the hook, mints a full-range position **directly to the locker**, and
permanently locks the leftover supply. Phase becomes **2**.

The locker has no withdrawal function of any kind. Liquidity and the burned supply are
unrecoverable by anyone, including the contract owner. That is the point.

## 4 · Pool trading

Ordinary V4 swaps through UniversalRouter, with the hook taking its fee on the unspecified
leg of each swap. The curve is never used again.

## Rescued (phase 3)

A terminal state reached only by owner intervention, after a delay, when a swept launch cannot
be seeded because the quote asset can no longer deliver an exact transfer. Reserves are
released to a single recipient. It exists so that a broken quote asset cannot strand funds
forever; you will not see it in normal operation.