Skip to contents

cd 0.3.0 (2026-05-10)

  • cd_compare() API: adds defaults window_a = 2015:2025, window_b = 1951:1980 (the WMO-style standard normal vs recent decade — the framing both regional vignettes had settled on) and a new test = "t" argument that adds a p_value column to the output. test = "t" runs Welch’s two-sample t-test on the annual values within each window; test = "wilcox" runs Mann-Whitney U; test = NULL skips and drops the column. Rows where either window has < 8 non-NA years get p_value = NA and a single batched warning naming affected variable/period rows. The window-vs-window p-value answers a different question than cd_trend()’s Mann-Kendall test — “do the two windows differ” vs “is there a monotonic trend” — and step changes / U-shapes can produce significant Δ p with non-significant trend p (and vice versa). Both regional vignettes now report both p-values side-by-side (Δ p (windows) + Trend p (75-yr)), and the visible compare-recipe chunk drops to cd::cd_compare(ts) letting defaults carry the call. Vignette structure tweak: the Recent Decade vs Pre-Warming Reference section (renamed from “Recent vs Pre-warming”) moves up directly after Trends so the headline cumulative-impact number lands before DTR / Snowpack / Spatial Pattern drill-down. Minor bump (output schema gains p_value column by default; new test argument). (#73)

cd 0.2.8 (2026-05-07)

  • Vignette polish bundle covering both regional vignettes (kootenay-lake, peace-fwcp): (1) citation prose tightening — surfaces source-specific findings (Karl et al. 1993’s 3:1 min:max ratio, Mantua et al. 2010’s Washington-State scope + Eaton & Scheller 1996’s 57-species comparative finding, Kang et al. 2016’s ~10-day Fraser advance) instead of name-drop end-tags; drops arguez_vose2011 as decorative-only attribution; references.bib regen 18 → 17 entries; (2) km² superscript fix + highway symbology lifted from gq/inst/registry/reg_qgis_restoration.json (grey casing under warm-yellow fill); (3) kootenay town filter to Rossland, Castlegar, Nelson, Cranbrook, Kaslo, Nakusp; (4) chunk restructure (Option B) — hide ~13 visualization/styling chunks per vignette via echo = FALSE, lift cd_*() recipes (cd_extract, cd_baseline + cd_anomaly + cd_trend + cd_summary, cd_compare, per-ecoregion + per-WSG cd loops) out of # Equivalent to: comment blocks into shown eval = FALSE companion chunks. Reader’s flow becomes: cd recipe (visible, copy-pasteable) → output (table/figure, source hidden) → narrative; (5) cd:: namespace prefix on every cd function call in both vignettes (visible + hidden) for explicit package attribution. Independent Explore subagent re-verified each tightened citation against source archives + PDFs; both vignettes render cleanly post-restructure. (#72)

cd 0.2.7 (2026-05-06)

  • Tooling. Adds data-raw/regenerate_bib.R — a one-line helper that regenerates vignettes/references.bib from the union of pandoc citation markers across both regional vignettes by pulling source records from Zotero via Better BibTeX (rbbt::bbt_bib). Run after editing cites: Rscript data-raw/regenerate_bib.R. Each vignette gets a top-of-file HTML comment pointing to the helper; CLAUDE.md Vignettes section documents the prerequisite (BBT 9.x for Zotero 8/9). The conservative option vs embedding the rbbt call in YAML at render time, which would break pkgdown CI (no Zotero on the runner). (#70)

cd 0.2.6 (2026-05-05)

  • Wires up vignettes/peace-fwcp.Rmd interpretation paragraphs with citations from the climate-departure 3-split lit reviews — companion to v0.2.5’s kootenay-lake wire-up. Same 7-insertion pattern (8 unique new keys + 1 reuse), sparingly applied per the plain-language vignette philosophy. Two AOI-specific tweaks vs the kootenay PR: the [@pepin_etal2015Elevationdependentwarming; @rangwala_miller2012Climatechange] cite lands at the Interpretation paragraph rather than the Spatial Pattern section (Peace’s dominant warming gradient is east-west / windward-of-Rockies, not pure elevation), and the [@ficklin_novick2017Historicprojected] VPD-drying cite is stronger here than in Kootenay because Peace’s precipitation is up 3-4% in 2 ecoregions yet soil moisture is flat — pure VPD-driven evaporative-demand effect. Audit log at planning/archive/2026-05-issue-67-peace-vignette-wireup/citation_audit.md records the per-cite source quote, paraphrase, and visible-in-vignette warrant. An independent Explore subagent verified each row against source quote archives + PDFs and signed off all 7 cites with zero edits or removals required (stronger pass than the v0.2.5 review, which caught one minor scope nit). vignettes/references.bib regen produced no diff — both vignettes draw from the same 18-key union. Snow-section citations from #54 untouched. (#68)

cd 0.2.5 (2026-05-05)

  • Wires up vignettes/kootenay-lake.Rmd interpretation paragraphs with citations from the climate-departure 3-split lit reviews (#53/#58/#61/#63). 8 new BBT-keyed citations + 1 reuse, sparingly applied per the plain-language vignette philosophy. Insertions span all four non-snow interp themes: Trends/baseline-window (Hansen et al. 2012, Arguez & Vose 2011), DTR asymmetry (Karl et al. 1993), elevation-dependent warming (Pepin et al. 2015; Rangwala & Miller 2012), continental-scale VPD drying (Ficklin & Novick 2017), and the climate→stream-temperature→fish thermal-habitat bridge (Mantua et al. 2010; Eaton & Scheller 1996). Audit log at planning/archive/2026-05-issue-65-kootenay-vignette-wireup/citation_audit.md records, per cite, the vignette excerpt, source quote, rag store + topic where retrieved, and paraphrase as written — the “what is where by who said what where” trail. An independent Explore subagent verified each row against source quote archives and PDFs before merge; one minor scope concern surfaced (Ficklin & Novick paraphrase narrowed continental-US scope to “western US”) and was fixed inline. vignettes/references.bib regenerated via rbbt::bbt_update_bib() — now 18 entries (was 11). Snow-section citations from #54 untouched. (#66)

cd 0.2.4 (2026-05-05)

  • Interpretation framing methodology literature review — wraps the climate-departure 3-split (snow done in v0.1.7, temperature in v0.2.2, precip+drying in v0.2.3, interpretation framing here). Adds scripts/rag_interpretation_framing_build.R and scripts/rag_interpretation_framing_query.R, builds a local ragnar DuckDB from 4 peer-reviewed papers (now in the NewGraphEnvironment/climate Zotero collection), and ships the methodology synthesis + 11-row “cite this for that” citation map at planning/archive/2026-05-issue-63-interpretation-framing-lit-review/findings.md. Coverage spans WMO climate normal definition + alternatives (Arguez & Vose 2011), estimating normals when trends exist (Livezey et al. 2007), time of emergence / signal-to-noise framing (Hawkins & Sutton 2012), and cumulative-impact / “loaded dice” framing (Hansen et al. 2012). Headline finding: Hansen et al. (2012) explicitly use the same 1951–1980 base period that cd uses, providing the strongest direct precedent for cd’s baseline window choice across all three lit reviews; combined with Arguez & Vose (2011)’s framework, cd’s choice is a defensible “alternative climate normal” with cumulative-impact framing for FWCP fish-passage planner reporting. After this release, the citation backbone for the climate-departure 3-split is complete: 32 peer-reviewed papers across 4 ragnar stores, with cite-this-for-that maps in 4 archived findings.md files ready for the downstream vignette wire-up branch. (#64)

cd 0.2.3 (2026-05-05)

  • Precipitation + drying methodology literature review (2/3 of the climate-departure 3-split; temperature done in v0.2.2, interpretation framing forthcoming). Adds scripts/rag_precip_drying_methodology_build.R and scripts/rag_precip_drying_methodology_query.R, builds a local ragnar DuckDB from 7 peer-reviewed papers (now in the NewGraphEnvironment/climate Zotero collection), and ships the methodology synthesis + 15-row “cite this for that” citation map at planning/archive/2026-05-issue-61-precip-drying-lit-review/findings.md. Coverage spans anthropogenic precip-extremes attribution (Min et al. 2011), Canadian / BC adjusted precip dataset methodology (Mekis & Vincent 2011), VPD continental-scale drying (Ficklin & Novick 2017), VPD ecosystem responses (Grossiord et al. 2020), drought attribution (Williams et al. 2020), drought framework (Trenberth et al. 2014), and 20th-century hydroclimate signal (Marvel et al. 2019). Headline finding: the v0.1.1 vignette claim that “soils dry from both ↓P and ↑ET” is now backed by Ficklin & Novick (2017) rising-VPD continental drying + Williams (2020) anthropogenic-warming attribution of NA megadrought + Trenberth (2014) Penman-Monteith drought framework. Macos Zotero auto-restart pattern (osascript quit + open -a + 30 s wait) automated the BBT key generation step end-to-end (added to soul#43 for /lit-search + /zotero-api). (#62)

cd 0.2.2 (2026-05-05)

  • Temperature-departure methodology literature review (1/3 of the climate-departure 3-split; precip+drying and interpretation framing follow as separate issues). Adds scripts/rag_temp_methodology_build.R and scripts/rag_temp_methodology_query.R, builds a local ragnar DuckDB from 10 peer-reviewed papers (now in the NewGraphEnvironment/climate Zotero collection), and ships the methodology synthesis + 18-row “cite this for that” citation map at planning/archive/2026-05-issue-58-temperature-lit-review/findings.md. Coverage spans DTR asymmetry methodology (Karl et al. 1993, Easterling et al. 1997, Vose et al. 2005), Canadian/BC temperature trends (Vincent et al. 2018), elevation-dependent warming (Pepin et al. 2015, Rangwala & Miller 2012), BC downscaling (Wang et al. 2012), the climate-fish thermal-stress bridge (Mantua et al. 2010), and salmonid thermal envelope (Eaton & Scheller 1996, Richter & Kolmes 2005). Headline finding: cd_trend()’s raw Mann-Kendall + Theil-Sen aligns with Vincent et al. 2018’s Canadian-temperature-trend methodology (Sen slope + Kendall’s τ); raw MK is the right call for our 76-year strong-trend series per Yue & Wang 2002 (cross-rag from snow methodology store). Also renames existing rag_build_*.R / rag_query_*.R scripts to rag_*_build.R / rag_*_query.R (noun_verb per cd convention). (#60)

cd 0.2.1 (2026-05-04)

  • Adds a new kootenay-lake vignette covering the southern Kootenays — KOTL + LARL + DUNC + SLOC, ~24,200 km². Reads stand-alone alongside peace-fwcp and uses the v0.2.0 snow variables to tell a snow-pack story for a region with a sharp east-west precipitation gradient (Selkirks vs Purcells). Headline regional findings (2015-2025 vs 1951-1980): annual SWE -23%, annual snowfall -15%, freshet shift -12.6 days earlier, annual precipitation -7% (p = 0.02). Total annual snowfall is dropping, not just melt timing shifting — consistent with Knowles et al. 2006’s threshold finding that significant snowfall-fraction declines occur where winter wet-day Tmin > -5 °C. Adds a per-watershed-group facet view and data-raw/qa_snow_validation_kootenay_lake.R ASWS cross-check (5 sites, 74 paired station-years, pooled r = 0.90, mean bias -54%, bias-stable). New bundled assets: inst/extdata/example_aoi_kootenay_lake.gpkg, inst/extdata/context_kootenay_lake.gpkg, inst/vignette-data/kootenay_lake.rds. (#57)

cd 0.2.0 (2026-05-04)

  • Adds 8 snow-related variables for hydrology departure analysis. Four monthly natives (swe, snowfall, snowmelt, snow_cover) ship as 12-band/year COGs alongside the existing 7 climate variables; four annual derived scalars (swe_max, snowfall_fraction, snowmelt_doy_50, snowmelt_rate_peak) ship as 1-band/year COGs. New pct_point_diff anomaly type in cd_anomaly() for snow_cover and snowfall_fraction (already-percentage variables). New “Snowpack” section in the FWCP Peace vignette with seasonal-curve table, four annual time-series plots, per-ecoregion view, and citation-grounded interpretation; ASWS QA cross-check at 4 BC stations confirms bias is stable over time even where absolute values are biased. Producer pipeline extends with scripts/backfill_edh_snow.py (first place ECMWF’s accumulation-reset trick lands in code). Also bug-fix in cd_stac_item() filename parsing (substring match was mis-routing variables whose names contain other variable names — swe_max was being filed under swe). Headline finding: regional summer SWE has collapsed by 75% over the record, freshet-timing shift is uniform across all 5 ecoregions at ~1 day/decade earlier melt. (#55)

cd 0.1.7 (2026-05-04)

  • Snow-methodology literature review for the upcoming “Snowpack” vignette section. Adds scripts/rag_build_snow_methodology.R and scripts/rag_query_snow_methodology.R, builds a local ragnar DuckDB from 11 peer-reviewed papers (now in the NewGraphEnvironment/hydrology Zotero collection), and ships the methodology synthesis + 15-row “cite this for that” citation map at planning/archive/2026-05-issue-53-snow-lit-review/findings.md. Headline finding: cd_trend()’s raw Mann-Kendall + Theil-Sen (no prewhitening) is methodologically correct for our 76-year series with strong trends per Yue & Wang 2002 — prewhitening would underestimate slope when a real trend exists. (#54)

cd 0.1.6 (2026-05-03)

  • Producer-side refactor. Extracted shared safeguards (single-instance pgrep guard, exponential-backoff retry, atomic GeoTIFF write, timestamped logging, EDH token loader) from scripts/backfill_edh_all.py into a new scripts/_lib.py, and ported them to the sibling scripts/backfill_edh_tmax_tmin.py (which previously had none). Adds a backup_before_delete() helper codifying the on-disk pattern at data/backfill/monthly/_cds_backup/. No consumer-side changes; sets up the planned snow-variables backfill (#48) to inherit the safeguards via a single import. (#52)

cd 0.1.5 (2026-05-02)

  • Adds a “Watershed Groups Across Ecoregions” section to the peace-fwcp vignette: a map of the 16 canonical FWCP Peace watershed groups labelled with codes on top of ecoregion fills, plus a table showing the percent of each watershed group’s area falling in each of the five ecoregions. Lets readers map per-ecoregion climate departure findings (precipitation up only in BMP and NRM) onto the watershed-group reporting unit. Canonical 16-WSG list (CARP, CRKD, FINA, FINL, FIRE, FOXR, INGR, LOMI, MESI, NATR, OSPK, PARA, PARS, PCEA, TOOD, UOMI) hardcoded in data-raw/example_context_fwcp_peace.R for reuse — UPCE and MURR dropped because they sit mostly outside the FWCP boundary. Recent vs Pre-warming consolidated into one table. All six vignette tables now render with single, clean bookdown captions (label = NA + caption = "..." pattern). (#47)

cd 0.1.4 (2026-05-01)

KOTL vignette removed. peace-fwcp is now the canonical worked example — it covers everything KOTL did at higher fidelity (regional + per-ecoregion + day-night asymmetry + plain-language explainers + interpretation), and dropping the second live-S3 vignette saves ~60 s per pkgdown render and removes the last /vsicurl/ flake surface from the doc build. KOTL polygon assets stay in inst/extdata/ because the README quick-start still uses them. Future direction (single-vignette snowpack story or split vignettes by AOI scale) deferred until snow-pack variables land — see #49. (#50)

cd 0.1.3 (2026-05-01)

CI fragility patch. The peace-fwcp vignette previously re-fetched ~144 /vsicurl/ COG range requests on every pkgdown render; one transient flake failed the whole build. Heavy data is now pre-computed by data-raw/peace_fwcp_vignette_data.R and shipped under inst/vignette-data/ (160 KB rds + 6 KB tif). Vignette loads via system.file() and renders in ~10 s instead of ~6 min. Live cd_catalog() read kept as the consumer entry-point demonstration. (#45)

cd 0.1.2 (2026-04-30)

Vignette and docs patch. New peace-fwcp vignette runs the consumer pipeline on a regional administrative AOI (FWCP Peace Region, ~73,000 km², ~11x KOTL) — catalog → extract → trends → recent vs pre-warming → spatial map → per-ecoregion breakdown across the five BC ecoregions intersecting the region, with faceted time-series carrying both 75-yr and 45-yr Theil-Sen trend lines, a wide roll-up table, day-night asymmetry section (textbook signal does show up here, unlike KOTL), and three-finding interpretation. Plain-language explainers for trend windows, WMO climate normal, and “warming has accelerated/slowed” framing. README gains a Data section with the catalog URL and the /vsicurl/ direct-read pattern so the COGs are usable outside R (QGIS, gdalcubes, rasterio). Issue #43 filed for cd_compare() to gain a proper window-vs-window p-value. (#42)

cd 0.1.1 (2026-04-15)

Vignette and docs patch. The climate-departure vignette gained a “Daytime Highs and Overnight Lows” section using the tmax/tmin variables now on STAC, with honest framing for the example watershed (the textbook day-night asymmetry doesn’t show at Kootenay Lake — the dominant signal is summer daytime maximum, the temperature envelope for salmonid thermal stress in tributaries). Existing maps now clip context layers and mask departure rasters to the watershed group polygon for tighter framing. Interpretation section corrected: precipitation has declined ~10% (statistically significant) and soils are drying due to both falling precipitation and rising evapotranspiration. README quick-start fixed (was referencing files that don’t exist) and now links to the live pkgdown vignette. (#39)

cd 0.1.0 (2026-04-14)

CRAN release: 2020-10-22

First minor release. Producer pipeline migrated from Copernicus CDS to DestinE Earth Data Hub (Zarr). Same ERA5-Land data at the same 9 km native grid, no rate limiting, ~5x faster fetches. All 7 cd variables (tmax, tmin, tmean, prcp, vpd, rh, soil_moisture) regenerated on a single internally-consistent EPSG:4326 BC grid. Monthly GitHub Action rewired to use EDH. Consumer API unchanged — cd_catalog() and friends work exactly as before against the refreshed STAC catalog on s3://stac-era5-land. See pkgdown reference for the current function list. (#36)

cd 0.0.0.9000

Initial development version. Consumer and producer pipelines for ERA5-Land climate departure analysis.