Skip to content

docs(cran-prep): switch maintainer to Vincent + rewrite cran-comments.md for 0.3.0#111

Merged
VincentGuyader merged 4 commits into
masterfrom
docs/cran-prep-0.3.0
May 11, 2026
Merged

docs(cran-prep): switch maintainer to Vincent + rewrite cran-comments.md for 0.3.0#111
VincentGuyader merged 4 commits into
masterfrom
docs/cran-prep-0.3.0

Conversation

@VincentGuyader
Copy link
Copy Markdown
Member

Summary

Two coordinated edits ahead of the CRAN 0.3.0 submission:

  1. DESCRIPTION: swap the cre role from Colin Fay (contact@colinfay.me) to Vincent Guyader (vincent@thinkr.fr). Both remain aut. Vincent pilots the 0.3.0 release. CRAN's submission system will emit a "New maintainer" note and ask the previous maintainer to confirm via email.

  2. cran-comments.md: replace the previous-release boilerplate (download.file feedback) with the actual 0.3.0 release notes:

    • Test environments (local + GHA + win-builder placeholder, filled in once check_win_devel() returns)
    • Maintainer change context
    • Major changes since 0.2.6 grouped as Breaking changes / New features / Security hardening / Bug fixes
    • Reverse-deps note (golem unaffected by the vendored renv removal)
    • Coverage note (99.84%, single uncovered line is a defensive stop() guard)

Local verification

R CMD check --as-cran : 0 errors / 0 warnings / 1 note
note: "unable to verify current time" (transient host glitch, unrelated to package)

The "New maintainer" note is not emitted by local check. CRAN's submission system raises it; that is expected and is the whole point of this PR.

Test plan

  • DESCRIPTION authors order preserved (Fay, Guyader, Parry, Rochette).
  • Only cre role swapped; both Fay and Guyader carry aut.
  • cran-comments.md mentions every breaking change in NEWS.md 0.3.0.
  • cran-comments.md flags the maintainer change explicitly.
  • R CMD check --as-cran clean (0/0/1 transient).
  • After merge: run devtools::check_win_devel() from master, paste win-builder summary into cran-comments.md as a follow-up.
  • After merge: urlchecker::url_check() on master HEAD.
  • After merge: revdepcheck::revdep_check() to confirm golem unaffected.

@VincentGuyader
Copy link
Copy Markdown
Member Author

/copilot review

….md for 0.3.0

Two coordinated edits ahead of the CRAN submission:

1. DESCRIPTION: swap the `cre` role from Colin Fay
   (`contact@colinfay.me`) to Vincent Guyader
   (`vincent@thinkr.fr`). Both remain listed as `aut`. Vincent
   pilots the 0.3.0 release; the maintainer change is
   coordinated between the two authors. CRAN's submission
   system will emit a "New maintainer" note and require email
   confirmation from the previous maintainer.

2. cran-comments.md: replace the previous-release boilerplate
   (CRAN feedback on `download.file()` graceful failure) with
   the actual 0.3.0 release notes:
   - Test environments (local + GHA + win-builder placeholder)
   - Maintainer change context
   - Major changes since 0.2.6 grouped as Breaking changes /
     New features / Security hardening / Bug fixes
   - Reverse-deps note (golem unaffected by vendored renv removal)
   - Coverage note (99.84%, single defensive guard uncovered)

R CMD check --as-cran: 0 errors / 0 warnings / 1 note
("unable to verify current time" host glitch, unrelated).
devtools::test(): no behavioural change (no R/, NAMESPACE, Rd
or test impact in this commit).
Three changes from the pr-reviewer pass:

1. Test environments: replace the literal `TODO` placeholder for
   `check_win_devel()` with explicit "submitted in parallel; the
   result will follow by email" phrasing. Submitting a file with
   `TODO` reads as an unfinished checklist and risks an immediate
   bounce from the CRAN review queue.
