Skip to content

Add three new communities from the deep-research-community workflow (CommunityMech:000336-000338) - #747

Merged
realmarcin merged 5 commits into
mainfrom
feat/new-communities-deep-research
Sep 8, 2026
Merged

Add three new communities from the deep-research-community workflow (CommunityMech:000336-000338)#747
realmarcin merged 5 commits into
mainfrom
feat/new-communities-deep-research

Conversation

@realmarcin

@realmarcin realmarcin commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Three new records produced by running the deep-research-community workflow end
to end — literature scouting, deep research, independent re-verification, curation.

id record source evidence depth
000336 C. acetobutylicumC. ljungdahlii syntrophic fusion coculture PMID:40298437 (+3) OA full text ×3, abstract ×1
000337 Tropidoatractus magnetotacticus magnetotactic ciliate tripartite syntrophy PMID:42475569 OA full text
000338 Caragana korshinskii cross-kingdom forage SynCom PMID:42432469 abstract only

What each one is

000336 — a defined anaerobic coculture whose gas syntrophy turns out not to be
the whole story: the pair also cross-feeds arginine and histidine, fuses cells and
exchanges protein, RNA and DNA in bulk, and the authors use that to reclassify the
relationship from commensal to mutualistic. Nine interactions.

000337 — a natural three-guild symbiosis inside one anaerobic ciliate from
Gabonese rainforest stream sediment. The host makes H₂ in hydrogenosomes; an
intracellular sulfate reducer and a Methanoregula endosymbiont consume it; and
the sulfate reducer's magnetosome gene cluster gives the eukaryote a magnetotaxis
it does not encode itself. A eukaryote-plus-two-prokaryotes community, which is a
shape the KB did not have.

000338 — a three-member, two-kingdom silage inoculant. Deliberately thin, and
the record says so in its own description: the paper is gold OA at BMC but has no
PMC deposit, Europe PMC serves no full text, and the publisher returns a bot
challenge, so the ensiling parameters, strain designations and control values are
unreadable rather than unreported. It carries the Europe PMC check to re-run
once a PMCID appears.

How they were made

  1. scout-communities over Europe PMC — four presets, --since 2025,
    --emit-stubs — giving 44 distinct sourced NEW candidates.
  2. deep-research-community on three selected stubs.
  3. Curation from the reports plus independent re-verification of every claim.

Edison is down; the documented fallback ran instead

just research-community-edison fails at authentication with 403 Forbidden on
https://api.platform.edisonscientific.com/auth/login, reproduced on every
attempt. Filed as #745. No credits were spent there — auth never succeeds, so
no task is created.

The skill's own non-Edison path (just research-community claude_code <target>)
works, and produced all three reports: 445–565 s and $2.06–$2.99 each, $7.78
total
, versus Edison's advertised few cents. research/ is gitignored, so the
reports are not in this diff; their paths are in the history entries.

The canary rule is why that is a footnote rather than a wasted afternoon — the 403
surfaced on run one, not run ten.

Verification, not transcription

A deep-research report is not a schema-compliant deliverable, and these were
treated accordingly.

  • All 61 evidence snippets were checked as exact substrings of the committed
    caches before being written. Several candidates failed and were shortened: a
    line-wrapped phrase in an abstract-only paper, and one in 000338 that has to
    stop before the ">95%" figure because the cache renders a thin space (U+2009)
    after the greater-than sign, which no faithful quote can reproduce.
  • Every ontology id and label came from a local OAK build, not from a report's
    table.
  • Every GTDB block was computed, not copied. The C. ljungdahlii block
    reproduces the one already in CommunityMech:000202 exactly (4 genomes,
    majority 1.0) — a useful cross-check.
  • A report was wrong once and was caught. The 000337 report gave
    NCBITaxon:3469242 as the registered species Tropidoatractus magnetotacticus.
    The local NCBITaxon build says that id's canonical label is still the
    provisional Tropidoatractus sp. MC-2025a — which the report itself listed in a
    different row of the same table. The record stores the canonical label with the
    published binomial in preferred_term.
  • The reports' over-claim warnings were honoured, not skipped. 000336's
    arginine cross-feeding keeps the paper's hedged "may utilize" rather than the
    abstract's "we verified"; its H₂-removal mutualism records that "the effect was
    small"; no fusion mechanism is asserted, because the seed paper says it could not
    find one. 000337's H₂ edge to the sulfate reducer is PARTIAL because the source
    says only "could potentially", its magnetotaxis edge carries the failed-FISH
    limit, and no geochemistry is asserted because none was measured. 000338 does not
    attribute the ">95% Lactobacillus" surge to the inoculated strain, which under
    current taxonomy is a different genus.
  • Scope discipline. 000336 is the wild-type pairing only; the same lab's much
    higher isopropanol/butanol titers come from genetically modified
    C. acetobutylicum and are a different community. 000338 imports nothing from
    the neighbouring Caragana papers, whose parameters belong to other groups and
    would be fabricated evidence here.

