Watch for citations that stop resolving - #27
Merged
Merged
Conversation
Citations go stale without anyone touching them. Data centres reissue a DOI when a record is superseded and retire the old one, so a reference that was correct when written stops resolving on its own. Nothing in the package resolves a DOI at runtime, so nothing would ever notice. This is not hypothetical here. The AMOC reference shipped pointing at 10.5285/223b34a3-..., which BODC retired on publishing a newer RAPID release; it was found by hand this afternoon, having been wrong for some time. A quarterly workflow now resolves every DOI cited in the README, the catalogs, and NEWS.md, and opens one rolling issue naming any that are dead and where each is cited. Quarterly rather than monthly because these are retired on the timescale of dataset releases. It reads only. Replacing a dead citation means deciding which version of a record the package should track, which is a judgement rather than a lookup, so the check reports and stops. Two things it deliberately does not report. A DOI that fails HEAD is retried with GET, because some publishers refuse HEAD to anything not browser-shaped - the sf citation returns 503 to one and 200 to the other. And every DOI failing at once is treated as no network rather than as every citation dying simultaneously. Verified both ways: all twelve resolve today, and swapping one for the retired RAPID DOI produces the report naming it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Citations go stale without anyone touching them. Data centres reissue a DOI when a record is superseded and retire the old one, so a reference that was correct when written stops resolving on its own. Nothing in the package resolves a DOI at runtime, so nothing would ever notice.
Not hypothetical here. The
AMOCreference shipped pointing at10.5285/223b34a3-..., which BODC retired on publishing a newer RAPID release. It was found by hand this afternoon, having been wrong for some time.What it does
A quarterly workflow resolves every DOI cited in the README, the catalogs, and
NEWS.md, and opens one rolling issue naming any that are dead and where each is cited.Quarterly rather than monthly: DOIs are retired on the timescale of dataset releases, roughly yearly, so monthly would mostly be noise.
It reads only. Replacing a dead citation means deciding which version of a record the package should track — a judgement, not a lookup — so the check reports and stops, the same as the Copernicus catalog check.
Two things it deliberately does not report
sfcitation returns 503 to one and 200 to the other. Reporting that as dead would be wrong.It also skips
10.48670/moi-xxxxx, the placeholder in Copernicus's own citation format quoted in the README.Verified both ways
and with one swapped for the retired RAPID DOI:
A check that can only pass is worth nothing, so the detection path was exercised rather than assumed.
Verification
R CMD check— Status: OK, 774 tests. Workflow YAML validated. Installed into both R 4.6.1 and 4.3.2. The README gains a Keeping these current subsection describing both scheduled checks and how to run them locally.🤖 Generated with Claude Code