Changes in version 1.0.0 First stable CRAN release. The Hastie workflow in R. Core workflow - Four-verb grammar: ml_split(), ml_fit(), ml_evaluate(), ml_assess(). The evaluate/assess boundary prevents data leakage by separating iterative model selection from final generalization estimates. - Three-way data splitting (train/valid/test) with automatic stratification for classification targets. - Mandatory reproducibility: seeds are auto-generated and stored when not provided explicitly. - Per-fold preprocessing: encoding and scaling fit on training folds only. Algorithms - 13 algorithms: logistic regression, linear regression (ridge), decision tree, random forest, extra trees, gradient boosting, histogram gradient boosting, XGBoost, KNN, naive Bayes, SVM, elastic net, AdaBoost. - Optional backends via Suggests: xgboost, ranger, glmnet, e1071, kknn, naivebayes, rpart. Without these, algorithms fall back to the optional Rust engine or report as unavailable. Additional verbs - ml_screen() for rapid algorithm comparison across all available backends. - ml_tune() for hyperparameter tuning with random search and cross-validation. - ml_stack() for model ensembling via out-of-fold stacking. - ml_drift() for data drift detection (KS test). - ml_shelf() for model staleness monitoring. - ml_explain() for feature importance (impurity-based and coefficient-based). - ml_calibrate() for probability calibration (Platt scaling). - ml_validate() for pass/fail gating against user-defined rules. - ml_profile() for dataset profiling. - ml_save() / ml_load() for model persistence in .mlr format. Rust backend - Optional compiled Rust engine via extendr bindings. Detected at install time by configure; no Rust required for a fully functional installation. Changes in version 0.2.0 Changed - ml_assess() terminal constraint now enforced per-partition via content-addressed fingerprinting. Serialization and deepcopy bypasses are closed. New - ml_cv(), ml_cv_temporal(), ml_cv_group() for cross-validation. - ml_verify() for post-fit model verification. - ml_prepare() for explicit preprocessing. - Content-addressed provenance registry (rlang::hash fingerprinting). - Cross-verb provenance checks (train/test from same split). Fixed - Per-holdout assess enforcement: ml_assess() now rejects a second call on the same test partition regardless of which model calls it. - Fixed ml_prepare() return value extraction (X and norm fields). Changes in version 0.1.2 (2026-03-19) New - ml_cv(), ml_cv_temporal(), ml_cv_group() for cross-validation. - ml_verify() for post-fit model verification. - ml_prepare() for explicit preprocessing. - Content-addressed provenance registry (rlang::hash fingerprinting). - Cross-verb provenance checks (train/test from same split). Fixed - Per-holdout assess enforcement: ml_assess() now rejects a second call on the same test partition regardless of which model calls it. The provenance registry tracks spent holdouts via content-addressed fingerprinting. - Fixed ml_prepare() return value extraction (X and norm fields).