risk_score() gains a major_version_grace parameter (default 1L) --
when the installed version is one or more major versions ahead of an
entry's from_version, the entry is suppressed entirely. This prevents
historically wide version windows (e.g. a major package rewrite from
several years ago) from generating false-positive flags for users who
are already well past the breaking-change transition.
check_db_staleness() gains a from_version_major_threshold parameter
(default 1L) -- flags database entries where the current CRAN release
is one or more major versions ahead of from_version, indicating the
window floor may be too wide and the entry may need its from_version
raised or the entry closed. New status values: "stale_ceiling" (the
previous "stale" status, renamed for clarity) and "stale_floor".
Fixed remaining relative URI in README.md -- CODE_OF_CONDUCT.md link
now uses the full absolute GitHub URL. Resolves CRAN pre-check NOTE:
"Found the following (possibly) invalid file URI".
Updated MatchIt::matchit database entry: narrowed from_version from
3.0.2 to 4.6.99 to reflect that the 3.x -> 4.x rewrite is long
complete and active users are on 4.x.
README.md -- CODE_OF_CONDUCT.md and
CONTRIBUTING.md links now use absolute GitHub URLs. Resolves CRAN
pre-check NOTE: "Found the following (possibly) invalid file URI".Added CONTRIBUTING.md with guidelines for contributing to the package
and to the breaking-changes database (reproducr-db).
Added CODE_OF_CONDUCT.md (Contributor Covenant).
Added LICENSE and LICENSE.md files for the MIT licence.
Fixed bug in .resolve_current_versions() where packages appearing in
multiple library paths caused a "more elements supplied than there are
to replace" error. Now takes only the first match.
Improved test coverage from 82% to 86%. Added tests/testthat/test-utils.R
covering .parse_renv_lock(), .hash_object(), .renv_lock_exists(),
.get_os(), .pad(), and .version_in_window().
CONTRIBUTING.md, LICENSE.md, CODE_OF_CONDUCT.md, and codecov.yml
added to .Rbuildignore -- present in the GitHub repository but excluded
from the CRAN tarball.
Added Codecov integration -- coverage badge now shown in README.
Added GitHub issue templates (bug report, feature request, database entry suggestion) and PR template.
check_db_staleness() now skips entries marked closed = TRUE -- these
are intentionally closed version windows (e.g. historical base R changes)
that should not be flagged as stale. Five base R entries (stats::sample,
stats::rnorm, stats::runif, stats::rbinom, stats::hclust) are now
marked closed in reproducr-db.
Updated 19 stale to_version ceilings in reproducr-db to cover current
CRAN releases (dplyr, ggplot2, tidyr, purrr, readr, stringr,
data.table, lme4, broom, caret).
Added caret::train as a new database entry (version window 6.0.99 to
7.0.9).
Added closed and closed_reason fields to the reproducr-db JSON schema.
repro_report() HTML output now uses commonmark for proper Markdown
rendering -- tables, headers, and code blocks render correctly in all
browsers. Falls back gracefully with a message if commonmark is not
installed. Added commonmark to Suggests.
Risk register in the "pharma" report style is now a compact summary
table rather than individual cards -- more readable in regulated workflows.
repro_badge() moved to its own file (R/repro_badge.R).
certify.R, utils.R, check_db_staleness.R, reproducr-package.R,
audit_script.R, risk_score.R, repro_report.R. Resolves R CMD check
WARNING on Windows.Migrated all repositories to the
repro-stats GitHub organisation.
Added reproducr-cmc to the gallery -- a CMC statistical package covering
dissolution f2 (ICH Q1B), stability shelf-life (ICH Q1E), and assay method
validation (ICH Q2(R1)). Pharma-style QC report, renv locked, 20
certified outputs.
Fixed audit_script(renv = TRUE) incorrectly falling back to the installed
library when a valid renv.lock was present. The regex parser was matching
the R version field in the lockfile header, causing a length mismatch.
Now uses jsonlite when available for robust JSON parsing, with a corrected
regex fallback.
Fixed audit_script() to skip prose lines in .Rmd and .qmd files --
only lines inside fenced ```{r} code blocks are now parsed. Previously,
inline backtick references like `stats::sample()` in prose were
incorrectly detected as qualified calls, producing false positives when
auditing vignettes.
Added check_db_staleness() -- compares to_version ceilings in the
breaking-changes database against current CRAN releases. Returns a tidy
staleness_report data frame with "ok", "stale", or "unknown"
status per entry. A weekly GitHub Actions workflow opens an issue in
reproducr-db automatically when stale entries are detected.
Narrowed version windows for base R RNG entries (stats::rnorm,
stats::rbinom, stats::runif, stats::sample) from to_version = "4.9.9"
to "3.6.9". Users on modern R (>= 4.x) were being falsely flagged for
a 2019 change they are all on the same side of.
Narrowed version window for stats::hclust from "4.9.9" to "4.0.9"
for the same reason.
Added version window design principles to R/breaking_changes_db.R and
expanded vignette("contributing-to-the-database") with three rules for
setting to_version and a quick-reference table.
Launched reproducr-db --
a companion repository for community-contributed breaking-change entries.
All 29 existing entries are available as JSON files with a validation CI
workflow on every PR.
Added jsonlite to Suggests to support robust renv.lock parsing.
Added spelling wordlist (inst/WORDLIST) -- no spelling errors.
audit_script() -- parse .R, .Rmd, and .qmd files to extract all
qualified pkg::fn calls with version resolution from renv.lock or the
installed library.
risk_score() -- three independent risk checks: "changelog" (curated
database of known breaking changes), "seed_check" (flags stochastic
functions without a nearby set.seed()), and "locale_check" (flags
locale-sensitive operations).
certify() -- hash and store analytical outputs as a signed baseline.
check_drift() -- compare current outputs against a stored baseline;
reports "ok", "drifted", "missing", and "new" statuses.
list_certs() -- inspect all certifications stored in a project's
.reproducr.rds file.
repro_report() -- render audit reports in three styles ("minimal",
"academic", "pharma") and three formats ("text", "md", "html").
repro_badge() -- generate a shields.io reproducibility status badge and
optionally insert it into README.md.
Initial breaking-changes database covering dplyr, tidyr, ggplot2,
readr, purrr, stringr, lubridate, broom, data.table, lme4,
and base R (R 3.6.0 RNG changes, R 4.0.0 hclust() tie-breaking).