Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ Config/Needs/website: tidymodels, tidyverse/tidytemplate, pkgdown
Config/testthat/edition: 3
Config/testthat/parallel: true
Config/testthat/start-first: parallel-identity, time-series-designs,
time-series-inner-bayes-anneal, nested-tune-race-oracles,
nested-tune-grid-oracles, nested-tune-bayes-oracles, nested-results-print, nested-tune-finalize,
nested-tune-race-oracles, nested-tune-grid-oracles,
nested-tune-bayes-oracles, nested-results-print, nested-tune-finalize,
time-series-bayes, model-spec-input, nested-tune-grid-failures,
time-series-race, time-series-inner-race, time-series-pairs-other
time-series-race, time-series-pairs-other
Config/roxygen2/version: 8.1.0
18 changes: 9 additions & 9 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,9 @@
`rsample::sliding_index()` or `rsample::sliding_period()` design with
an inner `rsample::rolling_origin()` design. `nested_tune_grid()` and
`nested_fit_resamples()` are tested on all four, and so is
`nested_final_fit()` for their results. `nested_tune_bayes()`,
`nested_final_fit()` for `nested_fit_resamples()` results.
`nested_final_fit()` for `nested_tune_grid()` results is tested on the
rolling-origin design. `nested_tune_bayes()`,
`nested_tune_race_anova()`, `nested_tune_race_win_loss()` and
`nested_tune_sim_anneal()` are tested on the rolling-origin design, and
so is `nested_final_fit()` for their results, plus the sliding-window
Expand All @@ -304,15 +306,13 @@
`rsample::sliding_period()` design is tested under `nested_tune_grid()`,
and so is `nested_final_fit()` for its results. `nested_resamples()`
builds these three designs with the same splits as
`rsample::nested_cv()`. These designs are also tested under
`rsample::nested_cv()`. `nested_workflow_map()` is tested on these three
designs with its default `fn`. `nested_fit_resamples()` is tested to
accept these designs. It checks the inner design but fits nothing on it.
`nested_tune_bayes()`, `nested_tune_race_anova()`,
`nested_tune_race_win_loss()` and `nested_tune_sim_anneal()`, and so is
`nested_final_fit()` for the results of those four tuners.
`nested_workflow_map()` is tested on these three designs with its default
`fn`. With `fn` set to each of those four tuners, it is tested on the
sliding-period design alone. `nested_fit_resamples()` is tested to accept
these designs. It checks the inner design but fits nothing on it. Any
other inner design is not tested.
`nested_tune_race_win_loss()` and `nested_tune_sim_anneal()` are not
tested on these designs. They are tested with an inner sliding design on
the sliding-window pair below. Any other inner design is not tested.

* An outer `rsample::sliding_window()`, `rsample::sliding_index()` or
`rsample::sliding_period()` design with an inner design of one of these
Expand Down
24 changes: 13 additions & 11 deletions R/nested-resamples.R
Original file line number Diff line number Diff line change
Expand Up @@ -60,21 +60,23 @@
#' [rsample::sliding_index()] and [rsample::sliding_period()], and the four
#' other tuners are [nested_tune_bayes()], the two racing functions and
#' [nested_tune_sim_anneal()]. Each pair of designs below is tested to give
#' the same splits as [rsample::nested_cv()]. A final fit is tested on the results of
#' the functions named with it.
#' the same splits as [rsample::nested_cv()]. Each bullet names the final fits
#' that are tested.
#'
#' - Outer [rsample::rolling_origin()] or a sliding design, with an inner
#' [rsample::rolling_origin()]. [nested_tune_grid()],
#' [nested_fit_resamples()] and their final fits are tested on all four.
#' The four other tuners, their final fits and [nested_workflow_map()] are
#' tested on the rolling-origin outer design. The final fit of
#' [nested_tune_bayes()] is also tested on the sliding-window outer design.
#' - Outer [rsample::rolling_origin()] with an inner sliding design. All five
#' tuners and their final fits are tested on all three.
#' [nested_workflow_map()] is tested on all three with its default `fn`,
#' and with each of the four other tuners on sliding-period alone.
#' [nested_fit_resamples()] and the final fit of [nested_fit_resamples()]
#' are tested on all four. The final fit of [nested_tune_grid()], the four
#' other tuners, their final fits and [nested_workflow_map()] are tested on
#' the rolling-origin outer design. The final fit of [nested_tune_bayes()]
#' is also tested on the sliding-window outer design.
#' - Outer [rsample::rolling_origin()] with an inner sliding design.
#' [nested_tune_grid()] and its final fit are tested on all three.
#' [nested_workflow_map()] is tested on all three with its default `fn`.
#' [nested_fit_resamples()] accepts these designs. It checks the inner
#' design but fits nothing on it.
#' design but fits nothing on it. The four other tuners are not tested on
#' these designs. They are tested with an inner sliding design on the
#' sliding-window pair below.
#' - A sliding design in both loops, which gives nine pairs.
#' [nested_tune_grid()] is tested on all nine. On the sliding-window pair,
#' the four other tuners, [nested_workflow_map()] with its default `fn`,
Expand Down
6 changes: 6 additions & 0 deletions cairn/DECISIONS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2111,6 +2111,12 @@ upstream, either of which would let the file return to a shared blob.
**Decision:** the `workflow` and `model_spec` methods order those shared arguments as `tune_bayes()` and `tune_sim_anneal()` do. `event_level` stays after `metrics`, as on the grid methods, and `select` stays last. Names and defaults do not change. Rejected: reordering the `model_spec` methods only, which leaves the two methods of one function in different orders where `test-dots-barrier.R` holds them equal apart from `preprocessor`.
**Consequences:** no call changes, because R matches an argument after `...` by its full name only. D-069's argument names, defaults and argument set stand. A later change to the order in tune or finetune fails `test-argument-order.R`, which CRAN skips. Falsified by a caller or tool that reads these formals by position. (Narrows D-069.)

