Greenland turbot 2026 projections

A fully worked example

Rendered

October 27, 2026

This fully worked example audits the current input files and, when explicitly selected, reads a completed projection attempt. Rendering never compiles or runs ADMB. Conditional projections describe the supplied inputs and assumptions; they are not adopted catch recommendations.

Run controls

From this directory, render the current input audit with:

quarto render greenland_turbot.qmd

The default selects no saved attempt, so this command works in a fresh source checkout and produces the audit without projection figures.

To include results, set saved_run in the YAML above or pass the actual attempt directory explicitly. This example path is illustrative; the report never selects the newest directory automatically:

quarto render greenland_turbot.qmd -P saved_run:spmR_runs/attempt-001
saved_run <- params$saved_run
plot_alternative <- 2L
worms_per_plot <- 15L

Start a new projection manually

Run this chunk yourself in R after reviewing the input audit. It is excluded from rendering. Keep run_new_projections = FALSE until the histories are complete. Supply verified population weights, units and ages, or explicitly choose the diagnostic assumptions with use_diagnostic_weights = TRUE. Diagnostic mode cannot repair missing history values. Work from examples/gt_2026 in R.

source("run.R")
run_new_projections <- FALSE
use_diagnostic_weights <- FALSE
population_weights <- NULL
units <- NULL
ages <- NULL

if (run_new_projections) {
  projection <- run_gt2026_projection(
    diagnostic = use_diagnostic_weights,
    population_weights = population_weights,
    units = units,
    ages = ages
  )
  projection$run_dir
}

After a successful run, use the returned directory as saved_run and render again. Each new run receives a separate attempt directory. Re-rendering reads saved outputs and preserves the attempt contents.

Current status

Saved conditional projection loaded. No new projection was run.

Current recruitment and SSB lengths agree. Their calendar pairing and scientific declarations still require review.

Diagnostic population weights are fleet-weighted catch-weight proxies, not verified population body weights. SS3 export definitions, units, age order, plus group, initial abundance timing and spawning-weight/maturity definitions remain scientific review items. The audit below refers to current files; saved-run assumptions are displayed separately in the provenance section.

Input audit

The current controls request 1000 simulations across 7 alternatives for 15 years, beginning in 2026.

Table 1: Current GT2026 input checks. Repair and review entries remain visible even when a saved run is selected.
Input Status Finding
Native metadata info A separate spm_input_v2.dat is optional; the runner embeds validated declarations in the staged species file.
R metadata info A separate spm_metadata.json is optional. Existing files are archived; staged declarations come from explicit arguments or diagnostic defaults.
Recruitment rows repair 2 copies of a 47 value series across 2 lines; retain one complete series. A second copy would be read as SSB.
Recruitment basis ok Source explicitly declares per_sex recruitment.
Spawning weights repair 4 zeros in effective spawning weights; stage them as 1e-12 for the current positive-weight contract.
Population weights missing Population body weights require explicit runner arguments and SS3 verification. Diagnostic defaults use Fratio-weighted catch-weight proxies, with fleet fractions 0.96, 0.04
Units and ages review Thousand fish, kg, tonnes and ages 1:30/30+ are working assumptions requiring SS3 export verification.
SSB history review 47 positions; source label: # SSB 1978-2026 . Calendar pairing remains unresolved; restrict to Tier 3, Rec_Gen=1. The final two SSB values repeat the preceding pair; confirm this with the source export.
Maturity fields info All-one maturity retains effective spawning weights. Ntot and SexRatio describe all fish and the all-fish female fraction. Confirm the SS3 spawning-weight definition.
Controls ok 2026-2040; 7 alternatives; 1000 simulations. Adapter requires Tier 3, Rec_Gen=1, TAC_ABC=1, beginning year 2026 and ForProjections.dat.
TAC parameters info tacpar.dat is archived when supplied and unused with TAC_ABC=1.

Projection figures

The three figures show Alternative 2: spawning biomass, catch and fishing mortality. Thin blue lines trace the same 15 simulations, selected by their sorted simulation IDs. The black line is the median across all simulations; the salmon ribbon spans their 5th–95th percentiles, a 90% projection interval. These are conditional results under the saved run’s assumptions.

Spawning biomass and catch use logarithmic y-axes. Dashed lines on the spawning-biomass figure mark B40 (22,484.6 t) and B35 (19,674 t), read directly from the saved output.

Simulation IDs shown: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15

