The record of what ran: every config value resolved, an origin saying where
each came from, and a provenance block. Derived rather than stored – the
object already holds both configs, and keeping a second representation on it
would let the two drift.
Examples
mod <- train(iris, hyperparameters = setup_CART())
#> 2026-08-09 13:22:41
#> Checking data is ready for training...
#>
#> ✔
#> [check_supervised]
#> 2026-08-09 13:22:41
#> ▶
#> [train]
#> 2026-08-09 13:22:41
#> Training set: 150 cases x 4 features.
#> [summarize_supervised]
#> 2026-08-09 13:22:41
#> // Max workers: c(system = 7) { Algorithm: 1; Tuning: 1; Outer Resampling: 1 }
#> [get_n_workers]
#> 2026-08-09 13:22:41
#> Training CART Classification...
#> [train]
#> 2026-08-09 13:22:41
#> Checking data is ready for training...
#>
#> ✔
#> [check_supervised]
#>
#> <Classification>
#> CART (Classification and Regression Trees)
#>
#> <Training Classification Metrics>
#> Predicted
#> Reference setosa versicolor virginica
#> setosa 50 0 0
#> versicolor 0 47 3
#> virginica 0 1 49
#>
#> Overall
#> Balanced Accuracy 0.973
#> F1 0.973
#> Accuracy 0.973
#> Setosa Versicolor Virginica
#> Sensitivity 1.000 0.940 0.980
#> Specificity 1.000 0.990 0.970
#> Balanced Accuracy 1.000 0.965 0.975
#> Ppv 1.000 0.979 0.942
#> Npv 1.000 0.971 0.990
#> F1 1.000 0.959 0.961
#>
#> 2026-08-09 13:22:41
#> Done in 0.05 seconds.
#> [train]
names(record(mod))
#> [1] "$schema" "dat_training_path"
#> [3] "dat_validation_path" "dat_test_path"
#> [5] "weights" "positive_class"
#> [7] "question" "outdir"
#> [9] "verbosity" "preprocessor_config"
#> [11] "decomposition_config" "hyperparameters"
#> [13] "tuner_config" "outer_resampling_config"
#> [15] "execution_config" "origin"
#> [17] "folds" "metrics"
#> [19] "metrics_sd" "provenance"