Skip to content

Watch for citations that stop resolving - #27

Merged
chross22 merged 1 commit into
masterfrom
citation-check
Aug 7, 2026
Merged

Watch for citations that stop resolving#27
chross22 merged 1 commit into
masterfrom
citation-check

Conversation

@chross22

@chross22 chross22 commented Aug 7, 2026

Copy link
Copy Markdown
Owner

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 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.

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

  • A DOI that fails HEAD is retried with GET. Some publishers refuse HEAD to anything not browser-shaped: the sf citation returns 503 to one and 200 to the other. Reporting that as dead would be wrong.
  • Every DOI failing at once is treated as no network, not as every citation dying simultaneously. Exit 2, a warning, no issue.

It also skips 10.48670/moi-xxxxx, the placeholder in Copernicus's own citation format quoted in the README.

Verified both ways

Resolved 12 of 12 cited DOIs.        # today

and with one swapped for the retired RAPID DOI:

| DOI                                          | HTTP | Cited in  |
| 10.5285/223b34a3-2dc5-c945-e063-6c86abc0f5b3 | 404  | README.md |

A check that can only pass is worth nothing, so the detection path was exercised rather than assumed.

Verification

R CMD checkStatus: 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

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>
@chross22
chross22 merged commit 31773aa into master Aug 7, 2026
5 checks passed
@chross22
chross22 deleted the citation-check branch August 7, 2026 20:24
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