Found while fixing #300. Concrete evidence for the DISCONNECTED policy question already raised in #273.
Two interacting rules
1. COMMUNITY_LEVEL interactions connect nothing. audit_community builds connected_taxa purely from source_taxon / target_taxon (network/auditor.py:189,229). A COMMUNITY_LEVEL interaction has neither by design, so it contributes no connections. 107 of the 302 records with interactions are entirely COMMUNITY_LEVEL, meaning a third of the KB has, structurally, zero connected taxa.
2. abundance_level or functional_role exempts a taxon from being reported (auditor.py:258):
if taxon_data.get("abundance_level") or taxon_data.get("functional_role"):
continue
That exemption is why rule 1 does not produce hundreds of findings — most taxa carry one of those slots.
The perverse incentive
Combined, they mean removing unsourced metadata creates audit findings.
In #298 I had invented abundance_level values for SynCom_ARC_Peanut_Aflatoxin_Nodulation — AbundanceEnum is quantitative (DOMINANT = ">1% relative abundance") and the paper reports no abundances, so all of them were fabricated. Review removed them, which is unambiguously the right call. The immediate consequence was five new DISCONNECTED findings for that record, and #300's fix (dropping a misleading pairwise edge in favour of a COMMUNITY_LEVEL one) added two more: 34 → 36 repo-wide.
So the audit currently scores a record better for carrying invented abundances than for honestly omitting them. A curator optimising the audit would fill those slots with guesses.
Why this matters for #273
#273 has to decide what DISCONNECTED means before the gate can be restored. This sharpens it: as implemented, DISCONNECTED is not "this taxon has no curated interaction" but "this taxon has no pairwise interaction and no membership metadata" — a compound condition that mixes graph connectivity with slot completeness, and which the exemption clause makes non-obvious.
Options
- Credit
COMMUNITY_LEVEL interactions. Treat every taxon in a record as connected by a community-level interaction, which is what such an interaction asserts. Removes the structural penalty on 107 records and makes DISCONNECTED mean what its name says.
- Drop the metadata exemption and let
DISCONNECTED be purely about connectivity — cleaner semantics, but would surface a large backlog at once.
- Split the two ideas into separate issue types: no-interaction versus no-membership-metadata. They are different curation gaps and currently share a label.
The first looks correct on its own merits regardless of what #273 decides, since a COMMUNITY_LEVEL interaction genuinely does relate its members.
Found while fixing #300. Concrete evidence for the
DISCONNECTEDpolicy question already raised in #273.Two interacting rules
1.
COMMUNITY_LEVELinteractions connect nothing.audit_communitybuildsconnected_taxapurely fromsource_taxon/target_taxon(network/auditor.py:189,229). ACOMMUNITY_LEVELinteraction has neither by design, so it contributes no connections. 107 of the 302 records with interactions are entirelyCOMMUNITY_LEVEL, meaning a third of the KB has, structurally, zero connected taxa.2.
abundance_levelorfunctional_roleexempts a taxon from being reported (auditor.py:258):That exemption is why rule 1 does not produce hundreds of findings — most taxa carry one of those slots.
The perverse incentive
Combined, they mean removing unsourced metadata creates audit findings.
In #298 I had invented
abundance_levelvalues forSynCom_ARC_Peanut_Aflatoxin_Nodulation—AbundanceEnumis quantitative (DOMINANT= ">1% relative abundance") and the paper reports no abundances, so all of them were fabricated. Review removed them, which is unambiguously the right call. The immediate consequence was five newDISCONNECTEDfindings for that record, and #300's fix (dropping a misleading pairwise edge in favour of aCOMMUNITY_LEVELone) added two more: 34 → 36 repo-wide.So the audit currently scores a record better for carrying invented abundances than for honestly omitting them. A curator optimising the audit would fill those slots with guesses.
Why this matters for #273
#273 has to decide what
DISCONNECTEDmeans before the gate can be restored. This sharpens it: as implemented,DISCONNECTEDis not "this taxon has no curated interaction" but "this taxon has no pairwise interaction and no membership metadata" — a compound condition that mixes graph connectivity with slot completeness, and which the exemption clause makes non-obvious.Options
COMMUNITY_LEVELinteractions. Treat every taxon in a record as connected by a community-level interaction, which is what such an interaction asserts. Removes the structural penalty on 107 records and makesDISCONNECTEDmean what its name says.DISCONNECTEDbe purely about connectivity — cleaner semantics, but would surface a large backlog at once.The first looks correct on its own merits regardless of what #273 decides, since a
COMMUNITY_LEVELinteraction genuinely does relate its members.