reproducr 0.2.1
certify()now stores raw output values alongside hashes in the certification record (newvaluesfield in.reproducr.rds). Previously only SHA-256 hashes were stored, making element-wise numeric comparison impossible downstream.check_drift()tolerance comparison is now fully implemented. Previouslytolerancewas a no-op — the function detected numeric outputs but immediately fell back to a hash-mismatch message for all of them. It now computesmax(abs(current - stored))element-wise and resolves to"ok"whendelta <= tolerance,"drifted"with the observed delta when not, and handles length mismatches, non-finite deltas, and old certification format (pre-0.2.1.reproducr.rds) gracefully. Fixes false-positive drift reports on cross-platform runs (e.g. macOS local vs Linux CI)..md_to_html()fallback (used whencommonmarkis not installed) now correctly converts Markdown headings, list items, and blockquotes in multiline strings. The line-anchoredgsub()patterns were missing the(?m)multiline flag. Also fixes a typo in the<h2>replacement string (\\2→\\1).check_db_staleness()stale ceiling and stale floor detail messages now respectverbose = FALSE. Previously these were printed unconditionally regardless of theverboseargument.CI audit workflows now commit
reproducibility_report.mdalongsideREADME.mdand.reproducr.rds, and use timestamp-based tags (ci-{date}-{hhmmss}) to prevent same-day collisions.New features:
print.staleness_report()gains adetailsargument (defaultTRUE). Setdetails = FALSEto print only the summary counts without the per-entry breakdown, useful when reviewing results interactively after already having read the entries.withradded toSuggeststo formally declare the test dependency.Migration note: Delete
.reproducr.rdsand re-runcertify()once to populate the newvaluesfield. Until thencheck_drift()degrades gracefully with an informative message.
reproducr 0.2.0
CRAN release: 2026-06-20
risk_score()gains amajor_version_graceparameter (default1L) – when the installed version is one or more major versions ahead of an entry’sfrom_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 afrom_version_major_thresholdparameter (default1L) – flags database entries where the current CRAN release is one or more major versions ahead offrom_version, indicating the window floor may be too wide and the entry may need itsfrom_versionraised or the entry closed. New status values:"stale_ceiling"(the previous"stale"status, renamed for clarity) and"stale_floor".
reproducr 0.1.5
Fixed remaining relative URI in
README.md–CODE_OF_CONDUCT.mdlink now uses the full absolute GitHub URL. Resolves CRAN pre-check NOTE: “Found the following (possibly) invalid file URI”.Updated
MatchIt::matchitdatabase entry: narrowedfrom_versionfrom3.0.2to4.6.99to reflect that the 3.x -> 4.x rewrite is long complete and active users are on 4.x.
reproducr 0.1.4
- Fixed invalid relative URIs in
README.md–CODE_OF_CONDUCT.mdandCONTRIBUTING.mdlinks now use absolute GitHub URLs. Resolves CRAN pre-check NOTE: “Found the following (possibly) invalid file URI”.
reproducr 0.1.3
Added
CONTRIBUTING.mdwith guidelines for contributing to the package and to the breaking-changes database (reproducr-db).Added
CODE_OF_CONDUCT.md(Contributor Covenant).Added
LICENSEandLICENSE.mdfiles 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.Rcovering.parse_renv_lock(),.hash_object(),.renv_lock_exists(),.get_os(),.pad(), and.version_in_window().CONTRIBUTING.md,LICENSE.md,CODE_OF_CONDUCT.md, andcodecov.ymladded 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.
reproducr 0.1.2
Breaking-changes database
check_db_staleness()now skips entries markedclosed = 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 inreproducr-db.Updated 19 stale
to_versionceilings inreproducr-dbto cover current CRAN releases (dplyr,ggplot2,tidyr,purrr,readr,stringr,data.table,lme4,broom,caret).Added
caret::trainas a new database entry (version window6.0.99to7.0.9).Added
closedandclosed_reasonfields to thereproducr-dbJSON schema.
Reports and badges
repro_report()HTML output now usescommonmarkfor proper Markdown rendering – tables, headers, and code blocks render correctly in all browsers. Falls back gracefully with a message ifcommonmarkis not installed. AddedcommonmarktoSuggests.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).
Bug fixes
- Fixed non-ASCII characters (em dashes) across all R source files –
certify.R,utils.R,check_db_staleness.R,reproducr-package.R,audit_script.R,risk_score.R,repro_report.R. ResolvesR CMD checkWARNING on Windows.
Infrastructure
Migrated all repositories to the
repro-statsGitHub organisation.Added
reproducr-cmcto 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,renvlocked, 20 certified outputs.
reproducr 0.1.1
Fixed
audit_script(renv = TRUE)incorrectly falling back to the installed library when a validrenv.lockwas present. The regex parser was matching the R version field in the lockfile header, causing a length mismatch. Now usesjsonlitewhen available for robust JSON parsing, with a corrected regex fallback.Fixed
audit_script()to skip prose lines in.Rmdand.qmdfiles – 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()– comparesto_versionceilings in the breaking-changes database against current CRAN releases. Returns a tidystaleness_reportdata frame with"ok","stale", or"unknown"status per entry. A weekly GitHub Actions workflow opens an issue inreproducr-dbautomatically when stale entries are detected.Narrowed version windows for base R RNG entries (
stats::rnorm,stats::rbinom,stats::runif,stats::sample) fromto_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::hclustfrom"4.9.9"to"4.0.9"for the same reason.Added version window design principles to
R/breaking_changes_db.Rand expandedvignette("contributing-to-the-database")with three rules for settingto_versionand 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
jsonlitetoSuggeststo support robustrenv.lockparsing.Added spelling wordlist (
inst/WORDLIST) – no spelling errors.
reproducr 0.1.0
audit_script()– parse.R,.Rmd, and.qmdfiles to extract all qualifiedpkg::fncalls with version resolution fromrenv.lockor the installed library.risk_score()– three independent risk checks:"changelog"(curated database of known breaking changes),"seed_check"(flags stochastic functions without a nearbyset.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.rdsfile.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 intoREADME.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.0hclust()tie-breaking).