Jane Street's October 13 account of Flex Model is unusually good production-engineering reading. The distinction at its center is between maintaining a current value and preserving a history of events. Three trades at 100, 100 and 101 are three observations; an engine that coalesces updates or suppresses an unchanged value can lose information a feature needs.
Flex separates event handlers from evaluations. A handler records what happened; an evaluation produces a value when requested. At startup, a planner orders the handlers and prerequisite calculations for each event type. A trade-relative-to-mid feature therefore gets the contemporaneous mid before recording the trade, while its final average needn't be calculated until requested.
The graph stays fixed while running. Preallocated structures and compiler-checked zero-allocation paths keep allocation off the hot path. Jane Street reports roughly 25% lower tail latency in one test replay after adopting OxCaml's unboxed floats—not a general benchmark.
This is an engineering retrospective, not a new launch: the replacement project began in 2019, first went live in early 2022, and needed roughly another year to migrate important instances. The migration story is as useful as the architecture.