datacite-metadata-current (TN105)#

Group

Default severity

Metadata

Warning

When a technote is released, a DOI is minted for it and the technote’s metadata is registered with DataCite. That registered record is what the rest of the scholarly world reads: it is what a reference manager imports, what an indexer harvests, and what https://doi.org/doi ultimately describes. technote.toml can go on changing after that — a title is reworded, an author joins — and the registered record does not follow by itself.

This rule reads the metadata registered for the technote’s [technote] doi from DataCite’s public API and reports when the registered title or author list no longer matches technote.toml, or when the two sides register the same author under conflicting ORCIDs.

Note

TN105 uses the network, and so do the author checks (TN101TN103), but only TN105 degrades to silence. An author database that cannot be reached is reported as TN103; a DataCite that cannot be reached is reported as nothing at all. See When DataCite is not reachable for every situation this rule stays quiet in.

Example of a failing technote#

The technote is renamed in technote.toml after its DOI was registered:

technote.toml#
[technote]
id = "SQR-000"
title = "The technote, revised"
doi = "10.71929/rubin/2570308"
[TN105] The metadata registered for DOI 10.71929/rubin/2570308 differs from technote.toml: the registered title is 'The technote', but technote.toml declares 'The technote, revised'. Compare with the registered metadata at https://api.datacite.org/dois/10.71929/rubin/2570308.

An author who joined the technote after its DOI was registered reads much the same way, naming the people the two sides do not agree on:

[TN105] The metadata registered for DOI 10.71929/rubin/2570308 differs from technote.toml: technote.toml declares authors the record does not register ('AlSayyad, Yusra'). Compare with the registered metadata at https://api.datacite.org/dois/10.71929/rubin/2570308.

An author registered under somebody else’s ORCID reads as the conflict it is, naming both identifiers:

[TN105] The metadata registered for DOI 10.71929/rubin/2570308 differs from technote.toml: the ORCID registered for 'Sick, Jonathan' is https://orcid.org/0000-0002-1793-3689, but technote.toml declares https://orcid.org/0000-0003-3001-676X. Compare with the registered metadata at https://api.datacite.org/dois/10.71929/rubin/2570308.

The message names each field that differs and links to the record it compared against, so you can read exactly what is registered:

curl https://api.datacite.org/dois/10.71929/rubin/2570308

How to fix it#

Decide which side is right — the finding does not assume technote.toml is.

  • The technote changed. Release the technote again so that its DOI’s metadata is updated from the current technote.toml. Rubin’s technote CI registers metadata as part of a release, so publishing a new version brings the record back in step.

  • The registered record is right and :file:`technote.toml` drifted — a title that was edited in the wrong place, an author who was removed by accident, or a mistyped orcid. Correct technote.toml, and regenerate CITATION.cff (TN106) if the repository has one.

  • The registered record is wrong and a release will not fix it. Ask in the #square-help Slack channel for the DataCite record to be corrected; DOI metadata is registered by Rubin’s services rather than from your working copy.

This rule is a warning: it does not fail a lint run unless you pass --strict. That is deliberate — the registered metadata is not something a technote author can always change on their own, so the finding informs rather than blocks.

What is compared#

Only two fields are compared, and tolerantly wherever tolerance can be afforded. A false positive here is worse than a miss: the rule warns about metadata you may not control directly, and a warning nobody can act on trains people to ignore the linter. The one exact comparison is between two ORCIDs, for the reason given below.

Title

Compared ignoring case and whitespace, so The Technote and the  technote agree.

Authors

Each author in technote.toml is paired with a creator registered for the DOI, and the authors left unpaired are reported — an author the record does not register, or a creator technote.toml does not declare. A pair the two sides make under conflicting ORCIDs is reported too. The order the two sides list people in is not compared, since a legitimate reordering is not drift.

The pairing goes in two passes.

ORCID first. Where both sides carry an ORCID — an author’s orcid in technote.toml, and an ORCID under the creator’s nameIdentifiers in the registered record — a matching ORCID pairs them and settles it. An ORCID is the stronger claim about who an author is than any spelling of their name, so a pair it settles is not compared on name at all: an author who has since changed how their name is written is not reported. Both sides are normalized first, so a bare 0000-0003-3001-676X and an https://orcid.org/0000-0003-3001-676X URL are the same identifier.

Then by name. Whoever is left over — an author with no ORCID, or one whose ORCID the record does not register — is paired by name:

  • Family names are compared after folding case, accents, and punctuation, so Ibáñez and Ibanez are the same family name.

  • Given names are compared tolerantly of initials, so a registered James F. matches a declared James and a registered R. Lynne matches a declared Lynne. A different name — John where technote.toml declares James — does not match.

  • A creator that registers no given name is compared on its one name alone. That covers an Organizational creator, and the Personal creator with only a familyName that Rubin’s minter registers a committee as. An absent given name is not drift.

A pair made by name where both sides carry an ORCID is a conflict. The ORCID pass has already searched every registered creator, so an author that reaches the name pass still carrying an ORCID has established that no creator registers that identifier — and the creator its name then matches necessarily registers a different one. The two sides agree about who the author is and disagree about which ORCID is theirs, which means one of the two identifiers belongs to somebody else. This is the one thing the rule compares exactly rather than tolerantly, precisely because the tolerance that keeps a reworded name quiet would hide it.

The comparison reads a creator’s decomposed givenName and familyName in preference to the formatted name the record also carries, because the formatted name is not always trustworthy: Rubin’s minter writes a literal null into it for a creator with no given name, as in "Rubin's Survey Cadence Optimization Committee, null". Comparing the decomposed parts also means a transposed given and family name is seen as drift rather than silently accepted.

A field only one side declares is skipped rather than reported. A technote.toml with no title, or a registered record that lists no creators, simply is not compared on that field.

Other metadata a DOI record carries — the publication year, the publisher, the landing-page URL, affiliations — is not compared. Those fields are set by the minting service at release time and legitimately differ from what technote.toml says, so comparing them would produce findings nobody should act on.

When DataCite is not reachable#

The check is silent — no finding, and no complaint about the attempt — in every situation where it cannot reach a confident conclusion:

  • The technote declares no DOI. Most technotes have no DOI for most of their lives; there is nothing to cross-check.

  • The declared DOI is not a DOI. A value that is not a DOI is rejected when technote.toml is parsed, so it is TN001’s finding, and TN105 asks DataCite nothing.

  • DataCite answers 404. A DOI that has been reserved but not yet made findable looks exactly like this, and it is not a problem to report.

  • DataCite cannot be reached at all — no network, a DNS failure, a timeout, an outage, or a response that is not a DOI record.

So a technote author working offline, and a CI job running while DataCite is down, both get the same clean lint run they would get with the network up. The request uses a short timeout for the same reason: a DataCite that is not answering must not stall a lint run that is going to stay silent about it either way.

See also#

  • TN001technote.toml does not conform to the schema, which is how a doi that is not a DOI is reported. TN105 never sees such a technote, because parsing fails before any metadata rule runs.

  • TN106CITATION.cff is out of date with technote.toml. TN106 compares the same metadata against a local file, where TN105 compares it against the registered record.

  • Generating a CITATION.cff — how a technote’s citation metadata is composed from technote.toml.