Three corpus censuses moved, and are updated rather than loosened

The new census was mutation-checked with a control arm: dropping one entry
from USERS turned it red naming that exact record, and an unmutated copy through
the identical harness was green. Same ritual for reference validation on both
full-text records.

Review findings

Fixed in this PR:

  • abundance_level: COMMON on 000336's C. ljungdahlii was wrong by three
    orders of magnitude — the schema defines COMMON as 0.01–0.1% and the record's own
    evidence says ~25%.
  • interaction_type asserting unearned benefits. 000336's DNA transfer was
    COMMENSALISM and its cell fusion MUTUALISM; the cited papers show
    acquisition, integration and structure, not benefit. Both are now unset with the
    reason in each description.
  • GO:0042566 hydrogenosome is a cellular component, not a biological process,
    and it was in 000337's biological_processes. validate-terms passed it because
    the label was right. Now GO:0006113 fermentation.
  • Lactate annotated on two of 000338's interactions without the abstract ever
    naming an acid — an inference from the members' physiology, which the evidence
    policy says to omit.
  • ph_controlled: false was an inference presented as fact; the notes now say
    it is read off an absence.

Filed, not fixed here:

Validation

check result
just validate / validate-strict 332 files, 0 ERROR
just validate-gtdb-all / validate-gtdb-domain 0 incoherent, 0 contradictory
just validate-terms-all passed
just validate-references-explained passed on all three
just validate-history passed on all five entries
just lint (ruff + mypy) passed
just check-docs-current docs/ matches the KB
communitymech audit-network new records clean; 000338's Staphylococcus is the intended antagonist warning
uv run pytest 2874 passed — see below

One local test failure is not from this branch. test_no_snippet_stops_mid_word
fails on Methylobacterium_REE_Ewaste_Platform.yaml, an existing record, because
of an untracked references_cache/PMID_38150661.md in the working tree. Moving
that file aside makes the test pass and restoring it makes it fail again. It is not
in this diff and cannot affect CI. Flagging it rather than touching it, since it is
uncommitted work.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Fp76aWhPUNeyXV3wTH2bYi

CommunityMech:000336, found by scout-communities and researched with the
deep-research-community skill. A defined two-member anaerobic coculture whose
gas syntrophy (CO2/H2) turns out to run alongside amino-acid cross-feeding and
interspecies cell fusion, so its own authors reclassify it from commensal to
mutualistic.

