The L2Book path used to prepare every supported aggregation variant for every flush, even when no client had subscribed to most of those variants. This made each L2 flush scale with the full variant set instead of the active subscriptions.
This change added subscription-aware tracking for active L2 snapshot parameters. The listener now derives the requested parameters from active L2 subscription keys and only computes those shapes.
let requested_params: HashSet<L2SnapshotParams> =
active_keys.iter().map(|key| key.params).collect();