Fishing mortality uses a linear y-axis. Its dashed lines mark F40 (0.170193 per year) and F35 (0.199079 per year). These values come from the saved summary, whose SPR targets are verified as 0.40 and 0.35.

Alternative 2 spawning biomass from 2026 to 2040 on a log scale, with fifteen blue simulation paths, a median line, a salmon interval and labelled dashed B40 and B35 reference lines. Reference values are given above.
Figure 1: Alternative 2 conditional spawning biomass on a logarithmic y-axis. Dashed lines show B40 and B35; the salmon ribbon is the 90% projection interval and the black line is the median across all simulations.
Alternative 2 catch from 2026 to 2040 on a log scale, with fifteen blue simulation paths, a black median and a salmon 90 percent interval. The first three years use fixed catches; later years show simulation dispersion.
Figure 2: Alternative 2 conditional catch on a logarithmic y-axis. The salmon ribbon is the 90% projection interval and the black line is the median across all simulations. Prescribed catches make paths overlap in the first three years.
Alternative 2 annual fishing mortality from 2026 to 2040 on a linear scale, with fifteen blue simulation paths, a black median and a salmon 90 percent interval. Labelled dashed horizontal lines mark F40 and F35; values are given above.
Figure 3: Alternative 2 projected fishing mortality. Dashed lines show F40 and F35 from the saved run; the salmon ribbon is the 90% projection interval and the black line is the median across all simulations.

Provenance and checks

The report requires a successful native exit and verifies recorded input, output and archived-source hashes before displaying a saved run. It checks result dimensions, alternative/year/simulation keys and finite nonnegative quantities. Current-source differences are labelled rather than overwritten. Historical-recruitment simulation fits no parameters: maximum-gradient and positive-definite-Hessian diagnostics are not applicable in this mode.

Provenance Recorded value
Selected directory spmR_runs/attempt-001
Run ID 20261028T002324.463680-run-1525f5710750b
Completed UTC 2026-10-28 00:23:26 UTC
spmR version at execution 0.4.3
Executable SHA-256 c4ef7d1d00712f0ae7a497c8aca97ba3de6f251084ab8b2285e815e3b43bd559
Population weights Fratio-weighted fishery proxies
Scientific status Conditional computational projection; SS3 export review remains open
Archived source Matches current source
spm.dat TRUE
ForProjections.dat TRUE
tacpar.dat TRUE
Current input fingerprints and rendering environment
                                                           spm.dat 
"304be0910ad4b499f23213d4033c6c92fdd9ba15f822efe177440aa7e64d3466" 
                                                ForProjections.dat 
"c59206cacc7485c43f2be7553ab764e5da871863fac0cb370c2e9310c4322506" 
R version 4.6.1 (2026-06-24)
Platform: aarch64-apple-darwin23
Running under: macOS Golden Gate 27.0.1

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1

locale:
[1] C.UTF-8/C.UTF-8/C.UTF-8/C/C.UTF-8/C.UTF-8

time zone: America/Los_Angeles
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] bit_4.6.0          gtable_0.3.6       jsonlite_2.0.0     crayon_1.5.3      
 [5] dplyr_1.2.1        compiler_4.6.1     tidyselect_1.2.1   xml2_1.6.0        
 [9] stringr_1.6.0      parallel_4.6.1     tidyr_1.3.2        scales_1.4.0      
[13] yaml_2.3.12        fastmap_1.2.0      ggplot2_4.0.3      readr_2.2.0       
[17] R6_2.6.1           labeling_0.4.3     generics_0.1.4     patchwork_1.3.2   
[21] knitr_1.51         htmlwidgets_1.6.4  tibble_3.3.1       tzdb_0.5.0        
[25] pillar_1.11.1      RColorBrewer_1.1-3 ggthemes_5.2.0     rlang_1.3.0       
[29] stringi_1.8.7      xfun_0.60          sass_0.4.10        fs_2.1.0          
[33] S7_0.2.2           bit64_4.8.2        otel_0.2.0         cli_3.6.6         
[37] withr_3.0.3        magrittr_2.0.5     digest_0.6.39      grid_4.6.1        
[41] vroom_1.7.1        hms_1.1.4          lifecycle_1.0.5    vctrs_0.7.3       
[45] evaluate_1.0.5     glue_1.8.1         farver_2.1.2       gt_1.3.0          
[49] spmR_0.4.3         rmarkdown_2.31     purrr_1.2.2        tools_4.6.1       
[53] pkgconfig_2.0.3    htmltools_0.5.9