diff --git a/docs/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.html b/docs/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.html index 91dc205bb..fb0e02238 100644 --- a/docs/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.html +++ b/docs/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.html @@ -592,6 +592,11 @@

Ecological Interactions

aria-hidden="true" data-symbol="symbolDiamond" data-color="#57c7ab"> Cross-feeding +
+ Other +
@@ -601,7 +606,7 @@

Ecological Interactions

Acetogenic CO and Syngas Fermentation

CROSS_FEEDING -

C. autoethanogenum converts CO or syngas into acetate and ethanol, producing the substrates that support chain elongation by C. kluyveri.

+

C. autoethanogenum converts CO or syngas to acetate and ethanol that support C. kluyveri chain elongation. Product profiles and pure-culture comparisons support this cross-feeding model. In the 2019 chemostat study, partner ethanol production and electron allocation in coculture were reverse-calculated from measured chain-elongated products and assumed stoichiometry, not directly measured partner-specific fluxes.

Source Taxon: Clostridium autoethanogenum

@@ -698,13 +703,15 @@

Evidence

Ethanol-Driven Chain Elongation

CROSS_FEEDING -

C. kluyveri consumes ethanol and acetate produced by C. autoethanogenum, enabling formation of butyrate, caproate, butanol, and hexanol from CO or syngas.

+

C. kluyveri uses ethanol and acetate for chain elongation to butyrate and caproate, which can supply C. autoethanogenum for reduction to butanol and hexanol. The 2016 study demonstrated acid formation by C. kluyveri and higher-alcohol formation by acid-supplemented C. autoethanogenum pure cultures. Higher alcohols are therefore coculture products, not products assigned to C. kluyveri alone; this attribution is bounded to the tested conditions.

Source Taxon: Clostridium kluyveri

+

Target Taxon: Clostridium autoethanogenum

+

Metabolites: @@ -788,10 +795,9 @@

Evidence

-

Thermodynamic Ethanol Pull by C. kluyveri

- CROSS_FEEDING +

Proposed thermodynamic ethanol pull by C. kluyveri

-

C. kluyveri removal of ethanol during co-cultivation shifts C. autoethanogenum metabolism toward solventogenesis, improving the electron flow into chain-elongated products.

+

HYPOTHESIZED - ethanol consumption by C. kluyveri lowers its extracellular concentration and thermodynamically favors further ethanol formation by C. autoethanogenum. Chemostat products, reverse-calculated ethanol flux, hydrogen and acetate additions, and the absence of a major uniform central-metabolism transcript response support this interpretation. They do not exclude protein abundance or post-translational regulation. This node represents a proposed feedback effect of product removal, not ethanol donation from C. kluyveri to the acetogen.

Source Taxon: Clostridium kluyveri

@@ -830,8 +836,7 @@

Thermodynamic Ethanol Pull by C. kluyveri

→ Acetogenic CO and Syngas Fermentation -

Continuous ethanol removal by C. kluyveri pulls C. autoethanogenum metabolism toward solventogenesis and improves electron flow from CO or syngas into chain-elongated products. -

+

HYPOTHESIZED - C. kluyveri consumption keeps ethanol low and could favor C. autoethanogenum solventogenesis, supplying further ethanol for chain elongation. Stoichiometric flux estimates and perturbations support this feedback model, but do not uniquely establish thermodynamics as its mediator.

@@ -847,7 +852,7 @@

Evidence

PMID:31792266 - - SUPPORT (IN_VITRO) + - PARTIAL (IN_VITRO)
"shifted its metabolism significantly towards solventogenesis"
@@ -860,13 +865,26 @@

Evidence

