Running ‘testthat.R’ [104s/130s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
  > library(testthat)
  > library(dataganger)
  dataganger 0.6.1
    Start the app: dataganger::run_app()
  > 
  > test_check("dataganger")
  Loading required package: shiny
  Saving _problems/test-cli-execution-81.R
  Saving _problems/test-cli-execution-82.R
  Saving _problems/test-cli-execution-84.R
  i `remove_ids` is TRUE: masking 1 ID column
    "id"
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  x cannot open the connection
  Saving _problems/test-cli-execution-107.R
  x Input file does not exist: /home/hornik/tmp/scratch/RtmphcTSHw/file705304686b335/synthetic_bundle.zip
  Saving _problems/test-cli-execution-111.R
  Saving _problems/test-cli-execution-112.R
  Saving _problems/test-cli-execution-113.R
  Saving _problems/test-cli-execution-114.R
  Saving _problems/test-cli-execution-205.R
  Saving _problems/test-cli-execution-206.R
  Saving _problems/test-cli-execution-234.R
  Saving _problems/test-cli-execution-235.R
  Saving _problems/test-cli-execution-241.R
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  Saving _problems/test-cli-execution-309.R
  Saving _problems/test-cli-execution-313.R
  Saving _problems/test-cli-execution-330.R
  Saving _problems/test-cli-execution-334.R
  Saving _problems/test-cli-execution-348.R
  Saving _problems/test-cli-execution-353.R
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  Saving _problems/test-cli-execution-406.R
  Saving _problems/test-cli-execution-411.R
  Saving _problems/test-cli-execution-442.R
  Saving _problems/test-cli-execution-447.R
  Saving _problems/test-cli-execution-477.R
  Saving _problems/test-cli-execution-481.R
  
  -- DataGangeR Code Readiness ---------------------------------------------------
  6 pass, 0 warn, 0 fail
  v Ready: no blocking issues found
  
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (0) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (0) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (0) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  -- DataGangeR Comparison -------------------------------------------------------
  
  -- Dataset --
  
  * Rows: 5 (original) -> 5 (synthetic)
  * Columns: 2 (original) -> 2 (synthetic)
  * Type match: 50%
  * Missing: 0% (original) -> 0% (synthetic)
  
  -- Numeric -- top 3 by |standardized difference| --
  
  * x: std diff = 0.632
  Orig mean (SD): 3 (1.58)
  
  -- Categorical -- top 3 by distributional difference --
  
  * y: p = 0.00794, TVD = 1
  Levels: 5 (orig) -> 1 (syn)
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (0) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:40] synthesize_synthpop: building synthpop args
  [01:31:40] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=200
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:31:41] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:41] synthesize_synthpop: building synthpop args
  [01:31:41] synthesize_synthpop: calling synthpop::syn() on 3 column(s), k=40
  
  Variable(s): group have been changed for synthesis from character to factor.
  [01:31:42] synthesize_synthpop: synthpop done
  [01:31:42] synthesize_synthpop: building synthpop args
  [01:31:42] synthesize_synthpop: calling synthpop::syn() on 3 column(s), k=40
  
  Variable(s): group have been changed for synthesis from character to factor.
  [01:31:42] synthesize_synthpop: synthpop done
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  age changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  age changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:42] synthesize_synthpop: building synthpop args
  [01:31:42] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=60
  [01:31:42] synthesize_synthpop: synthpop done
  
  -- DataGangeR Roles ------------------------------------------------------------
  1 column analysed; 0 user overrides active
  
  
  -- x (numeric) -> categorical candidate 
  * Reason: Only a few distinct values appear, so this looks like a coded
  category rather than a measurement.
  
  # A tibble: 2 x 2
    variable identifies
    <chr>    <chr>     
  1 age      "none"    
  2 city     ""        
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:46] synthesize_synthpop: building synthpop args
  [01:31:46] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=40
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:31:46] synthesize_synthpop: synthpop done
  smoking_status changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:48] synthesize_synthpop: building synthpop args
  [01:31:48] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=8
  [01:31:48] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  Synthetic and original data checked with synorig.compare,
   looks like no adjustment needed
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:48] synthesize_synthpop: building synthpop args
  [01:31:48] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=40
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:31:48] synthesize_synthpop: synthpop done
  smoking_status changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Not enough numeric columns (0) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (0) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:51] synthesize_synthpop: building synthpop args
  [01:31:51] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=30
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:31:51] synthesize_synthpop: synthpop done
  smoking_status changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Not enough numeric columns (0) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:54] synthesize_synthpop: building synthpop args
  [01:31:54] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=12
  [01:31:54] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  score changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:56] synthesize_synthpop: building synthpop args
  [01:31:56] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=200
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:31:56] synthesize_synthpop: synthpop done
  smoking_status changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:31:58] synthesize_synthpop: building synthpop args
  [01:31:58] synthesize_synthpop: calling synthpop::syn() on 5 column(s), k=10
  
  Variable(s): name, group have been changed for synthesis from character to factor.
  [01:31:58] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 2 in syn and 2 in orig
  
  
  Factor levels don't match for name levels combined
   syn levels  a b d e h i j 
   orig levels a b c d e f g h i j 
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i `remove_ids` is TRUE: masking 1 ID column
    "id"
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:00] synthesize_synthpop: building synthpop args
  [01:32:00] synthesize_synthpop: calling synthpop::syn() on 5 column(s), k=10
  
  Variable(s): name, group have been changed for synthesis from character to factor.
  [01:32:00] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 2 in syn and 2 in orig
  
  
  Factor levels don't match for name levels combined
   syn levels  a b c d e g i 
   orig levels a b c d e f g h i j 
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:00] synthesize_synthpop: building synthpop args
  [01:32:00] synthesize_synthpop: calling synthpop::syn() on 5 column(s), k=10
  
  Variable(s): name, group have been changed for synthesis from character to factor.
  [01:32:00] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 2 in syn and 2 in orig
  
  
  Factor levels don't match for name levels combined
   syn levels  a b c e f h i 
   orig levels a b c d e f g h i j 
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:01] synthesize_synthpop: building synthpop args
  [01:32:01] synthesize_synthpop: calling synthpop::syn() on 5 column(s), k=10
  
  Variable(s): name, group have been changed for synthesis from character to factor.
  [01:32:01] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 2 in syn and 2 in orig
  
  
  Factor levels don't match for name levels combined
   syn levels  a b c d e g i 
   orig levels a b c d e f g h i j 
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:01] synthesize_synthpop: building synthpop args
  [01:32:01] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:01] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:02] synthesize_synthpop: building synthpop args
  [01:32:02] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:02] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:02] synthesize_synthpop: building synthpop args
  [01:32:02] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:02] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:03] synthesize_synthpop: building synthpop args
  [01:32:03] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:03] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:03] synthesize_synthpop: building synthpop args
  [01:32:03] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:03] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:04] synthesize_synthpop: building synthpop args
  [01:32:04] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:04] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:04] synthesize_synthpop: building synthpop args
  [01:32:04] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:05] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:05] synthesize_synthpop: building synthpop args
  [01:32:05] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:05] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:05] synthesize_synthpop: building synthpop args
  [01:32:05] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:05] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Not enough numeric columns (0) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:06] synthesize_synthpop: building synthpop args
  [01:32:06] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:06] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:06] synthesize_synthpop: building synthpop args
  [01:32:06] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:06] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Variables changed from character to factor x 1 in syn and 1 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:08] synthesize_synthpop: building synthpop args
  [01:32:08] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=200
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:32:08] synthesize_synthpop: synthpop done
  smoking_status changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  Saving _problems/test-mod-export-30.R
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  Saving _problems/test-mod-export-40.R
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:19] synthesize_synthpop: building synthpop args
  [01:32:19] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=25
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:32:19] synthesize_synthpop: synthpop done
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:21] generate: starting on 200 row(s) x 10 column(s), engine=auto
  [01:32:21] generate: pipeline ...
  [01:32:21] synthesize_synthpop: building synthpop args
  [01:32:21] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=200
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:32:22] synthesize_synthpop: synthpop done
  smoking_status changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  [01:32:22] generate: pipeline done: 1.08s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:23] generate: starting on 200 row(s) x 10 column(s), engine=auto
  [01:32:23] generate: pipeline ...
  [01:32:23] synthesize_synthpop: building synthpop args
  [01:32:23] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=200
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:32:24] synthesize_synthpop: synthpop done
  smoking_status changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  [01:32:25] generate: pipeline done: 1.25s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:25] generate: starting on 200 row(s) x 10 column(s), engine=auto
  [01:32:25] generate: pipeline ...
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:26] generate: starting on 3 row(s) x 1 column(s), engine=auto
  [01:32:26] generate: pipeline ...
  [01:32:26] generate: pipeline done: 0.00s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:27] generate: starting on 3 row(s) x 1 column(s), engine=auto
  [01:32:27] generate: pipeline ...
  [01:32:27] generate: pipeline done: 0.00s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:27] generate: starting on 3 row(s) x 1 column(s), engine=auto
  [01:32:27] generate: pipeline ...
  [01:32:28] generate: pipeline done: 0.01s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:28] generate: starting on 3 row(s) x 1 column(s), engine=auto
  [01:32:28] generate: pipeline ...
  [01:32:28] generate: pipeline done: 0.00s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:29] generate: starting on 3 row(s) x 1 column(s), engine=auto
  [01:32:29] generate: pipeline ...
  [01:32:29] generate: pipeline done: 0.00s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:30] generate: starting on 3 row(s) x 1 column(s), engine=auto
  [01:32:30] generate: pipeline ...
  [01:32:30] generate: pipeline done: 0.00s
  [01:32:30] generate: starting on 3 row(s) x 1 column(s), engine=auto
  [01:32:30] generate: pipeline ...
  [01:32:30] generate: pipeline done: 0.00s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:32] generate: starting on 10 row(s) x 2 column(s), engine=auto
  [01:32:32] generate: pipeline ...
  [01:32:32] generate: pipeline done: 0.00s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:32] generate: starting on 3 row(s) x 4 column(s), engine=auto
  [01:32:32] generate: pipeline ...
  [01:32:32] generate: pipeline done: 0.00s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:33] generate: starting on 3 row(s) x 4 column(s), engine=auto
  [01:32:33] generate: pipeline ...
  [01:32:33] generate: pipeline done: 0.00s
  [01:32:33] generate: starting on 3 row(s) x 4 column(s), engine=auto
  [01:32:33] generate: pipeline ...
  [01:32:33] generate: pipeline done: 0.02s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:32:34] generate: starting on 3 row(s) x 4 column(s), engine=auto
  [01:32:34] generate: pipeline ...
  [01:32:34] generate: pipeline done: 0.00s
  [01:32:34] generate: starting on 3 row(s) x 4 column(s), engine=auto
  [01:32:34] generate: pipeline ...
  [01:32:34] generate: pipeline done: 0.03s
  [01:32:35] upload: profile_data ...
  [01:32:35] upload: profile_data done: 0.05s
  [01:32:36] upload: profile_data ...
  [01:32:36] upload: profile_data done: 0.05s
  [01:32:38] upload: profile_data ...
  [01:32:38] upload: profile_data done: 0.05s
  [01:32:41] upload: profile_data ...
  [01:32:41] upload: profile_data done: 0.09s
  [01:32:43] upload: profile_data ...
  [01:32:43] upload: profile_data done: 0.05s
  [01:32:45] upload: profile_data ...
  [01:32:45] upload: profile_data done: 0.08s
  [01:32:46] upload: profile_data ...
  [01:32:46] upload: profile_data done: 0.05s
  [01:32:52] upload: profile_data ...
  [01:32:52] upload: profile_data done: 0.01s
  [01:32:53] upload: profile_data ...
  [01:32:53] upload: profile_data done: 0.08s
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "analytics"
  
  -- Level 
  "hifi"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: FALSE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "redact"
  * Preserve correlations: "high"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  ! Risk acknowledged by user
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "demo"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: TRUE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "none"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "analytics"
  
  -- Level 
  "hifi"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: FALSE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "redact"
  * Preserve correlations: "high"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  ! Risk acknowledged by user
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "development"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: FALSE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "moderate"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Relationship-aware synthesis uses synthpop when installed.
  [01:33:04] upload: profile_data ...
  [01:33:04] upload: profile_data done: 0.05s
  [01:33:05] upload: profile_data ...
  [01:33:05] upload: profile_data done: 0.06s
  [01:33:05] upload: profile_data ...
  [01:33:06] upload: profile_data done: 0.07s
  [01:33:06] upload: profile_data ...
  [01:33:06] upload: profile_data done: 0.04s
  [01:33:07] upload: profile_data ...
  [01:33:07] upload: profile_data done: 0.03s
  [01:33:08] upload: profile_data ...
  [01:33:08] upload: profile_data done: 0.03s
  Tracing function "url" in package "namespace:base"
  Tracing function "socketConnection" in package "namespace:base"
  Tracing function "download.file" in package "namespace:utils"
  Untracing function "download.file" in package "namespace:utils"
  Untracing function "socketConnection" in package "namespace:base"
  Untracing function "url" in package "namespace:base"
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  
  Attaching package: 'bslib'
  
  The following object is masked from 'package:utils':
  
      page
  
  i `remove_ids` is TRUE: masking 1 ID column
    "record_id"
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:11] synthesize_synthpop: building synthpop args
  [01:33:11] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=30
  
  Variable(s): city, group have been changed for synthesis from character to factor.
  [01:33:11] synthesize_synthpop: synthpop done
  
  Variables changed from character to factor x 2 in syn and 2 in orig
  
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  
  -- DataGangeR Privacy Check (pre stage) ----------------------------------------
  
  -- x HIGH severity (1) --
  
  * patient_id: ID column detected
  Recommendation: Review whether this column should be excluded from synthetic
  output
  
  -- DataGangeR Privacy Check (pre stage) ----------------------------------------
  v No flags raised.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:12] synthesize_synthpop: building synthpop args
  [01:33:12] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=50
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:33:12] synthesize_synthpop: synthpop done
  smoking_status changed from integer to numeric in original to match synthetic
  
  *****************************************************************
   Differences detected and corrections attempted check output above.
  Synthetic data or original or both adjusted with synorig.compare to try to make them comparable
  
  
  -- DataGangeR Profile ----------------------------------------------------------
  3 rows x 1 column
  
  -- Column types --
  
  * numeric: 1
  
  -- Missingness summary --
  
  Total missing: 0 / 3 (0%)
  
  -- Per-column details --
  
  -- x (numeric) 
  * Missing: 0 (0%)
  * Distinct values: 3
  * Range: [1, 3]
  * Mean (SD): 2 (1)
  * Median (IQR): 2 (1.5 -- 2.5)
  
  i Generated at 2026-08-18 01:33:13.099774
  Tracing function "browseURL" in package "namespace:utils"
  
  -- Pre-filled GitHub issue --
  
  GitHub issue URL:
  Issue body:
  Untracing function "browseURL" in package "namespace:utils"
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:15] synthesize_synthpop: building synthpop args
  [01:33:15] synthesize_synthpop: calling synthpop::syn() on 8 column(s), k=200
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: smoking_status.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:33:15] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Not enough numeric columns (1) for correlation comparison.
    Need at least 2 numeric columns with non-zero variance.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  
  -- DataGangeR Synthesis Spec ---------------------------------------------------
  
  -- Purpose 
  "demo"
  
  -- Level 
  "marginal"
  
  -- Key settings 
  * Name strategy: "preserve"
  * Coarsen dates: TRUE
  * Merge rare levels: TRUE (min_n = 5)
  * Minimum cell size (k-anonymity): 5
  * Free text strategy: "drop"
  * Preserve correlations: "none"
  * Preserve missingness: "approx"
  * Engine: "auto (derived from objective)"
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:18] synthesize_synthpop: building synthpop args
  [01:33:18] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=30
  
  Variable(s): y have been changed for synthesis from character to factor.
  [01:33:18] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:19] synthesize_synthpop: building synthpop args
  [01:33:19] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=20
  
  Variable(s): y have been changed for synthesis from character to factor.
  [01:33:19] synthesize_synthpop: synthpop done
  [01:33:19] synthesize_synthpop: building synthpop args
  [01:33:19] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=20
  
  Variable(s): y have been changed for synthesis from character to factor.
  [01:33:19] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:19] synthesize_synthpop: building synthpop args
  [01:33:19] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=20
  
  Variable(s): y have been changed for synthesis from character to factor.
  [01:33:19] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  i `remove_ids` is TRUE: masking 1 ID column
    "id"
  [01:33:20] synthesize_synthpop: building synthpop args
  [01:33:20] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=20
  
  Variable(s): y have been changed for synthesis from character to factor.
  [01:33:20] synthesize_synthpop: synthpop done
  [01:33:20] synthesize_synthpop: building synthpop args
  [01:33:20] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  [01:33:20] synthesize_synthpop: synthpop done
  [01:33:20] synthesize_synthpop: building synthpop args
  [01:33:20] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=25
  
  Variable(s): group have been changed for synthesis from character to factor.
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: score.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:33:20] synthesize_synthpop: synthpop done
  [01:33:20] synthesize_synthpop: building synthpop args
  [01:33:20] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=20
  [01:33:20] synthesize_synthpop: synthpop done
  [01:33:20] synthesize_synthpop: building synthpop args
  [01:33:20] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=20
  [01:33:20] synthesize_synthpop: synthpop done
  [01:33:20] synthesize_synthpop: building synthpop args
  [01:33:21] synthesize_synthpop: building synthpop args
  [01:33:21] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=10
  
  Variable(s): group have been changed for synthesis from character to factor.
  Warning: In your synthesis there are numeric variables with 5 or fewer levels: score.
  Consider changing them to factors. You can do it using parameter 'minnumlevels'.
  [01:33:21] synthesize_synthpop: synthpop done
  [01:33:21] synthesize_synthpop: marginal bridge for 1 column(s)
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:21] synthesize_synthpop: building synthpop args
  [01:33:21] synthesize_synthpop: calling synthpop::syn() on 3 column(s), k=50
  
  Variable(s): month, region have been changed for synthesis from character to factor.
  [01:33:21] synthesize_synthpop: synthpop done
  [01:33:21] synthesize_synthpop: marginal bridge for 1 column(s)
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:21] synthesize_synthpop: building synthpop args
  [01:33:21] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=60
  [01:33:21] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:21] synthesize_synthpop: building synthpop args
  [01:33:21] synthesize_synthpop: calling synthpop::syn() on 3 column(s), k=400
  [01:33:21] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:21] synthesize_synthpop: building synthpop args
  [01:33:21] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=200
  
  Variable(s): arm have been changed for synthesis from character to factor.
  [01:33:21] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:22] synthesize_synthpop: building synthpop args
  [01:33:22] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=300
  [01:33:22] synthesize_synthpop: synthpop done
  i Development synthesis uses synthpop for correlation-aware output when installed; review privacy warnings before sharing.
  [01:33:22] synthesize_synthpop: building synthpop args
  [01:33:22] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=80
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:33:22] synthesize_synthpop: synthpop done
  [01:33:22] synthesize_synthpop: building synthpop args
  [01:33:22] synthesize_synthpop: calling synthpop::syn() on 2 column(s), k=80
  
  Variable(s): grp have been changed for synthesis from character to factor.
  [01:33:22] synthesize_synthpop: synthpop done
  [ FAIL 46 | WARN 42 | SKIP 11 | PASS 1251 ]
  
  ══ Skipped tests (11) ══════════════════════════════════════════════════════════
  • CLI shim subprocess is covered by source tests and manual smoke tests (1):
    'test-cli-execution.R:118:3'
  • On CRAN (2): 'test-app-css.R:13:3', 'test-run-synthesis-async.R:22:3'
  • R/ source not available (installed package) (1): 'test-no-network.R:61:3'
  • ggplot2 is installed (1): 'test-compare-synthetic.R:191:3'
  • shiny, bslib, and DT are installed — skipping absent-package test (1):
    'test-run-app.R:4:3'
  • synthpop is installed (4): 'test-synthesize-data.R:163:3',
    'test-synthesize-data.R:192:3', 'test-synthpop-fidelity.R:71:3',
    'test-synthpop-fidelity.R:83:3'
  • write_sas did not preserve labelling on this platform (1):
    'test-read-input.R:70:5'
  
  ══ Failed tests ════════════════════════════════════════════════════════════════
  ── Failure ('test-cli-execution.R:81:3'): synthesize command writes the restructured bundle zip ──
  Expected `result$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Failure ('test-cli-execution.R:82:3'): synthesize command writes the restructured bundle zip ──
  Expected `file.exists(out_path)` to be TRUE.
  Differences:
  `actual`:   FALSE
  `expected`: TRUE 
  
  ── Error ('test-cli-execution.R:84:3'): synthesize command writes the restructured bundle zip ──
  Error in `utils::unzip(out_path, list = TRUE)`: zip file '/home/hornik/tmp/scratch/RtmphcTSHw/file7053085bf269/synthetic_bundle.zip' cannot be opened
  Backtrace:
      ▆
   1. └─utils::unzip(out_path, list = TRUE) at test-cli-execution.R:84:3
  ── Failure ('test-cli-execution.R:104:3'): inspect command summarizes bundle without original data ──
  Expected `dataganger_cli(...)` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Failure ('test-cli-execution.R:111:3'): inspect command summarizes bundle without original data ──
  Expected `code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Failure ('test-cli-execution.R:112:3'): inspect command summarizes bundle without original data ──
  Expected `any(grepl("Synthetic bundle", out, fixed = TRUE))` to be TRUE.
  Differences:
  `actual`:   FALSE
  `expected`: TRUE 
  
  ── Failure ('test-cli-execution.R:113:3'): inspect command summarizes bundle without original data ──
  Expected `any(grepl("Variables:", out, fixed = TRUE))` to be TRUE.
  Differences:
  `actual`:   FALSE
  `expected`: TRUE 
  
  ── Failure ('test-cli-execution.R:114:3'): inspect command summarizes bundle without original data ──
  Expected `any(grepl("Privacy", out, fixed = TRUE))` to be TRUE.
  Differences:
  `actual`:   FALSE
  `expected`: TRUE 
  
  ── Failure ('test-cli-execution.R:205:3'): synthesize --engine internal works (explicit flag) ──
  Expected `result$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Failure ('test-cli-execution.R:206:3'): synthesize --engine internal works (explicit flag) ──
  Expected `file.exists(out_path)` to be TRUE.
  Differences:
  `actual`:   FALSE
  `expected`: TRUE 
  
  ── Failure ('test-cli-execution.R:234:3'): synthesize routes development to synthpop and records provenance (no --engine) ──
  Expected `result$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Failure ('test-cli-execution.R:235:3'): synthesize routes development to synthpop and records provenance (no --engine) ──
  Expected `file.exists(out_path)` to be TRUE.
  Differences:
  `actual`:   FALSE
  `expected`: TRUE 
  
  ── Error ('test-cli-execution.R:241:3'): synthesize routes development to synthpop and records provenance (no --engine) ──
  Error in `open.connection(con, "rb")`: cannot open the connection
  Backtrace:
      ▆
   1. └─jsonlite::read_json(file.path(extract_dir, "agent", "manifest.json")) at test-cli-execution.R:241:3
   2.   └─jsonlite::parse_json(...)
   3.     └─jsonlite:::parse_and_simplify(...)
   4.       └─jsonlite:::parseJSON(txt, bigint_as_char)
   5.         └─jsonlite:::parse_con(txt, bigint_as_char)
   6.           ├─base::open(con, "rb")
   7.           └─base::open.connection(con, "rb")
  ── Failure ('test-cli-execution.R:309:3'): synthesize with YAML engine auto keeps demo on internal ──
  Expected `result$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Error ('test-cli-execution.R:313:3'): synthesize with YAML engine auto keeps demo on internal ──
  Error in `open.connection(con, "rb")`: cannot open the connection
  Backtrace:
      ▆
   1. └─jsonlite::read_json(file.path(extract_dir, "agent", "manifest.json")) at test-cli-execution.R:313:3
   2.   └─jsonlite::parse_json(...)
   3.     └─jsonlite:::parse_and_simplify(...)
   4.       └─jsonlite:::parseJSON(txt, bigint_as_char)
   5.         └─jsonlite:::parse_con(txt, bigint_as_char)
   6.           ├─base::open(con, "rb")
   7.           └─base::open.connection(con, "rb")
  ── Failure ('test-cli-execution.R:330:3'): synthesize with YAML engine auto uses synthpop for development when available ──
  Expected `result$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Error ('test-cli-execution.R:334:3'): synthesize with YAML engine auto uses synthpop for development when available ──
  Error in `open.connection(con, "rb")`: cannot open the connection
  Backtrace:
      ▆
   1. └─jsonlite::read_json(file.path(extract_dir, "agent", "manifest.json")) at test-cli-execution.R:334:3
   2.   └─jsonlite::parse_json(...)
   3.     └─jsonlite:::parse_and_simplify(...)
   4.       └─jsonlite:::parseJSON(txt, bigint_as_char)
   5.         └─jsonlite:::parse_con(txt, bigint_as_char)
   6.           ├─base::open(con, "rb")
   7.           └─base::open.connection(con, "rb")
  ── Failure ('test-cli-execution.R:348:3'): synthesize records internal engine and no synthpop citation for demo ──
  Expected `result$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Error ('test-cli-execution.R:353:3'): synthesize records internal engine and no synthpop citation for demo ──
  Error in `open.connection(con, "rb")`: cannot open the connection
  Backtrace:
      ▆
   1. └─jsonlite::read_json(file.path(extract_dir, "agent", "manifest.json")) at test-cli-execution.R:353:3
   2.   └─jsonlite::parse_json(...)
   3.     └─jsonlite:::parse_and_simplify(...)
   4.       └─jsonlite:::parseJSON(txt, bigint_as_char)
   5.         └─jsonlite:::parse_con(txt, bigint_as_char)
   6.           ├─base::open(con, "rb")
   7.           └─base::open.connection(con, "rb")
  ── Failure ('test-cli-execution.R:406:3'): yaml engine is honored unless CLI --engine overrides it ──
  Expected `result$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Error ('test-cli-execution.R:411:3'): yaml engine is honored unless CLI --engine overrides it ──
  Error in `open.connection(con, "rb")`: cannot open the connection
  Backtrace:
      ▆
   1. └─jsonlite::read_json(file.path(extract_dir, "agent", "manifest.json")) at test-cli-execution.R:411:3
   2.   └─jsonlite::parse_json(...)
   3.     └─jsonlite:::parse_and_simplify(...)
   4.       └─jsonlite:::parseJSON(txt, bigint_as_char)
   5.         └─jsonlite:::parse_con(txt, bigint_as_char)
   6.           ├─base::open(con, "rb")
   7.           └─base::open.connection(con, "rb")
  ── Failure ('test-cli-execution.R:442:3'): synthesize --recipe reads combined spec and roles ──
  Expected `res$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Error ('test-cli-execution.R:447:3'): synthesize --recipe reads combined spec and roles ──
  Error in `(function (path, write = FALSE, call = caller_env())  {     if (is.raw(path)) {         return(rawConnection(path, "rb"))     }     if (!is.character(path)) {         return(path)     }     if (is_url(path)) {         ext <- tolower(tools::file_ext(path))         if (ext %in% c("gz", "bz2", "xz", "zip")) {             cli::cli_abort("Remote compressed files must be handled upstream of this function.", .internal = TRUE)         }         if (requireNamespace("curl", quietly = TRUE)) {             con <- curl::curl(path)         }         else {             inform("`curl` package not installed, falling back to using `url()`")             con <- url(path)         }         return(con)     }     path <- enc2utf8(path)     if (write) {         path <- normalizePath_utf8(path, mustWork = FALSE)     }     else {         path <- check_path(path)     }     p <- split_path_ext(basename_utf8(path))     extension <- p$extension     formats <- archive_formats(extension)     while (is.null(formats) && nzchar(extension)) {         extension <- split_path_ext(extension)$extension         formats <- archive_formats(extension)     }     needs_archive <- !is.null(formats) && (write || extension != "zip")     if (needs_archive) {         reason <- glue("to {if (write) 'write' else 'read'} `.{p$extension}` files.")         rlang::check_installed("archive", reason = reason, call = call)         if (write) {             if (is.null(formats[[1]])) {                 return(archive::file_write(path, filter = formats[[2]]))             }             return(archive::archive_write(path, p$path, format = formats[[1]], filter = formats[[2]]))         }         if (is.null(formats[[1]])) {             return(archive::file_read(path, filter = formats[[2]]))         }         return(archive::archive_read(path, format = formats[[1]], filter = formats[[2]]))     }     if (!write) {         compression <- detect_compression(path)     }     else {         compression <- NA     }     if (is.na(compression)) {         compression <- tools::file_ext(path)     }     if (write && compression == "zip") {         cli::cli_abort(c("Can only read from, not write to, {.val .zip} files.", i = "Install the {.pkg archive} package to write {.val .zip} files."), call = call)     }     switch(compression, gz = gzfile(path), bz2 = bzfile(path), xz = xzfile(path), zip = zipfile(path), if (!has_trailing_newline(path)) {         file(path)     } else {         path     }) })("/home/hornik/tmp/scratch/RtmphcTSHw/file7053015d595ae/ex/synthetic_data.csv")`: '/home/hornik/tmp/scratch/RtmphcTSHw/file7053015d595ae/ex/synthetic_data.csv' does not exist.
  Backtrace:
      ▆
   1. ├─readr::read_csv(file.path(ex, "synthetic_data.csv"), show_col_types = FALSE) at test-cli-execution.R:447:3
   2. │ └─vroom::vroom(...)
   3. │   └─vroom:::vroom_(...)
   4. └─vroom (local) `<fn>`("/home/hornik/tmp/scratch/RtmphcTSHw/file7053015d595ae/ex/synthetic_data.csv")
   5.   └─vroom:::check_path(path)
   6.     └─cli::cli_abort(msg, call = call)
   7.       └─rlang::abort(...)
  ── Failure ('test-cli-execution.R:477:3'): synthesize --roles reproduces the supplied roles (drops a column marked direct) ──
  Expected `res$code` to be identical to 0L.
  Differences:
    `actual`: 1
  `expected`: 0
  
  ── Error ('test-cli-execution.R:481:3'): synthesize --roles reproduces the supplied roles (drops a column marked direct) ──
  Error in `(function (path, write = FALSE, call = caller_env())  {     if (is.raw(path)) {         return(rawConnection(path, "rb"))     }     if (!is.character(path)) {         return(path)     }     if (is_url(path)) {         ext <- tolower(tools::file_ext(path))         if (ext %in% c("gz", "bz2", "xz", "zip")) {             cli::cli_abort("Remote compressed files must be handled upstream of this function.", .internal = TRUE)         }         if (requireNamespace("curl", quietly = TRUE)) {             con <- curl::curl(path)         }         else {             inform("`curl` package not installed, falling back to using `url()`")             con <- url(path)         }         return(con)     }     path <- enc2utf8(path)     if (write) {         path <- normalizePath_utf8(path, mustWork = FALSE)     }     else {         path <- check_path(path)     }     p <- split_path_ext(basename_utf8(path))     extension <- p$extension     formats <- archive_formats(extension)     while (is.null(formats) && nzchar(extension)) {         extension <- split_path_ext(extension)$extension         formats <- archive_formats(extension)     }     needs_archive <- !is.null(formats) && (write || extension != "zip")     if (needs_archive) {         reason <- glue("to {if (write) 'write' else 'read'} `.{p$extension}` files.")         rlang::check_installed("archive", reason = reason, call = call)         if (write) {             if (is.null(formats[[1]])) {                 return(archive::file_write(path, filter = formats[[2]]))             }             return(archive::archive_write(path, p$path, format = formats[[1]], filter = formats[[2]]))         }         if (is.null(formats[[1]])) {             return(archive::file_read(path, filter = formats[[2]]))         }         return(archive::archive_read(path, format = formats[[1]], filter = formats[[2]]))     }     if (!write) {         compression <- detect_compression(path)     }     else {         compression <- NA     }     if (is.na(compression)) {         compression <- tools::file_ext(path)     }     if (write && compression == "zip") {         cli::cli_abort(c("Can only read from, not write to, {.val .zip} files.", i = "Install the {.pkg archive} package to write {.val .zip} files."), call = call)     }     switch(compression, gz = gzfile(path), bz2 = bzfile(path), xz = xzfile(path), zip = zipfile(path), if (!has_trailing_newline(path)) {         file(path)     } else {         path     }) })("/home/hornik/tmp/scratch/RtmphcTSHw/file705307d05e800/ex/synthetic_data.csv")`: '/home/hornik/tmp/scratch/RtmphcTSHw/file705307d05e800/ex/synthetic_data.csv' does not exist.
  Backtrace:
      ▆
   1. ├─readr::read_csv(file.path(ex, "synthetic_data.csv"), show_col_types = FALSE) at test-cli-execution.R:481:3
   2. │ └─vroom::vroom(...)
   3. │   └─vroom:::vroom_(...)
   4. └─vroom (local) `<fn>`("/home/hornik/tmp/scratch/RtmphcTSHw/file705307d05e800/ex/synthetic_data.csv")
   5.   └─vroom:::check_path(path)
   6.     └─cli::cli_abort(msg, call = call)
   7.       └─rlang::abort(...)
  ── Error ('test-export-synthetic.R:23:3'): export_synthetic() writes the full bundle file set ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger::export_synthetic(...) at test-export-synthetic.R:23:3
   2.   └─dataganger:::render_comparison_report(...)
   3.     └─rmarkdown::render(...)
   4.       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   5.         └─xfun::write_utf8(res, output)
   6.           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   7.             └─base::file(con, "w")
  ── Error ('test-export-synthetic.R:112:3'): export_synthetic() folds guidance and privacy text into human/human.md ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger::export_synthetic(...) at test-export-synthetic.R:112:3
   2.   └─dataganger:::render_comparison_report(...)
   3.     └─rmarkdown::render(...)
   4.       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   5.         └─xfun::write_utf8(res, output)
   6.           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   7.             └─base::file(con, "w")
  ── Error ('test-export-synthetic.R:253:3'): export_synthetic() sanitizes spreadsheet-dangerous cells ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger::export_synthetic(syn, path = out_dir, format = "dir") at test-export-synthetic.R:253:3
   2.   └─dataganger:::render_comparison_report(...)
   3.     └─rmarkdown::render(...)
   4.       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   5.         └─xfun::write_utf8(res, output)
   6.           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   7.             └─base::file(con, "w")
  ── Error ('test-export-synthetic.R:274:3'): export_synthetic() warns but succeeds on exact-row matches by default ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
       ▆
    1. ├─testthat::expect_warning(...) at test-export-synthetic.R:274:3
    2. │ └─testthat:::expect_condition_matching_(...)
    3. │   └─testthat:::quasi_capture(...)
    4. │     ├─testthat (local) .capture(...)
    5. │     │ └─base::withCallingHandlers(...)
    6. │     └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo))
    7. └─dataganger::export_synthetic(...)
    8.   └─dataganger:::render_comparison_report(...)
    9.     └─rmarkdown::render(...)
   10.       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   11.         └─xfun::write_utf8(res, output)
   12.           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   13.             └─base::file(con, "w")
  ── Error ('test-export-synthetic.R:334:3'): export_synthetic() writes zip output ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger::export_synthetic(...) at test-export-synthetic.R:334:3
   2.   └─dataganger:::render_comparison_report(...)
   3.     └─rmarkdown::render(...)
   4.       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   5.         └─xfun::write_utf8(res, output)
   6.           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   7.             └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:24:3'): manifest.json contains Lens source field ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test() at test-manifest-lens.R:24:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:29:3'): manifest.json contains original_rows_bucket when original is supplied ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test(n = 10L) at test-manifest-lens.R:29:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:35:3'): manifest.json contains original_columns_count when original is supplied ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test(n = 10L) at test-manifest-lens.R:35:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:40:3'): manifest.json raw_rows_included is always false ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test() at test-manifest-lens.R:40:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:45:3'): manifest.json free_text_included is always false ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test() at test-manifest-lens.R:45:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:50:3'): manifest.json ids_included is always false ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test() at test-manifest-lens.R:50:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:62:3'): manifest.json plots_included is true when the comparison report is written ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test(include_report = TRUE) at test-manifest-lens.R:62:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:67:3'): manifest.json factor_levels_included is true for marginal synthesis ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test(purpose = "development") at test-manifest-lens.R:67:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:77:3'): manifest.json factor_levels_included is false for schema synthesis ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger::export_synthetic(...) at test-manifest-lens.R:77:3
   2.   └─dataganger:::render_comparison_report(...)
   3.     └─rmarkdown::render(...)
   4.       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   5.         └─xfun::write_utf8(res, output)
   6.           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   7.             └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:87:3'): manifest.json numeric_ranges_included is always false ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test() at test-manifest-lens.R:87:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:92:3'): manifest.json policy_file is null ──────
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger (local) make_manifest_for_test() at test-manifest-lens.R:92:3
   2.   └─dataganger::export_synthetic(...) at test-manifest-lens.R:14:3
   3.     └─dataganger:::render_comparison_report(...)
   4.       └─rmarkdown::render(...)
   5.         └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   6.           └─xfun::write_utf8(res, output)
   7.             └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   8.               └─base::file(con, "w")
  ── Error ('test-manifest-lens.R:102:3'): manifest.json original_rows_bucket is null when original not supplied ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
      ▆
   1. └─dataganger::export_synthetic(synthetic, path = out, format = "zip") at test-manifest-lens.R:102:3
   2.   └─dataganger:::render_comparison_report(...)
   3.     └─rmarkdown::render(...)
   4.       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   5.         └─xfun::write_utf8(res, output)
   6.           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   7.             └─base::file(con, "w")
  ── Error ('test-mod-export.R:30:5'): download filename is a seeded bundle zip ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
       ▆
    1. ├─shiny::testServer(...) at test-mod-export.R:29:3
    2. │ ├─shiny:::withMockContext(...)
    3. │ │ ├─shiny::isolate(...)
    4. │ │ │ ├─shiny::..stacktraceoff..(...)
    5. │ │ │ └─ctx$run(...)
    6. │ │ │   ├─promises::with_promise_domain(...)
    7. │ │ │   │ └─domain$wrapSync(expr)
    8. │ │ │   ├─shiny::withReactiveDomain(...)
    9. │ │ │   │ └─promises::with_promise_domain(...)
   10. │ │ │   │   └─domain$wrapSync(expr)
   11. │ │ │   │     └─base::force(expr)
   12. │ │ │   ├─shiny:::with_otel_span_context(...)
   13. │ │ │   │ └─base::force(expr)
   14. │ │ │   ├─shiny::captureStackTraces(...)
   15. │ │ │   │ └─promises::with_promise_domain(...)
   16. │ │ │   │   └─domain$wrapSync(expr)
   17. │ │ │   │     └─base::withCallingHandlers(expr, error = doCaptureStack)
   18. │ │ │   └─env$runWith(self, func)
   19. │ │ │     └─shiny (local) contextFunc()
   20. │ │ │       └─shiny::..stacktraceon..(expr)
   21. │ │ ├─shiny::withReactiveDomain(...)
   22. │ │ │ └─promises::with_promise_domain(...)
   23. │ │ │   └─domain$wrapSync(expr)
   24. │ │ │     └─base::force(expr)
   25. │ │ └─withr::with_options(...)
   26. │ │   └─base::force(code)
   27. │ └─rlang::eval_tidy(quosure, mask, rlang::caller_env())
   28. ├─testthat::expect_match(output$download, "synthetic_data_seed1_bundle\\.zip$") at test-mod-export.R:30:5
   29. │ └─testthat::quasi_label(enquo(object), label)
   30. │   └─rlang::eval_bare(expr, quo_get_env(quo))
   31. ├─output$download
   32. ├─shiny:::`$.shinyoutput`(output, download)
   33. │ └─.subset2(x, "impl")$getOutput(name)
   34. │   └─private$renderFile(self$ns(name), download)
   35. │     └─download$content(file)
   36. │       └─base::tryCatch(...)
   37. │         └─base (local) tryCatchList(expr, classes, parentenv, handlers)
   38. │           └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
   39. │             └─value[[3L]](cond)
   40. │               └─base::stop(e)
   41. └─shiny (local) `<fn>`(`<smplErrr>`)
  ── Error ('test-mod-export.R:40:5'): download filename reflects state$seed_used ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
       ▆
    1. ├─shiny::testServer(...) at test-mod-export.R:39:3
    2. │ ├─shiny:::withMockContext(...)
    3. │ │ ├─shiny::isolate(...)
    4. │ │ │ ├─shiny::..stacktraceoff..(...)
    5. │ │ │ └─ctx$run(...)
    6. │ │ │   ├─promises::with_promise_domain(...)
    7. │ │ │   │ └─domain$wrapSync(expr)
    8. │ │ │   ├─shiny::withReactiveDomain(...)
    9. │ │ │   │ └─promises::with_promise_domain(...)
   10. │ │ │   │   └─domain$wrapSync(expr)
   11. │ │ │   │     └─base::force(expr)
   12. │ │ │   ├─shiny:::with_otel_span_context(...)
   13. │ │ │   │ └─base::force(expr)
   14. │ │ │   ├─shiny::captureStackTraces(...)
   15. │ │ │   │ └─promises::with_promise_domain(...)
   16. │ │ │   │   └─domain$wrapSync(expr)
   17. │ │ │   │     └─base::withCallingHandlers(expr, error = doCaptureStack)
   18. │ │ │   └─env$runWith(self, func)
   19. │ │ │     └─shiny (local) contextFunc()
   20. │ │ │       └─shiny::..stacktraceon..(expr)
   21. │ │ ├─shiny::withReactiveDomain(...)
   22. │ │ │ └─promises::with_promise_domain(...)
   23. │ │ │   └─domain$wrapSync(expr)
   24. │ │ │     └─base::force(expr)
   25. │ │ └─withr::with_options(...)
   26. │ │   └─base::force(code)
   27. │ └─rlang::eval_tidy(quosure, mask, rlang::caller_env())
   28. ├─testthat::expect_match(output$download, "synthetic_data_seed12345_bundle\\.zip$") at test-mod-export.R:40:5
   29. │ └─testthat::quasi_label(enquo(object), label)
   30. │   └─rlang::eval_bare(expr, quo_get_env(quo))
   31. ├─output$download
   32. ├─shiny:::`$.shinyoutput`(output, download)
   33. │ └─.subset2(x, "impl")$getOutput(name)
   34. │   └─private$renderFile(self$ns(name), download)
   35. │     └─download$content(file)
   36. │       └─base::tryCatch(...)
   37. │         └─base (local) tryCatchList(expr, classes, parentenv, handlers)
   38. │           └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
   39. │             └─value[[3L]](cond)
   40. │               └─base::stop(e)
   41. └─shiny (local) `<fn>`(`<smplErrr>`)
  ── Error ('test-mod-export.R:156:5'): module export manifest hashes match after post-generation spec edits ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
       ▆
    1. ├─shiny::testServer(...) at test-mod-export.R:155:3
    2. │ ├─shiny:::withMockContext(...)
    3. │ │ ├─shiny::isolate(...)
    4. │ │ │ ├─shiny::..stacktraceoff..(...)
    5. │ │ │ └─ctx$run(...)
    6. │ │ │   ├─promises::with_promise_domain(...)
    7. │ │ │   │ └─domain$wrapSync(expr)
    8. │ │ │   ├─shiny::withReactiveDomain(...)
    9. │ │ │   │ └─promises::with_promise_domain(...)
   10. │ │ │   │   └─domain$wrapSync(expr)
   11. │ │ │   │     └─base::force(expr)
   12. │ │ │   ├─shiny:::with_otel_span_context(...)
   13. │ │ │   │ └─base::force(expr)
   14. │ │ │   ├─shiny::captureStackTraces(...)
   15. │ │ │   │ └─promises::with_promise_domain(...)
   16. │ │ │   │   └─domain$wrapSync(expr)
   17. │ │ │   │     └─base::withCallingHandlers(expr, error = doCaptureStack)
   18. │ │ │   └─env$runWith(self, func)
   19. │ │ │     └─shiny (local) contextFunc()
   20. │ │ │       └─shiny::..stacktraceon..(expr)
   21. │ │ ├─shiny::withReactiveDomain(...)
   22. │ │ │ └─promises::with_promise_domain(...)
   23. │ │ │   └─domain$wrapSync(expr)
   24. │ │ │     └─base::force(expr)
   25. │ │ └─withr::with_options(...)
   26. │ │   └─base::force(code)
   27. │ └─rlang::eval_tidy(quosure, mask, rlang::caller_env())
   28. ├─dataganger (local) build_export(out_dir) at test-mod-export.R:156:5
   29. │ └─dataganger::export_synthetic(...)
   30. │   └─dataganger:::render_comparison_report(...)
   31. │     └─rmarkdown::render(...)
   32. │       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   33. │         └─xfun::write_utf8(res, output)
   34. │           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   35. │             └─base::file(con, "w")
   36. └─base::.handleSimpleError(...)
   37.   └─shiny (local) h(simpleError(msg, call))
  ── Error ('test-mod-export.R:215:5'): export module records acknowledgment and clears blockers once approved ──
  Error in `file(con, "w")`: cannot open the connection
  Backtrace:
       ▆
    1. ├─shiny::testServer(...) at test-mod-export.R:213:3
    2. │ ├─shiny:::withMockContext(...)
    3. │ │ ├─shiny::isolate(...)
    4. │ │ │ ├─shiny::..stacktraceoff..(...)
    5. │ │ │ └─ctx$run(...)
    6. │ │ │   ├─promises::with_promise_domain(...)
    7. │ │ │   │ └─domain$wrapSync(expr)
    8. │ │ │   ├─shiny::withReactiveDomain(...)
    9. │ │ │   │ └─promises::with_promise_domain(...)
   10. │ │ │   │   └─domain$wrapSync(expr)
   11. │ │ │   │     └─base::force(expr)
   12. │ │ │   ├─shiny:::with_otel_span_context(...)
   13. │ │ │   │ └─base::force(expr)
   14. │ │ │   ├─shiny::captureStackTraces(...)
   15. │ │ │   │ └─promises::with_promise_domain(...)
   16. │ │ │   │   └─domain$wrapSync(expr)
   17. │ │ │   │     └─base::withCallingHandlers(expr, error = doCaptureStack)
   18. │ │ │   └─env$runWith(self, func)
   19. │ │ │     └─shiny (local) contextFunc()
   20. │ │ │       └─shiny::..stacktraceon..(expr)
   21. │ │ ├─shiny::withReactiveDomain(...)
   22. │ │ │ └─promises::with_promise_domain(...)
   23. │ │ │   └─domain$wrapSync(expr)
   24. │ │ │     └─base::force(expr)
   25. │ │ └─withr::with_options(...)
   26. │ │   └─base::force(code)
   27. │ └─rlang::eval_tidy(quosure, mask, rlang::caller_env())
   28. ├─dataganger (local) build_export(out_dir) at test-mod-export.R:215:5
   29. │ └─dataganger::export_synthetic(...)
   30. │   └─dataganger:::render_comparison_report(...)
   31. │     └─rmarkdown::render(...)
   32. │       └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
   33. │         └─xfun::write_utf8(res, output)
   34. │           └─base::writeLines(enc2utf8(text), con, ..., useBytes = TRUE)
   35. │             └─base::file(con, "w")
   36. └─base::.handleSimpleError(...)
   37.   └─shiny (local) h(simpleError(msg, call))
  
  [ FAIL 46 | WARN 42 | SKIP 11 | PASS 1251 ]
  Error:
  ! Test failures.
  Execution halted