one move: make an operational decision
Compare a reference and current numeric stream with fixed bins, exposing both proportions and the largest distribution gap. In the Data Pipeline system, implement this level as a deterministic contract before composing it with the next service.
def drift_report(reference, current, bins):
return {'reference': [...], 'current': [...], 'max_gap': ...}