propagation_review Corpus Audit

Species: human, yeast, worm, DICDI, SCHPO, ANOGA, ARATH, DROME

propagation_review corpus audit (2026-08-26)

A re-review of every review.propagation_review block now in the gene reviews. The
question was not "is each biological call right" — that is the per-gene reviews' job —
but is the structured taxonomy being applied consistently, and does it agree with the
prose next to it.

Extraction and the mechanical checks: scripts/ equivalent is inlined in the audit
run; the corpus snapshot is 1843 blocks across 366 gene review files.

What the corpus looks like

blocks 1843 across 366 files
actions ACCEPT 629 · KEEP_AS_NON_CORE 399 · MARK_AS_OVER_ANNOTATED 357 · MODIFY 237 · REMOVE 171 · NEW 28 · UNDECIDED 22
root causes NO_FAILURE_CORE 673 · NO_FAILURE_NON_CORE 389 · PROPAGATION_BAD 337 · TERM_SCOPING_PROBLEM 311 · SOURCE_BAD 40 · SOURCE_WEAK_OR_INFERRED 39 · EVIDENCE_CIRCULAR_OR_REDUNDANT 32 · UNRESOLVED 22
evidence IEA 763 · IBA 749 · ISS 233 · ISO 41 · other 57

Coverage note. Only 41% of blocks are on IBA rows. The taxonomy has become a
general propagation-review vocabulary covering IEA, ISS and ISO as well — which the
schema allows ("propagated or inferred annotation") but which the project page still
frames as IBA-specific. Worth reconciling in the prose.

Every value used is a legal enum member; there are no schema violations.

Finding 1 — the target's own accession marked CIRCULAR_OR_REDUNDANT (27 rows, 16 genes)

This is the one substantive defect, and it contradicts an explicitly documented rule.
CLAUDE.md and IBA_REVIEW.md
both state that a target appearing in its own WITH/FROM is correct and expected —
the target's own experimental annotation is one of the descendant evidences the PAINT
curator used to place the IBD — and that such a source must never be marked
CIRCULAR_OR_REDUNDANT.

27 rows do exactly that. The prose sometimes states the inverted reading outright, e.g.
AAK1: "The IBA includes the human target itself among its sources, so that item is
self-supporting and adds no independent propagation evidence."

The data refutes the inverted reading in all 27 cases: the target does carry its
own experimental annotation for the term, which is precisely why it seeded the IBD.

Grounding on the target rows
own experimental annotation at the same term (IDA/IMP/EXP/TAS) 20
own experimental annotation at a descendant term 7
no experimental annotation found 0

The seven descendant cases: LMTK2 GO:0004672 → IDA GO:0004674; LMTK3 GO:0004672
→ EXP GO:0106310; AFF1 GO:0006355 → IMP GO:0032786; LNX1 GO:0005737 → IDA
GO:0005829; LPGAT1 GO:0005783 → IMP GO:0005789, GO:0012505 → the same ER
evidence, GO:0016746 → IDA/IMP GO:0071617.

An earlier version of this table said "26 of 27" with LNX1 GO:0005737 ungrounded.
That was an artifact of comparing GO ids literally; under ancestry closure LNX1 is
grounded by its own IDA to GO:0005829 cytosol, which is part_of cytoplasm.

Affected genes (all human): A4GNT, AADAC, AAK1, AASDHPPT, ADAMTSL5, AFF1, LMTK2,
LMTK3, LNX1, LPAR6, LPCAT4, LPGAT1, LPIN2, LRBA, LRCH1, LRCH3.

The corpus already contains the correct handling, which makes this a consistency
fix rather than a judgement call — ADPRS marks its self-source SUPPORTS_TRANSFER with
the comment "self-reference: the target is its own IBD seed." That is the model.

Finding 2 — the structured fields drift from the prose

Recurring pattern: review.reason is careful and correct while the enums beside it say
something weaker or different. Three confirmed instances, plus two systematic classes.

The consistent direction — prose better than enums — means the enums should be treated
as a derived index over the prose, not as independent evidence. Downstream tooling
that aggregates failure_modes without reading reason will over-count
PSEUDO_OR_SUBACTIVITY_LOSS and under-count TERM_SCOPING_PROBLEM.

Checks that fired but were wrong (recorded so they are not re-raised)

Applying the project's own discipline to the audit itself:

Suggested actions

Finding 1 is FIXED (issue #2761).
All 27 rows were retyped to SUPPORTS_TRANSFER, each with a comment naming the
grounding actually found on that gene, and the AAK1 prose stating the inverted
reading was corrected. Re-deriving the set with GO ancestry closure rather than
exact term matching showed all 27 are grounded, not 26 — LNX1's GO:0005737
cytoplasm is grounded by its own IDA to GO:0005829 cytosol, which is part_of
cytoplasm. The single genuinely circular source in the corpus, AFF1's
UniProtKB-SubCell:SL-0191 (derived from the entry's own ECO:0000305 SUBCELLULAR
LOCATION line), was deliberately left as CIRCULAR_OR_REDUNDANT.

  1. ~~Retype the 27 self-source rows to SUPPORTS_TRANSFER~~ — done.
  2. Retype ADPRS GO:0071451 to TERM_SCOPING_PROBLEM and drop GRANULARITY_MISMATCH.
  3. Retype LPA GO:0004252's failure mode away from PSEUDO_OR_SUBACTIVITY_LOSS.
  4. Reconcile the 8 MODIFY + NO_FAILURE_* rows.
  5. Decide whether the project page should describe the taxonomy as covering all
    propagated evidence (IEA/ISS/ISO), which is what the corpus now does.