Skip to content

Remove the Tendril dependency so safetyCharts can return to CRAN - #158

Open
jwildfire wants to merge 4 commits into
SafetyGraphics:devfrom
jwildfire:remove-tendril
Open

Remove the Tendril dependency so safetyCharts can return to CRAN#158
jwildfire wants to merge 4 commits into
SafetyGraphics:devfrom
jwildfire:remove-tendril

Conversation

@jwildfire

Copy link
Copy Markdown
Contributor

Why

safetyCharts was archived from CRAN on 2026-03-25 with the notice "Archived on 2026-03-25 as requires archived package 'Tendril'." Tendril was archived the same day for "issues were not corrected despite reminders", and has had no release since 2020.

safetyGraphics fell as a consequence, for importing safetyCharts.

This is the one change that lets both come back.

What changed

  • Tendril is dropped from Imports. That single dependency is the entire reason both packages were removed, so removing it is the whole fix.
  • inst/config/tendril.yaml is deleted, so the Tendril Plot no longer appears in the safetyGraphics application's chart list.
  • tendril_chart() stays exported and documented, but is now defunct: calling it raises an error explaining what happened and how to draw the chart directly with the archived Tendril package. Existing code gets an explanation rather than object not found.
  • The last working implementation stays in version control at the v0.4.0 tag.

The rest is CRAN packaging: return values documented on the four widget entry points, the widget examples brought under CRAN's example-timing threshold, and two NEWS statements corrected.

Version is 0.5.0. The last version on CRAN was 0.3.0; 0.4.0 shipped on GitHub only and is not free to reuse.

One thing to know about the order

If this is accepted, please do not submit safetyGraphics until safetyCharts is accepted rather than merely submitted. A CRAN team member has stated publicly that dependents of a package still absent from the archive are archived automatically, which would mean archiving safetyGraphics a second time in the middle of un-archiving it. The companion safetyGraphics branch carries a do-not-submit banner for that reason.

What was and was not verified

R CMD check --as-cran reports New submission and Package was archived on CRAN in the incoming feasibility check. Both are expected for an archived package's resubmission, and the archival reason is resolved above.

CRAN documents no un-archive procedure. What could be established from primary sources is in cran-comments.md; what could not — 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 — is not asserted anywhere in this branch.

Context for this work lives in the tracker it came from: requirement jwildfire/obot.roadmap#281 and the decision page.


This PR was drafted by Claude Code using Opus 5 and reviewed by @jwildfire

safetyCharts and safetyGraphics were both archived from CRAN on 2026-03-25
with the notice "requires archived package 'Tendril'". Tendril was archived
the same day and has had no release since 2020. Only safetyCharts imported
it; safetyGraphics fell for importing safetyCharts.

- Drop Tendril from Imports, and delete inst/config/tendril.yaml so the
  Tendril Plot no longer appears in the safetyGraphics chart list.
- Keep tendril_chart() exported and documented, but make it defunct: it now
  raises an error naming the reason and pointing at the CRAN archive, so
  existing callers get an explanation rather than "object not found".
- Drop safetyGraphics from Suggests. Nothing in this package used it, and
  because safetyGraphics imports safetyCharts the declaration was circular:
  with both packages archived, R CMD check --as-cran fails with
  "Package suggested but not available: 'safetyGraphics'". Removing it lets
  safetyCharts be submitted first.
- Add ^docs$ to .Rbuildignore; the pkgdown site was being shipped inside the
  source tarball.
- Bump to 0.5.0. CRAN's last version was 0.3.0; 0.4.0 is already a public
  GitHub release in which tendril_chart() works, so it is not free to reuse.
- NEWS.md entry covering the removal and everything unreleased since 0.3.0.

Worker: W0084
None of these are check failures on R 4.3.3; they are the two things CRAN
reviewers most reliably ask a new submission to fix, and this package reads
as a new submission because it was archived.

- Add \value sections to aeExplorer(), hepExplorer(),
  paneledOutlierExplorer() and render_widget(). The CRAN Cookbook asks for
  one on every exported function; these four had none.
- Replace the \dontrun{} wrappers on the three widget examples with
  @examplesIf requireNamespace("safetyData"). All three examples were
  verified to run here in under 0.2s each, so \dontrun{} was not warranted;
  the guard is there because safetyData is a Suggests.
- Replace cran-comments.md, which claimed "no ERRORs, WARNINGs or NOTEs" on
  R 4.1.0 and rhub environments that no longer exist.

Worker: W0084
Found by an adversarial audit of this branch.

- NEWS.md did not mention the second commit at all. Added bullets for the four
  new \value sections and for the three examples that now run rather than
  sitting inside \dontrun{}.
- render_widget()'s \value said "an htmlwidget object of class widgetName",
  which reads as an unfilled template. The class is the value of the
  widgetName argument; say that.
- Dropped the anchored ^cran-comments\.md$ rule added to .Rbuildignore in the
  first commit. The pre-existing unanchored cran-comments.md rule already
  matches the file, so it was a second rule for the same path.

Worker: W0084
Unwrapping the \dontrun{} blocks in the previous commit put two examples on
the clock for the first time. R CMD check measured hepExplorer at 3.69s and
paneledOutlierExplorer at 4.12s elapsed on an M-series Mac, against CRAN's 5s
per-example threshold and on hardware faster than CRAN's builders. Each block
renders four widgets over all 254 subjects of safetyData::adam_adlbc, and the
cost is serialising 74,264 rows to JSON once per printed widget.

Both examples now slice the data to 20 subjects first, which cuts the print
cost roughly tenfold while still demonstrating exactly what they demonstrated
before. The full-data default is named in a comment so the example does not
misrepresent what the function does with no arguments.

Also, unrelated to timing but same review surface:
- Quote 'Shiny' in the Description, per the CRAN Cookbook. safetyGraphics
  already quotes it in the same sentence pattern.
- Add ^inst/sandbox$ to .Rbuildignore. Those two files are development
  scratch, not package code -- one has a roxygen example that downloads a CSV
  and calls a function this package does not export. They shipped in 0.3.0;
  they should not ship again. Nothing is deleted, only excluded from the build.

Worker: W0084
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