the scored-vs-trained row-count growth ratio above
which drift is reported (default 0.5 = "population is ≥50% bigger than the
model was trained on"). This deliberately mirrors — but is independent of —
the data-volume staleness trigger, so a deployment can run drift OR data
-volume (or both) at different thresholds.
Decide whether the model has drifted enough to be considered stale.
the model + its binding + observed counts (read-only)
drift verdict + a plain-language explanation
The DEFAULT, intentionally-simple-and-honest IDriftDetector (plan §12 / §16 [O]). It does NOT pretend to run a real distributional test. Instead it uses an observable proxy: how much the population the model is being scored against has grown relative to the training population. When the scored/trained row-count ratio exceeds a configurable threshold, it reports "drift" — a transparent stand -in that flags "the world the model sees has materially changed in size".
A genuine statistical method (population-stability index / KS over the score distribution) is a flagged follow-up — inject a real detector implementing the same IDriftDetector contract when it lands.