Skip to content

Proposal: opt-in "coverage & discovery" feature (candidate registers · registry census · coverage audit · stub rule) + an any-means reciprocity gate fix #79

Description

@paulrbrenner

Filed by @paulrbrenner from a fleet of 5 derived wikis (4 running this capability, 1 deliberately without), with the orchestrator agent. Nothing has been changed in this template repo — this is a request for your evaluation.

TL;DR

We built and battle-tested a five-part "coverage & discovery" capability across four
derived wikis. It makes an evolving-landscape wiki self-correcting against the field
instead of dependent on the right keyword being in a search string. It is orthogonal to
the wiki mechanics you already ship (KG, gate, wiki-write-protocol) and layers cleanly on
top. We propose packaging it as an opt-in template feature (features/coverage-discovery/,
using the feature mechanism you already have) so any derived project can enable and
parameterize it. This doc explains the components, the evidence, the design decisions worth
preserving, where it does not apply, and the risks — so you can decide whether/how to
adopt it upstream.

We are not asking you to take our project-specific content; we are proposing the
generic pattern be available to all derived wikis.


1. Motivation — three failure modes of a landscape wiki

A wiki that tracks a fast-moving external field (research literature, a program landscape)
degrades in three ways that internal lint never catches:

  1. Keyword-dependent scanning misses novelty. Confirming search strings find what you
    already know to look for. New entities appear under terms not in the strings.
  2. The concept taxonomy ossifies. A fixed backbone (mechanisms, domains, pillars) has
    no home for emerging hypotheses, so they get dropped rather than parked.
  3. "Named in prose, never paged" leaks. An intervention/entity mentioned on a page but
    never given its own node is invisible to the KG and to future queries.

The internal lint checks health (orphans, dead links, frontmatter). None of it asks
"what exists in the field that we don't cover?"

2. What we built and proved

Piloted on a Long COVID research wiki, then replicated to three others (AI-for-science,
defense-AI, human-AI-team-science). Concrete results:

  • Registry census caught real gaps mechanically. Long COVID: a ClinicalTrials.gov
    census (656 interventional studies) surfaced ensitrelvir, taVNS, pyridostigmine, AXA1125
    — none of which depended on a keyword. Defense-AI: a USAspending census returned 157
    AI-relevant DoD awards, 63 untracked. AI-for-science: a HuggingFace proxy returned 183
    untracked science-relevant models/datasets.
  • The "do not mass-stub" discipline held. Of the untracked long tail, only the clear
    in-scope leaks were stubbed (Long COVID: 12; Defense-AI: 0 — all 63 deferred);
    the rest defer to a quarterly audit. No KG flooding.
  • The candidate watchlist + promotion rule behaved. Emerging mechanisms/themes were
    parked and not prematurely promoted (e.g. MCAS/small-fiber neuropathy strengthened but
    kept as candidates pending the documented threshold).
  • We found and fixed a real gate hole (worth upstreaming as-is). The stub→backbone
    link was expressed via a tag/body-link, which the typed-edge-only reciprocity check never
    fired on — 14 pages silently missed their back-reference and the gate still passed. Fix:
    a reciprocity criterion that triggers for a link by ANY means (tag, body link, OR
    typed edge). This is a generic gate improvement independent of the rest of the proposal.

3. The five components (generalized)

  1. Registry census + diff. Pull a canonical enumeration of the domain's tracked
    objects; diff against what the wiki pages; untracked in-scope items become candidate
    stubs. Registry is a pluggable adapter: ClinicalTrials.gov (medical), USAspending/SAM
    (federal programs), Papers-with-Code/HuggingFace (AI methods/models), or none (pure
    literature → this folds into the audit). Runs per ingest cycle.
  2. Open taxonomy + candidate register + promotion rule. Declare the backbone
    non-exhaustive; a lightweight Candidate-*-Watchlist holding page (one line per
    hypothesis, not a page each); a documented promotion rule (e.g. ≥2 independent
    cohorts/sources OR 1 Tier-1 review) that logs an auditable promotion event.
  3. Discovery + adjacent-field search families. Alongside the confirming strings: a broad
    periodic sweep, a rotating candidate-census over watchlist terms, and adjacent-field
    queries (overlapping literatures where signals surface first).
  4. Quarterly external-coverage audit (distinct from lint). Diff the wiki's inventory
    against (a) taxonomies in recent field review articles and (b) the census. Misses flow
    into the registers (watchlist entry or candidate stub, tagged with the audit id) + a
    dated log entry. No parallel gap-ticket system.
  5. Stub rule + hardened reciprocity gate. Every named entity/concept that is the subject
    of a claim (or surfaced by census/review) gets ≥ a stub node (graded lowest-confidence,
    lifecycle: candidate, citing what named it). The gate enforces: (i) named→resolves,
    and (ii) any-means reciprocity (see §2).

