Algostream_normalization.Feed_healthPer-feed (per-source) health tracker.
Wraps Time_utils.LatencyMonitor in a hashtable keyed by Event.t.source (e.g. "binance", "coinbase"). Tracks tick rate, last-tick-age, p99 ingest-to-handler latency, and gap counts. Hashtable is capped at 64 keys (LRU eviction) to bound DoS via spoofed source strings in third-party replay logs.
val create : ?max_sources:int -> unit -> tval observe : t -> source:string -> ts_ns:int64 -> latency_ns:int64 -> unitRecord a tick observation for source at event-time ts_ns; latency_ns is the publish-to-this-call delay in nanoseconds.
val record_gap : t -> source:string -> unitIncrement the gap counter for source.
val per_source : t -> source:string -> per_source_stats optionval all : t -> per_source_stats listval active_count : t -> int