CACAO community annotations review

IN_PROGRESS EVALUATION

Species: STRP1, EBOZM, yeast, RVFVZ, BUNYW, BPPRD, PSEAE, BPP22, SHIFL, ECOLI, BPPH2, BPT4, BPT5, BPP1, BPPGK, 9CAUD, HHV8P, SENDZ, SINDV, SFVCP, SALTY, TRYCR, NOSB1, BACSU, LAMBD, human, mouse, rat, ARATH, DROME, MYXXA, RHOCB, PSE14, BPG15

Genes: pppL VP35 VP40 GP WHI3 NSS N__P16494 XV fabY sieA ipaH4.5 clpX cha STM3697 doc acrIIA5 K3 K5 V__P69282 VPS74 APN1 lysK gag SWP7 acs ybjN D15 P03316 3 5.4 1 2 4 15 17 DMS3-25 DMS3-30 JBD30_035 GH15_072 PSPPH_4093 bchF bchE bchJ actC actA

CACAO community annotations review

Bottom line: CACAO (Community Assessment of Community Annotation with
Ontologies) is the GONUTS/Texas A&M course-based curation programme in which
student teams wrote experimental GO annotations from the literature, refereed
by competing teams and instructors. GOA carries 4,373 annotations with
assigned_by: CACAO on 2,987 gene products from 658 taxa (snapshot
2026-10-28). They are almost all experimental (2,268 IDA, 1,952 IMP, 86 IGI)
and mostly biological process (2,438 BP, 1,034 MF, 901 CC). Gene reviews
already exist for 281 of these gene products, covering 503 CACAO rows. Those
reviews accepted 263, kept 150 as non-core, modified 47, marked 20
over-annotated, removed 9, left 7 undecided, and called 2 too general; 5 rows
are absent from the review files, which predate them.

Result so far (45 microbial genes, 167 CACAO rows).

rows ACCEPT MODIFY NON_CORE OVER_ANN TOO_GEN REMOVE
Batch 1 (12 genes) 71 30 21 11 7 1 1
Batch 2 (18 genes) 72 48 12 6 4 0 2
Batch 3 (15 genes) 24 15 8 0 1 0 0
Total 167 93 41 17 12 1 3

Batch 3 is the only batch with no NON_CORE and no REMOVE CACAO row, and
the only one chosen by screen rather than by CACAO row count, so its rates are
not comparable with batches 1-2 on acceptance alone. The REMOVE column is
scoped to CACAO rows like the rest of this table: batch 3 does carry 6
REMOVE rows among its 101 review rows, and all six are IEA rows rather than
CACAO ones — three InterPro2GO (GO_REF:0000002), one InterPro-plus-keyword
(GO_REF:0000120), one UniProt keyword mapping (GO_REF:0000043) and one
PANTHER TreeGrafter (GO_REF:0000118). The removals span three distinct
pipelines, two of which SourceResourceEnum cannot name, which is a further
argument for the first item below.

Batch 1 accepted 42% of rows as written, batch 2 67%. The likeliest cause
is literature depth rather than student quality: batch-1 genes (Ebola, RVFV,
ClpX, WHI3) each draw on many papers, often with later work contradicting the
annotated one, while most batch-2 genes rest on one or two well-characterized
studies. If that holds, the predictor of a CACAO error is how much literature
has accumulated since the annotation, not who made it.

The errors are mostly not CACAO's. On batch-2 genes the defective rows
were far more often from InterPro2GO, UniProt keywords, ARBA, IntAct, RHEA,
HAMAP, CAFA and UniRule than from students. Three genes (chagasin, STM3697,
P1 Doc) had every CACAO row sound while carrying real defects from automated
pipelines; LysK is the sharpest case, where the students picked the
host-directed interspecies term and InterPro2GO plus a UniProt keyword did
not. Two batch-1 patterns catalogued as student failures turned out to arrive
by those routes too. A project framed as auditing student work is in practice
measuring the whole annotation supply chain, and CACAO is not the weakest link
in it.