4. Proposed template integration — an opt-in feature

Your repo already has the feature mechanism (features/, feature.json,
enable-feature.sh, install-feature.sh) with agent-comms as precedent. We propose:

features/coverage-discovery/ shipping:

  • SCHEMA_ section fragments: lifecycle: candidate addition, open-taxonomy statement,
    promotion-rule template, stub invariant, discovery search-parameter families.
  • verification-gate fragments: the named→resolves + any-means reciprocity criteria
    (with a hub-page exemption — hubs legitimately list many children).
  • A census.py skeleton with a small registry-adapter interface and reference adapters
    (clinicaltrials, usaspending, papers-with-code/huggingface, and a none mode).
  • A /coverage-audit command template (quarterly).
  • /ingest step fragments: census + stub-sweep.
  • A Candidate-Watchlist.md.template.

Recommendation: the any-means reciprocity gate fix (§2, last bullet) should land in
the base template's verification-gate.md regardless
of whether the full feature is
adopted — it's a correctness fix to the reciprocity check you already ship.

5. Per-project parameterization (the config surface)

A feature.json/config would capture the ~4 domain knobs: the backbone-taxonomy name
(mechanisms / domains / pillars / concepts), the registry adapter (or none), the
adjacent fields, and the promotion threshold. Everything else is generic.

6. Design decisions worth preserving (hard-won)

  • Census is maintenance-side, not scan-side — it must read local wiki state and be
    deterministic; scan agents surface discovery leads, they don't run the census.
  • Do-not-mass-stub — the census defers its long tail to the quarterly audit; only clear
    in-scope leaks are stubbed live. Without this, the KG floods.
  • Watchlist (holding page) for few/conceptual items; individual stubs for many/1:1 items.
    Mechanisms → one watchlist page; interventions/programs → individual KG nodes.
  • Any-means reciprocity — do not restrict the reciprocity check to typed edges.

7. Where it does NOT apply

8. Risks, costs, mitigations

  • KG flooding → the do-not-mass-stub rule (mandatory in the feature).
  • Census feed reliability → adapters are best-effort and labeled; a feed being down is
    non-blocking (proven — SAM.gov/Papers-with-Code were unreachable in runs without failing).
  • Per-domain census maintenance → the adapter interface keeps domain logic small; most
    projects use one existing adapter or none.
  • Reciprocity false-positives on hubs → hub-page exemption in the criterion.

9. Backward compatibility

Opt-in. Existing wikis are unaffected until they run enable-feature.sh coverage-discovery.
The one exception we'd argue for shipping unconditionally is the reciprocity gate fix (§4).

10. What we're asking you to evaluate / decide

  1. Do you want this capability in the template at all, or should it stay per-project?
  2. If yes: package as a feature (our proposal) vs. fold into base SCHEMA_/gate?
  3. Adopt the any-means reciprocity gate fix into base verification-gate.md now,
    independent of the rest?
  4. If you want it, we can prepare a PR against your current manifest/feature structure
    (template-manifest.sh / features/) — tell us the shape you prefer and we'll conform
    to your conventions rather than impose ours.

Evidence / reference: working implementations live in five derived wikis (four with the
feature, one deliberately without); happy to walk through the LongCovid pilot, the live
census outputs, and the gate-hole post-mortem on request.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions