Last updated on 2026-10-24 01:51:34 CEST.
| Flavor | Version | Tinstall | Tcheck | Ttotal | Status | Flags |
|---|---|---|---|---|---|---|
| r-devel-linux-x86_64-debian-clang | 0.4.0 | 46.03 | 571.34 | 617.37 | OK | |
| r-devel-linux-x86_64-debian-gcc | 0.4.0 | 33.98 | 312.63 | 346.61 | ERROR | |
| r-devel-linux-x86_64-fedora-clang | 0.4.0 | 39.00 | 378.72 | 417.72 | OK | |
| r-devel-linux-x86_64-fedora-gcc | 0.4.0 | 36.00 | 377.41 | 413.41 | OK | |
| r-devel-windows-x86_64 | 0.4.0 | 64.00 | 630.00 | 694.00 | OK | |
| r-patched-linux-x86_64 | 0.4.0 | 59.10 | 562.18 | 621.28 | OK | |
| r-release-linux-x86_64 | 0.4.0 | 48.45 | 570.67 | 619.12 | OK | |
| r-release-macos-arm64 | 0.4.0 | 12.00 | 102.00 | 114.00 | OK | |
| r-release-macos-x86_64 | 0.4.0 | 38.00 | 742.00 | 780.00 | OK | |
| r-release-windows-x86_64 | 0.4.0 | 54.00 | 656.00 | 710.00 | OK | |
| r-oldrel-macos-arm64 | 0.4.0 | 13.00 | 144.00 | 157.00 | OK | |
| r-oldrel-macos-x86_64 | 0.4.0 | 37.00 | 774.00 | 811.00 | OK | |
| r-oldrel-windows-x86_64 | 0.4.0 | 84.00 | 834.00 | 918.00 | OK |
Version: 0.4.0
Check: examples
Result: ERROR
Running examples in ‘forestsearch-Ex.R’ failed
The error most likely occurred in:
> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: fs_assert_membership
> ### Title: Assert the exported selected-subgroup membership matches
> ### forestsearch's own
> ### Aliases: fs_assert_membership
>
> ### ** Examples
>
> set.seed(11)
> n <- 200
> df <- data.frame(id = seq_len(n), treat = rbinom(n, 1, 0.5),
+ age = round(rnorm(n, 55, 12)),
+ bm = factor(rbinom(n, 1, 0.5)))
> harm <- df$age <= 50 & df$bm == "1"
> tt <- rexp(n, 0.05 * exp(log(2.5) * df$treat * harm))
> df$time <- pmin(tt, 60)
> df$event <- as.integer(tt <= 60)
> fit <- forestsearch(
+ df.analysis = df,
+ outcome.name = "time", event.name = "event",
+ treat.name = "treat", id.name = "id",
+ confounders.name = c("age", "bm"),
+ sg_focus = "maxeff", use_grf = FALSE, use_lasso = FALSE,
+ fs.splits = 50, n.min = 30, d0.min = 5, d1.min = 5,
+ hr.threshold = 1.1, hr.consistency = 1.0,
+ pconsistency.threshold = 0.5, maxk = 2,
+ details = FALSE, plot.sg = FALSE,
+ parallel_args = list(plan = "sequential", workers = 1L,
+ show_message = FALSE)
+ )
Warning: sg_focus = 'maxeff' selects the effect maximiser with no auxiliary conditions; overriding: pconsistency.threshold -> 0, stop_threshold -> NULL, use_twostage -> FALSE, minp -> 0. The subgroup-search effect floor (hr.threshold) is disabled, redundancy pruning is relaxed to exact-duplicate removal (rmin -> 0), and consistency-stage duplicate removal collapses identical-membership candidates to their fewest-cut representative -- so the argmax ranges over the full estimable family with no arbitrary tie-break.
[forestsearch] Subgroup Identification Configuration
Outcome type: survival (Cox PH)
Effect measure: HR (hazard ratio)
Scale: log (ratio)
Screening: HR >= 1.10 (log: 0.0953)
Consistency: HR >= 1.00 (log: 0.0000)
Consistency rate threshold: 0%
Interpretation:
Candidates: subgroup hazard ratio >= 1.10
Splits: each split HR >= 1.00
Warning in value[[3L]](cond) :
Error in subgroup.consistency: subscript out of bounds
> exp_fam <- fs_export_maxeff_family(fit)
Error in fs_export_maxeff_family(fit) :
No maxeff candidate family (grp.consistency$out_sg$result is NULL).
Execution halted
Flavor: r-devel-linux-x86_64-debian-gcc
Version: 0.4.0
Check: tests
Result: ERROR
Running ‘testthat.R’ [70s/75s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> # This file is part of the standard setup for testthat.
> # It is recommended that you do not modify it.
> #
> # Where should you do additional test configuration?
> # Learn more about the roles of various files in:
> # * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
> # * https://testthat.r-lib.org/articles/special-files.html
>
> library(testthat)
> library(forestsearch)
>
> test_check("forestsearch")
[forestsearch] Subgroup Identification Configuration
Outcome type: binary
Effect measure: OR (Odds Ratio)
Scale: log (ratio)
Screening: OR >= 1.10 (log: 0.0953)
Consistency: OR >= 1.00 (log: 0.0000)
Consistency rate threshold: 30%
Interpretation:
Candidates: subgroup OR >= 1.10
Splits: each split OR >= 1.00
[forestsearch] Subgroup Identification Configuration
Outcome type: continuous
Effect measure: MD (Mean Difference)
Scale: identity
Screening: MD >= 0.0000
Consistency: MD >= 0.0000
Consistency rate threshold: 30%
Interpretation:
Candidates: MD >= 0.0000
Splits: MD >= 0.0000 per split
[forestsearch] Subgroup Identification Configuration
Outcome type: count
Effect measure: IRR (Incidence Rate Ratio)
Scale: log (ratio)
Screening: IRR >= 1.10 (log: 0.0953)
Consistency: IRR >= 1.00 (log: 0.0000)
Consistency rate threshold: 30%
Interpretation:
Candidates: subgroup IRR >= 1.10
Splits: each split IRR >= 1.00
# of continuous/categorical characteristics 1 1
Continuous characteristics: age
Categorical characteristics: bm1
Default cuts included (1st 20) age <= mean(age) age <= median(age) age <= qlow(age) age <= qhigh(age)
Categorical: bm1
Factors per GRF: age <= 57 age <= 55 age <= 66
Initial GRF cuts included age <= 57 age <= 55 age <= 66
Cut coarsening: 7 -> 6 candidates (c=1, safety_tol=0.05, digits=0)
age <= {55.1} -> age <= 55 (0 subj moved)
===== CONSOLIDATED CUT EVALUATION (IMPROVED) =====
Evaluating 6 cut expressions once and caching...
Cut evaluation summary:
Total cuts: 6
Valid cuts: 6
Errors: 0
✓ All 6 factors validated as 0/1
===== END CONSOLIDATED CUT EVALUATION =====
# of candidate subgroup factors= 6
[1] "age <= 57" "age <= 55" "age <= 66" "age <= 48" "age <= 62" "bm1"
Saving _problems/test-mr-field-complement-74.R
Saving _problems/test-mr-field-complement-80.R
Saving _problems/test-mr-field-complement-81.R
Saving _problems/test-mr-field-complement-82.R
Saving _problems/test-mr-field-complement-115.R
Saving _problems/test-mr-ij-residual-joint-60.R
Saving _problems/test-mr-ij-residual-joint-67.R
Saving _problems/test-mr-ij-residual-joint-93.R
Saving _problems/test-mr-ij-residual-joint-109.R
Saving _problems/test-mr-ij-residual-joint-110.R
Saving _problems/test-mr-ij-residual-joint-111.R
[ FAIL 11 | WARN 25 | SKIP 81 | PASS 1972 ]
══ Skipped tests (81) ══════════════════════════════════════════════════════════
• On CRAN (65): 'test-binary-default-or.R:15:1',
'test-cross-outcome-parity.R:98:3', 'test-cross-outcome-parity.R:149:3',
'test-cross-outcome-parity.R:187:3', 'test-cross-outcome-parity.R:225:3',
'test-cross-outcome-parity.R:255:3', 'test-cross-outcome-parity.R:295:3',
'test-cross-outcome-parity.R:351:3', 'test-cv-mixed-and-fatal.R:157:3',
'test-cv-mixed-and-fatal.R:271:3', 'test-cv-mixed-and-fatal.R:302:3',
'test-cv-no-subgroup-dina-grf.R:58:7', 'test-cv-no-subgroup-dina-grf.R:58:7',
'test-cv-no-subgroup-dina-grf.R:58:7', 'test-cv-no-subgroup-dina-grf.R:58:7',
'test-cv-no-subgroup-edges.R:63:3', 'test-cv-no-subgroup-edges.R:98:3',
'test-cv-no-subgroup-edges.R:115:3', 'test-cv-no-subgroup-edges.R:156:3',
'test-cv-no-subgroup-edges.R:181:3', 'test-cv-no-subgroup-edges.R:215:3',
'test-declaration-c0.R:9:1', 'test-declaration-calibration.R:10:1',
'test-dina-bootstrap-sg-focus-whitelist.R:43:3',
'test-dina-bootstrap-sg-focus-whitelist.R:60:3', 'test-directive-c.R:15:1',
'test-downstream-consumers.R:209:3', 'test-downstream-consumers.R:237:3',
'test-downstream-consumers.R:284:3', 'test-downstream-consumers.R:327:3',
'test-grf-inclusion-band.R:16:1', 'test-mr-inference.R:20:1',
'test-no-subgroup-bootstrap.R:51:5', 'test-no-subgroup-bootstrap.R:51:5',
'test-no-subgroup-bootstrap.R:77:3', 'test-no-subgroup-cv.R:59:5',
'test-no-subgroup-cv.R:74:5', 'test-no-subgroup-cv.R:92:5',
'test-no-subgroup-cv.R:59:5', 'test-no-subgroup-cv.R:74:5',
'test-no-subgroup-cv.R:92:5', 'test-no-subgroup-cv.R:59:5',
'test-no-subgroup-cv.R:74:5', 'test-no-subgroup-cv.R:92:5',
'test-no-subgroup-cv.R:59:5', 'test-no-subgroup-cv.R:74:5',
'test-no-subgroup-cv.R:92:5', 'test-no-subgroup-dina-grf-plot.R:60:5',
'test-no-subgroup-dina-grf-plot.R:60:5',
'test-no-subgroup-dina-grf-plot.R:85:5',
'test-no-subgroup-dina-grf-plot.R:85:5',
'test-no-subgroup-dina-grf-summary.R:59:7',
'test-no-subgroup-dina-grf-summary.R:59:7',
'test-no-subgroup-dina-grf-summary.R:59:7',
'test-no-subgroup-dina-grf-summary.R:59:7',
'test-no-subgroup-dina-grf-summary.R:76:3',
'test-no-subgroup-unified-contract.R:41:5',
'test-no-subgroup-unified-contract.R:41:5',
'test-no-subgroup-unified-contract.R:41:5',
'test-no-subgroup-unified-contract.R:57:3',
'test-return-shape-contract.R:22:1', 'test-search-reproducibility.R:66:3',
'test-sg-focus-transparency.R:122:3', 'test-sg-focus-transparency.R:148:3',
'test-sg-focus-transparency.R:170:3'
• baseline CSV not in this tree (1): 'test-threshold-pair-directive-a.R:148:3'
• package source not available (1): 'test-estimability-boundary.R:158:3'
• pre-refactor reference not present (dev/ not shipped) (2):
'test-fs-oc-grid.R:41:3', 'test-fs-oc-null.R:102:3'
• simulation modules not present (3): 'test-betaHhat-contract.R:429:3',
'test-betaHhat-contract.R:462:3', 'test-betaHhat-contract.R:502:3'
• threshold probe unavailable on this surface -- it lifts statements out of
body(forestsearch) by deparsed text and cannot match them against the
installed, byte-compiled package. These tests are gated on
devtools::load_all() per CLAUDE.md. Cause: resolver evaluated to an error:
could not find function ".probe_record" (9):
'test-threshold-pair-directive-a.R:45:3',
'test-threshold-pair-directive-a.R:66:3',
'test-threshold-pair-directive-a.R:87:3',
'test-threshold-pair-directive-a.R:127:3', 'test-threshold-sync.R:106:3',
'test-threshold-sync.R:123:3', 'test-threshold-sync.R:141:3',
'test-threshold-sync.R:152:3', 'test-threshold-sync.R:165:3'
══ Failed tests ════════════════════════════════════════════════════════════════
── Failure ('test-mr-field-complement.R:74:3'): field_complement is add-only: everything else is byte-identical ──
Expected `is.list(fc)` to be TRUE.
Differences:
`actual`: FALSE
`expected`: TRUE
── Failure ('test-mr-field-complement.R:75:3'): field_complement is add-only: everything else is byte-identical ──
Expected `all(...)` to be TRUE.
Differences:
`actual`: FALSE
`expected`: TRUE
── Failure ('test-mr-field-complement.R:81:3'): field_complement is add-only: everything else is byte-identical ──
Expected `is.finite(fc$upper_1s) && fc$upper_1s > 0` to be TRUE.
Differences:
`actual`: <NA>
`expected`: TRUE
── Error ('test-mr-field-complement.R:82:3'): field_complement is add-only: everything else is byte-identical ──
Error in `expect_gte(fc$upper_2s, fc$lower_2s)`: Result of comparison must be `TRUE`, `FALSE`, or `NA`
Backtrace:
▆
1. └─testthat::expect_gte(fc$upper_2s, fc$lower_2s) at test-mr-field-complement.R:82:3
2. └─testthat:::expect_compare_(">=", act, exp)
3. └─cli::cli_abort(...)
4. └─rlang::abort(...)
── Error ('test-mr-field-complement.R:115:3'): K = 1: the complement field is the naive one-sided upper bound ──
Error in `abs(fc$lambda_mean)`: non-numeric argument to mathematical function
Backtrace:
▆
1. └─testthat::expect_lt(...) at test-mr-field-complement.R:115:3
2. └─testthat::quasi_label(enquo(object), label)
3. └─rlang::eval_bare(expr, quo_get_env(quo))
── Failure ('test-mr-ij-residual-joint.R:60:3'): ij_residual variants are add-only and leave point estimates alone ──
Expected `d0$ij_residual` to be identical to "two_term".
Differences:
`actual` is NULL
`expected` is a character vector ('two_term')
── Error ('test-mr-ij-residual-joint.R:67:3'): ij_residual variants are add-only and leave point estimates alone ──
Error in `expect_gte(wf$debiased$se_ij, d0$debiased$se_wald - 1e-12)`: Result of comparison must be `TRUE`, `FALSE`, or `NA`
Backtrace:
▆
1. └─testthat::expect_gte(wf$debiased$se_ij, d0$debiased$se_wald - 1e-12) at test-mr-ij-residual-joint.R:67:3
2. └─testthat:::expect_compare_(">=", act, exp)
3. └─cli::cli_abort(...)
4. └─rlang::abort(...)
── Error ('test-mr-ij-residual-joint.R:93:5'): K = 1: winner-only SE is the naive SE; two-term is ~2x; floor equals naive ──
Error in `expect_lt(abs(blk$se_ij_winner/blk$se_wald - 1), 0.1)`: Result of comparison must be `TRUE`, `FALSE`, or `NA`
Backtrace:
▆
1. └─testthat::expect_lt(abs(blk$se_ij_winner/blk$se_wald - 1), 0.1) at test-mr-ij-residual-joint.R:93:5
2. └─testthat:::expect_compare_("<", act, exp)
3. └─cli::cli_abort(...)
4. └─rlang::abort(...)
── Failure ('test-mr-ij-residual-joint.R:109:3'): field$joint: gamma in range, achieved probability >= 1 - alpha, pairs consistent ──
Expected `is.list(j)` to be TRUE.
Differences:
`actual`: FALSE
`expected`: TRUE
── Failure ('test-mr-ij-residual-joint.R:110:3'): field$joint: gamma in range, achieved probability >= 1 - alpha, pairs consistent ──
Expected `j$gamma >= 0.025 - 1e-12 && j$gamma <= 0.05 + 1e-12` to be TRUE.
Differences:
`actual`: <NA>
`expected`: TRUE
── Error ('test-mr-ij-residual-joint.R:111:3'): field$joint: gamma in range, achieved probability >= 1 - alpha, pairs consistent ──
Error in `expect_gte(j$joint_prob, 0.95 - 1e-12)`: Result of comparison must be `TRUE`, `FALSE`, or `NA`
Backtrace:
▆
1. └─testthat::expect_gte(j$joint_prob, 0.95 - 1e-12) at test-mr-ij-residual-joint.R:111:3
2. └─testthat:::expect_compare_(">=", act, exp)
3. └─cli::cli_abort(...)
4. └─rlang::abort(...)
[ FAIL 11 | WARN 25 | SKIP 81 | PASS 1972 ]
Error:
! Test failures.
Execution halted
Flavor: r-devel-linux-x86_64-debian-gcc
Version: 0.4.0
Check: re-building of vignette outputs
Result: ERROR
Error(s) in re-building vignettes:
...
--- re-building ‘forestsearch.Rmd’ using rmarkdown
Quitting from forestsearch.Rmd:462-487 [bootstrap]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error in `forestsearch_bootstrap_dofuture()`:
! fs.est$df.est must be a non-empty data frame
---
Backtrace:
▆
1. └─forestsearch::forestsearch_bootstrap_dofuture(...)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: processing vignette 'forestsearch.Rmd' failed with diagnostics:
fs.est$df.est must be a non-empty data frame
--- failed re-building ‘forestsearch.Rmd’
--- re-building ‘survival-post-selection.qmd’ using html
<1b>[31m
processing file: survival-post-selection.qmd
<1b>[39m<1b>[31mError in `round()`:
! non-numeric argument to mathematical function
Backtrace:
▆
1. └─base::print(round(sort(ph, decr<1b>[39m<1b>[31measing = TRUE)[1:5], 3))
<1b>[39m<1b>[31m
Quitting from survival-post-selection.qmd:164-170 [phat]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error in `round()`:
! non-numeric argument to mathematical function
---
Backtrace:
▆
1. └─base::print(round(sort(ph, decreasing = TRUE)[1:5], 3))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Execution halted
<1b>[39m<1b>[33mWARN: Error encountered when rendering files<1b>[39m
Error: processing vignette 'survival-post-selection.qmd' failed with diagnostics:
! Error running quarto CLI from R.
Caused by error in `quarto_render()`:
✖ Error returned by quarto CLI.
-----------------------------
processing file: survival-post-selection.qmd
<1b>[31mError in `round()`:<1b>[39m
! non-numeric argument to mathematical function
Backtrace:
▆
1. └─base::print(round(sort(ph, decr<1b>[31measing = TRUE)[1:5], 3))<1b>[39m
Quitting from survival-post-selection.qmd:164-170 [phat]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error in `round()`:
! non-numeric argument to mathematical function
---
Backtrace:
▆
1. └─base::print(round(sort(ph, decreasing = TRUE)[1:5], 3))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Execution halted
<1b>[33mWARN: Error encountered when rendering files<1b>[39m
Caused by error in `processx::run()`:
! System command 'quarto' failed
--- failed re-building ‘survival-post-selection.qmd’
SUMMARY: processing the following files failed:
‘forestsearch.Rmd’ ‘survival-post-selection.qmd’
Error: Vignette re-building failed.
Execution halted
Flavor: r-devel-linux-x86_64-debian-gcc