What does fail is provenance, not biology. Batch 2's recurring problem is
not a wrong claim but a wrong basis for a right claim: the wrong paper cited
(APN1, Gag), the wrong gene's paper (T4 gp5.4), the wrong isolate's
experiments (Gag), the wrong qualifier (AcrIIA5), the wrong evidence code
(SWP7, D15), an artefact paper read as positive evidence (Gag), or a
superseded mechanism (P1 Doc). These are invisible to any check that compares
terms, and they are exactly what downstream automated inference propagates.

Counting caveat. Action tallies measure term correctness, not annotation
correctness, and the two come apart. Two of T4 gp5.4's four misattributed
rows name the virion baseplate, which is independently true of gp5.4, so an
inventory scores them as successes while their stated evidence is about a
different protein. Treat the ACCEPT column as a floor on error, not a
measure of it.

Microbes first. Microbial proteins (bacteria, archaea, viruses and phages,
fungi and protists) carry 2,166 CACAO rows on 1,617 gene products, half the
corpus, but only 116 of them are reviewed, against 151 of 1,107 animal
proteins. They are also where the judged rows fail hardest: 8 of the 9
CACAO removals so far are on microbial genes, out of 199 microbial rows
judged (137 accepted, 20 non-core, 21 modified, 4 over-annotated, 8 removed,
2 undecided, 2 too general, 5 missing). For many of these proteins, notably
phage and virus proteins, the CACAO row is the only experimental GO
annotation, so an error there is not diluted by other curation. The review
order is therefore microbes first, ranked by CACAO row count; the animal and
plant genes follow.

The question for this project is whether CACAO rows fail in a characteristic
way that differs from professional curation, and how often. After two batches
the taxonomy has eighteen shapes, grouped below. Only the
first was expected; the rest were found by reading papers against term
definitions. Several arrive from automated pipelines as often as from
students, so the taxonomy classifies annotation failures, not CACAO ones.

Wrong claim about the biology

Wrong term for a right claim

Two shapes catalogued before batch 1 did not recur in it: one paper applied
to genes it does not assay
(PMID:25313396 for fliH, fliY and swrD; see
BACSU) and single-assay localization (SNAP23 mitochondrion,
KRT19 plasma membrane). Every batch-1 paper was about its gene.