PMID:31792266 - - SUPPORT (IN_VITRO) + - PARTIAL (IN_VITRO)
"continuous removal of ethanol by C. kluyveri"
+
  • +
    + + PMID:31792266 + + - PARTIAL (IN_VITRO) +
    + +
    "protein levels or post-translational modifications cannot be ruled out"
    + +
  • + @@ -876,6 +894,25 @@

    Evidence

    +
    +

    Knowledge gaps & discussions (1)

    + +
    +

    + KNOWLEDGE_GAP + OPEN + Does ethanol removal directly mediate the solventogenic shift independently of protein-level regulation? +

    +

    PMID:31792266 combines measured product pools, stoichiometric reverse-calculation, transcriptomics and hydrogen/acetate perturbations. The thermodynamic explanation is supported but not exclusive. Selective ethanol-removal perturbations with partner-resolved flux and protein-level measurements would distinguish it from alternative regulation. PMID:33240469 remains computational support, not a new experimentally demonstrated interaction.

    + +

    Attaches to: ecological_interactions#Acetogenic CO and Syngas Fermentation, ecological_interactions#Ethanol-Driven Chain Elongation, ecological_interactions#Proposed thermodynamic ethanol pull by C. kluyveri

    + + + + +
    + +
    @@ -1403,11 +1440,16 @@

    Evidence

    + var tgtKey = "Clostridium autoethanogenum"; + if (taxonNodeIds[tgtKey]) { + links.push({ source: intId, target: taxonNodeIds[tgtKey] }); + } + })(); (function() { var intId = "interaction:2"; - var intType = "CROSS_FEEDING"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1420,11 +1462,11 @@

    Evidence

    processes.push("fermentation"); - var evidenceCount = 2; + var evidenceCount = 3; nodes.push({ id: intId, - label: "Thermodynamic Ethanol Pull by C. kluyveri", + label: "Proposed thermodynamic ethanol pull by C. kluyveri", type: "interaction", interactionType: intType, metabolites: metabolites, diff --git a/docs/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.html b/docs/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.html index 67efc0480..b1fa09a1c 100644 --- a/docs/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.html +++ b/docs/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.html @@ -585,7 +585,7 @@

    Ecological Interactions

    Ecological interaction network for Clostridium-Caldicellulosiruptor Minimal Medium Coculture - Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction (niche partitioning, colonization facilitation). + Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction.
    @@ -593,13 +593,8 @@

    Ecological Interactions

    Niche partitioning -
    -
    - Colonization facilitation + aria-hidden="true" data-symbol="symbolTriangle2" + data-color="#929caa"> Other
    @@ -608,10 +603,8 @@

    Ecological Interactions

    Reduced-Nutrient Defined Cellulose-Xylan Medium

    - COLONIZATION_FACILITATION
    -

    Nitrogen, sulfur, phosphate, and vitamin loads were reduced into a low-ionic-strength defined minimal medium that supported cellobiose, cellulose, acid-pretreated Populus, and the cellulose/xylan coculture condition used to maintain both thermophilic cellulolytic bacteria. -

    +

    A low-ionic-strength defined medium with reduced nitrogen, sulfur, phosphate and vitamin supplements was developed after nutrient-response experiments. The primary abstract reports cellobiose, cellulose and acid-pretreated Populus fermentation and separately reports coculture maintenance on cellulose/xylan substrates. These statements do not establish that every substrate or nutrient-response experiment used the coculture. Medium development is cultivation context, not demonstrated partner-to-partner colonization facilitation.

    @@ -644,29 +637,7 @@

    Reduced-Nutrient Defined Cellulose-Xylan Medium

    -

    Biological Processes:

    - - - - -
    - Downstream Effects: -
    - → Stable Co-Maintenance On Cellulose And Xylan -

    The reduced defined medium was the chemical setting in which the C. thermocellum and C. bescii populations were maintained together. -

    -
    - -
    @@ -706,10 +677,9 @@

    Evidence

    -

    Stable Co-Maintenance On Cellulose And Xylan

    - COLONIZATION_FACILITATION +

    Observed Co-Maintenance On Cellulose And Xylan

    -

    The two bacterial populations were maintained together in the defined medium when the coculture was supplied with cellulose and xylan, showing compatible coexistence under mixed-polysaccharide conditions.

    +

    Both populations were reported to be maintained in cocultures on substrates containing cellulose and xylan in defined medium with sulfate and basal vitamins. This is an observed co-maintenance endpoint. The accessible exact-system abstract does not resolve the duration, population trajectories or perturbations needed to establish long-term stability, reciprocal benefit, colonization facilitation or a unique maintenance mechanism.

    @@ -738,23 +708,6 @@

    Stable Co-Maintenance On Cellulose And Xylan

    -

    Biological Processes:

    - - @@ -795,9 +748,8 @@

    Evidence

    Thermophilic Plant-Polysaccharide Conversion Capacity

    - NICHE_PARTITIONING
    -

    C. thermocellum provides cellulolytic growth on crystalline cellulose, while C. bescii DSM 6725 has genome-supported capacity to use multiple plant polysaccharides, including cellulose- and xylan-associated responses that make it relevant to mixed lignocellulose substrates.

    +

    Separate member-level evidence supports plant-polysaccharide conversion: C. thermocellum was grown on crystalline cellulose in the nutrient study, and C. bescii DSM 6725 was studied by genome analysis plus experimental transcriptomics and proteomics on polysaccharide substrates. Cellulose-responsive expression and cellulose/xylan-associated proteins are measured results, while functions of some hypothetical proteins remain inferred. These member assays do not demonstrate niche partitioning, interspecies substrate transfer or mediation of coculture maintenance.

    @@ -869,7 +821,7 @@

    Evidence

    PMID:21227922 - - SUPPORT (COMPUTATIONAL) + - SUPPORT (IN_VITRO)
    "overproduced on cellulose or xylan"
    @@ -932,6 +884,25 @@

    Associated Datasets

    +
    +

    Knowledge gaps & discussions (1)

    + +
    +

    + KNOWLEDGE_GAP + OPEN + Which exact-system population measurements and nutrient or substrate perturbations explain co-maintenance? +

    +

    PMID:23306120 is abstract-bounded in this review; its full body was not obtained through the attempted public routes. The abstract reports maintenance, not its duration or an isolated ecological mechanism. PMID:21227922 contains empirical C. bescii molecular responses as well as genomic inference, but does not test this coculture. Full-method access and partner-resolved time courses are needed before claiming nutrient-reduction causality, stability or niche partitioning. The earlier removed capacity-to-maintenance arrow remains absent.

    + +

    Attaches to: ecological_interactions#Reduced-Nutrient Defined Cellulose-Xylan Medium, ecological_interactions#Observed Co-Maintenance On Cellulose And Xylan, ecological_interactions#Thermophilic Plant-Polysaccharide Conversion Capacity

    + + + + +
    + +
    @@ -1401,7 +1372,7 @@

    Evidence

    (function() { var intId = "interaction:0"; - var intType = "COLONIZATION_FACILITATION"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1414,10 +1385,6 @@

    Evidence

    var processes = []; - - processes.push("cellulose catabolic process"); - - var evidenceCount = 2; nodes.push({ @@ -1450,7 +1417,7 @@

    Evidence

    (function() { var intId = "interaction:1"; - var intType = "COLONIZATION_FACILITATION"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1461,17 +1428,11 @@

    Evidence

    var processes = []; - - processes.push("biological process involved in interspecies interaction between organisms"); - - processes.push("cellulose catabolic process"); - - var evidenceCount = 2; nodes.push({ id: intId, - label: "Stable Co-Maintenance On Cellulose And Xylan", + label: "Observed Co-Maintenance On Cellulose And Xylan", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1499,7 +1460,7 @@

    Evidence

    (function() { var intId = "interaction:2"; - var intType = "NICHE_PARTITIONING"; + var intType = "UNKNOWN"; var metabolites = []; diff --git a/docs/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.html b/docs/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.html index dcd16ce4e..862bd1ea5 100644 --- a/docs/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.html +++ b/docs/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.html @@ -583,7 +583,7 @@

    Ecological Interactions

    Ecological interaction network for Clostridium carboxidivorans-Clostridium kluyveri CO Chain-Elongation Coculture - Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction (cross-feeding, niche partitioning). + Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction (cross-feeding).
    @@ -596,8 +596,8 @@

    Ecological Interactions

    Niche partitioning + aria-hidden="true" data-symbol="symbolTriangle2" + data-color="#929caa"> Other
    @@ -608,8 +608,7 @@

    Ecological Interactions

    Acetogen-Chain Elongator Product Coupling

    CROSS_FEEDING -

    C. carboxidivorans provides acetate and ethanol from CO/CO2 gas fermentation, while C. kluyveri uses these C2 products for chain elongation to organic acids. -

    +

    C. carboxidivorans produces acetate and ethanol from CO/CO2 gas fermentation, supplying C. kluyveri chain elongation to butyrate and hexanoate. Exact-pair batch product profiles and the continuous cascade support this cross-feeding model. Restricted C. kluyveri growth at high CO does not mean absence of chain-elongation activity, and C. carboxidivorans can also form C4/C6 products under appropriate conditions.

    Source Taxon: Clostridium carboxidivorans

    @@ -706,8 +705,7 @@

    Evidence

    Organic Acid Reduction to Longer-Chain Alcohols

    CROSS_FEEDING -

    Organic acids formed by C. kluyveri are reduced by C. carboxidivorans to alcohols, increasing butanol and enabling hexanol production relative to C. carboxidivorans monoculture. -

    +

    C. kluyveri-derived organic acids supply C. carboxidivorans for reduction to butanol and hexanol. At pH 6.0 and 800 mbar inlet CO, the 144-hour batch coculture had about three times the final butanol and detectable hexanol relative to its matched acetogen-only control. This is a condition-specific comparison, not universal monoculture incapacity: the cascade study also measured alcohol production with C. carboxidivorans alone. Acid reduction contributes to output alongside de novo alcohol synthesis by the acetogen.

    Source Taxon: Clostridium kluyveri

    @@ -725,8 +723,8 @@

    Organic Acid Reduction to Longer-Chain Alcohols

    class="term-link" target="_blank" rel="noopener noreferrer">CHEBI:17968), hexanoate - (CHEBI:30776), + (CHEBI:17120), 1-butanol (Evidence
    -

    Two-Stage CO Partial Pressure Division of Labor

    - NICHE_PARTITIONING +

    Engineered CO and pH staging of chain elongation and alcohol formation

    -

    In the continuous reactor cascade, lower CO and sulfide supply supported growth and chain elongation in the first reactor, while higher CO in the second reactor supported organic-acid reduction and de novo C2-C6 alcohol synthesis. -

    +

    The engineered continuous cascade used a first reactor at pH 6.0, 100 mbar inlet CO and added sulfide, followed by a second reactor at pH 5.0 and 800 mbar inlet CO. Gas flow and dilution rate also differed. The first stage supported growth and chain elongation; the second supported organic-acid reduction and de novo alcohol synthesis, while C. kluyveri growth was negligible. This is a measured process configuration, not evidence of ecological niche partitioning or an isolated CO-only effect.

    @@ -830,8 +826,7 @@

    Two-Stage CO Partial Pressure Division of Labor

    → Organic Acid Reduction to Longer-Chain Alcohols -

    Partitioning the cascade into lower-CO chain elongation and higher-CO acid-reduction stages favors the C. carboxidivorans reduction of chain-elongated acids into C2-C6 alcohols. -

    +

    The first stage supplies chain-elongated organic acids to the second, whose combined pH-5.0/high-CO conditions support C. carboxidivorans reduction to alcohols. Product balances also indicate de novo alcohol synthesis, so downstream alcohol output is not all explained by reduction of incoming acids; the design does not isolate the contribution of CO from the other changed operating conditions.

    @@ -929,6 +924,25 @@

    Associated Datasets

    +
    +

    Knowledge gaps & discussions (1)

    + +
    +

    + KNOWLEDGE_GAP + OPEN + How do CO, pH and residence time separately control cross-feeding and de novo alcohol synthesis? +

    +

    PMID:37110426 changes several operating conditions between cascade stages. Matched monoculture and coculture products support the process outcomes, but do not isolate each control variable or trace every carbon flux. Its abstract states complete C. kluyveri growth inhibition at 100 mbar CO; Results instead report an 86% maximum-biomass reduction there and complete inhibition at 800 mbar, while chain elongation continues. Keep this source discrepancy and growth/activity distinction explicit. Partner-resolved flux and factorial controls would separate these contributions.

    + +

    Attaches to: ecological_interactions#Acetogen-Chain Elongator Product Coupling, ecological_interactions#Organic Acid Reduction to Longer-Chain Alcohols, ecological_interactions#Engineered CO and pH staging of chain elongation and alcohol formation

    + + + + +
    + +
    @@ -1396,7 +1410,7 @@

    Evidence

    (function() { var intId = "interaction:2"; - var intType = "NICHE_PARTITIONING"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1415,7 +1429,7 @@

    Evidence

    nodes.push({ id: intId, - label: "Two-Stage CO Partial Pressure Division of Labor", + label: "Engineered CO and pH staging of chain elongation and alcohol formation", type: "interaction", interactionType: intType, metabolites: metabolites, diff --git a/history/records/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture/2026-10-05T232412Z-codex-8ac1e9.yaml b/history/records/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture/2026-10-05T232412Z-codex-8ac1e9.yaml new file mode 100644 index 000000000..8e4b2fa6f --- /dev/null +++ b/history/records/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture/2026-10-05T232412Z-codex-8ac1e9.yaml @@ -0,0 +1,28 @@ +history_version: 1 +target: + kind: record + path: kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml + slug: Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture +session: + id: 2026-10-05T232412Z-codex-8ac1e9 + timestamp: '2026-10-05T23:24:12Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1319 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Preserve supported C2 product supply and its existing chain-elongation arrow; distinguish + product pools from inferred partner flux.; Resolve the existing cross-feeding recipient + and acid-versus-alcohol producers using the primary pure-culture comparisons.; Retain + feedback as an explicitly hypothesized mechanism, not reverse ethanol donation or proof + of exclusive thermodynamic regulation. + details: Source-based self-adversarial graph repairs; no new nodes/arrows. reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml diff --git a/history/records/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture/2026-10-05T232412Z-codex-3c1d88.yaml b/history/records/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture/2026-10-05T232412Z-codex-3c1d88.yaml new file mode 100644 index 000000000..f6ec764b6 --- /dev/null +++ b/history/records/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture/2026-10-05T232412Z-codex-3c1d88.yaml @@ -0,0 +1,28 @@ +history_version: 1 +target: + kind: record + path: kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml + slug: Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture +session: + id: 2026-10-05T232412Z-codex-3c1d88 + timestamp: '2026-10-05T23:24:12Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1320 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Retain reduced-medium development as context; remove context-only arrow and unsupported + facilitation/process annotations.; Preserve observed population maintenance with explicit + abstract-only scope, without categorical facilitation or indefinite stability.; Preserve + measured member transcript/protein responses; remove unsupported ecological niche partitioning + and retain the earlier edge removal. + details: Source-based self-adversarial graph repairs; no new nodes/arrows. reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml diff --git a/history/records/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture/2026-10-05T232412Z-codex-96cf43.yaml b/history/records/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture/2026-10-05T232412Z-codex-96cf43.yaml new file mode 100644 index 000000000..23d8eab21 --- /dev/null +++ b/history/records/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture/2026-10-05T232412Z-codex-96cf43.yaml @@ -0,0 +1,28 @@ +history_version: 1 +target: + kind: record + path: kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml + slug: Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture +session: + id: 2026-10-05T232412Z-codex-96cf43 + timestamp: '2026-10-05T23:24:12Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1321 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Retain exact-system supported C2 supply and downstream chain-elongated acid conversion; + distinguish growth from ongoing activity.; Bound batch emergence and retain monoculture + alcohol capacity; correct the existing hexanoate chemical identity using official ChEBI.; + Describe measured engineered staging with covarying pH/CO/flow/residence time; retain + causal substrate supply without ecological niche typing. + details: Source-based self-adversarial graph repairs; no new nodes/arrows. reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml diff --git a/kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml b/kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml index 24324969d..4bfb7eb30 100644 --- a/kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml +++ b/kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml @@ -106,8 +106,10 @@ taxonomy: explanation: Supports the cross-feeding role of C. kluyveri consuming ethanol from the acetogen. ecological_interactions: - name: Acetogenic CO and Syngas Fermentation - description: C. autoethanogenum converts CO or syngas into acetate and ethanol, producing the - substrates that support chain elongation by C. kluyveri. + description: C. autoethanogenum converts CO or syngas to acetate and ethanol that support C. kluyveri chain elongation. + Product profiles and pure-culture comparisons support this cross-feeding model. In the 2019 chemostat study, + partner ethanol production and electron allocation in coculture were reverse-calculated from measured chain-elongated + products and assumed stoichiometry, not directly measured partner-specific fluxes. interaction_type: CROSS_FEEDING scope: PAIRWISE source_taxon: @@ -144,24 +146,28 @@ ecological_interactions: label: fermentation downstream: - target: Ethanol-Driven Chain Elongation - description: > - C. autoethanogenum supplies ethanol and acetate that C. kluyveri consumes - for chain elongation to C4 and C6 products. + description: 'C. autoethanogenum supplies ethanol and acetate that C. kluyveri consumes for chain elongation + to C4 and C6 products. + + ' evidence: - reference: PMID:27042211 supports: SUPPORT evidence_source: IN_VITRO snippet: Acetate and ethanol are main products - explanation: Supports acetate and ethanol as syngas-fermentation products used by the chain - elongation partner. + explanation: Supports the substrate-product relationship; the 2016 primary pure-culture and coculture comparisons + support the partner assignments. - reference: PMID:31792266 supports: SUPPORT evidence_source: IN_VITRO snippet: converted CO to acetate and traces of ethanol - explanation: Supports C. autoethanogenum production of cross-fed substrates from CO. + explanation: The quoted acetate and trace ethanol concentrations describe the monoculture; coculture ethanol + production was reverse-calculated from chain-elongated products. - name: Ethanol-Driven Chain Elongation - description: C. kluyveri consumes ethanol and acetate produced by C. autoethanogenum, enabling - formation of butyrate, caproate, butanol, and hexanol from CO or syngas. + description: C. kluyveri uses ethanol and acetate for chain elongation to butyrate and caproate, which can supply + C. autoethanogenum for reduction to butanol and hexanol. The 2016 study demonstrated acid formation by C. kluyveri + and higher-alcohol formation by acid-supplemented C. autoethanogenum pure cultures. Higher alcohols are therefore + coculture products, not products assigned to C. kluyveri alone; this attribution is bounded to the tested conditions. interaction_type: CROSS_FEEDING scope: PAIRWISE source_taxon: @@ -192,21 +198,31 @@ ecological_interactions: supports: SUPPORT evidence_source: IN_VITRO snippet: converting CO and syngas to a mixture - explanation: Supports conversion of gas substrates into chain-elongated products by the coculture. + explanation: Supports the overall coculture conversion. Primary pure-culture comparisons distinguish acid-forming + C. kluyveri from alcohol-reducing C. autoethanogenum. - reference: PMID:27042211 supports: SUPPORT evidence_source: IN_VITRO snippet: butyrate and caproate - explanation: Supports production of C4 and C6 fatty acids. + explanation: Supports the observed C4/C6 acids; the primary pure-culture comparisons attribute chain elongation + to C. kluyveri. - reference: PMID:27042211 supports: SUPPORT evidence_source: IN_VITRO snippet: Butanol and hexanol were produced - explanation: Supports production of higher alcohols in the coculture. -- name: Thermodynamic Ethanol Pull by C. kluyveri - description: C. kluyveri removal of ethanol during co-cultivation shifts C. autoethanogenum metabolism - toward solventogenesis, improving the electron flow into chain-elongated products. - interaction_type: CROSS_FEEDING + explanation: Supports coculture higher alcohols. The primary acid-supplemented C. autoethanogenum controls, + not C. kluyveri controls, formed these alcohols. + target_taxon: + preferred_term: Clostridium autoethanogenum + term: + id: NCBITaxon:84023 + label: Clostridium autoethanogenum +- name: Proposed thermodynamic ethanol pull by C. kluyveri + description: HYPOTHESIZED - ethanol consumption by C. kluyveri lowers its extracellular concentration and thermodynamically + favors further ethanol formation by C. autoethanogenum. Chemostat products, reverse-calculated ethanol flux, + hydrogen and acetate additions, and the absence of a major uniform central-metabolism transcript response support + this interpretation. They do not exclude protein abundance or post-translational regulation. This node represents + a proposed feedback effect of product removal, not ethanol donation from C. kluyveri to the acetogen. scope: PAIRWISE source_taxon: preferred_term: Clostridium kluyveri @@ -230,22 +246,26 @@ ecological_interactions: label: fermentation downstream: - target: Acetogenic CO and Syngas Fermentation - description: > - Continuous ethanol removal by C. kluyveri pulls C. autoethanogenum - metabolism toward solventogenesis and improves electron flow from CO or - syngas into chain-elongated products. + description: HYPOTHESIZED - C. kluyveri consumption keeps ethanol low and could favor C. autoethanogenum solventogenesis, + supplying further ethanol for chain elongation. Stoichiometric flux estimates and perturbations support this + feedback model, but do not uniquely establish thermodynamics as its mediator. evidence: - reference: PMID:31792266 - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VITRO snippet: shifted its metabolism significantly towards solventogenesis - explanation: Supports a coculture-induced metabolic shift in C. autoethanogenum. + explanation: The metabolic shift is inferred from measured products and chain-elongation stoichiometry; the + thermodynamic mechanism is the authors' supported interpretation, not an exclusive demonstrated cause. - reference: PMID:31792266 - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VITRO snippet: continuous removal of ethanol by C. kluyveri - explanation: Supports the inferred thermodynamic pull mechanism caused by C. kluyveri ethanol - consumption. + explanation: Supports the proposed product-removal feedback, not reverse ethanol cross-feeding to C. autoethanogenum. + - reference: PMID:31792266 + snippet: protein levels or post-translational modifications cannot be ruled out + explanation: The primary Discussion explicitly retains these alternative explanations for the metabolic shift. + evidence_source: IN_VITRO + supports: PARTIAL cultivation_setup: - cultivation_mode: CHEMOSTAT system_type: STIRRED_TANK_BIOREACTOR @@ -532,3 +552,28 @@ rare_earth_elements_present: [] metal_relevance: NOT_APPLICABLE metal_notes: No metal or rare earth element processing role is curated for this syngas fermentation coculture. +discussions: +- discussion_id: autoethanogenum_kluyveri_ethanol_feedback_mediation + prompt: Does ethanol removal directly mediate the solventogenic shift independently of protein-level regulation? + kind: KNOWLEDGE_GAP + status: OPEN + attaches_to: + - ecological_interactions#Acetogenic CO and Syngas Fermentation + - ecological_interactions#Ethanol-Driven Chain Elongation + - ecological_interactions#Proposed thermodynamic ethanol pull by C. kluyveri + rationale: PMID:31792266 combines measured product pools, stoichiometric reverse-calculation, transcriptomics + and hydrogen/acetate perturbations. The thermodynamic explanation is supported but not exclusive. Selective + ethanol-removal perturbations with partner-resolved flux and protein-level measurements would distinguish it + from alternative regulation. PMID:33240469 remains computational support, not a new experimentally demonstrated + interaction. + posed_by: codex + posed_date: '2026-10-05' +curation_history: +- timestamp: '2026-10-05T23:24:11Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Preserve supported C2 product supply and its existing chain-elongation arrow; distinguish product pools + from inferred partner flux.; Resolve the existing cross-feeding recipient and acid-versus-alcohol producers + using the primary pure-culture comparisons.; Retain feedback as an explicitly hypothesized mechanism, not reverse + ethanol donation or proof of exclusive thermodynamic regulation. Issue #1319; reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml' + llm_assisted: true diff --git a/kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml b/kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml index 7ad9212ef..8b5c5d0c6 100644 --- a/kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml +++ b/kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml @@ -207,12 +207,11 @@ related_ingredients: explanation: Anchors ethanol as a measured fermentation product in the study. ecological_interactions: - name: Reduced-Nutrient Defined Cellulose-Xylan Medium - description: > - Nitrogen, sulfur, phosphate, and vitamin loads were reduced into a - low-ionic-strength defined minimal medium that supported cellobiose, - cellulose, acid-pretreated Populus, and the cellulose/xylan coculture - condition used to maintain both thermophilic cellulolytic bacteria. - interaction_type: COLONIZATION_FACILITATION + description: A low-ionic-strength defined medium with reduced nitrogen, sulfur, phosphate and vitamin supplements + was developed after nutrient-response experiments. The primary abstract reports cellobiose, cellulose and acid-pretreated + Populus fermentation and separately reports coculture maintenance on cellulose/xylan substrates. These statements + do not establish that every substrate or nutrient-response experiment used the coculture. Medium development + is cultivation context, not demonstrated partner-to-partner colonization facilitation. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Clostridium thermocellum ATCC 27405 @@ -236,37 +235,26 @@ ecological_interactions: term: id: CHEBI:16189 label: sulfate - biological_processes: - - preferred_term: cellulose catabolic process - term: - id: GO:0030245 - label: cellulose catabolic process - downstream: - - target: Stable Co-Maintenance On Cellulose And Xylan - description: > - The reduced defined medium was the chemical setting in which the - C. thermocellum and C. bescii populations were maintained together. evidence: - reference: PMID:23306120 supports: SUPPORT evidence_source: IN_VITRO - snippet: > - From these results, a low ionic strength, defined minimal nutrient medium - with decreased nitrogen, sulfur, phosphate and vitamin supplements was - developed - explanation: > - Supports development of the reduced-nutrient defined medium. + snippet: 'From these results, a low ionic strength, defined minimal nutrient medium with decreased nitrogen, + sulfur, phosphate and vitamin supplements was developed + + ' + explanation: Supports medium development; it does not establish an ecological facilitation mechanism or a nutrient-reduction + intervention causing coexistence. - reference: PMID:23306120 supports: SUPPORT evidence_source: IN_VITRO snippet: fermentation of cellobiose, cellulose and acid-pretreated Populus - explanation: > - Identifies the cellulosic substrates fermented in the defined medium. -- name: Stable Co-Maintenance On Cellulose And Xylan - description: The two bacterial populations were maintained together in the - defined medium when the coculture was supplied with cellulose and xylan, - showing compatible coexistence under mixed-polysaccharide conditions. - interaction_type: COLONIZATION_FACILITATION + explanation: Lists substrates for medium evaluation, without assigning every test to the coculture. +- name: Observed Co-Maintenance On Cellulose And Xylan + description: Both populations were reported to be maintained in cocultures on substrates containing cellulose + and xylan in defined medium with sulfate and basal vitamins. This is an observed co-maintenance endpoint. The + accessible exact-system abstract does not resolve the duration, population trajectories or perturbations needed + to establish long-term stability, reciprocal benefit, colonization facilitation or a unique maintenance mechanism. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Clostridium thermocellum ATCC 27405 @@ -286,32 +274,24 @@ ecological_interactions: term: id: CHEBI:37166 label: xylan - biological_processes: - - preferred_term: biological process involved in interspecies interaction between organisms - term: - id: GO:0044419 - label: biological process involved in interspecies interaction between organisms - - preferred_term: cellulose catabolic process - term: - id: GO:0030245 - label: cellulose catabolic process evidence: - reference: PMID:23306120 supports: SUPPORT evidence_source: IN_VITRO snippet: Both bacterial populations were maintained in co-cultures - explanation: Supports coexistence of both populations in the exact two-member coculture. + explanation: Direct abstract support for the co-maintenance endpoint, not an unbounded stability or fitness-sign + claim. - reference: PMID:23306120 supports: SUPPORT evidence_source: IN_VITRO snippet: substrates containing cellulose and xylan explanation: Supports the mixed-polysaccharide substrate context for coculture maintenance. - name: Thermophilic Plant-Polysaccharide Conversion Capacity - description: C. thermocellum provides cellulolytic growth on crystalline - cellulose, while C. bescii DSM 6725 has genome-supported capacity to use - multiple plant polysaccharides, including cellulose- and xylan-associated - responses that make it relevant to mixed lignocellulose substrates. - interaction_type: NICHE_PARTITIONING + description: 'Separate member-level evidence supports plant-polysaccharide conversion: C. thermocellum was grown + on crystalline cellulose in the nutrient study, and C. bescii DSM 6725 was studied by genome analysis plus experimental + transcriptomics and proteomics on polysaccharide substrates. Cellulose-responsive expression and cellulose/xylan-associated + proteins are measured results, while functions of some hypothetical proteins remain inferred. These member assays + do not demonstrate niche partitioning, interspecies substrate transfer or mediation of coculture maintenance.' scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Caldicellulosiruptor bescii DSM 6725 @@ -336,21 +316,25 @@ ecological_interactions: term: id: GO:0030245 label: cellulose catabolic process + notes: Member-level substrate-conversion context, not evidence for a causal division of labor in the coculture. - preferred_term: xylan catabolic process term: id: GO:0045493 label: xylan catabolic process + notes: Member-level substrate-conversion context, not evidence for a causal division of labor in the coculture. evidence: - reference: PMID:23306120 supports: SUPPORT evidence_source: IN_VITRO snippet: C. thermocellum was grown on crystalline cellulose - explanation: Supports the cellulose-growth role for C. thermocellum in the same defined-medium study. + explanation: Supports the C. thermocellum cellulose-growth assay, not partner-resolved flux or division of labor + in coculture. - reference: PMID:21227922 supports: SUPPORT - evidence_source: COMPUTATIONAL + evidence_source: IN_VITRO snippet: overproduced on cellulose or xylan - explanation: Supports C. bescii molecular responses to cellulose and xylan relevant to the coculture substrates. + explanation: The quoted overproduction is an experimental protein-response observation in C. bescii member cultures; + proposed protein functions and an effect on coculture maintenance remain unproven. environmental_factors: - name: Reduced-nutrient defined medium value: Low-ionic-strength defined medium with decreased nitrogen, sulfur, @@ -487,8 +471,30 @@ curation_history: - timestamp: '2026-10-02T06:15:13Z' curator: codex action: REVIEW_CAUSAL_GRAPH - changes: Removed the thermophilic plant-polysaccharide capacity to stable - co-maintenance edge because its support joined a separate C. bescii genome - capability to the cellulose/xylan assay rather than a tested causal - interaction. + changes: Removed the thermophilic plant-polysaccharide capacity to stable co-maintenance edge because its support + joined a separate C. bescii genome capability to the cellulose/xylan assay rather than a tested causal interaction. + llm_assisted: true +- timestamp: '2026-10-05T23:24:12Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Retain reduced-medium development as context; remove context-only arrow and unsupported facilitation/process + annotations.; Preserve observed population maintenance with explicit abstract-only scope, without categorical + facilitation or indefinite stability.; Preserve measured member transcript/protein responses; remove unsupported + ecological niche partitioning and retain the earlier edge removal. Issue #1320; reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml' llm_assisted: true +discussions: +- discussion_id: minimal_medium_coculture_maintenance_mechanism + prompt: Which exact-system population measurements and nutrient or substrate perturbations explain co-maintenance? + kind: KNOWLEDGE_GAP + status: OPEN + attaches_to: + - ecological_interactions#Reduced-Nutrient Defined Cellulose-Xylan Medium + - ecological_interactions#Observed Co-Maintenance On Cellulose And Xylan + - ecological_interactions#Thermophilic Plant-Polysaccharide Conversion Capacity + rationale: PMID:23306120 is abstract-bounded in this review; its full body was not obtained through the attempted + public routes. The abstract reports maintenance, not its duration or an isolated ecological mechanism. PMID:21227922 + contains empirical C. bescii molecular responses as well as genomic inference, but does not test this coculture. + Full-method access and partner-resolved time courses are needed before claiming nutrient-reduction causality, + stability or niche partitioning. The earlier removed capacity-to-maintenance arrow remains absent. + posed_by: codex + posed_date: '2026-10-05' diff --git a/kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml b/kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml index a35a4bf5a..20d272ae5 100644 --- a/kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml +++ b/kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml @@ -206,10 +206,10 @@ related_ingredients: explanation: Names sulfide as a supplement improving autotrophic growth and ethanol formation. ecological_interactions: - name: Acetogen-Chain Elongator Product Coupling - description: > - C. carboxidivorans provides acetate and ethanol from CO/CO2 gas - fermentation, while C. kluyveri uses these C2 products for chain elongation - to organic acids. + description: C. carboxidivorans produces acetate and ethanol from CO/CO2 gas fermentation, supplying C. kluyveri + chain elongation to butyrate and hexanoate. Exact-pair batch product profiles and the continuous cascade support + this cross-feeding model. Restricted C. kluyveri growth at high CO does not mean absence of chain-elongation + activity, and C. carboxidivorans can also form C4/C6 products under appropriate conditions. interaction_type: CROSS_FEEDING scope: PAIRWISE source_taxon: @@ -246,26 +246,28 @@ ecological_interactions: label: fermentation downstream: - target: Organic Acid Reduction to Longer-Chain Alcohols - description: > - C. carboxidivorans C2-product fermentation feeds C. kluyveri chain - elongation, whose organic acid products are then reduced back by - C. carboxidivorans to longer-chain alcohols. + description: 'C. carboxidivorans C2-product fermentation feeds C. kluyveri chain elongation, whose organic acid + products are then reduced back by C. carboxidivorans to longer-chain alcohols. + + ' evidence: - reference: PMID:34669248 supports: SUPPORT evidence_source: IN_VITRO snippet: Syngas fermentation with acetogens is known to produce mainly acetate and ethanol efficiently - explanation: Supports C2 product formation by the acetogenic side of the coculture. + explanation: The snippet states the general acetogen product pattern; the exact-pair primary Results and matched + monoculture profiles support the curated supply relationship. - reference: PMID:37110426 supports: SUPPORT evidence_source: IN_VITRO snippet: growth and chain elongation in the first bioreactor explanation: Supports chain elongation as a reactor-stage process in the C. carboxidivorans/C. kluyveri system. - name: Organic Acid Reduction to Longer-Chain Alcohols - description: > - Organic acids formed by C. kluyveri are reduced by C. carboxidivorans to - alcohols, increasing butanol and enabling hexanol production relative to - C. carboxidivorans monoculture. + description: 'C. kluyveri-derived organic acids supply C. carboxidivorans for reduction to butanol and hexanol. + At pH 6.0 and 800 mbar inlet CO, the 144-hour batch coculture had about three times the final butanol and detectable + hexanol relative to its matched acetogen-only control. This is a condition-specific comparison, not universal + monoculture incapacity: the cascade study also measured alcohol production with C. carboxidivorans alone. Acid + reduction contributes to output alongside de novo alcohol synthesis by the acetogen.' interaction_type: CROSS_FEEDING scope: PAIRWISE source_taxon: @@ -285,8 +287,10 @@ ecological_interactions: label: butyrate - preferred_term: hexanoate term: - id: CHEBI:30776 - label: hexanoic acid + id: CHEBI:17120 + label: hexanoate + notes: Corrected to the anion named in the primary product measurements; CHEBI:30776 is the distinct conjugate + acid. This annotation does not claim a direct speciation assay. - preferred_term: 1-butanol term: id: CHEBI:28885 @@ -304,20 +308,21 @@ ecological_interactions: - reference: PMID:34669248 supports: SUPPORT evidence_source: IN_VITRO - snippet: Organic acids produced by C. kluyveri were reduced by C. carboxidivorans to the corresponding alcohols butanol and hexanol + snippet: Organic acids produced by C. kluyveri were reduced by C. carboxidivorans to the corresponding alcohols + butanol and hexanol explanation: Supports the central cross-feeding mechanism from chain-elongated acids to alcohols. - reference: PMID:34669248 supports: SUPPORT evidence_source: IN_VITRO snippet: threefold increase in final butanol concentration and enabled hexanol production - explanation: Supports increased longer-chain alcohol production in coculture. -- name: Two-Stage CO Partial Pressure Division of Labor - description: > - In the continuous reactor cascade, lower CO and sulfide supply supported - growth and chain elongation in the first reactor, while higher CO in the - second reactor supported organic-acid reduction and de novo C2-C6 alcohol - synthesis. - interaction_type: NICHE_PARTITIONING + explanation: Supports the 800-mbar, pH-6.0 batch comparison after 144 hours, not a universal inability of the + acetogen to produce hexanol. +- name: Engineered CO and pH staging of chain elongation and alcohol formation + description: The engineered continuous cascade used a first reactor at pH 6.0, 100 mbar inlet CO and added sulfide, + followed by a second reactor at pH 5.0 and 800 mbar inlet CO. Gas flow and dilution rate also differed. The + first stage supported growth and chain elongation; the second supported organic-acid reduction and de novo alcohol + synthesis, while C. kluyveri growth was negligible. This is a measured process configuration, not evidence of + ecological niche partitioning or an isolated CO-only effect. scope: COMMUNITY_LEVEL metabolites: - preferred_term: carbon monoxide @@ -338,21 +343,23 @@ ecological_interactions: label: hexan-1-ol downstream: - target: Organic Acid Reduction to Longer-Chain Alcohols - description: > - Partitioning the cascade into lower-CO chain elongation and higher-CO - acid-reduction stages favors the C. carboxidivorans reduction of - chain-elongated acids into C2-C6 alcohols. + description: The first stage supplies chain-elongated organic acids to the second, whose combined pH-5.0/high-CO + conditions support C. carboxidivorans reduction to alcohols. Product balances also indicate de novo alcohol + synthesis, so downstream alcohol output is not all explained by reduction of incoming acids; the design does + not isolate the contribution of CO from the other changed operating conditions. evidence: - reference: PMID:37110426 supports: SUPPORT evidence_source: IN_VITRO snippet: 100 mbar CO and additional sulfide supply enabled growth and chain elongation in the first bioreactor - explanation: Supports low-CO, sulfide-supported chain elongation in the first reactor. + explanation: Supports the first-stage outcome. Primary Methods additionally specify pH 6.0, gas flow and dilution + rate; low CO is not the only condition. - reference: PMID:37110426 supports: SUPPORT evidence_source: IN_VITRO snippet: 800 mbar CO resulted in an efficient reduction of organic acids and de-novo synthesis of C2-C6 alcohols - explanation: Supports the high-CO second reactor role in organic-acid reduction and alcohol synthesis. + explanation: Supports the second-stage outcome with pH 5.0 and changed flow/residence conditions. Product balances + distinguish incoming-acid reduction from additional de novo alcohol synthesis. environmental_factors: - name: CO partial pressure value: 100 mbar and 800 mbar CO process zones @@ -477,3 +484,29 @@ metal_relevance: NOT_APPLICABLE metal_notes: > No metal or rare earth element processing role is curated for this CO-fed clostridial chain-elongation coculture. +discussions: +- discussion_id: carboxidivorans_kluyveri_stage_controls_and_flux + prompt: How do CO, pH and residence time separately control cross-feeding and de novo alcohol synthesis? + kind: KNOWLEDGE_GAP + status: OPEN + attaches_to: + - ecological_interactions#Acetogen-Chain Elongator Product Coupling + - ecological_interactions#Organic Acid Reduction to Longer-Chain Alcohols + - ecological_interactions#Engineered CO and pH staging of chain elongation and alcohol formation + rationale: PMID:37110426 changes several operating conditions between cascade stages. Matched monoculture and + coculture products support the process outcomes, but do not isolate each control variable or trace every carbon + flux. Its abstract states complete C. kluyveri growth inhibition at 100 mbar CO; Results instead report an 86% + maximum-biomass reduction there and complete inhibition at 800 mbar, while chain elongation continues. Keep + this source discrepancy and growth/activity distinction explicit. Partner-resolved flux and factorial controls + would separate these contributions. + posed_by: codex + posed_date: '2026-10-05' +curation_history: +- timestamp: '2026-10-05T23:24:12Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Retain exact-system supported C2 supply and downstream chain-elongated acid conversion; distinguish + growth from ongoing activity.; Bound batch emergence and retain monoculture alcohol capacity; correct the existing + hexanoate chemical identity using official ChEBI.; Describe measured engineered staging with covarying pH/CO/flow/residence + time; retain causal substrate supply without ecological niche typing. Issue #1321; reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml' + llm_assisted: true diff --git a/reports/causal_graph_review/adversarial-review-20261005-batch18.yaml b/reports/causal_graph_review/adversarial-review-20261005-batch18.yaml new file mode 100644 index 000000000..e39a168b7 --- /dev/null +++ b/reports/causal_graph_review/adversarial-review-20261005-batch18.yaml @@ -0,0 +1,87 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: f76f44c1d6747017fd2e2d459aa021e9cf5787ec +scope: +- kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml +- kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml +- kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml +findings: +- issue: 1319 + severity: P2 + finding: Feedback certainty and chain-elongation producer/recipient attribution. + disposition: addressed_and_locally_verified +- issue: 1320 + severity: P2 + finding: Context-only medium arrow, unsupported ecological types and computational-only characterization of measured + member responses. + disposition: addressed_and_locally_verified +- issue: 1321 + severity: P2 + finding: Reactor-stage covariates, condition-specific monoculture comparison and acid/anion grounding mismatch. + disposition: addressed_and_locally_verified +open_nongraph_followups: +- issue: 1322 + disposition: intentionally_not_closed_by_graph_only_patch + scope: Top-level product attribution, abundance, growth media, member roles and non-graph evidence provenance. +adversarial_checks: +- Read each whole record and all original graph claims before edits; every retained node and original arrow is accounted + for in the ledger. +- Do not convert stoichiometrically reverse-calculated ethanol flux into directly measured partner flux. +- Preserve supported acid-forming and alcohol-reducing partner assignments from pure-culture comparisons; resolve + the existing recipient without adding graph structure. +- Retain thermodynamic feedback as a supported hypothesis with protein abundance/post-translational alternatives, + not reverse ethanol donation. +- Remove only the medium context arrow; preserve all three thermophile observations and the earlier removal of capacity-to-maintenance. +- Treat the exact-system medium paper as abstract-bounded and record the differing ORNL abstract wording; do not + invent duration or population trajectories. +- Preserve empirical C. bescii transcript/protein responses, while distinguishing inferred protein function from + measured expression and from coculture causality. +- Retain both supported carboxidivorans product-conversion arrows without treating reactor staging as ecological + niche partitioning. +- Name pH, CO and covarying flow/residence conditions; distinguish incoming-acid reduction from de novo alcohol + synthesis. +- Bound batch hexanol emergence to the matched control and retain documented monoculture alcohol capacity. +- Record the 100-versus-800-mbar discrepancy between cascade abstract and Results, and distinguish growth inhibition + from continued chain elongation. +- Verify hexanoate CHEBI:17120 using official ChEBI; do not equate it with protonated hexanoic acid CHEBI:30776 + or assert measured speciation. +- Preserve unrelated raw top-level YAML blocks, all seven reference caches, existing histories and registry/census + tests. +- Four primary main bodies read; C. bescii Results selectively read, model abstract/Introduction only. No visual + image or supplement inspection claimed. +- No new nodes/arrows, Edison run or spend; source-based self-adversarial review is not independent approval or + corpus completion. +verification: + status: local_validation_complete + checks: 30 + records: 460 + nodes: 1474 + edges: 716 + review_status_counts: + needs_research: 3 + pending: 354 + reviewed: 103 + structural_defects: 0 + network_errors: 0 + network_warnings: 25 + new_network_warnings: 0 + unchanged_raw_blocks: 50 + snippet_counts: + MATCH: 91 + RENDERING: 0 + ASSEMBLED: 0 + WEAK: 0 + MISMATCH: 0 + NOCONTENT: 0 + published_description_coverage: + pages: 456 + node_descriptions: 1460 + edge_descriptions: 708 + render_determinism: passed + regressions: 243 passed in 170.92s (0:02:50) + rights: 3 passed in 1.56s + rights_import_root_verified: true + caches_unchanged: true + primary_artifact_hashes_rechecked: true + participant_connectivity_and_gtdb_census_tests_unchanged: true diff --git a/reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml b/reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml new file mode 100644 index 000000000..21e5baf81 --- /dev/null +++ b/reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml @@ -0,0 +1,299 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: f76f44c1d6747017fd2e2d459aa021e9cf5787ec +issues: +- 1319 +- 1320 +- 1321 +open_nongraph_followups: +- 1322 +issue_deduplication: + all_state_issue_titles_bodies: 661 + ignored_hidden_local_files_included: true + comments_exhaustive: false + related_closed_issue: 1270 + related_issue_scope: Different thermophile records 000179 and 000185; not reopened. +reference_cache_original_hashes: + references_cache/PMID_27042211.md: d7b29431d7d4bccc911b697a99002a5c816da94a46ebed9c47583fe9c01bd579 + references_cache/PMID_31792266.md: 8c07edb6fd5ae6091af0b34b42b6a4a0f7553b3c1849c60a0eb96c3a58ff179d + references_cache/PMID_33240469.md: f00b5583c3994f428c3e9f56ae9008bc094b1faa4ad8a7a8356a91e98a0743e9 + references_cache/PMID_23306120.md: 4dd1df08abdab3eb7b660c9815208370d12492069c3ac15f1c9e5c36e603cb37 + references_cache/PMID_21227922.md: ca8f0938652c7cc2de47580ea63becd77f2e5af4610e3fd20d21bbc80543393e + references_cache/PMID_34669248.md: 198790e7d9ce5552b88eaa2ae815e8af09cc8fa3cdab0736f2d1e78d3fce0f35 + references_cache/PMID_37110426.md: dc71f42697cd1a44f604d697685f557165eae3f8597e754cf8059b148744c40e +grounding_review: + url: https://www.ebi.ac.uk/chebi/CHEBI:17120 + finding: Official ChEBI confirms hexanoate CHEBI:17120 is conjugate base of hexanoic acid CHEBI:30776; net charge + -1. +limitations: +- No new nodes/arrows and no Edison spend. Three exact node renames, one context-only arrow removed. +- Four primary main bodies read; C. bescii molecular Results reviewed selectively, exact-system minimal-medium paper + abstract only, model abstract/Introduction only. +- Images and supplements not visually inspected. Primary XML remains outside git and reference caches remain unchanged. +- 'Separate non-graph followup #1322 remains open; unrelated top-level raw YAML blocks preserved.' +- Self-adversarial review is not independent approval or corpus completion. Protected checks and queue remain required. +records: +- path: kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml + id: CommunityMech:000172 + original_sha256: 5cb2019adbc5c0c390e928ea64b88219106a9c7892c6c107930c8f17d2a0521d + record_sha256: 21ed35857776bcd6e203c18ade2249e16cc8abb31fea0c5bc169df9b394c8861 + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml + scope: Whole record and all three original nodes plus all original arrows, using the source scopes below. + summary: Preserve supported C2 product supply and its existing chain-elongation arrow; distinguish product pools + from inferred partner flux.; Resolve the existing cross-feeding recipient and acid-versus-alcohol producers + using the primary pure-culture comparisons.; Retain feedback as an explicitly hypothesized mechanism, not reverse + ethanol donation or proof of exclusive thermodynamic regulation. + renamed_nodes: + Thermodynamic Ethanol Pull by C. kluyveri: Proposed thermodynamic ethanol pull by C. kluyveri + node_decisions: + - node: Acetogenic CO and Syngas Fermentation + rationale: Preserve supported C2 product supply and its existing chain-elongation arrow; distinguish product + pools from inferred partner flux. + - node: Ethanol-Driven Chain Elongation + rationale: Resolve the existing cross-feeding recipient and acid-versus-alcohol producers using the primary + pure-culture comparisons. + - node: Proposed thermodynamic ethanol pull by C. kluyveri + rationale: Retain feedback as an explicitly hypothesized mechanism, not reverse ethanol donation or proof of + exclusive thermodynamic regulation. + edges_before: + - source: Acetogenic CO and Syngas Fermentation + target: Ethanol-Driven Chain Elongation + description: 'C. autoethanogenum supplies ethanol and acetate that C. kluyveri consumes for chain elongation + to C4 and C6 products. + + ' + - source: Thermodynamic Ethanol Pull by C. kluyveri + target: Acetogenic CO and Syngas Fermentation + description: 'Continuous ethanol removal by C. kluyveri pulls C. autoethanogenum metabolism toward solventogenesis + and improves electron flow from CO or syngas into chain-elongated products. + + ' + edges_after: + - source: Acetogenic CO and Syngas Fermentation + target: Ethanol-Driven Chain Elongation + description: 'C. autoethanogenum supplies ethanol and acetate that C. kluyveri consumes for chain elongation + to C4 and C6 products. + + ' + - source: Proposed thermodynamic ethanol pull by C. kluyveri + target: Acetogenic CO and Syngas Fermentation + description: HYPOTHESIZED - C. kluyveri consumption keeps ethanol low and could favor C. autoethanogenum solventogenesis, + supplying further ethanol for chain elongation. Stoichiometric flux estimates and perturbations support this + feedback model, but do not uniquely establish thermodynamics as its mediator. + retained_edge_decisions: + - source: Acetogenic CO and Syngas Fermentation + target: Ethanol-Driven Chain Elongation + rationale: 'C. autoethanogenum supplies ethanol and acetate that C. kluyveri consumes for chain elongation to + C4 and C6 products. + + ' + - source: Proposed thermodynamic ethanol pull by C. kluyveri + target: Acetogenic CO and Syngas Fermentation + rationale: HYPOTHESIZED - C. kluyveri consumption keeps ethanol low and could favor C. autoethanogenum solventogenesis, + supplying further ethanol for chain elongation. Stoichiometric flux estimates and perturbations support this + feedback model, but do not uniquely establish thermodynamics as its mediator. + removed_edge_decisions: [] + references: + - PMID:27042211 + - PMID:31792266 + - PMID:33240469 + issues: + - 1319 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + source_review: + PMID:27042211: + pmcid: PMC4818930 + url: https://europepmc.org/articles/PMC4818930 + path: /private/tmp/communitymech-batch18/PMC4818930.xml + sha256: 226da50f2270fe2bcbfc1c9fd73687b5f5108c5a08539ef2103ee5875ccb4000 + license: CC BY 4.0 + reviewed_scope: Full main body, Methods, three tables and seven figure captions; no visual image inspection. + stored_in_repository: false + PMID:31792266: + pmcid: PMC6889307 + url: https://europepmc.org/articles/PMC6889307 + path: /private/tmp/communitymech-batch18/PMC6889307.xml + sha256: abfeac91e2b4dc2de336bdd4eafef454d65b9b1aadad23e2f67c28df4130c59e + license: CC BY 4.0 + reviewed_scope: Full main body, Methods, three tables and four main figure captions; supplements and images + not inspected. + stored_in_repository: false + PMID:33240469: + url: https://pubmed.ncbi.nlm.nih.gov/33240469/ + reviewed_scope: Fresh abstract and cached Introduction only. Full XML downloaded but not read; computational + model predictions not promoted to experimental graph findings. + history_files: + - history/records/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture/2026-10-05T232412Z-codex-8ac1e9.yaml +- path: kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml + id: CommunityMech:000193 + original_sha256: 912a98e500fa28504035f915fd6044c6ed55cbf5ab356932b5d28b2a135f958a + record_sha256: d4d2ba27f20dc52220bd8e443288c91b3b7e7a0606f8c2cc4855d63e48423e20 + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml + scope: Whole record and all three original nodes plus all original arrows, using the source scopes below. + summary: Retain reduced-medium development as context; remove context-only arrow and unsupported facilitation/process + annotations.; Preserve observed population maintenance with explicit abstract-only scope, without categorical + facilitation or indefinite stability.; Preserve measured member transcript/protein responses; remove unsupported + ecological niche partitioning and retain the earlier edge removal. + renamed_nodes: + Stable Co-Maintenance On Cellulose And Xylan: Observed Co-Maintenance On Cellulose And Xylan + node_decisions: + - node: Reduced-Nutrient Defined Cellulose-Xylan Medium + rationale: Retain reduced-medium development as context; remove context-only arrow and unsupported facilitation/process + annotations. + - node: Observed Co-Maintenance On Cellulose And Xylan + rationale: Preserve observed population maintenance with explicit abstract-only scope, without categorical facilitation + or indefinite stability. + - node: Thermophilic Plant-Polysaccharide Conversion Capacity + rationale: Preserve measured member transcript/protein responses; remove unsupported ecological niche partitioning + and retain the earlier edge removal. + edges_before: + - source: Reduced-Nutrient Defined Cellulose-Xylan Medium + target: Stable Co-Maintenance On Cellulose And Xylan + description: 'The reduced defined medium was the chemical setting in which the C. thermocellum and C. bescii + populations were maintained together. + + ' + edges_after: [] + retained_edge_decisions: [] + removed_edge_decisions: + - source: Reduced-Nutrient Defined Cellulose-Xylan Medium + target: Stable Co-Maintenance On Cellulose And Xylan + description: 'The reduced defined medium was the chemical setting in which the C. thermocellum and C. bescii + populations were maintained together. + + ' + rationale: Cultivation setting alone is not a source-backed causal ecological link. + references: + - PMID:23306120 + - PMID:21227922 + issues: + - 1320 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + source_review: + PMID:23306120: + url: https://pubmed.ncbi.nlm.nih.gov/23306120/ + reviewed_scope: Fresh primary abstract and two ORNL bibliographic abstracts only; no PMCID in fresh Europe + PMC metadata, publisher DOI route inaccessible via browser tool. Public search and ORNL pages did not supply + a main-body copy. This is an access-attempt limit, not a claim that no copy exists. + abstract_discrepancy: ORNL www abstract says xylan or hemicellulose; PubMed and ORNL impact record say cellulose + and xylan. Curated endpoint follows PubMed; full Methods unresolved. + PMID:21227922: + pmcid: PMC3082886 + url: https://europepmc.org/articles/PMC3082886 + path: /private/tmp/communitymech-batch18/PMC3082886.xml + sha256: de213fb6c339ace1781fec87045f99ce24d23cf20fcf50e46b9e52312fc0b8f5 + license: CC BY-NC 2.5 + reviewed_scope: Abstract, Introduction, Methods, proteomic/transcriptomic Results subsection and Conclusions + read; remaining Results, supplements and images not reviewed. + stored_in_repository: false + history_files: + - history/records/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture/2026-10-05T232412Z-codex-3c1d88.yaml +- path: kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml + id: CommunityMech:000266 + original_sha256: 94b7ab8725dbf71b7bf54036ab32f1d26ec40bfc01e1c8ce4ac947e78b07183e + record_sha256: dfc0feb9084b682e6d5f9dfc9529d9ae7f146e31371d63c63960ffe6a3fd391a + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml + scope: Whole record and all three original nodes plus all original arrows, using the source scopes below. + summary: Retain exact-system supported C2 supply and downstream chain-elongated acid conversion; distinguish growth + from ongoing activity.; Bound batch emergence and retain monoculture alcohol capacity; correct the existing + hexanoate chemical identity using official ChEBI.; Describe measured engineered staging with covarying pH/CO/flow/residence + time; retain causal substrate supply without ecological niche typing. + renamed_nodes: + Two-Stage CO Partial Pressure Division of Labor: Engineered CO and pH staging of chain elongation and alcohol + formation + node_decisions: + - node: Acetogen-Chain Elongator Product Coupling + rationale: Retain exact-system supported C2 supply and downstream chain-elongated acid conversion; distinguish + growth from ongoing activity. + - node: Organic Acid Reduction to Longer-Chain Alcohols + rationale: Bound batch emergence and retain monoculture alcohol capacity; correct the existing hexanoate chemical + identity using official ChEBI. + - node: Engineered CO and pH staging of chain elongation and alcohol formation + rationale: Describe measured engineered staging with covarying pH/CO/flow/residence time; retain causal substrate + supply without ecological niche typing. + edges_before: + - source: Acetogen-Chain Elongator Product Coupling + target: Organic Acid Reduction to Longer-Chain Alcohols + description: 'C. carboxidivorans C2-product fermentation feeds C. kluyveri chain elongation, whose organic acid + products are then reduced back by C. carboxidivorans to longer-chain alcohols. + + ' + - source: Two-Stage CO Partial Pressure Division of Labor + target: Organic Acid Reduction to Longer-Chain Alcohols + description: 'Partitioning the cascade into lower-CO chain elongation and higher-CO acid-reduction stages favors + the C. carboxidivorans reduction of chain-elongated acids into C2-C6 alcohols. + + ' + edges_after: + - source: Acetogen-Chain Elongator Product Coupling + target: Organic Acid Reduction to Longer-Chain Alcohols + description: 'C. carboxidivorans C2-product fermentation feeds C. kluyveri chain elongation, whose organic acid + products are then reduced back by C. carboxidivorans to longer-chain alcohols. + + ' + - source: Engineered CO and pH staging of chain elongation and alcohol formation + target: Organic Acid Reduction to Longer-Chain Alcohols + description: The first stage supplies chain-elongated organic acids to the second, whose combined pH-5.0/high-CO + conditions support C. carboxidivorans reduction to alcohols. Product balances also indicate de novo alcohol + synthesis, so downstream alcohol output is not all explained by reduction of incoming acids; the design does + not isolate the contribution of CO from the other changed operating conditions. + retained_edge_decisions: + - source: Acetogen-Chain Elongator Product Coupling + target: Organic Acid Reduction to Longer-Chain Alcohols + rationale: 'C. carboxidivorans C2-product fermentation feeds C. kluyveri chain elongation, whose organic acid + products are then reduced back by C. carboxidivorans to longer-chain alcohols. + + ' + - source: Engineered CO and pH staging of chain elongation and alcohol formation + target: Organic Acid Reduction to Longer-Chain Alcohols + rationale: The first stage supplies chain-elongated organic acids to the second, whose combined pH-5.0/high-CO + conditions support C. carboxidivorans reduction to alcohols. Product balances also indicate de novo alcohol + synthesis, so downstream alcohol output is not all explained by reduction of incoming acids; the design does + not isolate the contribution of CO from the other changed operating conditions. + removed_edge_decisions: [] + references: + - PMID:34669248 + - PMID:37110426 + issues: + - 1321 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + source_review: + PMID:34669248: + pmcid: PMC9049614 + url: https://europepmc.org/articles/PMC9049614 + path: /private/tmp/communitymech-batch18/PMC9049614.xml + sha256: c80e657af6d15be058b1cd2aaa8335e07ae37669daa0163e8c316fc17ff18d17 + license: CC BY 4.0 + reviewed_scope: Full main body, Methods, main table and six main figure captions; supplements and images not + inspected. + stored_in_repository: false + PMID:37110426: + pmcid: PMC10144111 + url: https://europepmc.org/articles/PMC10144111 + path: /private/tmp/communitymech-batch18/PMC10144111.xml + sha256: 69d6f30938a6843fd09bf15bafc68219a96552aa42b0b46ddc901b1785846a75 + license: CC BY 4.0 + reviewed_scope: Full main body, Methods, main table and nine main figure captions; supplements and images + not inspected. Figure 1 has separate permission attribution; no image copied. + stored_in_repository: false + history_files: + - history/records/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture/2026-10-05T232412Z-codex-96cf43.yaml diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv index 4f5ce9d6f..21c995081 100644 --- a/reports/causal_graph_review/inventory.tsv +++ b/reports/causal_graph_review/inventory.tsv @@ -102,9 +102,9 @@ kb/communities/Chromium_Sulfur_Reduction_Enrichment.yaml CommunityMech:000017 5b kb/communities/Cinnamate_Degradation_Consortium.yaml CommunityMech:000018 6b8b4403e3b23932e5a7f59de1f2580dab061a5327e45f1d62cadd4d32c107d9 3 2 96.7 reports/causal_graph_review/decisions/20261005-two-records-batch16.yaml reviewed kb/communities/Clostridial_isoDCA_Mini_Consortium.yaml CommunityMech:000396 bb785ba51ceecbd2b3eccdee982413f11baf5df7f5f33f180dc9a9a49ef4363d 1 0 60.0 reports/causal_graph_review/decisions/20261005-two-records-batch16.yaml reviewed kb/communities/Clostridium_Acetobutylicum_Ljungdahlii_Fusion_Coculture.yaml CommunityMech:000336 27e4e0784e4d50f0b619fb8754e1f6f3417d351e12344be9f5c8df293035b61c 8 2 93.8 reports/causal_graph_review/decisions/20261005-one-record-batch17.yaml reviewed -kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml CommunityMech:000172 5cb2019adbc5c0c390e928ea64b88219106a9c7892c6c107930c8f17d2a0521d 3 2 100.0 pending -kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml CommunityMech:000193 912a98e500fa28504035f915fd6044c6ed55cbf5ab356932b5d28b2a135f958a 3 1 90.0 pending -kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml CommunityMech:000266 94b7ab8725dbf71b7bf54036ab32f1d26ec40bfc01e1c8ce4ac947e78b07183e 3 2 100.0 pending +kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml CommunityMech:000172 21ed35857776bcd6e203c18ade2249e16cc8abb31fea0c5bc169df9b394c8861 3 2 96.7 reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml reviewed +kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml CommunityMech:000193 d4d2ba27f20dc52220bd8e443288c91b3b7e7a0606f8c2cc4855d63e48423e20 3 0 65.0 reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml reviewed +kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml CommunityMech:000266 dfc0feb9084b682e6d5f9dfc9529d9ae7f146e31371d63c63960ffe6a3fd391a 3 2 96.7 reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml reviewed kb/communities/Clostridium_Cellulolyticum_Geobacter_Cellulose_MFC_Coculture.yaml CommunityMech:000175 f26ac9c808de9e10d5a521ae725163bda200335d9cd63120f267b4a54566b26a 3 2 100.0 pending kb/communities/Clostridium_Cellulovorans_Beijerinckii_AECC_ABE_Coculture.yaml CommunityMech:000323 5cdc48563e8dd1d7329d626dfc3dda7a1c2d50baae327e241753603f6da4ed16 3 2 100.0 pending kb/communities/Clostridium_Cellulovorans_Methanosarcina_Cellulose_Methane_Coculture.yaml CommunityMech:000174 34f7bb765800398a1514972aa5de38e1b03804e0bbcd714e0a33c65b557aece4 3 2 100.0 pending diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json index bbb5d4c56..84d94fefa 100644 --- a/reports/causal_graph_review/summary.json +++ b/reports/causal_graph_review/summary.json @@ -3,13 +3,13 @@ "semantic_review_rule": "Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.", "records": 460, "nodes": 1474, - "edges": 717, + "edges": 716, "records_without_nodes": 8, - "records_without_edges": 138, + "records_without_edges": 139, "review_status_counts": { "needs_research": 3, - "pending": 357, - "reviewed": 100 + "pending": 354, + "reviewed": 103 }, "structural_defects": [], "network_audit": [ diff --git a/reports/causal_graph_review/validation-20261005-batch18.json b/reports/causal_graph_review/validation-20261005-batch18.json new file mode 100644 index 000000000..f910b6b65 --- /dev/null +++ b/reports/causal_graph_review/validation-20261005-batch18.json @@ -0,0 +1,538 @@ +{ + "base_commit": "f76f44c1d6747017fd2e2d459aa021e9cf5787ec", + "scope": [ + "kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml", + "kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml", + "kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml" + ], + "reference_validator_version": "0.1.7", + "results": [ + { + "check": "Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-schema", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml" + ], + "output": "No issues found\n" + }, + { + "check": "Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-strict", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-strict.tsv", + "kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml" + ], + "output": "Validating 1 files with 1 workers; schema=src/communitymech/schema/communitymech.yaml\n\n=== validate-strict summary ===\n files scanned: 1\n files with ERROR: 0\n total ERROR rows: 0\n TSV: /Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-strict.tsv\n" + }, + { + "check": "Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-terms", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-term-validator", + "validate-data", + "kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "output": "\u2705 Validation passed\n" + }, + { + "check": "Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-references-explained", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-reference-validator", + "validate", + "data", + "kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "output": "Validating kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n" + }, + { + "check": "Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-snippets", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "output": "# 36 evidence snippets scanned across 1 files\n MATCH 36\n RENDERING 0\n ASSEMBLED 0\n WEAK 0\n MISMATCH 0\n NOCONTENT 0\n\n# Files with MISMATCH/WEAK (content present but snippet absent) \u2014 fabrication suspects\n\n# MISMATCH/WEAK detail\n\n# Files by RENDERING (faithful quote; differs from cache only by\n# punctuation/whitespace/Greek \u2014 this is what validate-references flags)\n\n# Top files by NOCONTENT (unverifiable; cache stub/missing)\n\n# ASSEMBLED (every part is in the source; the join is not \u2014\n# a table flattened into prose, or a quote welded from two places)\n" + }, + { + "check": "Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-rank", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml", + "--format", + "json" + ], + "output": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000172\",\n \"name\": \"Clostridium autoethanogenum-Clostridium kluyveri Syngas Coculture\",\n \"score\": 96.7,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 2,\n \"interaction_evidence\": 8,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml\"\n }\n]\n" + }, + { + "check": "Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture-history-0", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/history.yaml", + "--target-class", + "HistoryRecord", + "history/records/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture/2026-10-05T232412Z-codex-8ac1e9.yaml" + ], + "output": "No issues found\n" + }, + { + "check": "Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-schema", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml" + ], + "output": "No issues found\n" + }, + { + "check": "Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-strict", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-strict.tsv", + "kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml" + ], + "output": "Validating 1 files with 1 workers; schema=src/communitymech/schema/communitymech.yaml\n\n=== validate-strict summary ===\n files scanned: 1\n files with ERROR: 0\n total ERROR rows: 0\n TSV: /Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-strict.tsv\n" + }, + { + "check": "Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-terms", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-term-validator", + "validate-data", + "kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "output": "\u2705 Validation passed\n" + }, + { + "check": "Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-references-explained", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-reference-validator", + "validate", + "data", + "kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "output": "Validating kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n" + }, + { + "check": "Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-snippets", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "output": "# 27 evidence snippets scanned across 1 files\n MATCH 27\n RENDERING 0\n ASSEMBLED 0\n WEAK 0\n MISMATCH 0\n NOCONTENT 0\n\n# Files with MISMATCH/WEAK (content present but snippet absent) \u2014 fabrication suspects\n\n# MISMATCH/WEAK detail\n\n# Files by RENDERING (faithful quote; differs from cache only by\n# punctuation/whitespace/Greek \u2014 this is what validate-references flags)\n\n# Top files by NOCONTENT (unverifiable; cache stub/missing)\n\n# ASSEMBLED (every part is in the source; the join is not \u2014\n# a table flattened into prose, or a quote welded from two places)\n" + }, + { + "check": "Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-rank", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml", + "--format", + "json" + ], + "output": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000193\",\n \"name\": \"Clostridium-Caldicellulosiruptor Minimal Medium Coculture\",\n \"score\": 65.0,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 0,\n \"interaction_evidence\": 6,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"downstream\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture.yaml\"\n }\n]\n" + }, + { + "check": "Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture-history-0", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/history.yaml", + "--target-class", + "HistoryRecord", + "history/records/Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture/2026-10-05T232412Z-codex-3c1d88.yaml" + ], + "output": "No issues found\n" + }, + { + "check": "Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-schema", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml" + ], + "output": "No issues found\n" + }, + { + "check": "Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-strict", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-strict.tsv", + "kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml" + ], + "output": "Validating 1 files with 1 workers; schema=src/communitymech/schema/communitymech.yaml\n\n=== validate-strict summary ===\n files scanned: 1\n files with ERROR: 0\n total ERROR rows: 0\n TSV: /Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-strict.tsv\n" + }, + { + "check": "Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-terms", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-term-validator", + "validate-data", + "kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "output": "\u2705 Validation passed\n" + }, + { + "check": "Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-references-explained", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-reference-validator", + "validate", + "data", + "kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "output": "Validating kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n" + }, + { + "check": "Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-snippets", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "output": "# 28 evidence snippets scanned across 1 files\n MATCH 28\n RENDERING 0\n ASSEMBLED 0\n WEAK 0\n MISMATCH 0\n NOCONTENT 0\n\n# Files with MISMATCH/WEAK (content present but snippet absent) \u2014 fabrication suspects\n\n# MISMATCH/WEAK detail\n\n# Files by RENDERING (faithful quote; differs from cache only by\n# punctuation/whitespace/Greek \u2014 this is what validate-references flags)\n\n# Top files by NOCONTENT (unverifiable; cache stub/missing)\n\n# ASSEMBLED (every part is in the source; the join is not \u2014\n# a table flattened into prose, or a quote welded from two places)\n" + }, + { + "check": "Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-rank", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml", + "--format", + "json" + ], + "output": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000266\",\n \"name\": \"Clostridium carboxidivorans-Clostridium kluyveri CO Chain-Elongation Coculture\",\n \"score\": 96.7,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 2,\n \"interaction_evidence\": 6,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml\"\n }\n]\n" + }, + { + "check": "Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture-history-0", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "linkml-validate", + "-s", + "src/communitymech/schema/history.yaml", + "--target-class", + "HistoryRecord", + "history/records/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture/2026-10-05T232412Z-codex-96cf43.yaml" + ], + "output": "No issues found\n" + }, + { + "check": "inventory", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "reports/causal_graph_review/build_inventory.py" + ], + "output": "{\n \"scope\": \"Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.\",\n \"semantic_review_rule\": \"Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.\",\n \"records\": 460,\n \"nodes\": 1474,\n \"edges\": 716,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 139,\n \"review_status_counts\": {\n \"needs_research\": 3,\n \"pending\": 354,\n \"reviewed\": 103\n },\n \"structural_defects\": []\n}\n" + }, + { + "check": "network", + "exit_code": 1, + "expected_exit_codes": [ + 1 + ], + "command": [ + "python3", + "-m", + "communitymech.cli", + "audit-network", + "--json" + ], + "output": "Pinus massoniana' not found in taxonomy section (community-level scope)\"\n },\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Protective Enzyme and Resistance-Gene Activation\",\n \"interaction_index\": 2,\n \"taxon\": \"Pinus massoniana\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Pinus massoniana' not found in taxonomy section (community-level scope)\"\n }\n ],\n \"Brocadia_Low_Nitrogen_Anammox_Consortium\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Ca. Kuenenia early-acclimation lineage\",\n \"taxon_id\": \"NCBITaxon:380738\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Ca. Kuenenia early-acclimation lineage\",\n \"term\": {\n \"id\": \"NCBITaxon:380738\",\n \"label\": \"Candidatus Kuenenia\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"Ca. Kuenenia was resolved at genus level as an early-acclimation anammox lineage that was ultimately replaced by Ca. Brocadia.\"\n },\n \"functional_role\": [\n \"PRIMARY_PRODUCER\"\n ],\n \"evidence\": [\n {\n \"reference\": \"PMID:42323145\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"COMPUTATIONAL\",\n \"snippet\": \"During early acclimation, Ca. Kuenenia reduced the expression of costly biosynthetic pathways\",\n \"explanation\": \"Supports Ca. Kuenenia as the early-acclimation lineage tracked in the biofilter succession study.\"\n }\n ]\n },\n \"message\": \"Taxon 'Ca. Kuenenia early-acclimation lineage' has no interactions\"\n }\n ],\n \"Mangrove_Benzene_MFC_Bioanode_Consortium\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Pelobacter\",\n \"taxon_id\": \"NCBITaxon:18\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Pelobacter\",\n \"term\": {\n \"id\": \"NCBITaxon:18\",\n \"label\": \"Pelobacter\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"Pelobacter was a lower-abundance genus in the benzene-fed 16S profile; no species-level identity or functional role was resolved.\\n\"\n },\n \"relative_abundance\": 2.22,\n \"relative_abundance_unit\": \"percent\",\n \"evidence\": [\n {\n \"reference\": \"PMID:41210787\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Pelobacter, Desulfurumonas, and Pseudomonas were also identified at 2.22, 1.64, and 0.87%\",\n \"explanation\": \"Supports Pelobacter as a minor detected genus in the benzene-fed MFC biofilm.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pelobacter' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Pseudomonas\",\n \"taxon_id\": \"NCBITaxon:286\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Pseudomonas\",\n \"term\": {\n \"id\": \"NCBITaxon:286\",\n \"label\": \"Pseudomonas\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"Pseudomonas was a lower-abundance genus in the benzene-fed 16S profile; no species-level identity or functional role was resolved.\\n\"\n },\n \"relative_abundance\": 0.87,\n \"relative_abundance_unit\": \"percent\",\n \"evidence\": [\n {\n \"reference\": \"PMID:41210787\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Pelobacter, Desulfurumonas, and Pseudomonas were also identified at 2.22, 1.64, and 0.87%\",\n \"explanation\": \"Supports Pseudomonas as a minor detected genus in the benzene-fed MFC biofilm.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pseudomonas' has no interactions\"\n }\n ],\n \"Nitrifying_Wastewater_Ammonia_Oxidizing_Consortium\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Legionella MAGs\",\n \"taxon_id\": \"NCBITaxon:445\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Legionella MAGs\",\n \"term\": {\n \"id\": \"NCBITaxon:445\",\n \"label\": \"Legionella\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The study detected Legionella-affiliated MAGs and used them in a virulence-gene risk assessment; the source did not assert pathogenicity for a cultured Legionella isolate.\\n\"\n },\n \"abundance_value\": \"Lower-abundance Legionella-affiliated MAGs detected during metagenomic risk assessment.\\n\",\n \"evidence\": [\n {\n \"reference\": \"PMID:41457319\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"COMPUTATIONAL\",\n \"snippet\": \"detection of waterborne pathogens from the Legionella genus\",\n \"explanation\": \"Supports Legionella-affiliated lower-abundance bins as monitored biosafety-relevant members of the consortium.\\n\"\n }\n ]\n },\n \"message\": \"Taxon 'Legionella MAGs' has no interactions\"\n }\n ],\n \"Sclerotinia_Sclerotia_12Strain_Biocontrol_SynCom\": [\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Twelve-Strain SynCom Suppression of Sclerotinia Sclerotia\",\n \"interaction_index\": 0,\n \"taxon\": \"Sclerotinia sclerotiorum\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Sclerotinia sclerotiorum' not found in taxonomy section (community-level scope)\"\n },\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Trinickia MC Key Contribution to Sclerotia Mortality\",\n \"interaction_index\": 1,\n \"taxon\": \"Sclerotinia sclerotiorum\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Sclerotinia sclerotiorum' not found in taxonomy section (community-level scope)\"\n }\n ],\n \"Space_Habitat_SevenMember_Stress_Tolerance_SynCom\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Acinetobacter radioresistens 50V1\",\n \"taxon_id\": \"NCBITaxon:40216\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Acinetobacter radioresistens 50V1\",\n \"term\": {\n \"id\": \"NCBITaxon:40216\",\n \"label\": \"Acinetobacter radioresistens\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate came from the preflight Mars Odyssey Orbiter; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"50V1\",\n \"genome_accession\": \"GCA_002834555.1\"\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Acinetobacter radioresistens | 50V1 | Preflight Mars Odyssey Orbiter | \\u2013 | Mccoy et al., 2012 | GCA_002834555.1 | TSYB/TSYA | 37 \\u00b0C | 16\\u201318 h\",\n \"explanation\": \"Identifies A. radioresistens 50V1 as a consortium member and gives its spacecraft-associated source, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Acinetobacter radioresistens 50V1' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Micrococcus luteus W4-Al-K1\",\n \"taxon_id\": \"NCBITaxon:1270\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Micrococcus luteus W4-Al-K1\",\n \"term\": {\n \"id\": \"NCBITaxon:1270\",\n \"label\": \"Micrococcus luteus\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from an ISS aluminum-case touch array; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"W4-Al-K1\",\n \"genome_accession\": \"GCA_057816565.1\"\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Micrococcus luteus | W4-Al-K1 | ISS, Touch Array Aluminum Case | - | Kr\\u00e4mer et al., 2025 | GCA_057816565.1 | NB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies M. luteus W4-Al-K1 as a consortium member and gives its ISS source, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Micrococcus luteus W4-Al-K1' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Propionibacterium cyclohexanicum TA-12T\",\n \"taxon_id\": \"NCBITaxon:64702\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Propionibacterium cyclohexanicum TA-12T\",\n \"term\": {\n \"id\": \"NCBITaxon:64702\",\n \"label\": \"Propionibacterium cyclohexanicum\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the P. cyclohexanicum type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"TA-12T\",\n \"genome_accession\": \"GCA_900111365\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"16859\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Propionibacterium cyclohexanicum | TA-12 T | Spoilt Orange Juice | DSM 16859 T | Kusano et al., 1997 | GCA_900111365 | BHI, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies P. cyclohexanicum TA-12T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Propionibacterium cyclohexanicum TA-12T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Pseudomonas antarctica CMS 35T\",\n \"taxon_id\": \"NCBITaxon:219572\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Pseudomonas antarctica CMS 35T\",\n \"term\": {\n \"id\": \"NCBITaxon:219572\",\n \"label\": \"Pseudomonas antarctica\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the P. antarctica type strain as a biosafety-level-1 Pseudomonas surrogate.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"CMS 35T\",\n \"genome_accession\": \"GCA_010634845\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"15318\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Pseudomonas antarctica | CMS 35 T | Antarctica | DSM 15318 T | Reddy et al., 2004 | GCA_010634845 | TSYB/TSYA | Ambient | 12\\u201316 h\",\n \"explanation\": \"Identifies P. antarctica CMS 35T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pseudomonas antarctica CMS 35T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Staphylococcus capitis K1-2-2-23\",\n \"taxon_id\": \"NCBITaxon:29388\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Staphylococcus capitis K1-2-2-23\",\n \"term\": {\n \"id\": \"NCBITaxon:29388\",\n \"label\": \"Staphylococcus capitis\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from ISS V2A steel; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"K1-2-2-23\",\n \"genome_accession\": \"GCA_025272695\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"111179\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Staphylococcus capitis | K1-2-2-23 | ISS, V2A Steel | DSM 111179 | Sobisch et al., 2019 | GCA_025272695 | TSYB/TSYA | 37 \\u00b0C | 16\\u201324 h\",\n \"explanation\": \"Identifies S. capitis K1-2-2-23 as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Staphylococcus capitis K1-2-2-23' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Streptococcus halotolerans HTS9T\",\n \"taxon_id\": \"NCBITaxon:1814128\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Streptococcus halotolerans HTS9T\",\n \"term\": {\n \"id\": \"NCBITaxon:1814128\",\n \"label\": \"Streptococcus halotolerans\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the S. halotolerans type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"HTS9T\",\n \"genome_accession\": \"GCA_001598035\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"101996\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Streptococcus halotolerans | HTS9 T | Respiratory Tract of Marmota himalayana | DSM 101996 T | Niu et al., 2016 | GCA_001598035 | 2xLB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies S. halotolerans HTS9T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Streptococcus halotolerans HTS9T' has no interactions\"\n }\n ]\n}\n" + }, + { + "check": "render", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "-m", + "communitymech.render" + ], + "output": "South_Bay_Salt_Pond_Methane_Restoration_Community.html\n \u2713 Soy_Sauce_Temporal_SevenSpecies_SynCom.yaml \u2192 docs/communities/Soy_Sauce_Temporal_SevenSpecies_SynCom.html\n \u2713 Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.yaml \u2192 docs/communities/Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.html\n \u2713 Soybean_N_Fixation_sfSynCom.yaml \u2192 docs/communities/Soybean_N_Fixation_sfSynCom.html\n \u2713 Soymilk_Mixed_Starter_Metabolic_Division_SynCom.yaml \u2192 docs/communities/Soymilk_Mixed_Starter_Metabolic_Division_SynCom.html\n \u2713 Space_Habitat_SevenMember_Stress_Tolerance_SynCom.yaml \u2192 docs/communities/Space_Habitat_SevenMember_Stress_Tolerance_SynCom.html\n \u2713 Sphingobium_Nitrososphaera_Phenanthrene_Carbon_SynCom.yaml \u2192 docs/communities/Sphingobium_Nitrososphaera_Phenanthrene_Carbon_SynCom.html\n \u2713 Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.yaml \u2192 docs/communities/Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.html\n \u2713 Staged_Cattle_Manure_Ensifer_Bacillus_SynCom.yaml \u2192 docs/communities/Staged_Cattle_Manure_Ensifer_Bacillus_SynCom.html\n \u2713 Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.yaml \u2192 docs/communities/Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.html\n \u2713 Stordalen_Mire_Methylotrophic_Methanogenesis_Community.yaml \u2192 docs/communities/Stordalen_Mire_Methylotrophic_Methanogenesis_Community.html\n \u2713 Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.yaml \u2192 docs/communities/Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.html\n \u2713 Subsurface_Carboxydocella_CO_Aquifer_Community.yaml \u2192 docs/communities/Subsurface_Carboxydocella_CO_Aquifer_Community.html\n \u2713 Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.yaml \u2192 docs/communities/Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.html\n \u2713 Sulfide_Spring_Autotrophic_CPR_Biofilm.yaml \u2192 docs/communities/Sulfide_Spring_Autotrophic_CPR_Biofilm.html\n \u2713 SynComBac10_Chicken_Intestinal_SynCom.yaml \u2192 docs/communities/SynComBac10_Chicken_Intestinal_SynCom.html\n \u2713 SynCom_ARC_Peanut_Aflatoxin_Nodulation.yaml \u2192 docs/communities/SynCom_ARC_Peanut_Aflatoxin_Nodulation.html\n \u2713 SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.yaml \u2192 docs/communities/SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.html\n \u2713 SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.yaml \u2192 docs/communities/SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.html\n \u2713 SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.yaml \u2192 docs/communities/SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.html\n \u2713 SynCom_Pseudomonas_Rahnella_Artemisia_Phytoremediation.yaml \u2192 docs/communities/SynCom_Pseudomonas_Rahnella_Artemisia_Phytoremediation.html\n \u2713 SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml \u2192 docs/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.html\n \u2713 SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.yaml \u2192 docs/communities/SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.html\n \u2713 Synechococcus_Azotobacter_Photoproduction_Mutualism.yaml \u2192 docs/communities/Synechococcus_Azotobacter_Photoproduction_Mutualism.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to docs/communities\n \u2713 Generated browser at docs/browser.html\n \u2713 Generated landing at docs/index.html\n" + }, + { + "check": "render-repeat", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "-m", + "communitymech.render" + ], + "output": "South_Bay_Salt_Pond_Methane_Restoration_Community.html\n \u2713 Soy_Sauce_Temporal_SevenSpecies_SynCom.yaml \u2192 docs/communities/Soy_Sauce_Temporal_SevenSpecies_SynCom.html\n \u2713 Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.yaml \u2192 docs/communities/Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.html\n \u2713 Soybean_N_Fixation_sfSynCom.yaml \u2192 docs/communities/Soybean_N_Fixation_sfSynCom.html\n \u2713 Soymilk_Mixed_Starter_Metabolic_Division_SynCom.yaml \u2192 docs/communities/Soymilk_Mixed_Starter_Metabolic_Division_SynCom.html\n \u2713 Space_Habitat_SevenMember_Stress_Tolerance_SynCom.yaml \u2192 docs/communities/Space_Habitat_SevenMember_Stress_Tolerance_SynCom.html\n \u2713 Sphingobium_Nitrososphaera_Phenanthrene_Carbon_SynCom.yaml \u2192 docs/communities/Sphingobium_Nitrososphaera_Phenanthrene_Carbon_SynCom.html\n \u2713 Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.yaml \u2192 docs/communities/Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.html\n \u2713 Staged_Cattle_Manure_Ensifer_Bacillus_SynCom.yaml \u2192 docs/communities/Staged_Cattle_Manure_Ensifer_Bacillus_SynCom.html\n \u2713 Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.yaml \u2192 docs/communities/Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.html\n \u2713 Stordalen_Mire_Methylotrophic_Methanogenesis_Community.yaml \u2192 docs/communities/Stordalen_Mire_Methylotrophic_Methanogenesis_Community.html\n \u2713 Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.yaml \u2192 docs/communities/Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.html\n \u2713 Subsurface_Carboxydocella_CO_Aquifer_Community.yaml \u2192 docs/communities/Subsurface_Carboxydocella_CO_Aquifer_Community.html\n \u2713 Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.yaml \u2192 docs/communities/Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.html\n \u2713 Sulfide_Spring_Autotrophic_CPR_Biofilm.yaml \u2192 docs/communities/Sulfide_Spring_Autotrophic_CPR_Biofilm.html\n \u2713 SynComBac10_Chicken_Intestinal_SynCom.yaml \u2192 docs/communities/SynComBac10_Chicken_Intestinal_SynCom.html\n \u2713 SynCom_ARC_Peanut_Aflatoxin_Nodulation.yaml \u2192 docs/communities/SynCom_ARC_Peanut_Aflatoxin_Nodulation.html\n \u2713 SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.yaml \u2192 docs/communities/SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.html\n \u2713 SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.yaml \u2192 docs/communities/SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.html\n \u2713 SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.yaml \u2192 docs/communities/SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.html\n \u2713 SynCom_Pseudomonas_Rahnella_Artemisia_Phytoremediation.yaml \u2192 docs/communities/SynCom_Pseudomonas_Rahnella_Artemisia_Phytoremediation.html\n \u2713 SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml \u2192 docs/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.html\n \u2713 SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.yaml \u2192 docs/communities/SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.html\n \u2713 Synechococcus_Azotobacter_Photoproduction_Mutualism.yaml \u2192 docs/communities/Synechococcus_Azotobacter_Photoproduction_Mutualism.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to docs/communities\n \u2713 Generated browser at docs/browser.html\n \u2713 Generated landing at docs/index.html\n" + }, + { + "check": "regressions", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "-m", + "pytest", + "-q", + "tests/test_causal_review_batch10.py", + "tests/test_causal_review_batch11.py", + "tests/test_causal_review_batch12.py", + "tests/test_causal_review_batch13.py", + "tests/test_causal_review_batch14.py", + "tests/test_causal_review_batch15.py", + "tests/test_causal_review_batch16.py", + "tests/test_causal_review_batch17.py", + "tests/test_causal_review_batch18.py", + "tests/test_causal_review_batch5.py", + "tests/test_causal_review_batch6.py", + "tests/test_causal_review_batch7.py", + "tests/test_causal_review_batch8.py", + "tests/test_causal_review_batch9.py", + "tests/test_causal_review_inventory.py", + "tests/test_rank_causal_graph_readiness.py", + "tests/test_network_auditor.py", + "tests/test_participating_taxa.py", + "tests/test_causal_descriptions_are_published.py", + "tests/test_published_pages_name_real_records.py", + "tests/test_reference_validator_actually_validates.py", + "tests/test_snippet_audit_artefact_classes.py", + "tests/test_reference_error_annotation.py", + "tests/test_community_level_connectivity_credit.py" + ], + "output": "........................................................................ [ 29%]\n........................................................................ [ 59%]\n........................................................................ [ 88%]\n........................... [100%]\n243 passed in 170.92s (0:02:50)\n" + }, + { + "check": "workspace-rights", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "python3", + "-m", + "pytest", + "-q", + "tests/test_no_paywalled_text_in_repo.py" + ], + "output": "... [100%]\n3 passed in 1.56s\n" + }, + { + "check": "black", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "black", + "--check", + "tests/test_causal_review_batch18.py" + ], + "output": "All done! \u2728 \ud83c\udf70 \u2728\n1 file would be left unchanged.\n" + }, + { + "check": "ruff", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "ruff", + "check", + "tests/test_causal_review_batch18.py" + ], + "output": "All checks passed!\n" + }, + { + "check": "diff-check", + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "command": [ + "git", + "diff", + "--check" + ], + "output": "" + } + ], + "limitations": [ + "Source-based self-adversarial review, not independent approval or corpus completion.", + "Baseline just audit-network-json lacked its console entry point; exact repository CLI implementation used. No dependency changes.", + "All 661 prior issue titles/bodies and ignored-inclusive local reports/history/tests/research searched; comments not exhaustive.", + "Minimal-medium exact-system paper abstract-bounded; C. bescii primary Results selectively reviewed; model abstract/Introduction only. Other four primary main bodies read. Images and supplements not visually inspected.", + "Nine nodes retained, three exact renames, one context-only arrow removed and four arrows retained. No new graph structure or Edison spend.", + "Non-graph metadata followup #1322 remains open; unrelated YAML blocks are byte-preserved.", + "Generated data pages verified by deterministic rendering and parsed description coverage, not browser screenshots." + ], + "unchanged_raw_blocks": 50, + "reference_caches_unchanged": true, + "new_network_warnings": [], + "render_determinism": "passed", + "published_description_coverage": { + "pages": 456, + "node_descriptions": 1460, + "edge_descriptions": 708 + }, + "rights_import_root_verified": true, + "snippet_counts": { + "MATCH": 91, + "RENDERING": 0, + "ASSEMBLED": 0, + "WEAK": 0, + "MISMATCH": 0, + "NOCONTENT": 0 + }, + "corpus": { + "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.", + "records": 460, + "nodes": 1474, + "edges": 716, + "records_without_nodes": 8, + "records_without_edges": 139, + "review_status_counts": { + "needs_research": 3, + "pending": 354, + "reviewed": 103 + }, + "structural_defects": [] + }, + "network_warning_count": 25, + "status": "passed" +} diff --git a/tests/test_causal_review_batch18.py b/tests/test_causal_review_batch18.py new file mode 100644 index 000000000..b5c939df3 --- /dev/null +++ b/tests/test_causal_review_batch18.py @@ -0,0 +1,123 @@ +"""Preserve measured coculture outcomes without overstating causal mediation.""" + +import hashlib +from collections import Counter +from pathlib import Path + +import yaml + +ROOT = Path(__file__).resolve().parents[1] +LEDGER = ROOT / "reports/causal_graph_review/decisions/20261005-three-records-batch18.yaml" + + +def load(stem): + return yaml.safe_load((ROOT / "kb/communities" / (stem + ".yaml")).read_text()) + + +def test_ethanol_feedback_is_not_reverse_donation_or_exclusive_mechanism(): + doc = load("Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture") + gas, chain, pull = doc["ecological_interactions"] + assert "reverse-calculated" in gas["description"] + assert gas["interaction_type"] == chain["interaction_type"] == "CROSS_FEEDING" + assert chain["source_taxon"]["term"]["id"] == "NCBITaxon:1534" + assert chain["target_taxon"]["term"]["id"] == "NCBITaxon:84023" + assert "acid-supplemented C. autoethanogenum pure cultures" in chain["description"] + assert gas["downstream"][0]["target"] == chain["name"] + assert "interaction_type" not in pull + assert pull["description"].startswith("HYPOTHESIZED") + assert "post-translational regulation" in pull["description"] + assert "not ethanol donation" in pull["description"] + assert pull["downstream"][0]["target"] == gas["name"] + assert pull["downstream"][0]["description"].startswith("HYPOTHESIZED") + assert all(e["supports"] == "PARTIAL" for e in pull["evidence"]) + + +def test_medium_context_does_not_become_a_causal_maintenance_edge(): + doc = load("Clostridium_Caldicellulosiruptor_Minimal_Medium_Coculture") + medium, maintenance, capacity = doc["ecological_interactions"] + assert all("interaction_type" not in n for n in (medium, maintenance, capacity)) + assert all("downstream" not in n for n in (medium, maintenance, capacity)) + assert "biological_processes" not in medium + assert "biological_processes" not in maintenance + assert maintenance["name"].startswith("Observed Co-Maintenance") + assert "duration" in maintenance["description"] + assert "experimental transcriptomics and proteomics" in capacity["description"] + assert capacity["evidence"][1]["evidence_source"] == "IN_VITRO" + assert "member assays do not demonstrate niche partitioning" in capacity["description"] + assert len(doc["curation_history"]) == 2 + assert "capacity to stable" in doc["curation_history"][0]["changes"] + assert "full body was not obtained" in doc["discussions"][0]["rationale"] + + +def test_reactor_staging_preserves_covariates_and_monoculture_capacity(): + doc = load("Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture") + supply, alcohol, stage = doc["ecological_interactions"] + assert supply["interaction_type"] == alcohol["interaction_type"] == "CROSS_FEEDING" + assert "144-hour batch" in alcohol["description"] + assert "condition-specific" in alcohol["description"] + assert "C. carboxidivorans alone" in alcohol["description"] + assert alcohol["metabolites"][1]["term"] == { + "id": "CHEBI:17120", + "label": "hexanoate", + } + assert "interaction_type" not in stage + assert "pH 6.0" in stage["description"] and "pH 5.0" in stage["description"] + assert "dilution rate also differed" in stage["description"] + assert "CO-only effect" in stage["description"] + assert "de novo alcohol synthesis" in stage["downstream"][0]["description"] + assert supply["downstream"][0]["target"] == stage["downstream"][0]["target"] + assert "86%" in doc["discussions"][0]["rationale"] + assert "complete inhibition at 800 mbar" in doc["discussions"][0]["rationale"] + + +def test_batch18_ledger_accounts_for_every_node_and_arrow(): + ledger = yaml.safe_load(LEDGER.read_text()) + assert ledger["independent_approval"] is False + assert ledger["issues"] == [1319, 1320, 1321] + assert ledger["open_nongraph_followups"] == [1322] + assert len(ledger["records"]) == 3 + removed_count = 0 + for row in ledger["records"]: + raw = (ROOT / row["path"]).read_bytes() + assert hashlib.sha256(raw).hexdigest() == row["record_sha256"] + doc = yaml.safe_load(raw) + names = {n["name"] for n in doc["ecological_interactions"]} + assert len(names) == 3 + assert Counter(d["node"] for d in row["node_decisions"]) == Counter(names) + renames = row["renamed_nodes"] + before = { + (renames.get(e["source"], e["source"]), renames.get(e["target"], e["target"])) + for e in row["edges_before"] + } + after = {(e["source"], e["target"]) for e in row["edges_after"]} + removed = { + (renames.get(e["source"], e["source"]), renames.get(e["target"], e["target"])) + for e in row["removed_edge_decisions"] + } + assert before == after | removed + assert not after & removed + assert after == {(e["source"], e["target"]) for e in row["retained_edge_decisions"]} + assert after == { + (n["name"], e["target"]) + for n in doc["ecological_interactions"] + for e in n.get("downstream", []) + } + removed_count += len(removed) + assert set(row["allowed_changed_fields"]) == { + "ecological_interactions", + "discussions", + "curation_history", + } + assert row["curation_events_added"] == 1 + assert len(row["history_files"]) == 1 + assert all((ROOT / p).is_file() for p in row["history_files"]) + assert all( + a.split("#", 1)[1] in names + for d in doc["discussions"] + for a in d.get("attaches_to", []) + if a.startswith("ecological_interactions#") + ) + assert removed_count == 1 + assert len(ledger["reference_cache_original_hashes"]) == 7 + for path, expected in ledger["reference_cache_original_hashes"].items(): + assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == expected