{
  "status": "warn",
  "errors": [],
  "warnings": [
    {
      "code": "invalid_months",
      "message": "Records whose pub_month is not a month/season, a range of two, or empty.",
      "count": 219550,
      "see": "checks.structure.invalid_months"
    },
    {
      "code": "field_mismatches",
      "message": "Some sampled records disagreed with Entrez.",
      "count": 3,
      "see": "checks.field_validation.mismatches"
    },
    {
      "code": "identifier_mismatches",
      "message": "Sampled DOIs/PMCIDs differ from Entrez (may be assigned since our last update).",
      "count": 3,
      "see": "checks.field_validation.identifier_mismatches"
    }
  ],
  "generated_at": "2026-08-21T03:50:01-0400",
  "duration": "25m 47s",
  "peak_rss_gib": 5.184,
  "inputs": {
    "export_dir": "data/json",
    "shards": [
      "pubmed_metadata_0.ndjson.gz",
      "pubmed_metadata_1.ndjson.gz",
      "pubmed_metadata_2.ndjson.gz",
      "pubmed_metadata_3.ndjson.gz",
      "pubmed_metadata_4.ndjson.gz",
      "pubmed_metadata_5.ndjson.gz",
      "pubmed_metadata_6.ndjson.gz",
      "pubmed_metadata_7.ndjson.gz"
    ],
    "database": "available",
    "previous_report": null,
    "previous_manifest": null,
    "manifest_written": "data/manifests/pmids-20260821.txt.gz",
    "online": true,
    "sample_size": 30,
    "drop_sample": 10,
    "seed": 0,
    "api_key_used": true,
    "abstract_threshold": 0.9,
    "entrez_low": 0.95,
    "entrez_high": 1.05
  },
  "skipped_checks": [
    "coverage.vs-previous (no --previous-report)",
    "drops since previous.pmid-set-diff (no --previous-manifest)"
  ],
  "checks_run": [
    {
      "name": "shards-found",
      "section": "structure",
      "expectation": "the export directory contains NDJSON shards",
      "status": "pass",
      "observed": "8 shard(s)",
      "code": "no_shards",
      "count": 0,
      "see": "inputs",
      "detail": {}
    },
    {
      "name": "records-present",
      "section": "structure",
      "expectation": "the export contains at least one record",
      "status": "pass",
      "observed": "40,990,218 record(s)",
      "code": "no_records",
      "count": 0,
      "see": "checks.structure",
      "detail": {}
    },
    {
      "name": "shard-readable",
      "section": "structure",
      "expectation": "every shard can be read to its end",
      "status": "pass",
      "observed": "0 unreadable shard(s)",
      "code": "unreadable_shard",
      "count": 0,
      "see": "checks.structure.unreadable_shards",
      "detail": {}
    },
    {
      "name": "json-parse",
      "section": "structure",
      "expectation": "every line parses as JSON",
      "status": "pass",
      "observed": "0 malformed line(s)",
      "code": "malformed_json",
      "count": 0,
      "see": "checks.structure.malformed",
      "detail": {}
    },
    {
      "name": "record-fields",
      "section": "structure",
      "expectation": "every record has all the required fields",
      "status": "pass",
      "observed": "0 record(s) missing a field",
      "code": "missing_fields",
      "count": 0,
      "see": "checks.structure.missing_fields",
      "detail": {}
    },
    {
      "name": "no-nulls",
      "section": "structure",
      "expectation": "absent values are \"\" and never null",
      "status": "pass",
      "observed": "0 null field value(s)",
      "code": "null_values",
      "count": 0,
      "see": "checks.structure.null_values",
      "detail": {}
    },
    {
      "name": "id-format",
      "section": "structure",
      "expectation": "every id looks like PMID:<digits>",
      "status": "pass",
      "observed": "0 invalid id(s)",
      "code": "invalid_ids",
      "count": 0,
      "see": "checks.structure.invalid_ids",
      "detail": {}
    },
    {
      "name": "pmid-unique",
      "section": "structure",
      "expectation": "no PMID is exported twice",
      "status": "pass",
      "observed": "0 duplicated PMID(s)",
      "code": "duplicate_pmids",
      "count": 0,
      "see": "checks.structure.duplicate_pmids",
      "detail": {}
    },
    {
      "name": "no-extra-fields",
      "section": "structure",
      "expectation": "no record carries an unexpected field",
      "status": "pass",
      "observed": "0 record(s) with extra fields",
      "code": "extra_fields",
      "count": 0,
      "see": "checks.structure.extra_fields",
      "detail": {}
    },
    {
      "name": "month-format",
      "section": "structure",
      "expectation": "pub_month is a month, season, range of those, or \"\"",
      "status": "warn",
      "observed": "219,550 invalid pub_month value(s)",
      "code": "invalid_months",
      "count": 219550,
      "see": "checks.structure.invalid_months",
      "detail": {}
    },
    {
      "name": "vs-entrez",
      "section": "coverage",
      "expectation": "within [95%, 105%] of the live PubMed total",
      "status": "pass",
      "observed": "40,990,218 of 41,040,177 (99.878%)",
      "code": "coverage_out_of_band",
      "count": 1,
      "see": "checks.coverage",
      "detail": {}
    },
    {
      "name": "vs-database",
      "section": "coverage",
      "expectation": "matches the database's latest_article count",
      "status": "pass",
      "observed": "exact match (40,990,218)",
      "code": null,
      "count": 0,
      "see": null,
      "detail": {}
    },
    {
      "name": "vs-previous",
      "section": "coverage",
      "expectation": "coverage within 10% of the previous report's",
      "status": "skip",
      "observed": "no --previous-report",
      "code": null,
      "count": 0,
      "see": null,
      "detail": {}
    },
    {
      "name": "sample-fetched",
      "section": "field accuracy",
      "expectation": "PubMed still serves every sampled record",
      "status": "pass",
      "observed": "240 of 240 sampled record(s) returned",
      "code": "sampled_pmid_absent",
      "count": 0,
      "see": "checks.field_validation.missing_from_api",
      "detail": {}
    },
    {
      "name": "core-fields",
      "section": "field accuracy",
      "expectation": "<20% of compared fields differ from Entrez",
      "status": "warn",
      "observed": "3 of 1,620 comparison(s) differ (0.19%)",
      "code": "field_mismatches",
      "count": 3,
      "see": "checks.field_validation.mismatches",
      "detail": {
        "by_field": {
          "article_title": 3
        },
        "by_kind": {
          "values_differ": 3,
          "low_similarity": 0,
          "entrez_blank": 0,
          "exported_blank": 0
        },
        "examples": {
          "values_differ": {
            "pmid": 16977983,
            "field": "article_title",
            "exported": "Let's talk about health savings accounts....",
            "entrez": "Let's talk about health savings accounts..."
          }
        }
      }
    },
    {
      "name": "abstract",
      "section": "field accuracy",
      "expectation": "abstracts at least 90% similar to Entrez",
      "status": "pass",
      "observed": "min 1.000, mean 1.000 over 180 record(s)",
      "code": null,
      "count": 0,
      "see": null,
      "detail": {}
    },
    {
      "name": "journal-soft",
      "section": "field accuracy",
      "expectation": "journal name/abbrev match Entrez (advisory)",
      "status": "pass",
      "observed": "0 of 240 record(s) differ",
      "code": "journal_mismatches",
      "count": 0,
      "see": "checks.field_validation.soft_mismatches",
      "detail": {}
    },
    {
      "name": "identifiers-soft",
      "section": "field accuracy",
      "expectation": "DOIs and PMCIDs match Entrez (advisory)",
      "status": "warn",
      "observed": "3 of 240 record(s) differ",
      "code": "identifier_mismatches",
      "count": 3,
      "see": "checks.field_validation.identifier_mismatches",
      "detail": {}
    },
    {
      "name": "deleted-gone",
      "section": "deletions",
      "expectation": "PubMed no longer serves those PMIDs either",
      "status": "pass",
      "observed": "10 of 10 confirmed gone",
      "code": "deleted_pmid_still_live",
      "count": 0,
      "see": "checks.deletions.still_live",
      "detail": {}
    },
    {
      "name": "deleted-absent",
      "section": "deletions",
      "expectation": "DB-deleted PMIDs are absent from the export",
      "status": "pass",
      "observed": "0 of 10 sampled still in the export",
      "code": "deleted_pmid_exported",
      "count": 0,
      "see": "checks.deletions.present_in_export",
      "detail": {}
    },
    {
      "name": "pmid-set-diff",
      "section": "drops since previous",
      "expectation": "no PMID vanished without a recorded deletion",
      "status": "skip",
      "observed": "no --previous-manifest",
      "code": null,
      "count": 0,
      "see": null,
      "detail": {}
    }
  ],
  "checks": {
    "structure": {
      "records_total": 40990218,
      "records_by_shard": {
        "pubmed_metadata_0.ndjson.gz": 5283416,
        "pubmed_metadata_1.ndjson.gz": 5160960,
        "pubmed_metadata_2.ndjson.gz": 4924178,
        "pubmed_metadata_3.ndjson.gz": 5529600,
        "pubmed_metadata_4.ndjson.gz": 5038080,
        "pubmed_metadata_5.ndjson.gz": 5013630,
        "pubmed_metadata_6.ndjson.gz": 5248034,
        "pubmed_metadata_7.ndjson.gz": 4792320
      },
      "malformed": [],
      "missing_fields": {},
      "extra_fields": {},
      "null_values": [],
      "invalid_ids": [],
      "invalid_months": [
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 22942,
          "pub_month": "Nov 3-10"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 22944,
          "pub_month": "Nov 3-10"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 22948,
          "pub_month": "Nov 3-10"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 22950,
          "pub_month": "Nov 3-10"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 22952,
          "pub_month": "Nov 3-10"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 22954,
          "pub_month": "Nov 3-10"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 23936,
          "pub_month": "Nov 3-10"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 36015,
          "pub_month": "Dec 1-8"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 36022,
          "pub_month": "Dec 1-8"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 36023,
          "pub_month": "Dec 1-8"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 36027,
          "pub_month": "Dec 1-8"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 36028,
          "pub_month": "Dec 1-8"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 36029,
          "pub_month": "Dec 1-8"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 36031,
          "pub_month": "Dec 1-8"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 36032,
          "pub_month": "Dec 1-8"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 45017,
          "pub_month": "Dec 6-13"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 45022,
          "pub_month": "Dec 6-13"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 45023,
          "pub_month": "Dec 6-13"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 45029,
          "pub_month": "Dec 6-13"
        },
        {
          "shard": "pubmed_metadata_0.ndjson.gz",
          "line": 45036,
          "pub_month": "Dec 6-13"
        }
      ],
      "unreadable_shards": [],
      "duplicate_pmids": [],
      "identifier_coverage": {
        "doi": {
          "records": 32066486,
          "pct": 78.23
        },
        "PMCID": {
          "records": 11460452,
          "pct": 27.96
        }
      }
    },
    "coverage": {
      "exported_count": 40990218,
      "entrez_total": 41040177,
      "pct_of_entrez": 0.998782680688731,
      "db_latest_count": 40990218,
      "pct_of_db": 1.0,
      "previous": null
    },
    "field_validation": {
      "sampled": 240,
      "checked": 240,
      "core_comparisons": 1620,
      "core_mismatches": 3,
      "core_mismatch_rate": 0.0019,
      "mismatches": [
        {
          "pmid": 16977983,
          "field": "article_title",
          "exported": "Let's talk about health savings accounts....",
          "entrez": "Let's talk about health savings accounts..."
        },
        {
          "pmid": 18864172,
          "field": "article_title",
          "exported": "About drainage of liver abscesses.",
          "entrez": "[About drainage of liver abscesses]."
        },
        {
          "pmid": 20295155,
          "field": "article_title",
          "exported": "Preliminary announcement of a novelty in the field of medical thermometry.",
          "entrez": "[Preliminary announcement of a novelty in the field of medical thermometry]."
        }
      ],
      "mismatches_by_field": {
        "article_title": 3
      },
      "mismatches_by_kind": {
        "values_differ": 3,
        "low_similarity": 0,
        "entrez_blank": 0,
        "exported_blank": 0
      },
      "soft_mismatches": [],
      "identifier_mismatches": [
        {
          "pmid": 22338322,
          "field": "identifiers",
          "exported": [
            "PMID:22338322",
            "PMCID:PMC6973649"
          ],
          "entrez": [
            "PMID:22338322",
            "PMCID:PMC6973649",
            "doi:10.1007/BF03404062"
          ]
        },
        {
          "pmid": 34874901,
          "field": "identifiers",
          "exported": [
            "PMID:34874901",
            "PMCID:wh_2021_113",
            "doi:10.2166/wh.2021.113"
          ],
          "entrez": [
            "PMID:34874901",
            "doi:10.2166/wh.2021.113"
          ]
        },
        {
          "pmid": 42087742,
          "field": "identifiers",
          "exported": [
            "PMID:42087742",
            "doi:10.1002/chem.202503256"
          ],
          "entrez": [
            "PMID:42087742",
            "PMCID:PMC13485250",
            "doi:10.1002/chem.202503256"
          ]
        }
      ],
      "missing_from_api": [],
      "abstract_similarity": {
        "min": 1.0,
        "mean": 1.0
      }
    },
    "deletions": {
      "source": "database",
      "candidates_checked": 10,
      "present_in_export": [],
      "confirmed_deleted": [
        42540925,
        41812300,
        42429498,
        42607264,
        41875290,
        35859395,
        41633542,
        41961814,
        41921563,
        41848708
      ],
      "still_live": [],
      "unknown": []
    }
  }
}