### D-118 (2026-10-21): the four other tuners are tested with an inner sliding design on the sliding-window pair alone, and grid results' final fit, among the outer designs with an inner `rolling_origin()`, on rolling-origin alone. Supersedes clauses of D-080, D-085, D-112 and D-113, and narrows D-071's tested set

**Context:** D-085 claimed the three inner sliding designs under an outer `rolling_origin()` for every orchestrator, because the inner design reaches the tuner where the outer design does not. D-085 and then D-112 and D-113 added the four other tuners' final fits on the inner designs, and the map with each tuner `fn` on sliding-period. The inner design reaches the tuner as an rset that nestedtune hands to tune or finetune. The code that rebuilds and re-points the inner splits is shared by the five tuners. It runs under grid on the three inner designs and on the nine pairs, and the grid test on the sliding-window pair that finalizes a range from the frame's row count is the one that catches a skipped re-pointing (D-112, D-113). D-071 and D-080 kept the grid final fit on the sliding-window outer design, and D-080 on all four outer designs, but the final fit takes its data from the first outer split and never reads the split indices (D-075). M151's milestone file records what these tests cost.
**Decision:** the four other tuners are tested with an inner sliding design on the sliding-window / sliding-window pair alone, which D-112 and D-113 already claim. Their final fits with an inner sliding design, and the map with a tuner `fn` on an inner sliding design, are not tested. `nested_final_fit()` for grid results is tested on the rolling-origin outer design, on the three inner sliding designs and on the sliding-window pair. For `nested_fit_resamples()` results it stays tested on all four outer designs. The Bayesian final fit on the sliding-window outer design stays, because it is the test that D-075 rests on (D-080). The help of `nested_resamples()` and `NEWS.md` state the tested set, as D-071 requires. Rejected at M151's plan gate: a wider help claim resting on the shared path, because the help claims only what a test runs.
**Consequences:** the combinations this entry leaves untested join the inner-design candidate row. The cut rests on the inner splits reaching every tuner through the same nestedtune code. Falsified by nestedtune code that branches on the tuner when it builds, re-points or hands over the inner splits, or by a final fit that reads the outer split indices. A user report of a failure on a combination this entry leaves untested, where the tested combinations pass, also falsifies it. (Supersedes D-085's Decision clauses claiming the inner sliding designs under the four other tuners and those tuners' final fits on sliding-period, the clauses of D-112 and D-113 claiming those final fits on the three inner designs and the map with each tuner `fn` on sliding-period, and D-080's clause keeping the grid final fit tested on all four outer designs. Narrows D-071's tested set: on the sliding-window outer design with an inner `rolling_origin()`, `nested_final_fit()` stays tested for Bayes and `nested_fit_resamples()` results, not for grid results.)

<!-- Template:

### D-00N (YYYY-MM-DD): Title
Expand Down
4 changes: 2 additions & 2 deletions cairn/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ _Last hygiene check: 2026-10-20 triage pass over 41 candidates and 20 Known issu
## Milestones
| ID | Title | Status | Depends on | Priority | File/Archive |
|---|---|---|---|---|---|
| M151 | The four other tuners are tested on one inner sliding design, and the help claims only what the tests run | planned | — | high | milestones/M151-time-series-tuner-cut.md |
| M151 | The four other tuners are tested on one inner sliding design, and the help claims only what the tests run | review | — | high | milestones/M151-time-series-tuner-cut.md |
| M152 | The suite drops tests that repeat a shared path, cannot fail, or test a dependency | planned | — | normal | milestones/M152-suite-shared-path-prune.md |
| M153 | The devel-vctrs job runs the vctrs test files on each push and the whole suite each week | planned | — | normal | milestones/M153-devel-vctrs-subset.md |
| M154 | The wait ledger finds each call by its test block, so moving a line breaks no test | planned | M152 | normal | milestones/M154-wait-ledger-rekey.md |
Expand Down Expand Up @@ -41,7 +41,7 @@ _Last hygiene check: 2026-10-20 triage pass over 41 candidates and 20 Known issu
- [parked] Add vctrs casts to nested_results_set: A `vec_ptype2`/`vec_cast` lattice on `nested_results_set` — added 2026-09-07 at M73's plan gate — M73 Out. Under M73's rule a set combined with a bare table sheds the class through both doors and a direct `vctrs::vec_cbind()` gives a plain tibble. Promote on a user needing a set-with-table combination or `vec_cbind()` to keep the class
- [parked] `conf_mat_resampled()` for a nested run — added 2026-09-13 at M092's plan gate (M092 Out). tune 2.1.0 defines it as a plain function that checks `inherits(x, "tune_results")`, so no method reaches it, and a same-named export here masks tune's. Promote when tune makes it a generic, or on a user asking for it
- [parked] Add the remaining extractor methods: What M122 and M123 left of M106's extractor row: `extract_workflow_set_result()` on a set, and `extract_parameter_set_dials()` on a `nested_results_set` or a `nested_results`. Added 2026-09-21 at M106's plan gate, cut 2026-09-28 at M122/M123's. workflowsets 1.1.1 defines `extract_workflow_set_result()` as a plain function that checks `inherits(x, "workflow_set")`, so no method reaches it (checked by execution 2026-09-28). Promote it when workflowsets makes it a generic, and the others on a user asking for them
- [parked] Inner designs M140 leaves out: Inner designs M140 leaves out, added 2026-09-21 (M108), cut 2026-09-27 (M120, M121) and 2026-10-01 (M140). Every function but `nested_resamples()` and grid on the eight sliding pairs other than sliding-window / sliding-window. On that pair, `nested_final_fit()` for the four other tuners' results and `nested_workflow_map()` with a tuner `fn` (D-113). Any inner design other than `rolling_origin()` and the three sliding designs. Promote on a user running one
- [parked] Inner designs M140 leaves out: Inner designs M140 leaves out, added 2026-09-21 (M108), cut 2026-09-27 (M120, M121) and 2026-10-01 (M140). Every function but `nested_resamples()` and grid on the eight sliding pairs other than sliding-window / sliding-window. On that pair, `nested_final_fit()` for the four other tuners' results and `nested_workflow_map()` with a tuner `fn` (D-113). Under an outer `rolling_origin()` with an inner sliding design, the four other tuners, their final fits and the map with a tuner `fn`; and the grid final fit on the three sliding outer designs with an inner `rolling_origin()` (D-118, widened 2026-10-21 at M151). Any inner design other than `rolling_origin()` and the three sliding designs. Promote on a user running one
- [parked] Lift the desirability selection limits: Desirability selection gaps: Desirability selection under the two racing tuners and simulated annealing, and on censored regression models, all of which refuse the rule after M109. Added 2026-09-21 at M109's plan gate. Racing drops candidates before the end, so the rule needs its own oracle there, and desirability2 ranks every evaluation time on a censored model. The row also holds M109's deferred review findings, which its archive lists. Promote when desirability2 documents its selector for racing results, or on a user asking
- [parked] Nested tuning of tidyclust models: RR10 owns the analysis. `tune::last_fit()` refuses a cluster workflow, sum-of-squares metrics pick the grid's largest k, and only they have a closed-form oracle. Suggests takes a D-entry. Promote on a released `last_fit()` that scores a cluster workflow, plus a second oracle type for a metric whose selection is not degenerate — added 2026-09-21, M106-M109 plan gate, narrowed 2026-10-18 by a trivial edit
- [parked] M126 review leftovers on averaging: findings 3, 4 and 8, which `milestones/archive/M126-averaging-edge-cases.md` owns: gaps in what `benchmarks/averaging-speed.R` compares, a censored row of 0-row entries averaging to NULL where the help names only NULL entries, and the partial-run warning coming before a refusal in `collect_predictions(summarize = TRUE)` but after it in `augment()`. Promote on a user report of a 0-row entry, a median that disagrees with `stats::median()`, or the warning order misleading a reader — added 2026-09-28 at M126's review gate
Expand Down
Loading
Loading