Skip to content

feat(ref): PMID is a parked variant, so PubMed-identified entries are silently skipped — and life sciences is the market where that matters #500

Description

@sotashimozono

Filed after checking #474 — this is the one source-layer gap that survey does not cover, because it is an identifier gap rather than a source gap.

What is missing

Ref::Pmid does not exist. It is parked, deliberately and in writing:

  • crates/doiget-core/src/refs.rs:17 — "Identifier-pick priority per ADR-0030 D3: doi > arxiv > pmid"
  • crates/doiget-core/src/refs.rs:18 — "PMID adapter parking until the Ref::Pmid variant lands"
  • crates/doiget-core/src/refs.rs:233 — "(PMID parking — Ref::Pmid not yet defined …)"
  • crates/doiget-core/src/canonical.rs:22 — future variants "(Pmid, Handle, …)" are anticipated by the canonical-class contract but not implemented

ADR-0030 D3 already decided PMID's priority. Nothing implemented its existence.

The consequence is a silent skip

crates/doiget-core/src/refs.rs:406: an entry whose only identifier is a PMID — eprinttype = {pubmed} — "is skipped rather than" parsed. A bibliography of biomedical references therefore yields fewer entries than it contains, and nothing says which ones went missing or why.

That is the same failure class as #476, #441, #458 and the arXiv claim in #493: the code is correct about what it does, and the user is never told what it did not do. A .bib exported from PubMed is the single most common bibliography shape in the life sciences, and against doiget it silently under-resolves.

Why this is worth doing before the rest of #474

#474 argues, correctly for its time, that adding sources to a chain with a known skip bug (#458) and no end-to-end harness (#462) multiplies the #442 defect class. That argument still holds for sources. It does not apply here, for two reasons:

  1. This is a Ref variant plus a resolver, not a new leg on the Tier-2/Tier-3 chain. It does not widen the surface bug(tdm): the Tier-3 chain is skipped whenever Crossref answers, so a TDM source can never close the fetch gap it was added for #458 and test: an end-to-end use-case suite driven through the real entry points, because every "unreachable source" bug passed its unit tests #462 are about.
  2. Europe PMC is already integrated (feat(source): Europe PMC — OA full text that Unpaywall does not index #415) and already resolves much of the corpus. What is missing is the identifier, so a large part of the work is routing PMIDs to a source that exists.

Proposed shape

Not in scope here

The rest of #474's candidate list stays in #474. Two of its entries are additionally claimed by #461 (BASE, Zenodo) and one by #463 (ACM), and this issue deliberately does not touch any of them.

Sources named in paper-search-mcp but absent from both #474 and here — SSRN, IACR ePrint, CiteSeerX, chemRxiv beyond #474's mention — are lower value per integration and belong as additions to the #474 table, not as separate issues.

Refs #474, #415, #462, ADR-0030, ADR-0007.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions