← The library
A technical noteThis is a working note written for the people building this tool, so it uses technical shorthand rather than the plain wording used everywhere else.

Validation pilot — retrospective time-split test (2026-10-09)

Status: pilot, inconclusive. The current libraries are too small to test the project's claim either way. Phase 6 is still owed. Free: cached embeddings and matcher verdicts only, no API call. Code: backend/app/validation/time_split.py. Raw results: data/validation/.

What was tested

The documented matching rule (docs/opportunity-criteria.md, "Matching rule for retrospective validation"), for the open-question scorer:

  1. Freeze a library at year Y: only papers ≤ Y, their claims and future-work items, and only matcher verdicts between frozen papers. The unchanged Phase-4 scorer ranks the open questions it finds.
  2. Later evidence R: the library's own papers from Y+1 to Y+2.
  3. Match (no language model):
    • some claim in R is within cosine τ of the open question;
    • that claim had no near-duplicate before the freeze.
  4. Metric: precision@K against the pool's base rate (one-sided hypergeometric p-value), and against a "newest source paper first" baseline. Citation counts are not used: today's counts leak the future.

Results

libraryfreeze Ypapers ≤ Ylater papers Y+1..Y+2τopen questions rankedaddressed laterbase rateengine P@5newest-first P@5
diet-and-mortality20156020 (146 claims, 89 new)1.0000.0——
diet-and-mortality20166918 (123 claims, 48 new)0.5822111.0——
ml-fairness20184821 (103 claims, 69 new)0.75711210.0830.00.2
ml-fairness20196412 (51 claims, 27 new)0.73931510.0670.00.0
social-media-teen-mental-health20166618 (87 claims, 35 new)0.7111500.00.00.0
social-media-teen-mental-health20177910 (47 claims, 3 new)0.7111800.00.00.0

No engine ranking beat chance, and none could have. The ranked pools hold 0–15 open questions, and at most one per library was addressed later. At those sizes a perfect ranker and a random one are statistically indistinguishable.

What the pilot did establish

  • The rule's threshold must be calibrated within the field. The first attempt calibrated τ against claims from other libraries. That gave τ ≈ 0.58, below the ordinary within-field similarity (the median future-work-to-claim cosine inside ML fairness is 0.59). Every open question then "matched". The same τ used for novelty marked 98 of 103 later claims as already known.

  • The fix extends the rule; it doesn't overturn it.

    • The negatives are claims from papers older than the open question's source paper, which cannot address something not yet written. No language model is involved.
    • Novelty uses its own near-duplicate threshold: the 99th percentile of claim similarity between different pre-freeze papers.

    Both are recorded in the code. They are proposed for the policy doc, pending the owner's approval.

  • The machinery is sound: frozen corpora carry nothing from after the freeze, and runs are deterministic (backend/tests/validation/).

Why the libraries cannot carry the test

need100-paper libraries
A frozen corpus big enough to rank dozens of open questions48–79 papers, 0–15 ranked questions
Later evidence that represents the field, not a snowball sample10–21 later papers from the same snowball
Enough addressed questions to tell rankings apart0–1 per library

Options (owner decision; none started)

  1. Field-level evidence, cheap. R = the works in OpenAlex that cite an open question's source paper in Y+1..Y+k (free metadata), matched on embeddings of their abstracts, not extracted claims.
    • Cost: about ₹5–15 of embeddings for a few thousand abstracts.
    • Catch: it changes the rule's unit from "claim in R" to "abstract in R", a policy change that needs approval.
  2. Bigger historical corpora, faithful to the rule. Snowball one library to about 400 papers, with at least 150 before and 100 after the freeze year; extract them; re-run.
    • Cost: about ₹400–450 (batch extraction plus matcher), more than the ₹314 the money rule has left, most of which is paced for weekly growth.
  3. Wait. Weekly growth adds recent papers, not historical ones, so it does not help a time-split test by itself.

Recommendation: option 1 as the next pilot. It is cheap, field-level, keeps the matching free of language-model judgement, and its abstract-level unit is a stated, testable deviation.