Edison could not run — the platform returns 403 at /auth/login (#745) — so the
skill's documented non-Edison fallback produced the report instead. Every claim
in it was re-verified here: all 21 snippets are exact substrings of the four
committed reference caches, every NCBITaxon/CHEBI/GO/ENVO id and label came from
a local OAK build, and both GTDB blocks were computed rather than copied.

Scoped deliberately to the wild-type pairing. The same laboratory's much higher
isopropanol and butanol titers come from genetically modified C. acetobutylicum
and belong to a different community. The report's over-claim warnings are
honoured in the record: the arginine cross-feeding keeps the paper's hedged
"may utilize", the H2-removal mutualism records that the effect was small, and
no fusion mechanism is asserted, because the seed paper says it could not find
one. Fusion structure cites PMID:32873766 and DNA transfer PMID:38214507 rather
than the transcriptomic paper that reports neither.

Grounded at species rank: neither strain-level id has a row in the current
NCBI2GTDB mapping (#746), so ATCC 824 and DSM 13528 live in strain_designation.

Green on validate, validate-strict (330 files), validate-gtdb-all,
validate-terms-all, validate-references-explained and audit-network. The
reference validation was mutation-checked — a corrupted snippet turned it red,
and the restored file was green on the next run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fp76aWhPUNeyXV3wTH2bYi
Copilot AI lite review requested due to automatic review settings September 8, 2026 03:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Network integrity findings

Warnings only — a member with no interaction yet, or a participant matched by ontology id rather than by name, or one on a community-level interaction that resolves to no member. Reported, but does not fail the build.

Network Integrity Audit Report
================================================================================

0 error, 56 warning across 28 records with findings
Only error-severity findings fail the build.

ANME_SRB_Anaerobic_Methanotrophic_Syntrophic_Consortia
--------------------------------------------------------------------------------
  [warning] NAME_MISMATCH: Source 'ANME-1' matches no taxonomy entry by name; resolved to 'ANME-1 (anaerobic methanotrophic archaea, clade 1)' by source_id NCBITaxon:588814
  [warning] NAME_MISMATCH: Target 'Desulfofervidus' matches no taxonomy entry by name; resolved to 'Desulfofervidus (sulfate-reducing bacterial partner of ANME-1)' by target_id NCBITaxon:1902583
  [warning] NAME_MISMATCH: Source 'ANME-2a' matches no taxonomy entry by name; resolved to 'ANME-2a (anaerobic methanotrophic archaea, clade 2a)' by source_id NCBITaxon:588816
  [warning] NAME_MISMATCH: Target 'Seep-SRB1' matches no taxonomy entry by name; resolved to 'Seep-SRB1 (sulfate-reducing bacterial partner of ANME-2a)' by target_id NCBITaxon:213119
  [warning] NAME_MISMATCH: Source 'ANME-2c' matches no taxonomy entry by name; resolved to 'ANME-2c (anaerobic methanotrophic archaea, clade 2c)' by source_id NCBITaxon:3386252
  [warning] NAME_MISMATCH: Target 'Seep-SRB2' matches no taxonomy entry by name; resolved to 'Seep-SRB2 (additional sulfate-reducing bacterial partner)' by target_id NCBITaxon:213118

Total: 6 issues (0 error, 6 warning)

Aalborg_East_Full_Scale_EBPR_Community
--------------------------------------------------------------------------------
  [warning] DISCONNECTED: Taxon 'Bacteroidetes flanking community members' has no interactions
  [warning] DISCONNECTED: Taxon 'Tetrasphaera-related actinobacterial PAOs' has no interactions

Total: 2 issues (0 error, 2 warning)

Bacteroides_Methanobrevibacter_Gnotobiotic_Mouse_Mutualism
--------------------------------------------------------------------------------
  [warning] DISCONNECTED: Taxon 'Desulfovibrio piger comparator' has no interactions

Total: 1 issues (0 error, 1 warning)

BioModels_MODEL2204300001_Kefir_Community_Model
--------------------------------------------------------------------------------
  [warning] DISCONNECTED: Taxon 'Lactobacillus kefiri' has no interactions
  [warning] DISCONNECTED: Taxon 'Lactococcus lactis' has no interactions

Total: 2 issues (0 error, 2 warning)

BioModels_MODEL2405300001_Infant_Gut_HMO_SynCom
--------------------------------------------------------------------------------
  [warning] DISCONNECTED: Taxon 'Bacteroides ovatus' has no interactions
  [warning] DISCONNECTED: Taxon 'Bacteroides vulgatus' has no interactions
  [warning] DISCONNECTED: Taxon 'Bifidobacterium bifidum' has no interactions
  [warning] DISCONNECTED: Taxon 'Bifidobacterium breve' has no interactions
  [warning] DISCONNECTED: Taxon 'Blautia producta' has no interactions
  [warning] DISCONNECTED: Taxon 'Enterococcus faecalis' has no interactions
  [warning] DISCONNECTED: Taxon 'Escherichia coli K-12' has no interactions
  [warning] DISCONNECTED: Taxon 'Lacticaseibacillus rhamnosus' has no interactions
  [warning] DISCONNECTED: Taxon 'Ruminococcus gnavus' has no interactions
  [warning] DISCONNECTED: Taxon 'Streptococcus thermophilus' has no interactions

Total: 10 issues (0 error, 10 warning)

Caragana_Korshinskii_CrossKingdom_Forage_SynCom
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'Staphylococcus' not found in taxonomy section (community-level scope)

Total: 1 issues (0 error, 1 warning)

Crucian_Carp_Gut_Disease_Resistance_SynCom
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'Aeromonas hydrophila' not found in taxonomy section (community-level scope)

Total: 1 issues (0 error, 1 warning)

Drosophila_FiveSpecies_Gnotobiotic_Gut_Microbiota
--------------------------------------------------------------------------------
  [warning] UNKNOWN_SOURCE: Source taxon 'Drosophila five-species bacterial microbiota' not found in taxonomy section (community-level scope)

Total: 1 issues (0 error, 1 warning)

East_River_Floodplain_Core_Microbiome
--------------------------------------------------------------------------------
  [warning] UNKNOWN_SOURCE: Source taxon 'core floodplain bacteria' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_SOURCE: Source taxon 'East River floodplain bacteria' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium
--------------------------------------------------------------------------------
  [warning] DISCONNECTED: Taxon 'Chryseobacterium sp. MF1' has no interactions

Total: 1 issues (0 error, 1 warning)

GLBRC_UFMP_Fermentation_Community
--------------------------------------------------------------------------------
  [warning] UNKNOWN_SOURCE: Source taxon 'Olsenella (Actinobacteriota)' not found in taxonomy section (community-level scope)
  [warning] NAME_MISMATCH: Target 'Clostridium (Firmicutes)' matches no taxonomy entry by name; resolved to 'Clostridium_B sp. (MAG CLOS1)' by target_id NCBITaxon:1485

Total: 2 issues (0 error, 2 warning)

Hanford_300_Area_Unconfined_Aquifer_Community
--------------------------------------------------------------------------------
  [warning] NAME_MISMATCH: Source 'intrusion-associated Actinobacteria' matches no taxonomy entry by name; resolved to 'Actinobacteria/Actinomycetota aquifer bacteria' by source_id NCBITaxon:201174
  [warning] UNKNOWN_TARGET: Target taxon 'Hanford groundwater bacteria' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_SOURCE: Source taxon 'aquifer redox guild bacteria and archaea' not found in taxonomy section (community-level scope)

Total: 3 issues (0 error, 3 warning)

High_Solids_Switchgrass_Methanogenic_Microbiome
--------------------------------------------------------------------------------
  [warning] DISCONNECTED: Taxon 'Bacilli' has no interactions

Total: 1 issues (0 error, 1 warning)

KB1_Chlorinated_Ethene_Dechlorinating_Consortium
--------------------------------------------------------------------------------
  [warning] DISCONNECTED: Taxon 'Sporomusa spp. in KB-1' has no interactions

Total: 1 issues (0 error, 1 warning)

Legume_Rhizobia_Mars_Simulant_Symbiosis
--------------------------------------------------------------------------------
  [warning] NAME_MISMATCH: Source 'Sinorhizobium spp. (rhizobial symbionts)' matches no taxonomy entry by name; resolved to 'Sinorhizobium meliloti' by source_id NCBITaxon:382
  [warning] UNKNOWN_TARGET: Target taxon 'Medicago truncatula (host legume)' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

Lunar_Martian_Simulant_PGPB_Lettuce_SynCom
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'Lactuca sativa (lettuce host)' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_TARGET: Target taxon 'Lactuca sativa (lettuce host)' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'Nicotiana benthamiana' not found in taxonomy section (community-level scope)

Total: 1 issues (0 error, 1 warning)

Model_Lignocellulose_Formaldehyde_Crossfeeding_Community
--------------------------------------------------------------------------------
  [warning] UNKNOWN_SOURCE: Source taxon 'model lignocellulose consortium members' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_TARGET: Target taxon 'model lignocellulose consortium members' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

Moss_Microbe_Complex_Regolith_Biofertilizer
--------------------------------------------------------------------------------
  [warning] UNKNOWN_SOURCE: Source taxon 'Hypnum plumaeforme (moss host)' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_TARGET: Target taxon 'Hordeum vulgare (barley model crop)' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

ORNL_Clostridium_Desulfovibrio_Geobacter_Trophic_Model
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'Desulfovibrio vulgaris Hildenborough and Geobacter sulfurreducens' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_TARGET: Target taxon 'three-species model community' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

Oak_Ridge_FRC_Uranium_Nitrate_Groundwater_Community
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'other groundwater bacteria' not found in taxonomy section (community-level scope)

Total: 1 issues (0 error, 1 warning)

PET_Artificial_FourSpecies_Degradation_Consortium
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'engineered PETase/MHETase and TPA-utilization members' not found in taxonomy section (community-level scope)

Total: 1 issues (0 error, 1 warning)

PMI_Variovorax_Thermotolerance_Collection
--------------------------------------------------------------------------------
  [warning] UNKNOWN_SOURCE: Source taxon 'Variovorax' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_TARGET: Target taxon 'Arabidopsis thaliana' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

Rice_Duckweed_Bacillus_SynCom
--------------------------------------------------------------------------------
  [warning] UNKNOWN_SOURCE: Source taxon 'Bacillus SynCom' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_TARGET: Target taxon 'Rhizoctonia solani' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

Saanich_Inlet_OMZ_Redox_Gradient_Community
--------------------------------------------------------------------------------
  [warning] UNKNOWN_SOURCE: Source taxon 'Saanich Inlet redox-gradient microorganisms' not found in taxonomy section (community-level scope)

Total: 1 issues (0 error, 1 warning)

Shewanella_Geobacter_Exoelectrogenic_Biofilm_Community
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'anode-associated biofilm community' not found in taxonomy section (community-level scope)
  [warning] UNKNOWN_TARGET: Target taxon 'anode' not found in taxonomy section (community-level scope)

Total: 2 issues (0 error, 2 warning)

Sulfide_Spring_Autotrophic_CPR_Biofilm
--------------------------------------------------------------------------------
  [warning] DISCONNECTED: Taxon 'Beggiatoa' has no interactions

Total: 1 issues (0 error, 1 warning)

Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization
--------------------------------------------------------------------------------
  [warning] UNKNOWN_TARGET: Target taxon 'Pseudomonas aeruginosa' not found in taxonomy section (community-level scope)

Total: 1 issues (0 error, 1 warning)

The full report is attached to the workflow run as an artifact.

Three defects the review found in the record it had just written.

C. ljungdahlii carried abundance_level COMMON, which this schema defines as
0.01-0.1% relative abundance, while the record's own evidence snippet puts it
at ~25% of the population. Reasoning from the English word rather than the
threshold, and nothing catches it. Both members are DOMINANT, and their
explanations now name the threshold they are judged against. The same defect
affects 76 of 91 abundance assignments across two-to-four-member synthetic
communities in the corpus (#748).

interaction_type is now unset on the cell-fusion and DNA-transfer entries.
COMMENSALISM asserted that the DNA recipient benefits and MUTUALISM that both
partners benefit from fusion; PMID:32873766 and PMID:38214507 show structure,
acquisition and integration, not benefit. InteractionTypeEnum classifies by
sign and has no value for a transfer mechanism (#749). The slot is optional, so
each description says why it is empty rather than picking the least-wrong sign.

cultivation_setup notes now say ph_controlled: false is read off the absence of
pH-control apparatus in the Methods, not quoted from a claim that pH was
uncontrolled.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fp76aWhPUNeyXV3wTH2bYi
@realmarcin

Copy link
Copy Markdown
Contributor Author

Review pass (read-only, then fixes in 38233b2)

Reviewed the record adversarially rather than restating it. Three defects in
the record itself, two of which are also corpus-wide problems now filed
separately.

Fixed in this PR

1. abundance_level: COMMON on C. ljungdahlii was wrong by three orders of
magnitude.
This schema defines COMMON as 0.01-0.1% relative abundance. The
record's own evidence snippet says the organism is ~25% of the population. I
picked the value by reading the English word, and nothing in validate,
validate-strict, validate-terms or audit-network can see the difference.
Both members are now DOMINANT, and each explanation names the threshold it is
being judged against rather than reasoning from the word.

2. interaction_type asserted benefits no source establishes. The DNA
transfer was COMMENSALISM (+/0) and the cell fusion MUTUALISM (+/+).
PMID:38214507 shows plasmid acquisition and genomic integration; PMID:32873766
shows wall and membrane fusion by TEM and tomography. Neither shows that anyone
benefits. The slot is optional, so both are now unset with the reason stated
in the description — the demonstrated benefits belong to the syntrophy and the
amino-acid exchange, which have their own entries.

3. ph_controlled: false was an inference presented as a fact. The Methods
never say pH was uncontrolled; they describe a static screw-cap bottle with no
controller. The reading is safe, but cultivation_setup.notes now says it is
read off an absence rather than quoted.

Filed, not fixed here

#748abundance_level's documented thresholds are impossible for most
defined communities that use it.
My mistake is not a one-off. Restricting to
community_origin: SYNTHETIC records with at most four members, where the
arithmetic admits no doubt: 76 of 91 assignments claim the member is under 1%
of a community of two to four organisms.
Both members of
Acetobacterium_Clostridium_CO2_Electrolysis_Coculture.yaml,
Bifidobacterium_Ruminococcus_Infant_HMO_CrossFeeding.yaml,
Cellulomonas_Rhodobacter_Cellulose_Photohydrogen_Coculture.yaml and others are
ABUNDANT (0.1-1%). The corpus uses the field as an ordinal rank; the schema
documents percentages. They should be made to agree.

#749 — no InteractionTypeEnum value fits cell fusion, cytoplasmic material
exchange, or HGT.
The enum classifies by sign; these are mechanisms of
transfer. Leaving the type unset is schema-legal but conspicuous: exactly 1 of
899 interactions in the corpus currently does so, and this record now adds two.
A ground-or-propose-metpo candidate.

Checked and found fine

  • All 21 snippets are exact substrings of the committed caches, re-verified
    after the edits.
  • validate-terms covers every CHEBI/GO/ENVO/NCBITaxon id-label pair, including
    the ones I did not resolve by hand.
  • Community-level interactions correctly use scope + participating_taxa
    instead of forcing a source/target, per the schema invariant.
  • concentration: '5' as a string matches the corpus convention (17 other
    records use exactly that literal).
  • The record is clean in audit-network; the 27 communities with issues there
    are all pre-existing.

One thing I did not resolve: unit: mixes g/L (98 uses) and G_PER_L
(115 uses) across the corpus. This record uses g/L. Not worth a separate issue
on its own, but worth knowing before anyone parses that field.

CommunityMech:000337 — Tropidoatractus magnetotacticus tripartite syntrophy.
A natural three-guild symbiosis inside one anaerobic ciliate from Gabonese
rainforest stream sediment: the host makes H2 in hydrogenosomes, an
intracellular sulfate reducer and a Methanoregula endosymbiont consume it, and
the sulfate reducer's magnetosome gene cluster gives the eukaryote a
magnetotaxis it does not encode itself. The report claimed NCBITaxon:3469242 is
the registered species; the local NCBITaxon build says its canonical label is
still the provisional "Tropidoatractus sp. MC-2025a", so that is what the record
stores, with the published binomial in preferred_term.

CommunityMech:000338 — Caragana korshinskii cross-kingdom forage SynCom.
Deliberately thin, and the record says why in its own description: the paper is
gold OA at BMC with no PMC deposit and a publisher bot challenge, so the cache
is abstract_only and the ensiling parameters, strains and control values are
unreadable rather than unreported. One snippet stops before the ">95%" figure
because the cache renders a thin space after the greater-than sign, which no
faithful quote can reproduce.

Both honour their reports' over-claim warnings rather than the abstracts:
the ciliate's H2 edge to the sulfate reducer is PARTIAL because the source says
only "could potentially", the magnetotaxis edge carries the failed-FISH limit,
and the Lactobacillus surge is not attributed to the inoculated strain, which
under current taxonomy is a different genus.

Three corpus censuses moved and are updated rather than loosened:

- is_reclassified totals 118 -> 121, above-species 34 -> 35, polyphyly 24 -> 26,
  different-name 73 -> 74, non-reclassification share 38% -> 39%, in all three
  places #441 requires — the test, the schema description, and the skill.
- ANTAGONIST gains Staphylococcus, a spoilage genus the SynCom suppresses and
  therefore not a member (#319); the participant census goes 25 -> 26.
- test_participating_taxa's "nothing uses this slot" tripwire becomes a two-way
  census of the three records that now do. Adding or removing a user fails, so
  it still catches the silent-default case it was written for. The connectivity
  bands in test_community_level_connectivity_credit.py were re-checked and hold.

The new census was mutation-checked with a control arm: dropping one entry from
USERS turned it red naming that exact record, and the unmutated copy through the
identical harness was green.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fp76aWhPUNeyXV3wTH2bYi
GO:0042566 hydrogenosome is a cellular component, not a biological process, and
it was sitting in `biological_processes` on CommunityMech:000337. `validate-terms`
passed it because the label was right — the slot's range is "a GO term" and no
gate checks which of GO's three aspects the term belongs to. Replaced with
GO:0006113 fermentation, the process the organelle carries out.

Running that aspect check over the whole corpus found 30 more entries that are
molecular functions or cellular components (#751). Those are pre-existing and are
left alone here.

CommunityMech:000338 annotated lactate on two interactions. The abstract says
"rapid acidification" and never names an acid; lactate was inferred from the
members' physiology, which is what the evidence policy says to omit. Removed,
with a note recording that only pyruvate — which the abstract does name — is
annotated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fp76aWhPUNeyXV3wTH2bYi
@realmarcin realmarcin changed the title Add the wild-type C. acetobutylicum-C. ljungdahlii fusion coculture (CommunityMech:000336) Add three new communities from the deep-research-community workflow (CommunityMech:000336-000338) Sep 8, 2026
@realmarcin

Copy link
Copy Markdown
Contributor Author

Second review pass — the two records added in 9d183d2

Read-only first, then fixes in a8007f3. Findings beyond what the first pass
turned up:

GO:0042566 hydrogenosome was in biological_processes. It is a cellular
component
. validate-terms passed it because the id and label agree — the slot's
range is "a GO term" and nothing checks the aspect. Now GO:0006113 fermentation,
the process the organelle carries out.

The same check over the corpus found 30 more: 28 molecular functions and 2
cellular components, in records including AMD_Nitrososphaerota_Archaeal.yaml
(GO:0018597 ammonia monooxygenase activity), Geobacter_Methanosaeta_DIET.yaml
(GO:0009055 electron transfer activity) and Aspergillus_Indium_LED_Recovery.yaml
(GO:0005576 extracellular region). Filed as #751 with a proposed structural
check. Most are near-misses a curator would defend, which is exactly why the slot
and the data drifted apart unnoticed.

Lactate was annotated on two of 000338's interactions. The abstract says
"rapid acidification" and never names an acid. Inferring lactate from "it's a
lactic acid bacterium" is precisely what the evidence policy says to omit.
Removed; only pyruvate, which the abstract does name, survives.

Checked and found fine

  • The abundance_level mistake from the first pass did not recur. 000337's
    members were assigned against the schema's ">1%" threshold from the start:
    ciliate 14.5% and methanogen 2% are both DOMINANT, and the sulfate reducer has
    no abundance_level at all because the paper does not report its share — 676 of
    1068 taxa in the corpus omit the slot, so leaving it empty is ordinary rather
    than a gap.
  • The GTDB ranks are the ones that reproduce. Phylum for the sulfate reducer
    because 16S and dsrA place it in different orders; genus for Methanoregula
    on a thin two-genome vote, which the notes say; NO_GTDB_EQUIVALENT for the two
    eukaryotes because GTDB is Bacteria and Archaea only.
  • Staphylococcus is correctly a non-member. The gate proved it: with the
    interaction scoped PAIRWISE the network audit raised it at error severity and
    test_interaction_participants_outside_taxonomy went red naming the record.
    Scoping it COMMUNITY_LEVEL — which is what the source's own framing supports,
    since it attributes suppression to the consortium — moved it to a warning.
  • evidence_source splits the field observations from the sequence inference.
    17 of 000337's items are COMPUTATIONAL (bins, MAGs, expression, phylogeny) and
    10 IN_VIVO (electron microscopy, swimming behaviour, sampling). IN_SITU is
    not a permissible value here, which is worth knowing for field-sampled records.
  • Both records' snippets survive a mutation check. Corrupting one turns the
    validator red at the exact location; the file restored by copy is green on the
    very next run.

Not mine to fix

test_no_snippet_stops_mid_word fails locally on
Methylobacterium_REE_Ewaste_Platform.yaml'REE' is cut before 's' (PMID:38150661). That record is not in this diff. The failure appears because
references_cache/PMID_38150661.md is present but untracked in the working
tree, which makes an existing snippet newly checkable. Moving the file aside makes
the test pass; restoring it makes it fail again. CI cannot see it. Left alone.

Three claims the records made that their sources do not.

**SYNTROPHY on a facultative pairing.** CommunityMech:000336's CO2/H2 transfer
was typed SYNTROPHY, which this enum defines as *obligate* metabolic
cooperation. PMID:40298437 grows both species as monocultures in the same
experiment — that arm is the study's control — so the cooperation is
demonstrably facultative and the type asserted what the source disproves. Now
CROSS_FEEDING. Every paper on this pairing calls it a syntrophy, so the mismatch
is between the literature's loose usage and this schema's strict definition; the
other 134 SYNTROPHY uses in the corpus are unaudited and filed as #752.

**MUTUALISM where no benefit is claimed.** 000336's emergent non-native
metabolites and 000338's acidification-driven preservation both carried
MUTUALISM. The sources report that the pairing makes products neither member
makes alone, and that the consortium drives a coordinated process — statements
about the output, not about either member benefiting from another. Both types
are now unset with the reason recorded, as for the fusion and DNA-transfer
entries (#749).

**PRIMARY_DEGRADER on an organism whose diet is unknown.** 000337's ciliate host
carried it; the enum means "degrades complex substrates" and PMID:42475569
establishes only that the host ferments and releases H2. Removed, and the taxon
notes say why, so it is not re-added. SYNTROPHY stays on that record's H2 edges:
those partners are intracellular endosymbionts whose methanogen MAGs show the
genome reduction typical of them, so obligacy is at least plausible there.

The snippet audit was proved non-vacuous on this branch before trusting its
clean result: planting an absent snippet surfaced the record as a fabrication
suspect, and restoring it cleared the finding.

No evidence, snippet, grounding or taxonomy changed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fp76aWhPUNeyXV3wTH2bYi
@realmarcin

Copy link
Copy Markdown
Contributor Author

Third review pass (read-only, then fixes in 01947f3)

Went looking for claims the records make that their sources do not. Found three,
all in interaction_type or functional_role — the slots where a curator picks
a category rather than quotes a sentence, and where no validator can check the
pick against the evidence.

Fixed

SYNTROPHY on a pairing the source proves is facultative. 000336's CO₂/H₂
transfer was SYNTROPHY. This enum defines that as "Obligate metabolic
cooperation"
— and PMID:40298437 grows both species as monocultures in the
same experiment. That arm is the study's control, and the record already
quotes it:

Monocultures of C. acetobutylicum ATCC 824 and C. ljungdahlii DSM 13528 as
well as cocultures combining the species were grown for RNA extraction

Retyped CROSS_FEEDING. Worth being clear about why this happened: every paper
on this pairing calls it a syntrophic coculture, so the type looked like the
source's own word. The literature uses "syntrophy" loosely; this schema's
definition is the strict one. Filed as #752, which also notes the other 134
SYNTROPHY uses are unaudited and that one class of them is mechanically
checkable — any coculture record whose source reports a monoculture arm.

MUTUALISM where no benefit is claimed. 000336's emergent non-native
metabolites and 000338's acidification-driven preservation. The sources report
that the pairing makes isopropanol and 2,3-butanediol which neither member makes
alone, and that the consortium drives a "coordinated
degradation-fermentation-preservation process". Both are statements about the
output, not about either member benefiting from another. Emergence is not a
sign. Types unset with the reason in each description.

That makes four untyped interactions in this PR, against exactly 1 in the
other 899 in the corpus. That is conspicuous and it is the point: the slot has no
value for a transfer mechanism (fusion, HGT), for emergence, or for coordination,
which is the case #749 makes. Picking the least-wrong sign would have hidden it.

PRIMARY_DEGRADER on an organism whose diet is unknown. 000337's ciliate
host. The enum means "degrades complex substrates"; PMID:42475569 establishes
that the host ferments and releases H₂ through hydrogenosomal Fe-hydrogenases,
and says nothing about what it eats. Removed; the taxon notes now say why, so it
does not get re-added.

SYNTROPHY stays on 000337's two H₂ edges, unlike 000336's. Those partners
are intracellular endosymbionts and the methanogen MAGs show the ~1 Mb genome
reduction typical of them, so obligacy is at least plausible, and the paper's own
title is "tripartite syntrophy". The asymmetry is deliberate and recorded.

Checked and found fine

  • No id collisions: 000336–000338 are unique across all 332 records.
  • The snippet audit is not vacuous on this branch. Before trusting its clean
    result I planted an absent snippet in 000337 — the record immediately appeared
    in the "fabrication suspects" list, and restoring it cleared the finding. None
    of the three records appears in MISMATCH/WEAK; the corpus's 97 MISMATCH are
    pre-existing (97 evidence snippets remain unverifiable, effectively all on closed-access sources #596).
  • ELECTRON_DONOR on the ciliate holds: the enum says "interspecies or
    extracellular electron transfer", and interspecies H₂ transfer is the textbook
    indirect case; DIET is the parenthetical example, not the definition.
  • metabolites: magnetite holds: the slot says "Metabolites involved in the
    interaction", not "exchanged", and the magnetosomes are what the interaction is
    about.
  • ecological_state: STABLE on 000337 is consistent with the corpus — 0 of
    332 records omit the slot, and STABLE is the only value fitting a natural,
    unperturbed, non-engineered community.
  • No KGX drift. output/kgx is not tracked and kgx-release.yaml is a
    release workflow, not a PR gate, so nothing regenerated is stale.
  • validate-strict: 332 files, 0 ERROR. Full suite: 2874 passed.

Still not mine to fix

test_no_snippet_stops_mid_word fails locally on
Methylobacterium_REE_Ewaste_Platform.yaml because of the untracked
references_cache/PMID_38150661.md in the working tree. Moving it aside makes
the test pass. Not in this diff; CI cannot see it.

@realmarcin
realmarcin merged commit 980817e into main Sep 8, 2026
9 checks passed
@realmarcin
realmarcin deleted the feat/new-communities-deep-research branch September 8, 2026 07:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants