Found in the second review of PR #316.
When resolve_member returns None, UNKNOWN_SOURCE/UNKNOWN_TARGET is suppressed for scope == "COMMUNITY_LEVEL". The new NAME_MISMATCH block sits outside that guard. So the ordering is inverted:
- a participant naming nothing at all → no finding
- a participant that at least resolves by id → a warning
Verified on the real KB: 5 of the 9 NAME_MISMATCH findings are on COMMUNITY_LEVEL interactions, and 27 COMMUNITY_LEVEL participants resolve to nothing and are reported nowhere.
One interaction carries both. kb/communities/GLBRC_UFMP_Fermentation_Community.yaml, COMMUNITY_LEVEL "Actinobacteriota-Firmicutes Cross-Feeding Network":
source_taxon Olsenella (Actinobacteriota) / NCBITaxon:133926 — matches nothing by name, no unique id candidate → silent
target_taxon Clostridium (Firmicutes) / NCBITaxon:1485 → NAME_MISMATCH warning
Same interaction, same class of problem, opposite treatment, and the milder one is the one reported.
Note the fix cannot simply be "move NAME_MISMATCH inside the guard" — that would re-open, for COMMUNITY_LEVEL, exactly the silent-binding hole #317 closed. Participants under COMMUNITY_LEVEL still bind and still count toward connected_taxa.
Proposed: report unresolved COMMUNITY_LEVEL participants too, at warning severity (PAIRWISE stays error). Consistent ordering, nothing newly gates, and 27 invisible participants become visible — which is also the data #319 needs.
Found in the second review of PR #316.
When
resolve_memberreturnsNone,UNKNOWN_SOURCE/UNKNOWN_TARGETis suppressed forscope == "COMMUNITY_LEVEL". The newNAME_MISMATCHblock sits outside that guard. So the ordering is inverted:Verified on the real KB: 5 of the 9 NAME_MISMATCH findings are on COMMUNITY_LEVEL interactions, and 27 COMMUNITY_LEVEL participants resolve to nothing and are reported nowhere.
One interaction carries both.
kb/communities/GLBRC_UFMP_Fermentation_Community.yaml, COMMUNITY_LEVEL "Actinobacteriota-Firmicutes Cross-Feeding Network":source_taxonOlsenella (Actinobacteriota)/NCBITaxon:133926— matches nothing by name, no unique id candidate → silenttarget_taxonClostridium (Firmicutes)/NCBITaxon:1485→ NAME_MISMATCH warningSame interaction, same class of problem, opposite treatment, and the milder one is the one reported.
Note the fix cannot simply be "move NAME_MISMATCH inside the guard" — that would re-open, for COMMUNITY_LEVEL, exactly the silent-binding hole #317 closed. Participants under COMMUNITY_LEVEL still bind and still count toward
connected_taxa.Proposed: report unresolved COMMUNITY_LEVEL participants too, at warning severity (PAIRWISE stays error). Consistent ordering, nothing newly gates, and 27 invisible participants become visible — which is also the data #319 needs.