Then the flow is frozen
At the end of the window, anyone may call convene() — once. It reads
the reserve as it stands and freezes the daily flow at that measure, spread over a year.
From that second the number is dead and graven.
It is set from what was actually collected rather than written down in advance, because a number chosen before the first buyer is a blind bet: too high and the reserve is empty in three days, too low and the table is not worth sitting at. And it is frozen rather than recomputed, because a rate that can be revised is a rate someone can be lobbied to revise.
The hooks keep feeding underneath it for as long as the pool trades, so the runway only ever grows past the year. The rate itself never moves again.
The whole timeline
- T + 0The pool opens. The whole supply goes in single-sided; no ETH is engaged. The levy starts at 10%.
- T → 48 hThe founding window. Every swap feeds the reserve. Anyone may run
collect()andfeed()as often as they like. - T + 48 hThe levy falls to 3% on its own. No transaction, no owner, no vote.
- Once
convene(). The daily flow is frozen from the reserve as measured, and the table starts running. - AfterSeats and swaps. Seats thin each other's slices; swaps lengthen everyone's runway.