Prepare safetyGraphics 2.2.0 for resubmission to CRAN (hold until safetyCharts is accepted) - #729
Draft
jwildfire wants to merge 5 commits into
Draft
Prepare safetyGraphics 2.2.0 for resubmission to CRAN (hold until safetyCharts is accepted)#729jwildfire wants to merge 5 commits into
jwildfire wants to merge 5 commits into
Conversation
safetyGraphics was archived from CRAN on 2026-03-25 for requiring the archived package Tendril, via its dependency on safetyCharts. safetyCharts 0.5.0 drops Tendril, but safetyGraphics does not simply follow: the tree has 27 unreleased commits sitting under the same version number CRAN archived, and R CMD check --as-cran refuses it outright. - Bump 2.1.1 -> 2.2.0. CRAN reports "Insufficient package version (submitted: 2.1.1, existing: 2.1.1)" otherwise; the incoming check requires a version strictly greater than the highest one in the CRAN archive. - Drop safetyProfile from Suggests. It has never been on CRAN — no package page, no archive entry — so the check fails with "Package suggested but not available". The patient profile tab is unchanged for anyone who has safetyProfile loaded; it now resolves through getExportedValue() behind the same isNamespaceLoaded() guard the other optional packages use. - Declare cli in Imports. cli::cli_alert_info() was called by the profile tab without cli appearing anywhere in DESCRIPTION, which is a check WARNING. - Document the config argument of homeTab(), safetyGraphicsServer() and safetyGraphicsUI(), which was a check WARNING. - Fix the getChartStatus() example, which was a check ERROR: it called map(), distinct(), filter() and others unqualified, none of which safetyGraphics exports. - Regenerate NAMESPACE. The checked-in copy had drifted from the roxygen comments, importing set_names from purrr rather than rlang. - Drop LazyData: true; there is no data/ directory. - Update nine redirected URLs in the Technical FAQ vignette. - Ignore R/_disable_autoload.R at build time; a leading underscore is not a valid R file name and R CMD build was excluding it with a warning. - Raise the safetyCharts floor to >= 0.5.0, the version that drops Tendril. - Replace cran-comments.md, which claimed "no ERRORs, WARNINGs or NOTEs" on R 4.1.0 and rhub environments that no longer exist. - NEWS.md entry for 2.2.0. Worker: W0084
Audited both packages' Rd files for missing \value against the last CRAN-accepted tarball of each. safetyCharts now has none at all, against two in the accepted 0.3.0. safetyGraphics had 33, of which exactly one -- chartsNavUI -- was added since the accepted 2.1.1. That one is fixed, so this release adds no new gap; the other 32 have CRAN precedent and are left for a separate pass rather than folded into a resubmission. Worker: W0084
Found by an adversarial audit of this branch. - "Stray print() calls removed from the app" was false. The prints removed by 9f90959 had been introduced after the 2.1.1 CRAN release, so relative to what CRAN shipped nothing changed; print(charts) at R/mod_settingsCharts.R:53 is byte-identical to 2.1.1 and is still there. The line is removed rather than the print, because removing it is a behaviour change with CRAN precedent against it being a defect. - The undeclared cli::cli_alert_info() call is in safetyGraphicsServer(), not in the profile tab module. Corrected. Worker: W0084
…ts.md asserting something that is not yet true Both found by an adversarial audit of this branch. - profileTab() had gained an isNamespaceLoaded() guard it never had. The original called safetyProfile::profile_server() unconditionally, and `::` loads an installed namespace on demand — so with safetyProfile installed but not yet loaded, the original started the module and the guarded version returned NULL silently. Guard removed. getExportedValue() was verified to match `::` exactly: it loads an installed-but-unloaded namespace and errors when the package is absent. profileTabUI() keeps its guard, which it always had. - profileTabUI()'s change is a bug fix, not a no-op, and is now documented as one: the original called profile_ui() unqualified, so a loaded-but-unattached safetyProfile produced "could not find function". - cran-comments.md stated "'safetyCharts' has been updated to remove 'Tendril' and is back on CRAN". It is not; it is still archived and has not been submitted. That is the same defect this branch removed from the previous cran-comments.md. Replaced with a blocking HTML comment and fill-in-the-date placeholders so it cannot be pasted into the submission form before it is true. - Tenth redirected URL in the Technical FAQ vignette, missed on the first pass: shiny.rstudio.com/tutorial/written-tutorial/lesson7 now resolves to shiny.posit.co/r/getstarted/shiny-basics/lesson7. NEWS count corrected, and the d-wise link described accurately as an Internet Archive substitute rather than a redirect. Worker: W0084
Missing \value is the most common CRAN ask on a new submission, and an archived package is reviewed as one. An audit against the last CRAN-accepted tarball found 32 exported functions with no \value section -- essentially the whole Shiny module layer, plus safetyGraphicsApp(), safetyGraphicsInit(), makeChartParams(), makeChartSummary() and generateMappingList(). All are now documented, from each function's actual terminal expression rather than from its name: UI functions state the UI object they build, module servers that exist for their side effects say so plainly, and the two that return reactives say which reactive. Also pre-empts the reviewer question about safetyProfile in cran-comments.md: it is a GitHub-only package declared in no DESCRIPTION field, and the comment now explains why and invites CRAN to say if they want it handled differently. Worker: W0084
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
safetyGraphics was archived from CRAN on 2026-03-25. It has never used Tendril directly — it was archived because it imports safetyCharts, which did. CRAN traces that indirectly by policy.
So there is no Tendril removal to do here. The work in this branch is everything else the resubmission needs.
What changed
NEWS.md.R CMD check --as-cranrequires and which was the largest single source of check output.profileTab()'s load-on-demand behaviour restored.cran-comments.mdthat asserted something not yet true.The order matters, and getting it wrong costs a second archival
The companion pull request is SafetyGraphics/safetyCharts#158. It goes first and alone.
A CRAN team member has stated in public that dependents of a package still missing from the archive are archived automatically. Submitting safetyGraphics while safetyCharts is only in review would therefore archive safetyGraphics a second time, in the middle of un-archiving it. Acceptance, not submission, is the gate.
What is not established
CRAN documents no un-archive procedure at all. Whether the archival reason is required in the comment box, whether there is a separate review queue, whether there is a waiting period, and how long review takes are all unverified and are not asserted anywhere in this branch.
Context: requirement jwildfire/obot.roadmap#281 and the decision page.
This PR was drafted by Claude Code using Opus 5 and reviewed by @jwildfire