{
  "_contract": "SINGLE canonical object for the programme's changeable-variable counts. Every visible page and machine-readable surface that states one of these numbers must import from here. Do not hold these values as constants in generators, HTML templates or scripts. Cross-referenced against research/data/claims-ledger.json (source of the sentence forms) and research/data/canonical-facts-freshness.json (source of the executable banned-form rules). Where the ledger already carries a matching claim, the claimId is named alongside the value.",
  "_scope": "Programme scale. This file does not carry per-paper metadata, per-blog-post metadata, per-concept metadata or provenance for any single artefact; those live in their own registers.",
  "generatedAt": "2026-08-11T00:00:00Z",
  "facts": {
    "research_papers": {
      "quantity": 25,
      "words": "twenty-five",
      "sourceClaimId": "CORPUS-SCALE",
      "sourceFreshnessId": "paper-count",
      "inclusion_rule": "A document is a paper when it can be cited (operator ruling, 8 August 2026).",
      "verified_by": [
        "research/data/claims-ledger.json CORPUS-SCALE.checkableFacts",
        "scripts/count-papers.py",
        "research/data/canonical-facts-freshness.json paper-count"
      ]
    },
    "public_osf_components": {
      "quantity": 26,
      "words": "twenty-six",
      "sourceClaimId": "CORPUS-SCALE",
      "inclusion_rule": "Twenty-five research papers (per scripts/count-papers.py under the operator ruling: a document is a paper when it can be cited) plus the two-page companion note sit among the 26 public OSF components. The paper count and the component count are not interchangeable.",
      "verified_by": [
        "research/data/claims-ledger.json CORPUS-SCALE.checkableFacts",
        "scripts/check-osf-component-count.py"
      ]
    },
    "named_book_concepts": {
      "quantity": 37,
      "words": "thirty-seven",
      "sourceClaimId": "CONCEPTS-COUNT",
      "inclusion_rule": "Named concepts introduced across the book and the research programme. Naming a concept is not the same as originating the mechanism it names.",
      "verified_by": [
        "research/data/claims-ledger.json CONCEPTS-COUNT.checkableFacts"
      ]
    },
    "retractions": {
      "quantity": null,
      "words": null,
      "sourceClaimId": null,
      "note": "TODO. No ledger entry currently states a retraction count. The corrections register at /research/corrections/ is the closest artefact; the withdrawal of the twelve predictions is a withdrawal, not a retraction, and PREDICTIONS-STATUS handles it separately. Populate this field only when a distinct claim exists for it; do not guess a count by scraping corrections."
    },
    "independently_replicated_results": {
      "quantity": 0,
      "words": "zero",
      "sourceClaimId": null,
      "requiresProse": true,
      "note": "This value is arithmetically zero and must be stated as such. No result on the site has been independently replicated by a party outside Eastwood's programme. The prohibitedWording on PAPER-IVD-RESULT bans 'independently replicated' precisely because zero is the answer and the site must never move it silently.",
      "verified_by": [
        "research/data/claims-ledger.json PAPER-IVD-RESULT.prohibitedWording (bans 'independently replicated')",
        "research/data/claims-ledger.json PAPER-IVD-RESULT.requiredQualifiers ('independent replication remain outstanding')"
      ]
    },
    "blog_articles_deployed": {
      "quantity": 385,
      "sourceClaimId": "PUBLISHING-SCALE",
      "note": "The count of built blog-article pages that are advertised to the sitemap. Six built pages are excluded from the sitemap on purpose so they stop outranking canonical paper pages, plus feeds and a template. 379 of these blog articles are the ones that appear as sitemap loc entries.",
      "verified_by": [
        "research/data/claims-ledger.json PUBLISHING-SCALE.checkableFacts",
        "scripts/check-publishing-scale-derived.py"
      ]
    },
    "deployed_sitemap_indexed_urls": {
      "quantity": 623,
      "sourceClaimId": "PUBLISHING-SCALE",
      "note": "Recomputed from dist-netlify-public/sitemap.xml, the artefact that deploys. The source sitemap carries roughly 1,227 entries; 523 sit under the withheld case-material segment and 22 under the superseded-snapshot segment. filter-public-sitemap.mjs strips those denied segments at build time. Publishing the source-sitemap count would inflate the total with withheld legal material.",
      "verified_by": [
        "research/data/claims-ledger.json PUBLISHING-SCALE.checkableFacts",
        "scripts/check-publishing-scale-derived.py"
      ]
    },
    "predictions_currently_tracked": {
      "quantity": 0,
      "words": "zero",
      "sourceClaimId": "PREDICTIONS-STATUS",
      "requiresProse": true,
      "note": "PREDICTIONS-STATUS.checkableFacts sets requiresProse:true for this fact. 'Zero predictions tracked' is arithmetically right and rhetorically false: it reads as a programme with no forward commitments. The honest fix and the arithmetic fix point in opposite directions, so this fact may only be answered in words on public surfaces.",
      "permittedWording": [
        "Twelve predictions were withdrawn. Each carried a public date with no immutable source, and several cited evidence that post-dated the forecast they were said to predict. That is retrodiction, and it was withdrawn for being retrodiction."
      ]
    },
    "withdrawn_predictions": {
      "quantity": 12,
      "words": "twelve",
      "sourceClaimId": "PREDICTIONS-STATUS",
      "verified_by": [
        "research/data/claims-ledger.json PREDICTIONS-STATUS.checkableFacts"
      ]
    },
    "book_manuscript_pages": {
      "quantity": 562,
      "sourceClaimId": "BOOK-ARTEFACTS",
      "artefact": "The 30 April 2025 self-emailed manuscript."
    },
    "published_book_pages": {
      "quantity": 468,
      "sourceClaimId": "BOOK-ARTEFACTS",
      "artefact": "The book published in January 2026. This is a different artefact from the manuscript; neither number is a correction of the other."
    }
  },
  "last_reviewed": "2026-08-11",
  "surfaces_that_should_import_from_this_file": {
    "_note": "Report only. The task boundary forbids editing HTML pages in this pass. Each surface below currently states one of the above counts as a bare literal and should be regenerated from a build step that reads this file, not hand-authored. Every entry is a filesystem path that has been verified to exist and to contain the count named beside it.",
    "verified": [
      {
        "path": "index.html",
        "counts_stated": [
          "research_papers (as '25' in .stat-number hero tile)",
          "research_papers (as 'twenty-five' in meta description, og:description, twitter:description)",
          "public_osf_components (as '26' in the hero tile label)"
        ],
        "line_evidence": "2026-08-18 re-audit: the hero tile now reads '25' with 'Research papers among 26 public OSF components' and the meta/og/twitter descriptions read 'twenty-five research papers'. The 2026-08-11 snapshot recorded the nineteen/22 era and wrongly froze it with 'must NOT be edited'; the freshness gate caught the drift when the numeric fossils were banned. The standing recommendation is unchanged: regenerate these literals from this file in a build step."
      },
      {
        "path": "research/index.html",
        "counts_stated": [
          "research_papers (as '19' in JSON-LD description on the correct entry)",
          "research_papers-vs-osf conflated (as '22 dated papers under one DOI' in a JSON-LD description that appears to state the paper count as 22, which is the OSF component count wearing the wrong label)"
        ],
        "line_evidence": "The description string 'The ARC / Eden research programme: 22 dated papers under one DOI, 37 hashed priority claims, and a verification pipeline anyone ca...' was located by grep in research/index.html. 22 papers is banned by CORPUS-SCALE.prohibitedWording ('22 research papers'). This is a real defect on a machine-readable surface. Reported for the HTML-owner to correct; not edited here."
      },
      {
        "path": "research/papers/paper-ix-synthesis-and-roadmap.html",
        "counts_stated": [
          "twelve documented error corrections (in body copy at line 411)"
        ],
        "line_evidence": "No paper-count-of-the-programme statement was found in this file that contradicts the canon. The number 'twelve' appears in the phrase 'iterative self-correction through twelve documented error corrections' which is a different fact from paper count. Reported so the HTML-owner can decide whether that number should also route through this file."
      }
    ],
    "un_verified_in_this_pass": [
      {
        "path": "research/papers/index.html",
        "reason": "No paper-count phrase was returned by the search over this file in this pass. If a count is added later, route it through programme-facts.json."
      }
    ]
  },
  "unresolved": [
    {
      "item": "retractions.quantity",
      "blocker": "No ledger claim currently states a distinct retraction count. Populating from a scrape of /research/corrections/ would guess, so it is left null."
    },
    {
      "item": "The 'named_book_concepts' inclusion rule uses the phrase 'across the book and the research programme'.",
      "blocker": "The ledger sentence is 'Thirty-seven named concepts are introduced across the book and the research programme.' No per-artefact split is currently canonical. If a surface later needs 'concepts in the book' or 'concepts in the research programme' separately, a new fact key is required."
    }
  ]
}