Wrong provenance for a right claim (batch 2's dominant group)

A CACAO error does not stay put. VP40's intracellular transport of virus
row, which has no transport assay behind it, has already seeded an
inter-ontology IEA (GO_REF:0000108), and K5's repointed viral-entry row is
also restated by an ARBA rule, so the correction has to reach two rows. Two of
143 rows examined have been amplified downstream, so error rates counted on
CACAO rows alone understate the footprint.

Two near-misses on the curator-deference rule. AcrIIA5 cites a paper whose
title and abstract are about a different anti-CRISPR protein (AcrIIA6); only
the full text shows this protein was co-assayed. VPS74 cites a mammalian
GOLPH3 paper that contains a genuine yeast panel. Both would have been
recorded as wrong-gene errors from the abstract alone, so batch 1's
"paper not about the gene" counts should be re-checked against full text.

CACAO annotations are experimental, so the
curator-deference rule applies: the student read the full
text, and a REMOVE needs the paper itself, not its abstract. The GONUTS wiki
(gowiki.tamu.edu) keeps a page per paper and per protein for CACAO
annotations (the ALDH4A1 review used both), and is the first thing to check
when the cached publication is abstract-only. That check is permanently
gone.
Through batches 1 and 2 gowiki.tamu.edu served only "This site is
temporarily offline while we perform upgrades"; as of 2026-11-01 it returns
HTTP 410 with a page reading "GONUTS, the GO wiki, has been retired", and
the Internet Archive has no snapshot of the relevant pages. The programme's
own record of what each student read, and of the evidence they entered, is
therefore unrecoverable. Every row in this project is judged from the cited
paper alone, and a row whose cache is abstract-only has to be decided on
what can be read rather than deferred to a re-check that will never come.

Project files

Coverage

Group CACAO rows Gene products Reviewed
Metazoa 1,847 1,107 151
Bacteria 1,238 975 34
Viruses (incl. phages) 612 409 54
Viridiplantae 360 263 14
Fungi 236 170 28
Other eukaryotes (protists) 56 42 0
Archaea 24 21 0

Top taxa:

Taxon CACAO rows Gene products without a review
Homo sapiens (human) 741 346
Mus musculus (mouse) 672 320
Bacillus subtilis 168 (BACSU) 160 98
Escherichia coli K-12 (ECOLI) 156 102
Arabidopsis thaliana (ARATH) 144 94
Rattus norvegicus (rat) 107 75
Saccharomyces cerevisiae (yeast) 106 45
Drosophila melanogaster (DROME) 73 37
Oryza sativa japonica 70 43
Phage T4 (BPT4) 48 21

Approach

  1. Review microbial genes first, those with the most CACAO rows at the top,
    so each review judges several student annotations at once. Batch 1 is
    every unreviewed microbial gene product with at least five CACAO rows.
    Most microbial proteins carry only one or two CACAO rows (1,174 of the
    1,501 unreviewed have one), so later batches should group them by
    organism or by cited paper rather than by row count. Animal and plant
    genes come after.
  2. Use the standard workflow (just fetch-gene, deep research, the
    annotation-reviewer agent). In each review, note in the CACAO rows'
    reason what the cited paper shows and, where the cache is abstract-only,
    say so: GONUTS is retired, so there is no student record to fall back on.
  3. After each batch, rerun the inventory script and update the counts and
    failure shapes above.
  4. Once enough rows are judged, compare the CACAO acceptance rate with that of
    experimental rows from other groups on the same genes.

STATUS

Snapshot 2026-11-01: 350/2,987 CACAO gene products reviewed; 710/4,373 rows
judged. Batches 1 and 2 complete and merged (#5724) except phage phi29 p6
(blocked, below). Batch 3 complete: all 15 genes validate with 0 errors,
101 review rows, 24 CACAO rows judged. Not yet merged.

Batch 1: microbes, at least five CACAO rows

Organism codes are UniProt mnemonics, for just fetch-gene <CODE> <gene>.
Counts are total review rows / CACAO rows.

Upstream reports from batches 1 and 2

Recorded as source_defects / proposed_new_terms; run
just export-source-defects for the per-resource reports.

Batch 3 added two pipeline-level reports with their own pages, both reached
from a sound CACAO row on the gene being reviewed. Each is one mis-stated
source annotation amplified by an automatic pipeline; verify both with
uv run python projects/CACAO/scripts/upstream_checks.py.

Batch 2: microbes, four CACAO rows — all 18 complete

Total review rows / CACAO rows. Folder names follow the CLAUDE.md conventions
for entries with no usable gene symbol.

Batch 3: three screens, 15 genes

Ranking by CACAO row count is exhausted (1,174 of the 1,501 unreviewed
microbial gene products carry a single row), so batch 3 is chosen by screen
instead. Each of the three batch-2 failure shapes that can be looked for
without reading papers was turned into a query over the snapshot
(projects/CACAO/scripts/batch3_screens.py, output in
projects/CACAO/batch3-screens.yaml), and the batch is five genes from each.
The point is to make the batch a test of the taxonomy rather than a list: if
these shapes are real, the screens should enrich for them, and if they are
not, that is the more useful result.

Screen 1, adjacent-locus confusion (the T4 gp5.4 shape). 71 gene products
carry a numeric symbol; 55 are unreviewed, and 33 share a cited PMID with
another numerically-named gene in the same organism
, which is exactly the
configuration that misattributed all four of gp5.4's rows. The sharpest
cluster is phage phi29, where one paper (PMID:820555, mutants in six genes
fail to synthesise phage DNA) is cited across most of the numbered genes —
including gene 3, whose row this project already accepted under curator
deference. Reviewing its siblings tests whether that deference was right.

Screen 2, cross-isolate transfer (the Gag shape). 95 references are cited
by CACAO rows on more than one taxon, but taxon count alone is a bad
screen
: the widest spans 25 taxa and is a comparative study that
legitimately annotates each one. The discriminator is taxonomic proximity, so
the candidate set is references spanning 2–4 taxa whose organism names look
like isolates of one species group — 24 of them, mostly same-species strain
pairs. Some may not be transfers at all but one organism annotated under two
taxon ids, which is a different defect worth recording either way.

Screen 3, wrong qualifier (the AcrIIA5 shape). 63 rows carry a qualifier
outside involved_in / enables / part_of / located_in, 43 of them on
unreviewed genes, and nearly all are
acts_upstream_of_or_within_positive_effect. The striking thing is the
composition: the list is dominated by phage anti-CRISPR and
host-interaction proteins
, the same family where AcrIIA5's regressed
qualifier was found. That makes it a direct replication test rather than a
fresh screen.

Still open for later batches: the remaining bacteria by organism (941
unreviewed gene products), where E. coli and B. subtilis give a
professional MOD comparator on the same genes.

Batch 3 results: what the screens actually caught

24 CACAO rows judged across the 15 genes: 15 ACCEPT, 8 MODIFY,
1 MARK_AS_OVER_ANNOTATED, and no REMOVE, UNDECIDED or KEEP_AS_NON_CORE at
all
. 101 review rows in total — 39 ACCEPT, 35 MODIFY, 12 NEW, 6
TOO_GENERAL, 6 REMOVE, 3 MARK_AS_OVER_ANNOTATED and, again, no
KEEP_AS_NON_CORE anywhere — plus 29 source_defects and 6
proposed_new_terms. Of the 24 CACAO rows, 14 carry the hedged qualifier.

Two counting notes, because the batch's argument is that these figures are
reproducible. The 24 counts GOA rows, not review entries: DMS3-25's two
GO:0051607 rows share a term, evidence code and reference and differ only in
ECO subtype, so one review entry judges both, and counting entries gives 23.
And batch 3 ends with zero KEEP_AS_NON_CORE rows — actC's GO:0043937
was the last one and became a MODIFY on review of PR #5956, which is a more
informative result than the single row the earlier tally reported.

Screen by screen:

The hedged qualifier is a 2025 process change, not a curation judgement

Verified against QuickGO (queries saved in CACAO/data/). On GO:0098672,
all 18 rows in GOA: CACAO's five 2018-2019 rows are all involved_in, its
ten 2025-2026 rows are all acts_upstream_of_or_within_positive_effect, and
UniProt's three 2026 rows are involved_in. A0A220GHA5 carries four CACAO rows on
that term, and three of them are the same assertion: involved_in in 2019
and hedged twice in 2025 (04-07 and 04-10) all share ECO:0007040, IDA and
PMID:28785032, differing only in qualifier and date. (Its fourth row is a
separate assertion, involved_in in 2018 from PMID:30046034.) So this is one
claim from one paper entered three times with the qualifier flipped on the
re-entries, which makes it a duplicate annotation as well as a qualifier
regression, and a sharper exhibit for the bulk fix than the counts alone.
Those two 2025 rows are also why the hedged set is ten rows across nine
accessions, not nine rows.
GO:0044659's experimental rows split the same way: 31 involved_in (18 of
them CACAO's own) against 5 hedged rows, all CACAO and all dated 2025-02 to
2026-03. Q6TM71 and Q9T1X2 each carry a hedged CACAO row beside a
UniProt involved_in row for the identical term and paper.

So it is neither a per-row judgement nor a CACAO convention — CACAO's own
earlier rows use involved_in. It is a change in the 2025 campaign's
practice, covering at least 15 rows across these two terms, and it is
fixable in bulk.

But a hedge is not automatically wrong. Two batch-3 rows went the other
way: phi29 gene 17, where the support is a bulk nonsense-mutant screen and
much of the sus17 replication defect is indirect, and phi29 gene 1, where
p1 loss severely impairs but does not abolish replication. The taxonomy
needs to separate a regressed qualifier from an honest one, and the
2025 date gives a usable prior rather than a verdict.

The errors batch 3 found are mostly not CACAO's

This is batch 2's conclusion holding up under a deliberately adversarial
selection. Three screens built to catch student mistakes mostly caught
pipelines:

Three things batch 3 says the project should change

Two of the three are now done, in PR #5984. The detail is kept because the
counts and the mechanism names are the project's record of how the gaps were
found, and because two of the figures here were themselves corrections.

  1. SourceResourceEnum had no INTERPRO value — done in #5984,
    which added INTERPRO, PANTHER, COMPLEX_PORTAL, ENSEMBL, NCBI,
    ENZYME, DISPROT, HPA, CAFA and GOC. Counting the whole corpus
    before filling the gap changed its size: of the 200 defects filed
    resource: OTHER, 137 named a resource with no enum value (InterPro
    84, Complex Portal 24, Ensembl 9, NCBI/RefSeq 5, DisProt 4, CAFA 4, EC 3,
    HPA 2, PANTHER 1, GOC 1), and a further ~31 were misfiled onto OTHER
    when a value already existed (CACAO 18, CollecTF 5, EcoliWiki 3,
    PseudoCAP 3, RGD 2) — so part of the pile was never a schema gap at all.
    Batch 3's own 7 are re-filed; the remaining ~130 that then had a home
    became the separate migration done in #6027 (batch 1) and its sequel. As
    batch 3 recorded it: 7 of its 29
    defects were filed as OTHER with the resource named in the explanation,
    as that value instructed, and all 7 were genuinely InterPro2GO or PANTHER
    (the other 22 split 15 CACAO and 7 UNIPROT). Two earlier counts here
    were wrong, both caught on review of PR #5956. The OTHER figure of 13,
    and 14 in that PR's description, included seven CACAO-row defects that
    should have carried the existing CACAO value and now do. And the total
    of 27 missed two source_defects that sit on
    references[].reference_review rather than on an annotation review —
    DMS3-30's UniProt MISSING_STATEMENT and bchJ's OUTDATED_STATEMENT —
    so any count of this corpus has to walk the whole document, not just
    existing_annotations. InterPro2GO is the single largest external
    source of defects this project has found, and for as long as no INTERPRO
    value existed just export-source-defects could not produce the report
    that mattered most. #5984 added the value and #6027 re-filed 83 defects
    onto it, so reports/source-defects/INTERPRO.md exists. Its rank among
    the per-resource reports is deliberately not stated, and neither is the set
    of reports larger than it.
    Four attempts to say something true about that
    rank were each falsified within days: "second only to UniProt" (wrong when
    written); an unordered list of the five that were larger (main then added
    further INTERPRO defects and no PSEUDOCAP one, reversing the closest
    pair — the count of them is itself a moving figure, which is the point);
    that list pinned to
    1e0f33a052 (which is main's commit and does not contain the 83 flips,
    where twelve are larger); and that list pinned to "the tree this PR
    produces", which changed under it at the very next merge, INTERPRO
    passing PSEUDOCAP to sit fifth. The quantity is a function of two trees
    that both keep moving, and no phrasing fixes that. So the superlative above
    is scoped to the defects this project found and does not survive being
    restated as a corpus-wide rank, in either direction. No corpus total or
    ordering is quoted here on purpose: every one of these counts moves
    whenever main moves, which is what the four attempts above record. (A
    previous sentence here counted how many times this paragraph had been
    corrected. That count was three when written and is now wrong for the same
    reason everything else in it was: it increments whenever the page is
    touched. Deleted rather than bumped.) The ~130 figure above was the
    estimate made before the migration ran; #6027 itself re-filed 85 defects,
    83 of them onto INTERPRO, and left 112 resource: OTHER at that point,
    of which 45 named no resource at all and so cannot be triaged without
    reading each explanation.
  2. SourceDefectTypeEnum could not express the same assertion entered
    twice, and had no duplicate-related value at all
    — done in #5984,
    which added DUPLICATE_ASSERTION, named so as not to collide with the
    ReferenceReplacementReasonEnum value discussed below. The same PR added
    five SourceDefectCauseEnum values for the mechanisms this item names:
    SCOPE_OVER_REACH (the scope-wrong rule), LABEL_WITHOUT_DEFINITION
    (label read, definition unread), OVER_PROPAGATION (a node emitting one
    activity across a heterogeneous family), plus
    SPECULATION_AS_ASSERTION and PRACTICE_CHANGE. That enum was the
    worst of the three: 315 of 451 cause values were OTHER, because all
    five existing values were gene-identity confusions and a pipeline defect
    had nowhere to go. As batch 3 recorded it, its thirteen values
    are WRONG_GENE_PRODUCT, WRONG_REFERENCE, WRONG_TERM,
    WRONG_EVIDENCE_CODE, MISSING_NEGATION, WRONG_WITH_FROM,
    WRONG_QUALIFIER, WRONG_CAUSAL_RELATION, WRONG_STATEMENT,
    OUTDATED_STATEMENT, MISSING_STATEMENT, MISSING_ISOFORM and OTHER.
    DUPLICATE_RECORD exists in the schema but belongs to
    ReferenceReplacementReasonEnum, a different slot on a different object
    concerned with verified reference-identifier replacement, so it is not a
    near-miss to extend. A0A220GHA5's case is one claim re-entered three times
    from one paper with one evidence code, which therefore has to be described
    in prose on a WRONG_QUALIFIER entry and is invisible to
    just export-source-defects in exactly the way the INTERPRO gap is.
    Raised on review of PR #5956, where an earlier version of this item
    misattributed DUPLICATE_RECORD to SourceDefectTypeEnum; the gap is
    wider than that wording implied. SourceDefectCauseEnum belongs in the
    same conversation: batch 3 falls back to cause: OTHER repeatedly for
    mechanisms that recur and are classifiable — a scope-wrong UniRule, a
    label-read-definition-unread ontology mapping, a node emitting a specific
    activity across a heterogeneous family — so the enum could not name the
    very patterns this project exists to count. All three gaps were one schema
    conversation, and #5984 closed the first two of them.
  3. KW-0081 is "Bacteriolytic enzyme", not "Antimicrobial" — it is a
    child of KW-0929 Antimicrobial. The XV and lysK reviews and the
    upstream report all name it wrongly. This strengthens the report: the
    mapping cannot be excused as a broad keyword that also covers host
    defence peptides, so GO:0042742 can simply be dropped from KW-0081 and
    left on KW-0929.

Later: animals and plants (top by CACAO row count)

mouse Reln (20), Shank3 (18), Sirt6 (14), Nlgn3 (13), Wnt5a (11), Pafah1b1
(9), Zbtb20 (8); rat Nlgn1 (9); human GOLPH3 (6), PLAUR (6).

Follow-ups on existing reviews

NOTES

2026-11-01 (session 3: batch 3)

Batch 3 selected by three deterministic screens rather than by row count, so
that each gene tests a predicted failure shape instead of sampling at random.
The screens and the fifteen genes are described under "Batch 3" above.

GONUTS has been retired. gowiki.tamu.edu now returns HTTP 410 behind a
page titled "GONUTS, the GO wiki, has been retired", pointing at
geneontology.org instead; the Internet Archive has no snapshot of the CACAO
paper or protein pages. Through the first two batches the site served a
"temporarily offline while we perform upgrades" notice, so the plan had been
to revisit abstract-only rows once it came back. That is no longer possible,
and the three follow-ups above that depended on it have been rewritten: the
programme's own record of what each student read is gone for good, and every
row has to stand or fall on the cited paper. This also removes the only
route to distinguishing a student's reasoning from the annotation it
produced, which is a real limit on what this project can conclude about the
programme as opposed to about its output.

A hedged qualifier is not automatically a defect. All twelve of phi29's
2025-dated CACAO rows use acts_upstream_of_or_within_positive_effect —
gene 1 once, gene 2 three times, gene 3 four times, and genes 4, 6, 15 and 17
once each — while the only pre-2025 CACAO rows on those genes, gene 15's 2012
row and gene 6's four 2017 rows, use enables, part_of and involved_in.
So the flip is total across the 2025 cohort, which makes it a campaign-wide
habit rather than a per-row judgement. On phi29 gene 17 the hedge nonetheless
turned out to fit the evidence better than involved_in would have: the
support is a bulk nonsense-mutant screen, and the modern literature shows much
of the sus17 replication defect is indirect. The taxonomy therefore needs to
separate a regressed qualifier from an honest one, and screen-3 hits have to
be judged on the evidence behind the row.

2026-10-29 (session 2: batch 2)

All 18 batch-2 genes reviewed, validating with 0 errors; 349 review rows, 72
CACAO rows judged (48 ACCEPT, 11 MODIFY, 6 non-core, 4 over-annotated, 3
REMOVE; revised on PR review to 12 MODIFY / 2 REMOVE, see the summary
table). Acceptance rose from 42% to 67%, and the taxonomy grew from 8 shapes
to 18, now grouped by what is actually wrong: the claim, the term, or the
provenance. See the summary for the two conclusions that matter — most
defective rows on these genes come from automated pipelines rather than
students, and batch 2's own failures are provenance failures.

Hypotheses carried into batch 2 from batch 1, and how they fared:

Four of five transferred hypotheses came back negative. Worth stating because
the agents tested them rather than confirming them; a framing handed to a
reviewer is a prediction, not a finding.

2026-10-29

Batch 1 reviewed: 12 of 13 genes complete and validating with 0 errors, 260
review rows, 71 CACAO rows judged. One gene (phage phi29 p6) is blocked as
above. Results and the eight-shape failure taxonomy are in the summary.

Method notes for later batches:

2026-10-28

Project started. Downloaded all 4,373 CACAO annotations from QuickGO and
matched them to the 9,353 existing gene reviews by UniProt accession. 281
gene products already reviewed; their CACAO rows were judged in passing,
not as a CACAO-focused audit. Actions on those rows: ACCEPT 263,
KEEP_AS_NON_CORE 150, MODIFY 47, MARK_AS_OVER_ANNOTATED 20, REMOVE 9,
UNDECIDED 7, TOO_GENERAL 2, not in review 5.

The nine removals: swrD, fliY (PMID:25313396), phage T4 E lysozyme GO:0003796,
yeast HAP4 GO:0098803, LRO1 GO:0046027 (ISO), spoVAD GO:0031160, ECOLI traB
GO:0016887, lambda Rz1 GO:0045861, ARATH DELTA-OAT GO:0051646. Each should be
rechecked before the failure taxonomy is fixed. The GONUTS records this
originally meant to consult are gone, so the recheck has to go to the papers.

Later the same day, at the user's request, the review order was switched to
microbes first. Added fetch_taxon_groups.py, which assigns every taxon to a
broad group from its UniProt lineage, and extended the inventory with
per-group counts and a ranked list of unreviewed microbial gene products.
Batch 1 is now the 13 microbial proteins with five or more CACAO rows; the
animal batch moved to the end of the queue.