Changes in version 0.2.0 (2026-09-20) - .warning and .drift now follow one contract across all 22 detectors: NA means the detector cannot judge that observation yet (warm-up), FALSE that it is active and has not flagged drift as of that observation. Behaviour change: "kswin", "adwin", "seed", "seqdrift2", "fhddm", "fhddms" and the "mddm_*" detectors used to report FALSE while warming up and now report NA; "fhddms" and "mddm_*", which have no warning level, now give .warning = NA. Detections themselves are unchanged. - "seed" no longer has an alpha hyperparameter: the algorithm never read it. - fit(), advance(), augment() and detect_drift() now refuse data that already has a .warning, .drift or .phase column instead of overwriting it, and advance() refuses a batch whose columns differ from the baseline's. - "wstd", "ftdd", "fpdd" and "fsdd" are much faster: their per-observation tests use closed forms that give identical p-values. - Hyperparameter values are now validated when the detector is specified. Out-of-range values, wrong types and impossible combinations (e.g. "kswin" with window_size < stat_size + 2) abort with a clear message instead of running and returning silently wrong flags. drift_detector() also rejects a method that is not a single string. - drift_detector() gains seed: the stochastic detectors ("kswin", "seqdrift2") draw from a private random stream carried inside the fitted object. Results are reproducible, independent of batching, and the session's global RNG is no longer advanced. - drift_detector() gains keep (default 10000), the number of most recent rows retained in the history. This bounds memory and removes the quadratic cost of row-by-row advance(). Behaviour change: histories longer than 10000 rows are now truncated, so augment() on a fitted detector returns at most the last keep rows; use keep = Inf for the previous behaviour. keep = Inf and keep = 0 emit a warning when the detector is specified. - tidy(), glance() and print() report running totals stored in the fitted object, so they stay exact when the history is truncated. - Fitted detectors saved with deriva 0.1.0 must be refit. - deriva now declares Depends: R (>= 4.1) and imports utils, which "kswin" already used. - Two reference datasets ship with the package, credit_monitoring and sensor_monitoring, and the vignettes ("Getting Started with deriva", and the new "Distribution-Based Drift Detection") now walk through them instead of generating data inline. Changes in version 0.1.0 (2026-08-03) - Initial CRAN release. - 22 drift detectors: DDM, EDDM, HDDM_A, HDDM_W, EWMA, RDDM, STEPD, FHDDM, FHDDMS, MDDM_A/E/G, WSTD, FTDD, FPDD, FSDD, CUSUM, KSWIN, ADWIN, Page-Hinkley, SEED, SeqDrift2. - Tidy interface: drift_detector() → fit() → advance() with augment(), tidy(), glance(), and autoplot() generics. - detect_drift() one-shot shortcut. - add_prediction_error() bridge from tidymodels workflows. - sim_drift_stream() and sim_dist_stream() for synthetic benchmarking.