Feature freshness checks across batch and streaming tables—what works in practice?

Our models combine daily aggregates with near-real-time behavioral features. Individual pipelines have freshness alerts, but we still miss cases where the final training or serving table is technically updated yet contains stale upstream values. How are teams defining and enforcing end-to-end freshness contracts across mixed batch and streaming dependencies?