2. Maintainer change: spell out the email-confirmation protocol
   explicitly ("the previous maintainer ... will confirm by
   replying to the automated email from CRAN's submission
   system"), instead of relying on the vaguer "coordinated
   between the two authors" phrasing. Makes clear we know the
   handover is gated on Colin's reply, not on internal
   coordination.
3. R CMD check results: keep `0/0/0` as the canonical result but
   add a one-line caveat about the transient "unable to verify
   current time" host-clock NOTE so a CRAN reviewer is not
   surprised if win-builder surfaces it.
… manual verification

revdepcheck::revdep_check() was attempted but its install phase
on the local host stalled on Bioconductor / heavy-stats deps
(ade4, Biobase, ape) pulled in by {AbSolution}. Rather than
keep an unverified claim in cran-comments.md, replace it with
the manual verification that does answer the relevant question:
the only breaking *symbol* removal in 0.3.0 is
`dockerfiler::renv`, and a GitHub-wide code search returns zero
references to it outside `ThinkR-open/dockerfiler` (our own
NEWS) and `cran/dockerfiler` (the 0.2.7 mirror). Combined with
the explicit local grep of {golem}, this shows none of the 3
declared revdeps (golem, AbSolution, shiny2docker) consume the
removed symbol. Default-value flips (FROM, repos, user) are
behavioural and preserve call-site compatibility.
…an-comments

PR #112 fixed a code-injection path in dock_from_renv() (the renv
version resolved from the lockfile reached the generated `R -e
'remotes::install_version(...)'` line without validation). Mention it
explicitly in the cran-comments.md Security section so the CRAN
reviewer sees that the audit happened and the fix is in this submission.
Also clarifies there is nothing to disclose-coordinate: no published
dockerfiler version shipped the 0.3.0 changeset.
@VincentGuyader VincentGuyader force-pushed the docs/cran-prep-0.3.0 branch from 697b1c4 to 9353d0e Compare May 11, 2026 17:27
@VincentGuyader VincentGuyader merged commit de9ec1f into master May 11, 2026
6 checks passed
VincentGuyader added a commit that referenced this pull request May 12, 2026
* chore: keep Colin Fay as the package maintainer

Revert the maintainer (`cre`) swap from #111: Colin Fay
(`contact@colinfay.me`) stays the `cre`, Vincent Guyader goes back to
`aut`. Both remain listed as authors. No "New maintainer" note will be
emitted by CRAN's submission system, so the corresponding section of
`cran-comments.md` is removed.

* docs+chore: pre-CRAN polish for 0.3.0

Bundled pre-submission cleanup, the result of a dedicated documentation
review plus a coverage pass.

dock_from_desc(): flip the default `repos` to
`c(CRAN = "https://p3m.dev/cran/latest")`, matching dock_from_renv(),
and wire `.patch_rprofile_for_ppm()` into the generated Rprofile.site
RUN so the build pulls pre-compiled Linux binaries (the
`__linux__/$VERSION_CODENAME/` rewrite + the strict `HTTPUserAgent`
PPM requires). Pass `repos = c(CRAN = "https://cran.rstudio.com/")` to
opt out. Breaking change (behaviour of the generated Dockerfile);
NEWS updated. Tests added (red-first): the default `repos` formal is
the PPM URL, and a default `dock_from_desc()` invocation produces the
rewritten Rprofile line.

Documentation:
- README: the renv.lock section now shows the bare
  `dock_from_renv(lockfile = ...)` call and spells out the 0.3.0
  defaults (multi-arch `rocker/r-ver`, p3m.dev binaries, `rstudio`
  user) and how to opt out; a `parse_dockerfile()` section is added;
  the README links to `vignette("dockerfiler")`.
- Vignette: adds `dock_from_renv()` and `parse_dockerfile()` sections,
  fixes the `r(install.packages(..., repo = ...))` typo (`repos =`),
  and notes the generators' default `FROM` / `repos`.
- `dock_from_desc()` roxygen: add `@examples` and `@details`
  (explaining the `build_from_source` / `update_tar_gz` interplay),
  document the new `repos` default + PPM rewrite, fix the
  `AS` "Default it NULL" typo, clarify `AS` is a build-stage name.
- `Dockerfile$new()` roxygen: `@param FROM` now states the default
  (`"rocker/r-base"`, and that the high-level generators differ);
  `@param AS` describes it as a build-stage name.
- `Dockerfile$ENV()` roxygen: `@param key,value` said "label"
  (copy-paste from `LABEL()`); now "environment variable".
- `r()` roxygen: clearer `@description` / `@param` / `@return`
  (it captures an R *expression* unevaluated and returns a
  shell-quoted `R -e '...'` string), fix the example's `repo =` typo.
- `get_sysreqs()` roxygen: add `@examples`.
- NEWS: split the dense "Small polish bundle" bullet into readable,
  user-facing lines; widen the FROM/repos breaking-change bullets to
  cover `dock_from_desc()`.
- regenerated `man/*.Rd` (`devtools::document()`; bumps
  `RoxygenNote` 7.3.2 -> 7.3.3 to match the installed roxygen2).

Coverage:
- `tests/testthat/test-utils.R`: direct tests for the
  type/length/NA/format guards of every `.validate_*` helper. These
  guards are part of the security contract (the argument is
  interpolated into a generated Dockerfile directive) but were only
  exercised via the format-regex branch. Package coverage is back to
  99.65% (`R/utils.R` 99.10%, was 80.18%); `cran-comments.md` updated
  with the real figure.

Full test suite: 0 failures. R CMD check --as-cran: 0/0/0 (one
transient "unable to verify current time" host NOTE, unrelated).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant