{
  "record": "publication-health",
  "checkedAt": "2026-09-07",
  "note": "Computed over every published file in each class, not a sample. A row fails when the file it names is missing or the values it compares disagree.",
  "ok": true,
  "checks": [
    {
      "name": "Core Vocabulary term pages",
      "rule": "Every term has an HTML page.",
      "checked": 13,
      "missing": [],
      "ok": true
    },
    {
      "name": "Core Vocabulary JSON records",
      "rule": "Every term has a canonical JSON record.",
      "checked": 13,
      "missing": [],
      "ok": true
    },
    {
      "name": "Core Vocabulary JSON-LD",
      "rule": "Every term has a standalone JSON-LD alternate.",
      "checked": 13,
      "missing": [],
      "ok": true
    },
    {
      "name": "Core Vocabulary Markdown",
      "rule": "Every term has a Markdown projection.",
      "checked": 13,
      "missing": [],
      "ok": true
    },
    {
      "name": "Explain records",
      "rule": "Every term resolves under all three of its identifiers.",
      "checked": 39,
      "missing": [],
      "ok": true
    },
    {
      "name": "API term records",
      "rule": "Every term has an api/v1 record.",
      "checked": 13,
      "missing": [],
      "ok": true
    },
    {
      "name": "API neighbor records",
      "rule": "Every term has an api/v1 neighbors record.",
      "checked": 13,
      "missing": [],
      "ok": true
    },
    {
      "name": "Inspect pages",
      "rule": "Every term has an inspect view.",
      "checked": 13,
      "missing": [],
      "ok": true
    },
    {
      "name": "Comparison records",
      "rule": "Every comparison has an HTML page and a JSON record.",
      "checked": 18,
      "missing": [],
      "ok": true
    },
    {
      "name": "Machine entry points",
      "rule": "The discovery, manifest and index files are published.",
      "checked": 17,
      "missing": [],
      "ok": true
    },
    {
      "name": "Citation parity",
      "rule": "The recommended citation is byte-identical in the HTML block, the JSON record, the JSON-LD node and the Markdown projection.",
      "checked": 52,
      "missing": [],
      "ok": true
    },
    {
      "name": "Ownership record",
      "rule": "The publication publishes one Ownership assignment carrying the five properties Meta/Ownership.md requires, and every record that carries an ownership block points at that assignment and no other. This row does not assert that every published record names an owner: coverage is partial at this stage, 30 of 191 published JSON records carry the block, and the per-term and per-operation projections inherit it from the record they project.",
      "checked": 30,
      "missing": [],
      "ok": true
    },
    {
      "name": "Resolver coverage",
      "rule": "Every identifier registered in resolve.json has both an HTML resolver stub and an api/v1/resolve record.",
      "checked": 158,
      "missing": [],
      "ok": true
    },
    {
      "name": "Printed identifier coverage",
      "rule": "Every identifier this site prints, in a labelled identifier field of a published page or in an identifier field of a published JSON record, is registered in resolve.json, so no identifier this site prints answers with not found.",
      "checked": 58,
      "missing": [],
      "ok": true
    }
  ],
  "ownership": {
    "record": "https://ocom.uno/ownership.json",
    "identifier": "OWN-OCOM-UNO-01",
    "note": "Ownership of the publication of this record, not of the canonical source, which is governed in the repository."
  }
}
