From e3b46971ce52d543c63a28a621da4760e6612d90 Mon Sep 17 00:00:00 2001
From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com>
Date: Mon, 5 Oct 2026 19:38:36 -0700
Subject: [PATCH] Review coculture and crucian carp causal graphs
---
...la_oneidensis_Succinic_Acid_Coculture.html | 94 +--
...an_Carp_Gut_Disease_Resistance_SynCom.html | 68 +-
.../2026-10-06T022828Z-codex-9a496b.yaml | 28 +
.../2026-10-06T022828Z-codex-90c7a0.yaml | 28 +
...la_oneidensis_Succinic_Acid_Coculture.yaml | 121 ++--
...an_Carp_Gut_Disease_Resistance_SynCom.yaml | 102 ++-
.../adversarial-review-20261005-batch24.yaml | 117 ++++
.../20261005-three-records-batch24.yaml | 228 +++++++
reports/causal_graph_review/inventory.tsv | 6 +-
reports/causal_graph_review/summary.json | 4 +-
.../validation-20261005-batch24.json | 631 ++++++++++++++++++
tests/test_causal_review_batch24.py | 144 ++++
12 files changed, 1412 insertions(+), 159 deletions(-)
create mode 100644 history/records/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture/2026-10-06T022828Z-codex-9a496b.yaml
create mode 100644 history/records/Crucian_Carp_Gut_Disease_Resistance_SynCom/2026-10-06T022828Z-codex-90c7a0.yaml
create mode 100644 reports/causal_graph_review/adversarial-review-20261005-batch24.yaml
create mode 100644 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
create mode 100644 reports/causal_graph_review/validation-20261005-batch24.json
create mode 100644 tests/test_causal_review_batch24.py
diff --git a/docs/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.html b/docs/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.html
index 1eb461e48..0d567a7fe 100644
--- a/docs/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.html
+++ b/docs/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.html
@@ -560,7 +560,7 @@
"Transcriptomic analysis revealed that co-culture induced global metabolic reprogramming in C. glutamicum, including reinforcement of the electron transport system, redistribution of carbon flux toward the reductive TCA pathway"
@@ -720,9 +720,8 @@
-
The optimized coculture increases succinic acid yield over C. glutamicum monoculture without markedly altering glucose consumption, and the ldhA-deleted K1 strain maintains an enhanced succinic acid yield in the coculture system.
+
The abstract reports an optimized parent-strain coculture yield of 0.169 g/g, 45.65% above monoculture without markedly changing glucose consumption. Separately, ldhA deletion abolished lactate formation in K1; its coculture reached 0.686 g/g and showed up to 23.4% higher yield during extended fermentation than monoculture. These positive interventions do not establish thermodynamic syntrophy or assign the parent-strain result to K1.
@@ -776,6 +775,25 @@
Evidence
+
+ Knowledge gaps & discussions (1)
+
+
+
+ KNOWLEDGE_GAP
+ OPEN
+ Which redox and metabolic changes mediate the strain-specific succinate yield improvements?
+
+
Only the complete primary abstract was accessible; publisher full-body access returned 403. Direct electron/carbon flux, mediator-specific perturbations and exact strain/condition assignments are needed to resolve the two proposed arrows. Riboflavin is externally supplied, not proven to be secreted by Shewanella. Preserve the positive parent-strain and K1 treatment outcomes without conflating them. Top-level description and donor-role metadata require separate followup #1354.
+
+
Attaches to: ecological_interactions#Riboflavin-Supplemented Coculture Response, ecological_interactions#Corynebacterium Coculture Transcript Response, ecological_interactions#Enhanced Succinic Acid Production
+
+
+
+
+
+
+
@@ -940,7 +958,7 @@
Evidence
(function() {
var intId = "interaction:0";
- var intType = "SYNTROPHY";
+ var intType = "UNKNOWN";
var metabolites = [];
@@ -957,7 +975,7 @@
Evidence
nodes.push({
id: intId,
- label: "Riboflavin-Mediated Redox Coupling",
+ label: "Riboflavin-Supplemented Coculture Response",
type: "interaction",
interactionType: intType,
metabolites: metabolites,
@@ -966,23 +984,26 @@
Evidence
});
- var srcKey = "Shewanella oneidensis";
- if (taxonNodeIds[srcKey]) {
- links.push({ source: taxonNodeIds[srcKey], target: intId });
- }
+ var participantKeys = [
- var tgtKey = "Corynebacterium glutamicum (ldhA-deleted strain K1)";
- if (taxonNodeIds[tgtKey]) {
- links.push({ source: intId, target: taxonNodeIds[tgtKey] });
- }
+ "Corynebacterium glutamicum (ldhA-deleted strain K1)",
+
+ "Shewanella oneidensis"
+
+ ];
+ participantKeys.forEach(function(key) {
+ if (taxonNodeIds[key]) {
+ links.push({ source: taxonNodeIds[key], target: intId });
+ }
+ });
})();
(function() {
var intId = "interaction:1";
- var intType = "SYNTROPHY";
+ var intType = "UNKNOWN";
var metabolites = [];
@@ -999,7 +1020,7 @@
Evidence
nodes.push({
id: intId,
- label: "Reprogrammed Corynebacterium Reductive TCA Flux",
+ label: "Corynebacterium Coculture Transcript Response",
type: "interaction",
interactionType: intType,
metabolites: metabolites,
@@ -1008,23 +1029,18 @@
Evidence
});
- var srcKey = "Shewanella oneidensis";
+ var srcKey = "Corynebacterium glutamicum (ldhA-deleted strain K1)";
if (taxonNodeIds[srcKey]) {
links.push({ source: taxonNodeIds[srcKey], target: intId });
}
- var tgtKey = "Corynebacterium glutamicum (ldhA-deleted strain K1)";
- if (taxonNodeIds[tgtKey]) {
- links.push({ source: intId, target: taxonNodeIds[tgtKey] });
- }
-
})();
(function() {
var intId = "interaction:2";
- var intType = "SYNTROPHY";
+ var intType = "UNKNOWN";
var metabolites = [];
diff --git a/docs/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.html b/docs/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.html
index bcdf177d5..e919a2a2b 100644
--- a/docs/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.html
+++ b/docs/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.html
@@ -582,7 +582,7 @@
Ecological Interactions
Ecological interaction network for Crucian Carp Gut Disease-resistance SynCom
- 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 (mutualism, competition, commensalism).
+ 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.
@@ -590,18 +590,8 @@
Ecological Interactions
Mutualism
-
-
- Competition
-
-
- Commensalism
+ aria-hidden="true" data-symbol="symbolTriangle2"
+ data-color="#929caa"> Other
@@ -609,10 +599,9 @@ "the results revealed significant upregulation of immune-related pathways, particularly the intestinal immune network for IgA production"
@@ -678,10 +667,9 @@
-
The three-genus SynCom (Cetobacterium, Paraclostridium, Pseudomonas) significantly reduced the abundance of the pathogen Aeromonas hydrophila by activating intestinal immune responses and reinforcing the gut barrier, an emergent host-mediated antagonism rather than a direct pairwise microbe-microbe interaction.
+
After 28 days of three-strain SynCom feeding, challenged crucian carp had 60% survival versus 32.5% in controls and lower calibrated qPCR Aeromonas DNA loads in intestine and kidney. These are positive host treatment outcomes, not merely relative 16S profiles or viable-pathogen counts. Immune and barrier mediation remains proposed, and reciprocal microbial competition is not established. The separate FMT survival comparison (66.7% versus 36.7%) is not the SynCom result.
@@ -822,6 +809,25 @@
Evidence
+
+ Knowledge gaps & discussions (1)
+
+
+
+ KNOWLEDGE_GAP
+ OPEN
+ Which host responses and microbial functions causally mediate SynCom protection?
+
+
Complete main-body Methods and Results support 28-day feeding, enzyme/transcript responses, challenge survival and calibrated qPCR pathogen loads. They do not report selective immune/barrier blockade or rescue, direct barrier permeability or barrier-protein validation. Elevated DAO is ambiguous, and the IgA phrase is a pathway annotation. Main text reports non-antagonistic in vitro co-culture and preliminary single/pair/triple feeding comparisons; supplementary images/data were not inspected. In-host cross-feeding and signaling remain hypotheses. Species/strain metadata and conflicting source units/schedules are tracked separately in #1353; canonical genus participants are preserved here.
+
+
Attaches to: ecological_interactions#SynCom-associated intestinal immune responses, ecological_interactions#SynCom-associated intestinal barrier markers, ecological_interactions#SynCom-mediated suppression of Aeromonas hydrophila
+
+
+
+
+
+
+
@@ -993,7 +999,7 @@
Evidence
(function() {
var intId = "interaction:0";
- var intType = "COMMENSALISM";
+ var intType = "UNKNOWN";
var metabolites = [];
var processes = [];
@@ -1006,7 +1012,7 @@
Evidence
nodes.push({
id: intId,
- label: "SynCom activation of intestinal immune responses",
+ label: "SynCom-associated intestinal immune responses",
type: "interaction",
interactionType: intType,
metabolites: metabolites,
@@ -1036,7 +1042,7 @@
Evidence
(function() {
var intId = "interaction:1";
- var intType = "MUTUALISM";
+ var intType = "UNKNOWN";
var metabolites = [];
var processes = [];
@@ -1049,7 +1055,7 @@
Evidence
nodes.push({
id: intId,
- label: "SynCom reinforcement of epithelial barrier defenses",
+ label: "SynCom-associated intestinal barrier markers",
type: "interaction",
interactionType: intType,
metabolites: metabolites,
@@ -1079,7 +1085,7 @@
Evidence
(function() {
var intId = "interaction:2";
- var intType = "COMPETITION";
+ var intType = "UNKNOWN";
var metabolites = [];
var processes = [];
diff --git a/history/records/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture/2026-10-06T022828Z-codex-9a496b.yaml b/history/records/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture/2026-10-06T022828Z-codex-9a496b.yaml
new file mode 100644
index 000000000..eec0d0851
--- /dev/null
+++ b/history/records/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture/2026-10-06T022828Z-codex-9a496b.yaml
@@ -0,0 +1,28 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml
+ slug: Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture
+session:
+ id: 2026-10-06T022828Z-codex-9a496b
+ timestamp: '2026-10-06T02:28:28Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1351
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Retain the measured external-additive response at coculture scope without asserting
+ directed exchange or syntrophy.; Represent Corynebacterium transcript response with its
+ canonical source only and qualify inferred flux and causal mediation.; Preserve distinct
+ parent-strain and K1 intervention outcomes without assigning parent results to the engineered
+ derivative.
+ details: Source-based self-adversarial review; no new nodes/arrows. reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
diff --git a/history/records/Crucian_Carp_Gut_Disease_Resistance_SynCom/2026-10-06T022828Z-codex-90c7a0.yaml b/history/records/Crucian_Carp_Gut_Disease_Resistance_SynCom/2026-10-06T022828Z-codex-90c7a0.yaml
new file mode 100644
index 000000000..456de9da9
--- /dev/null
+++ b/history/records/Crucian_Carp_Gut_Disease_Resistance_SynCom/2026-10-06T022828Z-codex-90c7a0.yaml
@@ -0,0 +1,28 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml
+ slug: Crucian_Carp_Gut_Disease_Resistance_SynCom
+session:
+ id: 2026-10-06T022828Z-codex-90c7a0
+ timestamp: '2026-10-06T02:28:28Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1352
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Retain measured enzyme/transcript responses while distinguishing pathway annotation
+ from direct IgA measurement or microbial fitness.; Retain transcript/pathway and DAO observations
+ without promoting them to protein, permeability or selective mediation evidence.; Preserve
+ SynCom survival and calibrated qPCR endpoints, separate from FMT and from reciprocal microbial
+ competition.
+ details: Source-based self-adversarial review; no new nodes/arrows. reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
diff --git a/kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml b/kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml
index f8a50782a..4f06c5750 100644
--- a/kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml
+++ b/kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml
@@ -78,22 +78,13 @@ taxonomy:
explanation: Identifies the electroactive bacterium S. oneidensis as the second member of the
co-culture.
ecological_interactions:
-- name: Riboflavin-Mediated Redox Coupling
- description: S. oneidensis provides an electroactive coculture partner for
- C. glutamicum, and riboflavin is the most effective screened redox-active additive
- for further improving anaerobic succinic acid production.
- interaction_type: SYNTROPHY
- scope: PAIRWISE
- source_taxon:
- preferred_term: Shewanella oneidensis
- term:
- id: NCBITaxon:70863
- label: Shewanella oneidensis
- target_taxon:
- preferred_term: Corynebacterium glutamicum (ldhA-deleted strain K1)
- term:
- id: NCBITaxon:1718
- label: Corynebacterium glutamicum
+- name: Riboflavin-Supplemented Coculture Response
+ description: The complete abstract reports that externally supplied riboflavin was the most effective of five
+ screened redox-active additives, with 0.1 mM supplementation further improving coculture production. This supports
+ an additive response, not demonstrated Shewanella secretion, directed interspecies electron transfer or thermodynamic
+ syntrophy. Parent-strain and K1 experiments must be distinguished; the abstract does not resolve every additive/transcript
+ assay to K1.
+ scope: COMMUNITY_LEVEL
metabolites:
- preferred_term: riboflavin
term:
@@ -105,29 +96,34 @@ ecological_interactions:
id: GO:0022900
label: electron transport chain
downstream:
- - target: Reprogrammed Corynebacterium Reductive TCA Flux
- description: Coculture redox coupling leads into the transcriptome-level
- reinforcement of the C. glutamicum electron transport system and reductive TCA flux.
+ - target: Corynebacterium Coculture Transcript Response
+ description: HYPOTHESIZED - altered coculture redox conditions could contribute to the Corynebacterium transcript
+ response. Additive screening and the transcriptomic interpretation support this candidate link, but the accessible
+ abstract does not selectively establish riboflavin-dependent electron transfer as its cause.
evidence:
- reference: PMID:42203120
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: Screening of five redox-active compounds identified riboflavin as the most effective
- additive, and supplementation with 0.1 mM riboflavin further improved production performance.
- explanation: Riboflavin acts as a redox mediator supporting interspecies electron transfer that
- boosts succinic acid production.
-- name: Reprogrammed Corynebacterium Reductive TCA Flux
- description: In coculture, C. glutamicum globally reprograms metabolism, reinforcing
- its electron transport system, redistributing carbon flux toward the reductive TCA
- pathway, and suppressing succinic-acid-consuming pathways.
- interaction_type: SYNTROPHY
- scope: PAIRWISE
- source_taxon:
- preferred_term: Shewanella oneidensis
+ snippet: Screening of five redox-active compounds identified riboflavin as the most effective additive, and
+ supplementation with 0.1 mM riboflavin further improved production performance.
+ explanation: Supports the externally supplied riboflavin intervention and improved production, not a demonstrated
+ donor-to-recipient electron flux or endogenous riboflavin exchange.
+ participating_taxa:
+ - preferred_term: Corynebacterium glutamicum (ldhA-deleted strain K1)
+ term:
+ id: NCBITaxon:1718
+ label: Corynebacterium glutamicum
+ - preferred_term: Shewanella oneidensis
term:
id: NCBITaxon:70863
label: Shewanella oneidensis
- target_taxon:
+- name: Corynebacterium Coculture Transcript Response
+ description: Coculture changed C. glutamicum transcript profiles, interpreted by the authors as enhanced electron
+ transport, redistribution toward the reductive TCA pathway and suppression of succinic-acid-consuming pathways.
+ This is transcript-based metabolic interpretation, not directly traced carbon or electron flux. The canonical
+ entry includes K1; the abstract does not identify the strain used for every transcript comparison.
+ scope: PAIRWISE
+ source_taxon:
preferred_term: Corynebacterium glutamicum (ldhA-deleted strain K1)
term:
id: NCBITaxon:1718
@@ -144,23 +140,25 @@ ecological_interactions:
label: tricarboxylic acid cycle
downstream:
- target: Enhanced Succinic Acid Production
- description: Redistribution toward the reductive TCA pathway and suppression of
- succinic-acid-consuming pathways provide the immediate metabolic basis for higher
- succinic acid yield.
+ description: PARTIAL - the transcript-based interpretation is consistent with metabolic changes contributing
+ to increased succinic acid yield. Positive coculture, riboflavin and ldhA-deletion outcomes support the production
+ strategy, but do not selectively establish this transcript response or inferred flux redistribution as the
+ mediator of each yield comparison.
evidence:
- reference: PMID:42203120
- supports: SUPPORT
+ supports: PARTIAL
evidence_source: IN_VITRO
- snippet: Transcriptomic analysis revealed that co-culture induced global metabolic reprogramming
- in C. glutamicum, including reinforcement of the electron transport system, redistribution of
- carbon flux toward the reductive TCA pathway
- explanation: Co-culture reprograms C. glutamicum metabolism, reinforcing electron transport and
- the reductive TCA pathway consistent with interspecies redox coupling.
+ snippet: Transcriptomic analysis revealed that co-culture induced global metabolic reprogramming in C. glutamicum,
+ including reinforcement of the electron transport system, redistribution of carbon flux toward the reductive
+ TCA pathway
+ explanation: Supports the authors' transcriptomic interpretation of metabolic reprogramming, not direct flux
+ measurement or a resolved Shewanella-to-Corynebacterium transfer mechanism.
- name: Enhanced Succinic Acid Production
- description: The optimized coculture increases succinic acid yield over C. glutamicum
- monoculture without markedly altering glucose consumption, and the ldhA-deleted K1
- strain maintains an enhanced succinic acid yield in the coculture system.
- interaction_type: SYNTROPHY
+ description: The abstract reports an optimized parent-strain coculture yield of 0.169 g/g, 45.65% above monoculture
+ without markedly changing glucose consumption. Separately, ldhA deletion abolished lactate formation in K1;
+ its coculture reached 0.686 g/g and showed up to 23.4% higher yield during extended fermentation than monoculture.
+ These positive interventions do not establish thermodynamic syntrophy or assign the parent-strain result to
+ K1.
scope: COMMUNITY_LEVEL
participating_taxa:
- preferred_term: Corynebacterium glutamicum (ldhA-deleted strain K1)
@@ -180,10 +178,10 @@ ecological_interactions:
- reference: PMID:42203120
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: The engineered strain maintained enhanced succinic acid production in the co-culture system,
- reaching a yield of 0.686 g/g
- explanation: Supports enhanced succinic acid production as the downstream output of
- the Shewanella-Corynebacterium coculture.
+ snippet: The engineered strain maintained enhanced succinic acid production in the co-culture system, reaching
+ a yield of 0.686 g/g
+ explanation: Supports the K1 coculture production outcome. The complete abstract separately reports parent-strain,
+ riboflavin and ldhA-deletion comparisons; it does not establish the direction of interspecies electron flux.
growth_media:
- name: unspecified (glucose-based anaerobic succinic acid fermentation medium)
atmosphere: ANAEROBIC
@@ -205,3 +203,28 @@ growth_media:
snippet: supplementation with 0.1 mM riboflavin further improved production performance
explanation: The optimized co-culture medium was supplemented with 0.1 mM riboflavin as a
redox-active additive.
+discussions:
+- discussion_id: succinate_coculture_transfer_and_flux
+ prompt: Which redox and metabolic changes mediate the strain-specific succinate yield improvements?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#Riboflavin-Supplemented Coculture Response
+ - ecological_interactions#Corynebacterium Coculture Transcript Response
+ - ecological_interactions#Enhanced Succinic Acid Production
+ rationale: 'Only the complete primary abstract was accessible; publisher full-body access returned 403. Direct
+ electron/carbon flux, mediator-specific perturbations and exact strain/condition assignments are needed to resolve
+ the two proposed arrows. Riboflavin is externally supplied, not proven to be secreted by Shewanella. Preserve
+ the positive parent-strain and K1 treatment outcomes without conflating them. Top-level description and donor-role
+ metadata require separate followup #1354.'
+ posed_by: codex
+ posed_date: '2026-10-05'
+curation_history:
+- timestamp: '2026-10-06T02:28:28Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Retain the measured external-additive response at coculture scope without asserting directed exchange
+ or syntrophy.; Represent Corynebacterium transcript response with its canonical source only and qualify inferred
+ flux and causal mediation.; Preserve distinct parent-strain and K1 intervention outcomes without assigning parent
+ results to the engineered derivative. Issue #1351; reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml'
+ llm_assisted: true
diff --git a/kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml b/kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml
index 4ebd15929..f23dab3a5 100644
--- a/kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml
+++ b/kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml
@@ -94,12 +94,12 @@ taxonomy:
snippet: 'Further microbial analysis identified Cetobacterium (p = 0.013), Paraclostridium (p < 0.01), and Pseudomonas (p < 0.01) as key differential taxa. A simplified microbial community comprising these three strains was subsequently constructed'
explanation: Identifies Pseudomonas as a member genus of the disease-resistance SynCom.
ecological_interactions:
-- name: SynCom activation of intestinal immune responses
- description: Dietary administration of the Cetobacterium-Paraclostridium-Pseudomonas
- SynCom activated intestinal immune responses in crucian carp, including transcriptomic
- upregulation of the intestinal immune network for IgA production, before the observed
- enhancement of resistance to Aeromonas hydrophila.
- interaction_type: COMMENSALISM
+- name: SynCom-associated intestinal immune responses
+ description: After 28 days of SynCom feeding, crucian carp showed increased intestinal SOD, CAT, ACP and lysozyme
+ activities versus controls, alongside immune-associated transcript changes and qPCR validation of selected genes.
+ The intestinal immune network for IgA production is a KEGG pathway annotation, not a direct IgA production assay.
+ These treatment-associated host responses do not establish commensal microbial fitness or selective immune mediation
+ of challenge protection.
scope: COMMUNITY_LEVEL
participating_taxa:
- preferred_term: Cetobacterium
@@ -121,22 +121,24 @@ ecological_interactions:
label: defense response to bacterium
downstream:
- target: SynCom-mediated suppression of Aeromonas hydrophila
- description: Immune activation by the simplified gut SynCom is a reported mechanism
- for the subsequent increase in resistance to A. hydrophila challenge.
+ description: PARTIAL - prechallenge immune-associated responses could contribute to the improved survival and
+ reduced pathogen DNA loads after SynCom feeding. The treatment comparison supports protection, but no selective
+ immune blockade or rescue establishes these responses as necessary or sufficient mediators.
evidence:
- reference: PMID:41280275
- supports: SUPPORT
+ supports: PARTIAL
evidence_source: IN_VIVO
- snippet: the results revealed significant upregulation of immune-related pathways, particularly
- the intestinal immune network for IgA production
- explanation: Transcriptomics resolved immune activation as one mechanism induced by the
- simplified gut SynCom.
-- name: SynCom reinforcement of epithelial barrier defenses
- description: Dietary administration of the Cetobacterium-Paraclostridium-Pseudomonas
- SynCom activated tight-junction signaling and elevated proteins associated with
- intestinal barrier function, strengthening epithelial defenses that restrict opportunistic
- Aeromonas hydrophila infection.
- interaction_type: MUTUALISM
+ snippet: the results revealed significant upregulation of immune-related pathways, particularly the intestinal
+ immune network for IgA production
+ explanation: Supports a pathway-level interpretation; primary sections 3.5-3.6 separately report enzyme activities,
+ transcript enrichment and selected-gene qPCR. The annotation label is not a direct IgA assay or selective
+ mediation experiment.
+- name: SynCom-associated intestinal barrier markers
+ description: SynCom feeding increased zo-1, occludin and claudin12 transcript levels, and transcriptomics enriched
+ tight-junction-associated pathways. DAO activity also increased; the paper interprets this injury-associated
+ marker as possible mucosal turnover or repair, not an unambiguous improvement in permeability. These results
+ support a barrier-response hypothesis, not direct barrier-protein abundance, selective functional barrier rescue
+ or reciprocal microbial benefit.
scope: COMMUNITY_LEVEL
participating_taxa:
- preferred_term: Cetobacterium
@@ -158,27 +160,29 @@ ecological_interactions:
label: defense response to bacterium
downstream:
- target: SynCom-mediated suppression of Aeromonas hydrophila
- description: Gut-barrier reinforcement cooperates with immune activation to
- improve host resistance and reduce A. hydrophila abundance after challenge.
+ description: PARTIAL - altered barrier-associated transcripts could contribute to lower intestinal and kidney
+ pathogen DNA loads and improved survival after challenge. The SynCom treatment effect is measured, but marker
+ changes and ambiguous DAO activity do not isolate epithelial barrier function as the necessary mediator.
evidence:
- reference: PMID:41280275
- supports: SUPPORT
+ supports: PARTIAL
evidence_source: IN_VIVO
snippet: activation of tight junction signaling pathways was observed
- explanation: Supports tight-junction activation as a barrier-preservation
- response induced by the simplified gut SynCom.
+ explanation: Supports the authors' pathway-level barrier interpretation; enrichment and transcript markers are
+ not a direct functional permeability or protein-abundance assay.
- reference: PMID:41280275
supports: SUPPORT
evidence_source: IN_VIVO
- snippet: elevated expression of proteins associated with barrier function
- explanation: Immunological assays validated elevated expression of barrier-function
- proteins in fish treated with the protective SynCom.
+ snippet: the expression levels of genes related to the intestinal barrier
+ explanation: Primary Results section 3.5 describes gene-expression measurements, not the unqualified barrier-protein
+ validation suggested by Discussion wording. The same section reports increased DAO activity and a possible
+ turnover/repair interpretation.
- name: SynCom-mediated suppression of Aeromonas hydrophila
- description: The three-genus SynCom (Cetobacterium, Paraclostridium, Pseudomonas) significantly
- reduced the abundance of the pathogen Aeromonas hydrophila by activating intestinal immune
- responses and reinforcing the gut barrier, an emergent host-mediated antagonism rather than a
- direct pairwise microbe-microbe interaction.
- interaction_type: COMPETITION
+ description: After 28 days of three-strain SynCom feeding, challenged crucian carp had 60% survival versus 32.5%
+ in controls and lower calibrated qPCR Aeromonas DNA loads in intestine and kidney. These are positive host treatment
+ outcomes, not merely relative 16S profiles or viable-pathogen counts. Immune and barrier mediation remains proposed,
+ and reciprocal microbial competition is not established. The separate FMT survival comparison (66.7% versus
+ 36.7%) is not the SynCom result.
scope: COMMUNITY_LEVEL
participating_taxa:
- preferred_term: Cetobacterium
@@ -202,9 +206,10 @@ ecological_interactions:
- reference: PMID:41280275
supports: SUPPORT
evidence_source: IN_VIVO
- snippet: 'administration of this community significantly improved host resistance to A. hydrophila (p < 0.05) by activating intestinal immune responses and reinforcing the gut barrier'
- explanation: Community-level reduction of A. hydrophila via host immune activation and gut-barrier
- reinforcement.
+ snippet: administration of this community significantly improved host resistance to A. hydrophila (p < 0.05)
+ by activating intestinal immune responses and reinforcing the gut barrier
+ explanation: Supports the protective feeding intervention. Primary Results section 3.5 supplies survival and
+ qPCR-load endpoints; its immune/barrier interpretation is not a selectively tested mediation pathway.
growth_media:
- name: "BHI and LB (brain heart infusion and Luria-Bertani)"
temperature: '28'
@@ -243,3 +248,30 @@ cultivation_setup:
snippet: Pairwise and triple-strain co-cultures were incubated for 78 h at
inoculation ratios of 1:1 or 1:1:1, respectively, and no antagonistic or
inhibitory effects were observed
+discussions:
+- discussion_id: crucian_syncom_host_mediation
+ prompt: Which host responses and microbial functions causally mediate SynCom protection?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#SynCom-associated intestinal immune responses
+ - ecological_interactions#SynCom-associated intestinal barrier markers
+ - ecological_interactions#SynCom-mediated suppression of Aeromonas hydrophila
+ rationale: 'Complete main-body Methods and Results support 28-day feeding, enzyme/transcript responses, challenge
+ survival and calibrated qPCR pathogen loads. They do not report selective immune/barrier blockade or rescue,
+ direct barrier permeability or barrier-protein validation. Elevated DAO is ambiguous, and the IgA phrase is
+ a pathway annotation. Main text reports non-antagonistic in vitro co-culture and preliminary single/pair/triple
+ feeding comparisons; supplementary images/data were not inspected. In-host cross-feeding and signaling remain
+ hypotheses. Species/strain metadata and conflicting source units/schedules are tracked separately in #1353;
+ canonical genus participants are preserved here.'
+ posed_by: codex
+ posed_date: '2026-10-05'
+curation_history:
+- timestamp: '2026-10-06T02:28:28Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Retain measured enzyme/transcript responses while distinguishing pathway annotation from direct IgA
+ measurement or microbial fitness.; Retain transcript/pathway and DAO observations without promoting them to
+ protein, permeability or selective mediation evidence.; Preserve SynCom survival and calibrated qPCR endpoints,
+ separate from FMT and from reciprocal microbial competition. Issue #1352; reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml'
+ llm_assisted: true
diff --git a/reports/causal_graph_review/adversarial-review-20261005-batch24.yaml b/reports/causal_graph_review/adversarial-review-20261005-batch24.yaml
new file mode 100644
index 000000000..18f1f9e6c
--- /dev/null
+++ b/reports/causal_graph_review/adversarial-review-20261005-batch24.yaml
@@ -0,0 +1,117 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: ee38b8f0a6166f3d56dbf9ec07ac3afbabe2d1eb
+decision_ledger: reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
+validation_report: reports/causal_graph_review/validation-20261005-batch24.json
+scope:
+- kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml
+- kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml
+- kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml
+findings:
+- issue: 1351
+ severity: P2
+ finding: External additive response and transcript interpretation encoded as directed transfer, thermodynamic
+ syntrophy and unqualified flux mediation.
+ disposition: addressed_and_locally_verified
+- issue: 1352
+ severity: P2
+ finding: Host enzyme/transcript responses promoted into selective immune/barrier mediation and microbial fitness
+ signs; transcript markers described as protein validation.
+ disposition: addressed_and_locally_verified
+open_nongraph_followups:
+- issue: 1353
+ disposition: not_closed_by_graph_only_patch
+- issue: 1354
+ disposition: not_closed_by_graph_only_patch
+adversarial_checks:
+- Review all eight original nodes and four arrows. Retain every node/arrow with four exact renames; no new structure
+ or Edison spend.
+- 'Cordyceps graph remains byte-unchanged: isolation and selective antibacterial assays are abstract-supported endpoints.
+ Neither partner-dependent induction nor reciprocal benefit is asserted. Do not add an artificial connecting arrow
+ or duplicate closed #1158/#1159.'
+- 'Remove SYNTROPHY from the succinate graph: no demonstrated thermodynamically favorable metabolism enabled by
+ partner product removal. External riboflavin is not proof of Shewanella secretion or directed electron flux.'
+- Keep the additive response at coculture scope and the Corynebacterium transcript response source-only. Canonical
+ strain metadata is retained but the unresolved assignment of every assay to K1 is explicit.
+- Preserve parent-strain yield 0.169 g/g (+45.65%) separately from K1 yield 0.686 g/g and extended-fermentation
+ improvement up to 23.4%. Preserve lactate abolition after ldhA deletion.
+- Qualify redox-to-transcript causation as HYPOTHESIZED and transcript-to-output mediation as PARTIAL. Positive
+ interventions do not directly trace carbon/electron flux or selectively identify each mediator.
+- 'Remove COMMENSALISM/MUTUALISM/COMPETITION from fish host-response nodes: microbial partner fitness signs are
+ not measured by the host protection trial.'
+- Retain 28-day SynCom feeding, enzyme activities and selected transcript qPCR validation. The IgA phrase is a KEGG
+ annotation, not direct IgA synthesis measurement.
+- Prefer Methods/Results gene-expression measurements over the Discussion protein wording. Keep elevated DAO as
+ ambiguous injury-associated turnover/repair, not proof of improved permeability.
+- 'Keep both immune/barrier output arrows PARTIAL: no mediator-specific blockade/rescue or direct functional barrier
+ validation is reported in the reviewed primary body.'
+- Preserve challenge survival 60% versus 32.5% and calibrated qPCR pathogen DNA-load reductions. Do not replace
+ them with relative 16S change, viable CFU, or the separate FMT survival comparison of 66.7% versus 36.7%.
+- Fish main text reports preliminary single/pair/triple feeding and non-antagonistic in vitro tests. Supplementary
+ images/data were not independently inspected. Proposed gut cross-feeding/signaling does not become an additional
+ node or arrow.
+- One complete primary main body/captions and two complete abstracts read. Publisher bodies for the two cocultures
+ were inaccessible; no full Methods/Results claim. No visual figures or supplementary files reviewed or full copyrighted
+ body added.
+- 'Three tracked caches and unrelated YAML blocks are byte-preserved. Remaining fish strain/units/schedule/top-level
+ prose and succinate donor-role/prose issues are explicitly open as #1353/#1354, not silently certified.'
+- Both-root census remains 460 records, 389 with community scope, 122 mixed records and 1499 community-credited
+ taxa. One Shewanella participant changes from pairwise to solely community credit (1220 -> 1221); no registry
+ or sentinel changes.
+- Copper and Coscinodiscus source preparation does not count as completed review. Coverage is 121/460, and self-adversarial
+ review is not independent approval or protected CI success.
+verification:
+ status: local_validation_complete
+ checks: 29
+ records: 460
+ nodes: 1474
+ edges: 710
+ review_status_counts:
+ needs_research: 3
+ pending: 336
+ reviewed: 121
+ structural_defects: 0
+ network_errors: 0
+ network_warnings: 25
+ new_network_warnings: 0
+ unchanged_raw_blocks: 36
+ snippet_counts:
+ MATCH: 24
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ published_description_coverage:
+ pages: 456
+ node_descriptions: 1460
+ edge_descriptions: 702
+ render_determinism: passed
+ regressions: 285 passed in 190.25s (0:03:10)
+ rights: 3 passed in 1.56s
+ rights_import_root_verified: true
+ caches_unchanged: true
+ primary_artifact_hashes_rechecked: true
+ corpus_sentinels_unchanged: true
+ connectivity_survey_before:
+ records: 460
+ with_community_level: 389
+ mixed: 122
+ community_level_only: 267
+ taxa: 1499
+ credited_solely_by_the_rule: 1220
+ connectivity_survey:
+ records: 460
+ with_community_level: 389
+ mixed: 122
+ community_level_only: 267
+ taxa: 1499
+ credited_solely_by_the_rule: 1221
+ connectivity_delta:
+ records: 0
+ with_community_level: 0
+ mixed: 0
+ community_level_only: 0
+ taxa: 0
+ credited_solely_by_the_rule: 1
diff --git a/reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml b/reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
new file mode 100644
index 000000000..08b7d1820
--- /dev/null
+++ b/reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
@@ -0,0 +1,228 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: ee38b8f0a6166f3d56dbf9ec07ac3afbabe2d1eb
+issues:
+- 1351
+- 1352
+open_nongraph_followups:
+- 1353
+- 1354
+issue_deduplication:
+ all_state_issue_titles_bodies: 687
+ ignored_hidden_local_files_included: true
+ comments_exhaustive: false
+ relevant_issues_read:
+ - 1158
+ - 1159
+ - 529
+ - 746
+ - 524
+ finding: No exact new graph duplicate in searched scope. Closed Cordyceps findings remain fixed; no new issue
+ or record edit needed there.
+reference_cache_original_hashes:
+ references_cache/PMID_41280275.md: e9b2350c84a165a5448055f5ce32481e50e75b9bbfa899d461b4c1bbfe53b22e
+ references_cache/PMID_42203120.md: 7b567b431f735bc1384c900944b5828baf891f73e51c02e45443529afd4da156
+ references_cache/PMID_42543088.txt: 4d04c53d9685fe8b117a1fafe832b85d7ee8d492fda574d89fd693782abbbe8b
+limitations:
+- Three records reviewed; two changed with two histories and two gaps. Cordyceps is byte-unchanged and needs no
+ artificial arrow.
+- Eight nodes and four arrows retained with four exact renames. No new structure or Edison spend.
+- One complete primary main body and two complete abstracts reviewed. No figure images or supplementary files inspected.
+ No full copyrighted body added.
+- 'Unrelated metadata and canonical taxa preserved, not certified; #1353/#1354 explicitly track remaining metadata
+ findings.'
+- Copper and Coscinodiscus had baseline/source preparation only and remain pending; no review-completion claim for
+ them.
+- Self-adversarial review is not independent approval or full-corpus completion.
+records:
+- path: kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml
+ id: CommunityMech:000453
+ original_sha256: 2b61b970b93b4db345670df9f86f00ba299b29ba76cb56b99333fd8bf68e7c6d
+ record_sha256: 2b61b970b93b4db345670df9f86f00ba299b29ba76cb56b99333fd8bf68e7c6d
+ status: reviewed
+ outcome: unchanged
+ review_file: reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
+ scope: Whole record and every original node/arrow; source access bounded below.
+ summary: Retain the abstract-supported isolation of eight new and eleven known natural products. Coculture origin
+ is not proof of partner-dependent induction or reciprocal benefit; no such claim is present.; Retain selective
+ antibacterial activity of the assayed product subset against the four named test bacteria. The existing node
+ makes no universal compound-by-strain claim or fungal antagonism claim. No causal arrow is needed between two
+ descriptive isolation/assay endpoints without an induction or ecological-effect claim.
+ renamed_nodes: {}
+ node_decisions:
+ - node: Coculture-Derived Aromatic Natural Products
+ rationale: Retain the abstract-supported isolation of eight new and eleven known natural products. Coculture
+ origin is not proof of partner-dependent induction or reciprocal benefit; no such claim is present.
+ - node: Coculture-Derived Antibacterial Products
+ rationale: Retain selective antibacterial activity of the assayed product subset against the four named test
+ bacteria. The existing node makes no universal compound-by-strain claim or fungal antagonism claim. No causal
+ arrow is needed between two descriptive isolation/assay endpoints without an induction or ecological-effect
+ claim.
+ edges_before: []
+ edges_after: []
+ retained_edge_decisions: []
+ removed_edge_decisions: []
+ references:
+ - PMID:42543088
+ issues: []
+ allowed_changed_fields: []
+ curation_events_added: 0
+ history_files: []
+ source_review:
+ PMID:42543088:
+ url: https://pubmed.ncbi.nlm.nih.gov/42543088/
+ reviewed_scope: Complete primary abstract only; publisher body inaccessible (403). No full Methods/Results
+ or supplementary-material claim.
+- path: kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml
+ id: CommunityMech:000294
+ original_sha256: 4226ad9fea30e5f9235f7cf8f39e2f5ec754fd6823df63f8b44c152962501c9d
+ record_sha256: 1522534e0e993cff111c4fcde85182868aeae81389cb47120d97a3882b88250d
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
+ scope: Whole record and every original node/arrow; source access bounded below.
+ summary: Retain the measured external-additive response at coculture scope without asserting directed exchange
+ or syntrophy.; Represent Corynebacterium transcript response with its canonical source only and qualify inferred
+ flux and causal mediation.; Preserve distinct parent-strain and K1 intervention outcomes without assigning parent
+ results to the engineered derivative.
+ renamed_nodes:
+ Riboflavin-Mediated Redox Coupling: Riboflavin-Supplemented Coculture Response
+ Reprogrammed Corynebacterium Reductive TCA Flux: Corynebacterium Coculture Transcript Response
+ node_decisions:
+ - node: Riboflavin-Supplemented Coculture Response
+ rationale: Retain the measured external-additive response at coculture scope without asserting directed exchange
+ or syntrophy.
+ - node: Corynebacterium Coculture Transcript Response
+ rationale: Represent Corynebacterium transcript response with its canonical source only and qualify inferred
+ flux and causal mediation.
+ - node: Enhanced Succinic Acid Production
+ rationale: Preserve distinct parent-strain and K1 intervention outcomes without assigning parent results to
+ the engineered derivative.
+ edges_before:
+ - source: Riboflavin-Mediated Redox Coupling
+ target: Reprogrammed Corynebacterium Reductive TCA Flux
+ description: Coculture redox coupling leads into the transcriptome-level reinforcement of the C. glutamicum
+ electron transport system and reductive TCA flux.
+ - source: Reprogrammed Corynebacterium Reductive TCA Flux
+ target: Enhanced Succinic Acid Production
+ description: Redistribution toward the reductive TCA pathway and suppression of succinic-acid-consuming pathways
+ provide the immediate metabolic basis for higher succinic acid yield.
+ edges_after:
+ - source: Riboflavin-Supplemented Coculture Response
+ target: Corynebacterium Coculture Transcript Response
+ description: HYPOTHESIZED - altered coculture redox conditions could contribute to the Corynebacterium transcript
+ response. Additive screening and the transcriptomic interpretation support this candidate link, but the accessible
+ abstract does not selectively establish riboflavin-dependent electron transfer as its cause.
+ - source: Corynebacterium Coculture Transcript Response
+ target: Enhanced Succinic Acid Production
+ description: PARTIAL - the transcript-based interpretation is consistent with metabolic changes contributing
+ to increased succinic acid yield. Positive coculture, riboflavin and ldhA-deletion outcomes support the production
+ strategy, but do not selectively establish this transcript response or inferred flux redistribution as the
+ mediator of each yield comparison.
+ retained_edge_decisions:
+ - source: Riboflavin-Supplemented Coculture Response
+ target: Corynebacterium Coculture Transcript Response
+ rationale: HYPOTHESIZED - altered coculture redox conditions could contribute to the Corynebacterium transcript
+ response. Additive screening and the transcriptomic interpretation support this candidate link, but the accessible
+ abstract does not selectively establish riboflavin-dependent electron transfer as its cause.
+ - source: Corynebacterium Coculture Transcript Response
+ target: Enhanced Succinic Acid Production
+ rationale: PARTIAL - the transcript-based interpretation is consistent with metabolic changes contributing to
+ increased succinic acid yield. Positive coculture, riboflavin and ldhA-deletion outcomes support the production
+ strategy, but do not selectively establish this transcript response or inferred flux redistribution as the
+ mediator of each yield comparison.
+ removed_edge_decisions: []
+ references:
+ - PMID:42203120
+ issues:
+ - 1351
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture/2026-10-06T022828Z-codex-9a496b.yaml
+ source_review:
+ PMID:42203120:
+ url: https://pubmed.ncbi.nlm.nih.gov/42203120/
+ reviewed_scope: Complete primary abstract only; publisher body inaccessible (403). No full Methods/Results
+ or supplementary-material claim.
+- path: kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml
+ id: CommunityMech:000293
+ original_sha256: a9cd17e6ecb847a4c0db764be949ecdf75a9af88ed2828a83f1822f88fb2c8ec
+ record_sha256: 5dc07af806fbaa10b2eb522c2e5221c404aabc6ff58ea1f9cec7062ba079f09e
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml
+ scope: Whole record and every original node/arrow; source access bounded below.
+ summary: Retain measured enzyme/transcript responses while distinguishing pathway annotation from direct IgA measurement
+ or microbial fitness.; Retain transcript/pathway and DAO observations without promoting them to protein, permeability
+ or selective mediation evidence.; Preserve SynCom survival and calibrated qPCR endpoints, separate from FMT
+ and from reciprocal microbial competition.
+ renamed_nodes:
+ SynCom activation of intestinal immune responses: SynCom-associated intestinal immune responses
+ SynCom reinforcement of epithelial barrier defenses: SynCom-associated intestinal barrier markers
+ node_decisions:
+ - node: SynCom-associated intestinal immune responses
+ rationale: Retain measured enzyme/transcript responses while distinguishing pathway annotation from direct IgA
+ measurement or microbial fitness.
+ - node: SynCom-associated intestinal barrier markers
+ rationale: Retain transcript/pathway and DAO observations without promoting them to protein, permeability or
+ selective mediation evidence.
+ - node: SynCom-mediated suppression of Aeromonas hydrophila
+ rationale: Preserve SynCom survival and calibrated qPCR endpoints, separate from FMT and from reciprocal microbial
+ competition.
+ edges_before:
+ - source: SynCom activation of intestinal immune responses
+ target: SynCom-mediated suppression of Aeromonas hydrophila
+ description: Immune activation by the simplified gut SynCom is a reported mechanism for the subsequent increase
+ in resistance to A. hydrophila challenge.
+ - source: SynCom reinforcement of epithelial barrier defenses
+ target: SynCom-mediated suppression of Aeromonas hydrophila
+ description: Gut-barrier reinforcement cooperates with immune activation to improve host resistance and reduce
+ A. hydrophila abundance after challenge.
+ edges_after:
+ - source: SynCom-associated intestinal immune responses
+ target: SynCom-mediated suppression of Aeromonas hydrophila
+ description: PARTIAL - prechallenge immune-associated responses could contribute to the improved survival and
+ reduced pathogen DNA loads after SynCom feeding. The treatment comparison supports protection, but no selective
+ immune blockade or rescue establishes these responses as necessary or sufficient mediators.
+ - source: SynCom-associated intestinal barrier markers
+ target: SynCom-mediated suppression of Aeromonas hydrophila
+ description: PARTIAL - altered barrier-associated transcripts could contribute to lower intestinal and kidney
+ pathogen DNA loads and improved survival after challenge. The SynCom treatment effect is measured, but marker
+ changes and ambiguous DAO activity do not isolate epithelial barrier function as the necessary mediator.
+ retained_edge_decisions:
+ - source: SynCom-associated intestinal immune responses
+ target: SynCom-mediated suppression of Aeromonas hydrophila
+ rationale: PARTIAL - prechallenge immune-associated responses could contribute to the improved survival and
+ reduced pathogen DNA loads after SynCom feeding. The treatment comparison supports protection, but no selective
+ immune blockade or rescue establishes these responses as necessary or sufficient mediators.
+ - source: SynCom-associated intestinal barrier markers
+ target: SynCom-mediated suppression of Aeromonas hydrophila
+ rationale: PARTIAL - altered barrier-associated transcripts could contribute to lower intestinal and kidney
+ pathogen DNA loads and improved survival after challenge. The SynCom treatment effect is measured, but marker
+ changes and ambiguous DAO activity do not isolate epithelial barrier function as the necessary mediator.
+ removed_edge_decisions: []
+ references:
+ - PMID:41280275
+ issues:
+ - 1352
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/Crucian_Carp_Gut_Disease_Resistance_SynCom/2026-10-06T022828Z-codex-90c7a0.yaml
+ source_review:
+ PMID:41280275:
+ url: https://pmc.ncbi.nlm.nih.gov/articles/PMC12637255/
+ path: /private/tmp/communitymech-batch24/PMC12637255.xml
+ sha256: daa2f38568db1c917f630d0abf5326625779758259a612d2c9a5e3a80a368fda
+ license: CC BY-NC-ND 4.0
+ reviewed_scope: 'Complete primary main body: Introduction, Methods, Results, Discussion, Conclusion and displayed
+ captions. No figure images or supplementary files inspected; main-text reports of supplementary experiments
+ are not independent supplementary review.'
diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv
index 4dfccf681..816daee6e 100644
--- a/reports/causal_graph_review/inventory.tsv
+++ b/reports/causal_graph_review/inventory.tsv
@@ -121,10 +121,10 @@ kb/communities/Community_G_GenX_Biodegradation_Consortium.yaml CommunityMech:000
kb/communities/Composting_SynCom_Lignocellulose_Degradation_Humus.yaml CommunityMech:000277 16e496ddf18a513d3b3ca26c61999146cdf18b0675044ad7ae0d1425482ed270 3 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch23.yaml reviewed
kb/communities/Coniochaeta_Sphingobacterium_Citrobacter_Wheat_Straw_Consortium.yaml CommunityMech:000195 eb6927ba0ac59c0884bc3f479f20606ca4ae1f80b0855c415759db879a03fd2f 4 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch23.yaml reviewed
kb/communities/Copper_Biomining_Heap_Leach.yaml CommunityMech:000019 49e5dcc2b5ca5164ebb9437f56bddbb7806d97d8f04ee8b89d68d170ffd3c1e3 5 8 100.0 pending
-kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml CommunityMech:000453 2b61b970b93b4db345670df9f86f00ba299b29ba76cb56b99333fd8bf68e7c6d 2 0 55.0 pending
-kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml CommunityMech:000294 4226ad9fea30e5f9235f7cf8f39e2f5ec754fd6823df63f8b44c152962501c9d 3 2 100.0 pending
+kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml CommunityMech:000453 2b61b970b93b4db345670df9f86f00ba299b29ba76cb56b99333fd8bf68e7c6d 2 0 55.0 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml reviewed
+kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml CommunityMech:000294 1522534e0e993cff111c4fcde85182868aeae81389cb47120d97a3882b88250d 3 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml reviewed
kb/communities/Coscinodiscus_Synthetic_Community.yaml CommunityMech:000020 f92a79a6011428899eba0cc8e8de5bbd1410bb2e2e7e13b10593869ad1fd3b32 5 2 100.0 pending
-kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml CommunityMech:000293 a9cd17e6ecb847a4c0db764be949ecdf75a9af88ed2828a83f1822f88fb2c8ec 3 2 100.0 pending
+kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml CommunityMech:000293 5dc07af806fbaa10b2eb522c2e5221c404aabc6ff58ea1f9cec7062ba079f09e 3 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml reviewed
kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml CommunityMech:000252 57f51f8d2b027fa5a47e9cb28eac879906288e696892879c71a63c2db1091662 3 2 100.0 pending
kb/communities/Cultivated_Meat_Contaminant_SynCom.yaml CommunityMech:000366 432da24bbdadb8fb88ea3c7aec46d75743748ef94449b645a1a199bd651d047e 2 0 70.0 pending
kb/communities/Cyantraniliprole_Fahmy_Consortium_T4.yaml CommunityMech:000369 90f6ac24afc01d7d5b3d732f4c6d54a9cef8ed1df11e6fe63b8e9ebc8018e003 2 0 70.0 pending
diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json
index 8bfeff986..7578237d0 100644
--- a/reports/causal_graph_review/summary.json
+++ b/reports/causal_graph_review/summary.json
@@ -8,8 +8,8 @@
"records_without_edges": 141,
"review_status_counts": {
"needs_research": 3,
- "pending": 339,
- "reviewed": 118
+ "pending": 336,
+ "reviewed": 121
},
"structural_defects": [],
"network_audit": [
diff --git a/reports/causal_graph_review/validation-20261005-batch24.json b/reports/causal_graph_review/validation-20261005-batch24.json
new file mode 100644
index 000000000..caf1f9240
--- /dev/null
+++ b/reports/causal_graph_review/validation-20261005-batch24.json
@@ -0,0 +1,631 @@
+{
+ "base_commit": "ee38b8f0a6166f3d56dbf9ec07ac3afbabe2d1eb",
+ "scope": [
+ "kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml",
+ "kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml",
+ "kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml"
+ ],
+ "reference_validator_version": "0.1.7",
+ "results": [
+ {
+ "check": "Cordyceps_Malbranchea_Antimicrobial_Coculture-schema",
+ "command": [
+ "linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "No issues found\n"
+ },
+ {
+ "check": "Cordyceps_Malbranchea_Antimicrobial_Coculture-strict",
+ "command": [
+ "python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "
/Cordyceps_Malbranchea_Antimicrobial_Coculture-strict.tsv",
+ "kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "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: /Cordyceps_Malbranchea_Antimicrobial_Coculture-strict.tsv\n"
+ },
+ {
+ "check": "Cordyceps_Malbranchea_Antimicrobial_Coculture-terms",
+ "command": [
+ "linkml-term-validator",
+ "validate-data",
+ "kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Cordyceps_Malbranchea_Antimicrobial_Coculture-references-explained",
+ "command": [
+ "linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "Validating kb/communities/Cordyceps_Malbranchea_Antimicrobial_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": "Cordyceps_Malbranchea_Antimicrobial_Coculture-snippets",
+ "command": [
+ "python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "# 7 evidence snippets scanned across 1 files\n MATCH 7\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": "Cordyceps_Malbranchea_Antimicrobial_Coculture-rank",
+ "command": [
+ "python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000453\",\n \"name\": \"Cordyceps-Malbranchea Antimicrobial Coculture\",\n \"score\": 55.0,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 2,\n \"downstream_edges\": 0,\n \"interaction_evidence\": 2,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"additional_interactions\",\n \"downstream\",\n \"metabolites_or_biological_processes\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-schema",
+ "command": [
+ "linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "No issues found\n"
+ },
+ {
+ "check": "Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-strict",
+ "command": [
+ "python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-strict.tsv",
+ "kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "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: /Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-strict.tsv\n"
+ },
+ {
+ "check": "Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-terms",
+ "command": [
+ "linkml-term-validator",
+ "validate-data",
+ "kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-references-explained",
+ "command": [
+ "linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "Validating kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_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": "Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-snippets",
+ "command": [
+ "python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "# 7 evidence snippets scanned across 1 files\n MATCH 7\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": "Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-rank",
+ "command": [
+ "python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000294\",\n \"name\": \"Corynebacterium glutamicum + Shewanella oneidensis Succinic-acid Co-culture\",\n \"score\": 90.0,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 2,\n \"interaction_evidence\": 3,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture-history-0",
+ "command": [
+ "linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture/2026-10-06T022828Z-codex-9a496b.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "No issues found\n"
+ },
+ {
+ "check": "Crucian_Carp_Gut_Disease_Resistance_SynCom-schema",
+ "command": [
+ "linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "No issues found\n"
+ },
+ {
+ "check": "Crucian_Carp_Gut_Disease_Resistance_SynCom-strict",
+ "command": [
+ "python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/Crucian_Carp_Gut_Disease_Resistance_SynCom-strict.tsv",
+ "kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "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: /Crucian_Carp_Gut_Disease_Resistance_SynCom-strict.tsv\n"
+ },
+ {
+ "check": "Crucian_Carp_Gut_Disease_Resistance_SynCom-terms",
+ "command": [
+ "linkml-term-validator",
+ "validate-data",
+ "kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Crucian_Carp_Gut_Disease_Resistance_SynCom-references-explained",
+ "command": [
+ "linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "Validating kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.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": "Crucian_Carp_Gut_Disease_Resistance_SynCom-snippets",
+ "command": [
+ "python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "# 10 evidence snippets scanned across 1 files\n MATCH 10\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": "Crucian_Carp_Gut_Disease_Resistance_SynCom-rank",
+ "command": [
+ "python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000293\",\n \"name\": \"Crucian Carp Gut Disease-resistance SynCom\",\n \"score\": 90.0,\n \"taxonomy\": 3,\n \"connected_taxa\": 3,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 2,\n \"interaction_evidence\": 4,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Crucian_Carp_Gut_Disease_Resistance_SynCom-history-0",
+ "command": [
+ "linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/Crucian_Carp_Gut_Disease_Resistance_SynCom/2026-10-06T022828Z-codex-90c7a0.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "No issues found\n"
+ },
+ {
+ "check": "inventory",
+ "command": [
+ "python3",
+ "reports/causal_graph_review/build_inventory.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "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\": 710,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 141,\n \"review_status_counts\": {\n \"needs_research\": 3,\n \"pending\": 336,\n \"reviewed\": 121\n },\n \"structural_defects\": []\n}\n"
+ },
+ {
+ "check": "network",
+ "command": [
+ "python3",
+ "-m",
+ "communitymech.cli",
+ "audit-network",
+ "--json"
+ ],
+ "exit_code": 1,
+ "expected_exit_codes": [
+ 1
+ ],
+ "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",
+ "command": [
+ "python3",
+ "-m",
+ "communitymech.render"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "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",
+ "command": [
+ "python3",
+ "-m",
+ "communitymech.render"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "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",
+ "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_batch19.py",
+ "tests/test_causal_review_batch20.py",
+ "tests/test_causal_review_batch21.py",
+ "tests/test_causal_review_batch22.py",
+ "tests/test_causal_review_batch23.py",
+ "tests/test_causal_review_batch24.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"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "........................................................................ [ 25%]\n........................................................................ [ 50%]\n........................................................................ [ 75%]\n..................................................................... [100%]\n285 passed in 190.25s (0:03:10)\n"
+ },
+ {
+ "check": "workspace-rights",
+ "command": [
+ "python3",
+ "-m",
+ "pytest",
+ "-q",
+ "tests/test_no_paywalled_text_in_repo.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "... [100%]\n3 passed in 1.56s\n"
+ },
+ {
+ "check": "black",
+ "command": [
+ "black",
+ "--check",
+ "tests/test_causal_review_batch24.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "All done! \u2728 \ud83c\udf70 \u2728\n1 file would be left unchanged.\n"
+ },
+ {
+ "check": "ruff",
+ "command": [
+ "ruff",
+ "check",
+ "tests/test_causal_review_batch24.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "All checks passed!\n"
+ },
+ {
+ "check": "diff-check",
+ "command": [
+ "git",
+ "diff",
+ "--check"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": ""
+ }
+ ],
+ "limitations": [
+ "Three records reviewed; two changed with two histories and two gaps. Cordyceps is byte-unchanged and needs no artificial arrow.",
+ "Eight nodes and four arrows retained with four exact renames. No new structure or Edison spend.",
+ "One complete primary main body and two complete abstracts reviewed. No figure images or supplementary files inspected. No full copyrighted body added.",
+ "Unrelated metadata and canonical taxa preserved, not certified; #1353/#1354 explicitly track remaining metadata findings.",
+ "Copper and Coscinodiscus had baseline/source preparation only and remain pending; no review-completion claim for them.",
+ "Self-adversarial review is not independent approval or full-corpus completion.",
+ "Baseline just audit-network-json lacked its console entry point; exact repository CLI used without dependency edits.",
+ "Generated pages verified by deterministic rendering and exact parsed descriptions, not browser screenshots.",
+ "Issue dedup covered 687 all-state titles/bodies and ignored/hidden local files; comments not exhaustive."
+ ],
+ "unchanged_raw_blocks": 36,
+ "reference_caches_unchanged": true,
+ "corpus_sentinels_unchanged": true,
+ "connectivity_survey_before": {
+ "records": 460,
+ "with_community_level": 389,
+ "mixed": 122,
+ "community_level_only": 267,
+ "taxa": 1499,
+ "credited_solely_by_the_rule": 1220
+ },
+ "new_network_warnings": [],
+ "render_determinism": "passed",
+ "published_description_coverage": {
+ "pages": 456,
+ "node_descriptions": 1460,
+ "edge_descriptions": 702
+ },
+ "rights_import_root_verified": true,
+ "connectivity_survey": {
+ "records": 460,
+ "with_community_level": 389,
+ "mixed": 122,
+ "community_level_only": 267,
+ "taxa": 1499,
+ "credited_solely_by_the_rule": 1221
+ },
+ "connectivity_delta": {
+ "records": 0,
+ "with_community_level": 0,
+ "mixed": 0,
+ "community_level_only": 0,
+ "taxa": 0,
+ "credited_solely_by_the_rule": 1
+ },
+ "snippet_counts": {
+ "MATCH": 24,
+ "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": 710,
+ "records_without_nodes": 8,
+ "records_without_edges": 141,
+ "review_status_counts": {
+ "needs_research": 3,
+ "pending": 336,
+ "reviewed": 121
+ },
+ "structural_defects": []
+ },
+ "network_warning_count": 25,
+ "status": "passed",
+ "remediation": {
+ "finding": "Ruff B905: zip without explicit strict parameter in new test.",
+ "change": "Add strict=True to the single zip(rows, docs) loop; no record, cache, history or rendering change.",
+ "original_failed_checks": [
+ {
+ "check": "ruff",
+ "command": [
+ "ruff",
+ "check",
+ "tests/test_causal_review_batch24.py"
+ ],
+ "exit_code": 1,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "B905 `zip()` without an explicit `strict=` parameter\n --> tests/test_causal_review_batch24.py:124:21\n |\n122 | assert not any(r[\"removed_edge_decisions\"] for r in rows)\n123 | assert sum(len(r[\"history_files\"]) for r in rows) == 2\n124 | for row, doc in zip(rows, docs):\n | ^^^^^^^^^^^^^^^\n125 | assert hashlib.sha256((ROOT / row[\"path\"]).read_bytes()).hexdigest() == row[\"record_sha256\"]\n126 | nodes = doc[\"ecological_interactions\"]\n |\nhelp: Add explicit value for parameter `strict=`\n\nFound 1 error.\nNo fixes available (1 hidden fix can be enabled with the `--unsafe-fixes` option).\n"
+ }
+ ],
+ "verification": [
+ {
+ "check": "focused-after-lint-fix",
+ "command": [
+ "python3",
+ "-m",
+ "pytest",
+ "-q",
+ "tests/test_causal_review_batch24.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "....... [100%]\n7 passed in 0.58s\n"
+ },
+ {
+ "check": "black",
+ "command": [
+ "black",
+ "--check",
+ "tests/test_causal_review_batch24.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "All done! \u2728 \ud83c\udf70 \u2728\n1 file would be left unchanged.\n"
+ },
+ {
+ "check": "ruff",
+ "command": [
+ "ruff",
+ "check",
+ "tests/test_causal_review_batch24.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": "All checks passed!\n"
+ },
+ {
+ "check": "diff-check",
+ "command": [
+ "git",
+ "diff",
+ "--check"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "output": ""
+ }
+ ],
+ "full_regression_scope": "285 tests passed before the one-line test-only lint correction; all seven affected tests passed again afterward."
+ }
+}
diff --git a/tests/test_causal_review_batch24.py b/tests/test_causal_review_batch24.py
new file mode 100644
index 000000000..196a6ff39
--- /dev/null
+++ b/tests/test_causal_review_batch24.py
@@ -0,0 +1,144 @@
+"""Preserve measured treatments, bounded mediation and a genuine no-change review."""
+
+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-batch24.yaml"
+
+
+def records():
+ ledger = yaml.safe_load(LEDGER.read_text())
+ return ledger, [yaml.safe_load((ROOT / r["path"]).read_text()) for r in ledger["records"]]
+
+
+def test_cordyceps_is_an_unchanged_bounded_endpoint_graph():
+ ledger, docs = records()
+ row, doc = ledger["records"][0], docs[0]
+ assert row["outcome"] == "unchanged"
+ assert row["original_sha256"] == row["record_sha256"]
+ assert row["history_files"] == row["allowed_changed_fields"] == row["issues"] == []
+ assert row["curation_events_added"] == 0
+ assert len(doc["ecological_interactions"]) == 2
+ assert not any(n.get("downstream") for n in doc["ecological_interactions"])
+ assert all("interaction_type" not in n for n in doc["ecological_interactions"])
+ assert "weak to moderate selective" in doc["ecological_interactions"][1]["description"]
+
+
+def test_succinate_additive_is_external_and_transcript_response_is_source_only():
+ _, docs = records()
+ doc = docs[1]
+ redox, transcript, output = doc["ecological_interactions"]
+ assert redox["scope"] == output["scope"] == "COMMUNITY_LEVEL"
+ assert redox["participating_taxa"] == output["participating_taxa"]
+ assert not {"source_taxon", "target_taxon", "interaction_type"} & redox.keys()
+ assert "externally supplied riboflavin" in redox["description"]
+ assert "not resolve every additive/transcript assay to K1" in redox["description"]
+ assert transcript["scope"] == "PAIRWISE"
+ assert transcript["source_taxon"]["term"]["id"] == "NCBITaxon:1718"
+ assert not {"target_taxon", "participating_taxa", "interaction_type"} & transcript.keys()
+ assert "not directly traced carbon or electron flux" in transcript["description"]
+ assert transcript["evidence"][0]["supports"] == "PARTIAL"
+ assert redox["downstream"][0]["target"] == transcript["name"]
+ assert redox["downstream"][0]["description"].startswith("HYPOTHESIZED")
+ assert transcript["downstream"][0]["target"] == output["name"]
+ assert transcript["downstream"][0]["description"].startswith("PARTIAL")
+
+
+def test_succinate_parent_and_k1_outcomes_are_separate_and_positive():
+ _, docs = records()
+ output = docs[1]["ecological_interactions"][2]
+ for phrase in [
+ "parent-strain coculture yield of 0.169 g/g, 45.65%",
+ "ldhA deletion abolished lactate formation in K1",
+ "0.686 g/g",
+ "up to 23.4% higher yield during extended fermentation",
+ "do not establish thermodynamic syntrophy",
+ ]:
+ assert phrase in output["description"]
+ assert output["evidence"][0]["supports"] == "SUPPORT"
+ assert all("interaction_type" not in n for n in docs[1]["ecological_interactions"])
+
+
+def test_fish_immune_and_barrier_measurements_do_not_prove_mediation():
+ _, docs = records()
+ immune, barrier, output = docs[2]["ecological_interactions"]
+ for node in [immune, barrier, output]:
+ assert node["scope"] == "COMMUNITY_LEVEL"
+ assert not {"source_taxon", "target_taxon", "interaction_type"} & node.keys()
+ assert {p["term"]["id"] for p in node["participating_taxa"]} == {
+ "NCBITaxon:180162",
+ "NCBITaxon:1849822",
+ "NCBITaxon:286",
+ }
+ assert "increased intestinal SOD, CAT, ACP and lysozyme" in immune["description"]
+ assert "KEGG pathway annotation, not a direct IgA production assay" in immune["description"]
+ assert "zo-1, occludin and claudin12 transcript levels" in barrier["description"]
+ assert "DAO activity also increased" in barrier["description"]
+ assert "not an unambiguous improvement in permeability" in barrier["description"]
+ assert "not direct barrier-protein abundance" in barrier["description"]
+ for node in [immune, barrier]:
+ assert node["downstream"][0]["target"] == output["name"]
+ assert node["downstream"][0]["description"].startswith("PARTIAL")
+
+
+def test_fish_protection_keeps_qpcr_and_syncom_versus_fmt_boundaries():
+ _, docs = records()
+ output = docs[2]["ecological_interactions"][2]
+ for phrase in [
+ "60% survival versus 32.5%",
+ "calibrated qPCR Aeromonas DNA loads",
+ "not merely relative 16S profiles or viable-pathogen counts",
+ "FMT survival comparison (66.7% versus 36.7%) is not the SynCom result",
+ ]:
+ assert phrase in output["description"]
+ assert output["evidence"][0]["supports"] == "SUPPORT"
+
+
+def test_batch24_source_access_and_metadata_followups_are_explicit():
+ ledger, docs = records()
+ assert ledger["independent_approval"] is False
+ assert ledger["open_nongraph_followups"] == [1353, 1354]
+ for row in ledger["records"][:2]:
+ source = next(iter(row["source_review"].values()))
+ assert "Complete primary abstract only" in source["reviewed_scope"]
+ source = ledger["records"][2]["source_review"]["PMID:41280275"]
+ assert "Complete primary main body" in source["reviewed_scope"]
+ assert "No figure images or supplementary files inspected" in source["reviewed_scope"]
+ assert "#1354" in docs[1]["discussions"][0]["rationale"]
+ assert "#1353" in docs[2]["discussions"][0]["rationale"]
+
+
+def test_batch24_accounts_for_every_node_arrow_history_and_cache():
+ ledger, docs = records()
+ rows = ledger["records"]
+ assert len(rows) == 3
+ assert sum(len(r["node_decisions"]) for r in rows) == 8
+ assert sum(len(r["retained_edge_decisions"]) for r in rows) == 4
+ assert sum(len(r["renamed_nodes"]) for r in rows) == 4
+ assert not any(r["removed_edge_decisions"] for r in rows)
+ assert sum(len(r["history_files"]) for r in rows) == 2
+ for row, doc in zip(rows, docs, strict=True):
+ assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"]
+ nodes = doc["ecological_interactions"]
+ names = {n["name"] for n in nodes}
+ assert Counter(d["node"] for d in row["node_decisions"]) == Counter(names)
+ edges = [{"source": n["name"], **e} for n in nodes for e in n.get("downstream", [])]
+ assert edges == row["edges_after"]
+ rename = row["renamed_nodes"]
+ assert {(e["source"], e["target"]) for e in edges} == {
+ (rename.get(e["source"], e["source"]), rename.get(e["target"], e["target"]))
+ for e in row["edges_before"]
+ }
+ assert all(
+ a.split("#", 1)[1] in names
+ for d in doc.get("discussions", [])
+ for a in d.get("attaches_to", [])
+ if a.startswith("ecological_interactions#")
+ )
+ assert len(ledger["reference_cache_original_hashes"]) == 3
+ for path, expected in ledger["reference_cache_original_hashes"].items():
+ assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == expected