From 76b4e6b26bc8e309fde1d48c2cff69808dc15439 Mon Sep 17 00:00:00 2001
From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com>
Date: Tue, 6 Oct 2026 05:38:33 -0700
Subject: [PATCH] Bound inferred electron transfer in the Geobacter-Clostridium
graph
---
...erspecies_Electron_Transfer_Coculture.html | 269 +++-------
.../2026-10-06T123147Z-codex-030fb7.yaml | 26 +
...erspecies_Electron_Transfer_Coculture.yaml | 317 +++++-------
reports/causal_graph_review/README.md | 10 +
.../adversarial-review-20261006-batch45.yaml | 119 +++++
.../20261006-clostridium-batch45.yaml | 118 +++++
reports/causal_graph_review/inventory.tsv | 2 +-
reports/causal_graph_review/summary.json | 8 +-
.../validation-20261006-batch45.json | 484 ++++++++++++++++++
tests/test_causal_review_batch45.py | 86 ++++
tests/test_participating_taxa.py | 1 +
11 files changed, 1052 insertions(+), 388 deletions(-)
create mode 100644 history/records/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture/2026-10-06T123147Z-codex-030fb7.yaml
create mode 100644 reports/causal_graph_review/adversarial-review-20261006-batch45.yaml
create mode 100644 reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml
create mode 100644 reports/causal_graph_review/validation-20261006-batch45.json
create mode 100644 tests/test_causal_review_batch45.py
diff --git a/docs/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.html b/docs/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.html
index 3186fe90f..a85b628d1 100644
--- a/docs/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.html
+++ b/docs/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.html
@@ -584,7 +584,7 @@
"it was shown that Geobacter sulfurreducens was able to grow using Clostridium pasteurianum as sole electron acceptor"
@@ -677,7 +675,7 @@ "This metabolic shift was clearly induced by a small electron uptake that represented less than 0.6% of the electrons consumed by C. pasteurianum"
@@ -687,13 +685,13 @@
-
-
The metabolic shift in C. pasteurianum changed glycerol-fermentation output toward the more reduced end product 1,3-propanediol and the carboxylate butyrate. In coculture with G. sulfurreducens, 1,3-propanediol production increased by 37% and butyrate production increased by 38%, while butanol and ethanol decreased by 16% and 20%, respectively. This product-yield node records the measured output of the upstream electron-transfer-induced fermentation shift without asserting whether the electrons entered C. pasteurianum by contact-dependent or mediated transfer.
-
-
-
-
Source Taxon: Clostridium pasteurianum
-
-
-
-
-
-
Metabolites:
-
- 1,3-propanediol
- (CHEBI:16109),
-
- butyrate
- (CHEBI:30772)
-
-
-
-
-
-
Biological Processes:
-
@@ -895,7 +791,7 @@
Evidence
- Knowledge gaps & discussions (1)
+ Knowledge gaps & discussions (2)
@@ -904,12 +800,9 @@
Is the G. sulfurreducens-induced metabolic shift in C. pasteurianum actually caused by contact-dependent direct interspecies electron transfer along conductive pili, or by a diffusible mediator (candidate: a cobamide) released by G. sulfurreducens?
-
RE-SCOPED (was: this record asserted contact-dependent DIET as established). Caching the open-access full text of the discovery study (PMID:28287150, PMC5347079) showed the contact/nanowire mechanism was never supported by it. "Pili" and "nanowires" appear there only as general background about Geobacter species, and its own discussion states the opposite of what this record claimed: pre-cultures were "constituted of both nanowire-rich aggregates and nanowire-poor planktonic cells", and growing G. sulfurreducens on conductive material is offered as a future option "to ensure electrical connections" - i.e. electrical connection was NOT established in these experiments. Several evidence items had also cited that generic background sentence, or the unrelated "sole electron acceptor" sentence, as if they demonstrated contact-mediated transfer between these two organisms.
-Accordingly: `community_category` moved DIET -> SYNTROPHY (the schema defines DIET specifically as "Direct interspecies electron transfer", a mechanism claim no source supports here); pili/nanowire assertions were removed from the description, environment notes, taxon notes, and the interaction; the interactions were renamed to mechanism-neutral forms; and the "Cell Contact and Nanowire Formation" environmental factor became "Electrical Connection Between Cells", recording that connection was not established.
-The competing mechanism is NOT asserted in its place. The follow-up (PMID:34939136) concludes the interaction "is mediated" and proposes a diffusible cobamide acting on glycerol dehydratase, with a transmembrane flavin-bound polyferredoxin / cytochrome b5-rubredoxin electron-entry route offered only as putative reinforcement - and that paper calls its own model "putative". It is not open access, so only its abstract is snippet-verifiable here; its reported 0.22-um-filtered cell-free spent-medium result, which would show Geobacter cells are unnecessary for the shift, remains unverified against full text. STILL OPEN: which route actually carries the electrons, and whether the record's `name` and filename (both still say "DIET") should be changed - those affect external references and were left to a curator.
-
+
The prior contact-dependent DIET assertion was withdrawn in #256/#262; #295 corrected a remaining generic-background citation. This review also qualifies the broader IET interpretation: qPCR growth and an assumed electron balance do not directly measure uptake or selectively prove its mediation of the product shift. The 2017 Discussion proposes, rather than measures, nanowire-rich/planktonic inoculum heterogeneity and suggests conductive biofilms as future work. The record name and filename already use interspecies electron transfer rather than DIET, so the former pending-rename note is obsolete. The 2022 abstract describes mediated interaction and a putative cobamide model, with possible electron entry as reinforcement. Its full body remains inaccessible subscription content; the previously reported 0.22-um-filtered spent-medium result was not verified here and is not evidence for these graph decisions. Neither contact-dependent wiring, cobamide transfer nor a particular entry protein is asserted as established. Non-graph environmental, ingredient and overview text is preserved by this graph-scoped repair and is not scientifically certified by it.
-
Attaches to: ecological_interactions#Acetate Oxidation and Interspecies Electron Transfer, ecological_interactions#Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift
+
Attaches to: ecological_interactions#Proposed Acetate Oxidation and Interspecies Electron Transfer, ecological_interactions#Coculture-Associated Glycerol Fermentation Product Shift
@@ -934,7 +827,7 @@
IN_VITRO
- REFUTE
+ PARTIAL
@@ -943,13 +836,13 @@
C. pasteurianum-G. sulfurreducens interaction inducing a metabolic shift is mediated
-
Key-point conclusion that the interaction is mediated (via a diffusible molecule), contradicting the contact-dependent nanowire mechanism asserted by this record.
+
The abstract calls the interaction mediated, but the full experimental details were unavailable. This does not identify or verify the specific mediator, and is not treated as a selective contact-removal assay.
IN_VITRO
- SUPPORT
+ PARTIAL
@@ -958,12 +851,27 @@
a putative interaction model was proposed: G. sulfurreducens produces cobamide molecules that possibly modify C. pasteurianum metabolic pathway at the key enzyme glycerol dehydratase
-
States the competing diffusible-cobamide mechanism, and marks it as putative - so it must not be asserted as an interaction in place of the current one.
+
Supports a putative cobamide model stated in the abstract, not demonstrated cobamide transfer or a new verified interaction.
+
+
+
+
+ KNOWLEDGE_GAP
+ OPEN
+ Which mediator causes the conditional glycerol product shift?
+
+
Quantify all cultures rather than only responders, directly trace transferred electrons or metabolites, and selectively perturb the proposed mediator while measuring both organisms' growth. The measured product shift does not establish mutualism: Clostridium biomass decreased. Merge the duplicate product-output node into the measured fermentation response and remove its restatement arrow; retain only the explicitly HYPOTHESIZED upstream model arrow. The full 2022 study, including its reported cell-free assay, needs primary verification. No new causal node or arrow is added.
+
+
Attaches to: ecological_interactions#Proposed Acetate Oxidation and Interspecies Electron Transfer, ecological_interactions#Coculture-Associated Glycerol Fermentation Product Shift
+
+
+
+
@@ -1440,7 +1348,7 @@
Evidence
(function() {
var intId = "interaction:0";
- var intType = "SYNTROPHY";
+ var intType = "UNKNOWN";
var metabolites = [];
@@ -1457,7 +1365,7 @@
Evidence
nodes.push({
id: intId,
- label: "Acetate Oxidation and Interspecies Electron Transfer",
+ label: "Proposed Acetate Oxidation and Interspecies Electron Transfer",
type: "interaction",
interactionType: intType,
metabolites: metabolites,
@@ -1466,18 +1374,26 @@
Evidence
});
- var srcKey = "Geobacter sulfurreducens";
- if (taxonNodeIds[srcKey]) {
- links.push({ source: taxonNodeIds[srcKey], target: intId });
- }
+ var participantKeys = [
+
+ "Geobacter sulfurreducens",
+
+ "Clostridium pasteurianum"
+
+ ];
+ participantKeys.forEach(function(key) {
+ if (taxonNodeIds[key]) {
+ links.push({ source: taxonNodeIds[key], target: intId });
+ }
+ });
})();
(function() {
var intId = "interaction:1";
- var intType = "MUTUALISM";
+ var intType = "UNKNOWN";
var metabolites = [];
@@ -1499,14 +1415,12 @@
Evidence
processes.push("fermentation");
- processes.push("electron transport chain");
-
- var evidenceCount = 3;
+ var evidenceCount = 1;
nodes.push({
id: intId,
- label: "Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift",
+ label: "Coculture-Associated Glycerol Fermentation Product Shift",
type: "interaction",
interactionType: intType,
metabolites: metabolites,
@@ -1515,52 +1429,21 @@
Evidence
});
- var srcKey = "Clostridium pasteurianum";
- if (taxonNodeIds[srcKey]) {
- links.push({ source: taxonNodeIds[srcKey], target: intId });
- }
+ var participantKeys = [
- })();
-
- (function() {
- var intId = "interaction:2";
- var intType = "MUTUALISM";
- var metabolites = [];
-
+ "Geobacter sulfurreducens",
- metabolites.push("1,3-propanediol");
-
- metabolites.push("butyrate");
+ "Clostridium pasteurianum"
-
- var processes = [];
-
-
- processes.push("fermentation");
-
-
- var evidenceCount = 1;
-
- nodes.push({
- id: intId,
- label: "Increased 1,3-Propanediol and Butyrate Production",
- type: "interaction",
- interactionType: intType,
- metabolites: metabolites,
- processes: processes,
- evidenceCount: evidenceCount
+ ];
+ participantKeys.forEach(function(key) {
+ if (taxonNodeIds[key]) {
+ links.push({ source: taxonNodeIds[key], target: intId });
+ }
});
-
- var srcKey = "Clostridium pasteurianum";
- if (taxonNodeIds[srcKey]) {
- links.push({ source: taxonNodeIds[srcKey], target: intId });
- }
-
-
-
})();
@@ -1582,7 +1465,7 @@
Evidence
var svg = d3.select("#network-svg");
var width = container.clientWidth - 32;
// Dynamic height based on node count: minimum 500px, add 40px per node
- var nodeCount = 5;
+ var nodeCount = 4;
var height = Math.max(500, 400 + nodeCount * 20);
svg.attr("width", width).attr("height", height);
diff --git a/history/records/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture/2026-10-06T123147Z-codex-030fb7.yaml b/history/records/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture/2026-10-06T123147Z-codex-030fb7.yaml
new file mode 100644
index 000000000..60791993c
--- /dev/null
+++ b/history/records/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture/2026-10-06T123147Z-codex-030fb7.yaml
@@ -0,0 +1,26 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml
+ slug: Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture
+session:
+ id: 2026-10-06T123147Z-codex-030fb7
+ timestamp: '2026-10-06T12:31:47Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1478
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Qualify growth-inferred electron transfer and its one retained arrow; restrict
+ product yields to responding cultures; remove duplicate outcome and unsupported mutualism;
+ correct controversy and exact anchors.
+ details: Source-based self-adversarial existing-graph repair. reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml
diff --git a/kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml b/kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml
index 9f41e3e05..7c7843c78 100644
--- a/kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml
+++ b/kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml
@@ -145,120 +145,114 @@ taxonomy:
accession: '6013'
url: https://www.atcc.org/products/6013
ecological_interactions:
-- name: Acetate Oxidation and Interspecies Electron Transfer
- description: 'Geobacter sulfurreducens oxidizes acetate and transfers electrons to
- Clostridium pasteurianum, growing with C. pasteurianum as its sole electron acceptor.
- The transferred electrons modulate C. pasteurianum''s fermentation metabolism, and the
- quantity involved is very small - under 0.6% of the electrons C. pasteurianum consumes -
- with a non-linear relationship between G. sulfurreducens growth and the size of the
- metabolite shift.
-
- ROUTE UNRESOLVED. The cited study does not establish how the electrons move. Conductive
- pili / nanowires appear in that paper only as general background about Geobacter species,
- and its discussion states that electrical connection was NOT ensured in these cocultures
- (cells were a mix of nanowire-rich aggregates and nanowire-poor planktonic cells, and
- growth on conductive material is proposed as a future way to ensure connection). A
- mechanistic follow-up (PMID:34939136) instead concluded the interaction is mediated by a
- diffusible molecule, candidate cobamide. Do not curate contact-dependent DIET, interspecies
- wiring, or cobamide transfer here as demonstrated; see discussion
- kg-geobacter-clostridium-contact-dependence-contested.
-
- '
- interaction_type: SYNTROPHY
- scope: PAIRWISE
- source_taxon:
- preferred_term: Geobacter sulfurreducens
- term:
- id: NCBITaxon:35554
- label: Geobacter sulfurreducens
+- name: Proposed Acetate Oxidation and Interspecies Electron Transfer
+ description: 'HYPOTHESIZED: Geobacter sulfurreducens growth in responsive cocultures, but not in the corresponding
+ monoculture without a known electron acceptor, supports the authors'' proposed transfer of acetate-derived electrons
+ to Clostridium pasteurianum. qPCR estimates cell growth; it does not directly measure electron uptake or current.
+ The less-than-0.6% electron estimate assumes acetate as the Geobacter donor, 10% electron allocation to biomass
+ and transfer of the remaining 90%; it is an inferred balance, not a measured flux. Significant Geobacter growth
+ occurred in only two of four initial and eight of twelve subsequent cocultures. Contact-dependent transfer was
+ not established. Nanowire-rich versus planktonic inoculum heterogeneity was a proposed explanation of variability,
+ not a measured wiring result. The follow-up abstract calls the original IET interpretation an assumption and
+ proposes a putative cobamide mechanism; neither that mechanism nor a specific electron-entry route is demonstrated
+ here.'
+ scope: COMMUNITY_LEVEL
metabolites:
- preferred_term: acetate
term:
id: CHEBI:30089
label: acetate
- concentration: Substrate for oxidation by G. sulfurreducens
+ concentration: Assumed Geobacter electron donor in the growth-based balance
+ notes: Acetate consumption attributed to Geobacter was calculated from growth assumptions, not selectively traced.
biological_processes:
- preferred_term: acetate catabolic process
term:
id: GO:0045733
label: acetate catabolic process
downstream:
- - target: Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift
- description: Electrons taken up from G. sulfurreducens induce the metabolic shift in
- C. pasteurianum toward 1,3-propanediol and butyrate. The transfer route is unresolved,
- so this edge asserts electron uptake causing the shift, not a contact-dependent mechanism.
+ - target: Coculture-Associated Glycerol Fermentation Product Shift
+ description: 'HYPOTHESIZED: Acetate-derived electron transfer could alter Clostridium redox regulation and thereby
+ its glycerol-fermentation product profile. Growth/product associations and an assumed electron balance motivate
+ this direction, but do not selectively establish electron uptake as the mediator. The follow-up proposes cobamides
+ and possible electron entry as alternatives or contributors, not verified replacements.'
evidence:
- reference: PMID:28287150
- supports: SUPPORT
+ supports: PARTIAL
evidence_source: IN_VITRO
- snippet: it was shown that Geobacter sulfurreducens was able to grow using Clostridium
- pasteurianum as sole electron acceptor
- explanation: The study's actual finding for this coculture - G. sulfurreducens grows on
- C. pasteurianum as sole electron acceptor, establishing interspecies electron transfer.
+ snippet: it was shown that Geobacter sulfurreducens was able to grow using Clostridium pasteurianum as sole
+ electron acceptor
+ explanation: The authors interpret responsive Geobacter growth as electron-acceptor coupling. Full Results and
+ Discussion support growth-associated IET as a model, not direct transfer measurement or a resolved route.
- reference: PMID:28287150
- supports: SUPPORT
+ supports: PARTIAL
evidence_source: IN_VITRO
- snippet: This metabolic shift was clearly induced by a small electron uptake that represented
- less than 0.6% of the electrons consumed by C. pasteurianum
- explanation: Quantifies the electron uptake driving the shift, and is the basis for the
- downstream edge.
- - reference: PMID:28287150
+ snippet: This metabolic shift was clearly induced by a small electron uptake that represented less than 0.6%
+ of the electrons consumed by C. pasteurianum
+ explanation: The abstract uses strong causal wording, but the primary Discussion derives this estimate from
+ acetate-only donor, 10% biomass and 90% transfer assumptions. It is not a direct electron-uptake assay or
+ selective demonstration of the mediator.
+ - reference: PMID:34939136
supports: PARTIAL
evidence_source: IN_VITRO
- snippet: Direct interspecies electron transfer (DIET) mechanism has been recently
- characterised with Geobacter species which couple the electron balance with
- other species through physical contacts
- explanation: PARTIAL - this is the paper's generic background about Geobacter species in
- prior literature, NOT a finding about this coculture. It was previously cited here as
- demonstrating contact-mediated transfer between these two organisms, which it does not.
-- name: Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift
- description: 'Clostridium pasteurianum ferments glycerol, and upon receiving electrons
- from G. sulfurreducens, undergoes a dramatic metabolic shift that redirects
- carbon flux toward increased 1,3-propanediol (PDO) and butyrate production. In
- pure culture, C. pasteurianum produces primarily butanol (225 mmol/mol glycerol)
- and ethanol (54 mmol/mol). However, in coculture with G. sulfurreducens, production shifts to
- favor 1,3-propanediol (241 mmol/mol, +37%) and butyrate (105 mmol/mol, +38%),
- while butanol and ethanol decrease by 16% and 20% respectively. This metabolic
- reprogramming is induced by minimal electron uptake (<0.6% of total electrons
- consumed by C. pasteurianum), demonstrating the regulatory role of electron transfer
- in controlling fermentation pathways. The shift represents a biotechnologically
- valuable outcome, as 1,3-propanediol is an industrially important chemical used
- in polymer production.
-
- '
- interaction_type: MUTUALISM
- scope: PAIRWISE
- source_taxon:
- preferred_term: Clostridium pasteurianum
+ snippet: It was assumed that this metabolic shift of the fermentative species resulted from an interspecies
+ electron transfer
+ explanation: The follow-up study characterizes the interspecies-electron-transfer reading of the original experiment
+ as an assumption, not a demonstrated mechanism.
+ participating_taxa:
+ - preferred_term: Geobacter sulfurreducens
+ term:
+ id: NCBITaxon:35554
+ label: Geobacter sulfurreducens
+ - preferred_term: Clostridium pasteurianum
term:
id: NCBITaxon:1501
label: Clostridium pasteurianum
+- name: Coculture-Associated Glycerol Fermentation Product Shift
+ description: 'At 72 h, the two responsive cultures among four initial cocultures had higher 1,3-propanediol and
+ butyrate yields than Clostridium pasteurianum monocultures: 241 +/- 8 versus 176 +/- 13 and 105 +/- 6 versus
+ 76 +/- 7 mmol/mol glycerol, respectively. Butanol and ethanol yields were lower: 188 +/- 9 versus 225 +/- 5
+ and 43 +/- 4 versus 54 +/- 2 mmol/mol glycerol. These correspond to +37%, +38%, -16% and -20%; they are not
+ averages over all four initial cocultures or universal coculture responses. Significant Geobacter growth occurred
+ in eight of twelve later cultures, and the reported growth/product regressions use those responders. Clostridium
+ growth was reduced, so useful product yields do not establish mutual benefit. The measured conditional product
+ shift is retained independently of its unresolved electron-transfer or cobamide mediator.'
+ scope: COMMUNITY_LEVEL
metabolites:
- preferred_term: glycerol
term:
id: CHEBI:17754
label: glycerol
concentration: Substrate for fermentation
+ notes: Product comparisons refer to the two responsive initial cocultures at 72 h; glycerol is the supplied
+ fermentation substrate.
- preferred_term: 1,3-propanediol
term:
id: CHEBI:16109
label: propane-1,3-diol
concentration: 241 mmol/mol glycerol (+37% increase in coculture)
+ notes: Product comparisons refer to the two responsive initial cocultures at 72 h; glycerol is the supplied
+ fermentation substrate.
- preferred_term: butyrate
term:
id: CHEBI:30772
label: butyric acid
concentration: 105 mmol/mol glycerol (+38% increase in coculture)
+ notes: Product comparisons refer to the two responsive initial cocultures at 72 h; glycerol is the supplied
+ fermentation substrate.
- preferred_term: butanol
term:
id: CHEBI:28885
label: butan-1-ol
concentration: Decreased by 16% in coculture
+ notes: Product comparisons refer to the two responsive initial cocultures at 72 h; glycerol is the supplied
+ fermentation substrate.
- preferred_term: ethanol
term:
id: CHEBI:16236
label: ethanol
concentration: Decreased by 20% in coculture
+ notes: Product comparisons refer to the two responsive initial cocultures at 72 h; glycerol is the supplied
+ fermentation substrate.
biological_processes:
- preferred_term: glycerol catabolic process
term:
@@ -268,86 +262,24 @@ ecological_interactions:
term:
id: GO:0006113
label: fermentation
- - preferred_term: electron transport chain
- term:
- id: GO:0022900
- label: electron transport chain
- downstream:
- - target: Increased 1,3-Propanediol and Butyrate Production
- description: The electron-transfer-induced metabolic shift redirects glycerol
- fermentation products toward higher 1,3-propanediol and butyrate yields.
evidence:
- reference: PMID:28287150
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: The present study deals with a co-culture of Geobacter sulfurreducens
- and Clostridium pasteurianum during glycerol fermentation
- explanation: Quantifies the electron-transfer-induced metabolic shift toward 1,3-propanediol
- and butyrate
- - reference: PMID:28287150
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: This metabolic shift was clearly induced by a small electron uptake that
- represented less than 0.6% of the electrons consumed by C. pasteurianum
- explanation: Establishes that minimal electron transfer drives the fermentation
- pathway shift
- - reference: PMID:28287150
- supports: PARTIAL
- evidence_source: IN_VITRO
- snippet: Direct interspecies electron transfer (DIET) mechanism has been recently
- characterised with Geobacter species which couple the electron balance with
- other species through physical contacts
- explanation: 'PARTIAL - the paper''s generic background about Geobacter species in prior
- literature, not a finding about this coculture, so it cannot establish a transfer route
- for these two organisms. The same snippet is cited twice more in this record and PR #262
- re-scoped both to PARTIAL for this reason; this third occurrence was missed (#295). The
- interaction is unaffected - the electron-uptake measurement (less than 0.6% of the electrons
- consumed) is what carries it. Its other sibling is weaker than its own explanation claims:
- that snippet is the paper''s study-scope sentence and quantifies nothing, despite an
- explanation saying it quantifies the shift toward 1,3-propanediol - the same defect as this
- one, left for a separate pass. Snippet also completed here, having been truncated mid-word
- at "with o".'
-- name: Increased 1,3-Propanediol and Butyrate Production
- description: 'The metabolic shift in C. pasteurianum changed glycerol-fermentation
- output toward the more reduced end product 1,3-propanediol and the carboxylate
- butyrate. In coculture with G. sulfurreducens, 1,3-propanediol production increased
- by 37% and butyrate production increased by 38%, while butanol and ethanol decreased
- by 16% and 20%, respectively. This product-yield node records the measured output of
- the upstream electron-transfer-induced fermentation shift without asserting whether
- the electrons entered C. pasteurianum by contact-dependent or mediated transfer.
-
- '
- interaction_type: MUTUALISM
- scope: PAIRWISE
- source_taxon:
- preferred_term: Clostridium pasteurianum
+ snippet: pasteurianum metabolic pattern was significantly altered towards improved 1,3-propanediol and butyrate
+ production (+37% and +38% resp.) at the expense of butanol and ethanol production (-16% and -20% resp.)
+ explanation: Supports the measured product-yield comparison. Primary Results and Table 1 restrict these percentages
+ to two responsive initial cocultures at 72 h versus four Clostridium monocultures; this is not selective proof
+ of the electron-transfer mediator or mutualism.
+ participating_taxa:
+ - preferred_term: Geobacter sulfurreducens
+ term:
+ id: NCBITaxon:35554
+ label: Geobacter sulfurreducens
+ - preferred_term: Clostridium pasteurianum
term:
id: NCBITaxon:1501
label: Clostridium pasteurianum
- metabolites:
- - preferred_term: 1,3-propanediol
- term:
- id: CHEBI:16109
- label: propane-1,3-diol
- concentration: Increased by 37% in coculture
- - preferred_term: butyrate
- term:
- id: CHEBI:30772
- label: butyric acid
- concentration: Increased by 38% in coculture
- biological_processes:
- - preferred_term: fermentation
- term:
- id: GO:0006113
- label: fermentation
- evidence:
- - reference: PMID:28287150
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: pasteurianum metabolic pattern was significantly altered towards improved
- 1,3-propanediol and butyrate production (+37% and +38% resp.) at the expense
- of butanol and ethanol production (-16% and -20% resp.)
- explanation: Documents the product-yield shift caused by coculture with G. sulfurreducens.
environmental_factors:
- name: Anaerobic Conditions
value: Strict anaerobic
@@ -590,64 +522,69 @@ metal_relevance: SIGNIFICANT
metal_notes: Metal/REE detected via environmental factor measurements
discussions:
- discussion_id: kg-geobacter-clostridium-contact-dependence-contested
- prompt: >
- Is the G. sulfurreducens-induced metabolic shift in C. pasteurianum actually caused by
- contact-dependent direct interspecies electron transfer along conductive pili, or by a
- diffusible mediator (candidate: a cobamide) released by G. sulfurreducens?
+ prompt: 'Is the G. sulfurreducens-induced metabolic shift in C. pasteurianum actually caused by contact-dependent
+ direct interspecies electron transfer along conductive pili, or by a diffusible mediator (candidate: a cobamide)
+ released by G. sulfurreducens?
+
+ '
kind: CONTROVERSY
status: OPEN
attaches_to:
- - ecological_interactions#Acetate Oxidation and Interspecies Electron Transfer
- - ecological_interactions#Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift
- rationale: >
- RE-SCOPED (was: this record asserted contact-dependent DIET as established). Caching the
- open-access full text of the discovery study (PMID:28287150, PMC5347079) showed the
- contact/nanowire mechanism was never supported by it. "Pili" and "nanowires" appear there
- only as general background about Geobacter species, and its own discussion states the
- opposite of what this record claimed: pre-cultures were "constituted of both nanowire-rich
- aggregates and nanowire-poor planktonic cells", and growing G. sulfurreducens on conductive
- material is offered as a future option "to ensure electrical connections" - i.e. electrical
- connection was NOT established in these experiments. Several evidence items had also cited
- that generic background sentence, or the unrelated "sole electron acceptor" sentence, as if
- they demonstrated contact-mediated transfer between these two organisms.
-
- Accordingly: `community_category` moved DIET -> SYNTROPHY (the schema defines DIET
- specifically as "Direct interspecies electron transfer", a mechanism claim no source
- supports here); pili/nanowire assertions were removed from the description, environment
- notes, taxon notes, and the interaction; the interactions were renamed to mechanism-neutral
- forms; and the "Cell Contact and Nanowire Formation" environmental factor became
- "Electrical Connection Between Cells", recording that connection was not established.
-
- The competing mechanism is NOT asserted in its place. The follow-up (PMID:34939136)
- concludes the interaction "is mediated" and proposes a diffusible cobamide acting on
- glycerol dehydratase, with a transmembrane flavin-bound polyferredoxin / cytochrome
- b5-rubredoxin electron-entry route offered only as putative reinforcement - and that paper
- calls its own model "putative". It is not open access, so only its abstract is
- snippet-verifiable here; its reported 0.22-um-filtered cell-free spent-medium result, which
- would show Geobacter cells are unnecessary for the shift, remains unverified against full
- text. STILL OPEN: which route actually carries the electrons, and whether the record's
- `name` and filename (both still say "DIET") should be changed - those affect external
- references and were left to a curator.
+ - ecological_interactions#Proposed Acetate Oxidation and Interspecies Electron Transfer
+ - ecological_interactions#Coculture-Associated Glycerol Fermentation Product Shift
+ rationale: 'The prior contact-dependent DIET assertion was withdrawn in #256/#262; #295 corrected a remaining
+ generic-background citation. This review also qualifies the broader IET interpretation: qPCR growth and an assumed
+ electron balance do not directly measure uptake or selectively prove its mediation of the product shift. The
+ 2017 Discussion proposes, rather than measures, nanowire-rich/planktonic inoculum heterogeneity and suggests
+ conductive biofilms as future work. The record name and filename already use interspecies electron transfer
+ rather than DIET, so the former pending-rename note is obsolete. The 2022 abstract describes mediated interaction
+ and a putative cobamide model, with possible electron entry as reinforcement. Its full body remains inaccessible
+ subscription content; the previously reported 0.22-um-filtered spent-medium result was not verified here and
+ is not evidence for these graph decisions. Neither contact-dependent wiring, cobamide transfer nor a particular
+ entry protein is asserted as established. Non-graph environmental, ingredient and overview text is preserved
+ by this graph-scoped repair and is not scientifically certified by it.'
evidence:
- reference: PMID:34939136
supports: PARTIAL
evidence_source: IN_VITRO
- snippet: It was assumed that this metabolic shift of the fermentative species resulted
- from an interspecies electron transfer
- explanation: The follow-up study characterizes the interspecies-electron-transfer reading
- of the original experiment as an assumption, not a demonstrated mechanism.
+ snippet: It was assumed that this metabolic shift of the fermentative species resulted from an interspecies
+ electron transfer
+ explanation: The follow-up study characterizes the interspecies-electron-transfer reading of the original experiment
+ as an assumption, not a demonstrated mechanism.
- reference: PMID:34939136
- supports: REFUTE
+ supports: PARTIAL
evidence_source: IN_VITRO
- snippet: 'C. pasteurianum-G. sulfurreducens interaction inducing a metabolic shift is
- mediated'
- explanation: Key-point conclusion that the interaction is mediated (via a diffusible
- molecule), contradicting the contact-dependent nanowire mechanism asserted by this record.
+ snippet: C. pasteurianum-G. sulfurreducens interaction inducing a metabolic shift is mediated
+ explanation: The abstract calls the interaction mediated, but the full experimental details were unavailable.
+ This does not identify or verify the specific mediator, and is not treated as a selective contact-removal
+ assay.
- reference: PMID:34939136
- supports: SUPPORT
+ supports: PARTIAL
evidence_source: IN_VITRO
- snippet: 'a putative interaction model was proposed: G. sulfurreducens produces cobamide
- molecules that possibly modify C. pasteurianum metabolic pathway at the key enzyme
- glycerol dehydratase'
- explanation: States the competing diffusible-cobamide mechanism, and marks it as putative -
- so it must not be asserted as an interaction in place of the current one.
+ snippet: 'a putative interaction model was proposed: G. sulfurreducens produces cobamide molecules that possibly
+ modify C. pasteurianum metabolic pathway at the key enzyme glycerol dehydratase'
+ explanation: Supports a putative cobamide model stated in the abstract, not demonstrated cobamide transfer or
+ a new verified interaction.
+- discussion_id: geobacter_clostridium_responder_and_flux_scope
+ prompt: Which mediator causes the conditional glycerol product shift?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#Proposed Acetate Oxidation and Interspecies Electron Transfer
+ - ecological_interactions#Coculture-Associated Glycerol Fermentation Product Shift
+ rationale: 'Quantify all cultures rather than only responders, directly trace transferred electrons or metabolites,
+ and selectively perturb the proposed mediator while measuring both organisms'' growth. The measured product
+ shift does not establish mutualism: Clostridium biomass decreased. Merge the duplicate product-output node into
+ the measured fermentation response and remove its restatement arrow; retain only the explicitly HYPOTHESIZED
+ upstream model arrow. The full 2022 study, including its reported cell-free assay, needs primary verification.
+ No new causal node or arrow is added.'
+ posed_by: codex
+ posed_date: '2026-10-06'
+curation_history:
+- timestamp: '2026-10-06T12:31:46Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Qualify growth-inferred electron transfer and its one retained arrow; restrict product yields to responding
+ cultures; remove duplicate outcome and unsupported mutualism; correct controversy and exact anchors. Issue #1478;
+ reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml'
+ llm_assisted: true
diff --git a/reports/causal_graph_review/README.md b/reports/causal_graph_review/README.md
index 812bcf727..850aab5b1 100644
--- a/reports/causal_graph_review/README.md
+++ b/reports/causal_graph_review/README.md
@@ -5,6 +5,16 @@ source-based self-adversarial review. These records are not independent approval
or proof that every graph is complete. The current inventory and summary distinguish
`reviewed`, `pending` and `needs_research`.
+## Batch45: Geobacter-Clostridium
+
+[Decisions](decisions/20261006-clostridium-batch45.yaml),
+[validation](validation-20261006-batch45.json) and
+[self-adversarial review](adversarial-review-20261006-batch45.yaml) separate
+conditional measured fermentation yields from an inferred electron balance.
+The upstream arrow remains explicitly hypothetical; the duplicate outcome node
+and its restatement arrow are removed. The 2022 follow-up was reviewed at
+abstract scope only. Non-graph text is preserved, not certified.
+
## Batch44: UFMP, GOM and Garlic
[Decisions](decisions/20261006-three-records-batch44.yaml),
diff --git a/reports/causal_graph_review/adversarial-review-20261006-batch45.yaml b/reports/causal_graph_review/adversarial-review-20261006-batch45.yaml
new file mode 100644
index 000000000..e95069d25
--- /dev/null
+++ b/reports/causal_graph_review/adversarial-review-20261006-batch45.yaml
@@ -0,0 +1,119 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: 7bdc93828cb9585f0711253d58d7382037207010
+scope:
+- kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml
+decision_ledger: reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml
+validation_report: reports/causal_graph_review/validation-20261006-batch45.json
+findings:
+- issue: 1478
+ severity: P2
+ status: addressed_in_this_change
+ finding: Qualify growth-inferred electron transfer and its one retained arrow; restrict product yields
+ to responding cultures; remove duplicate outcome and unsupported mutualism; correct controversy and
+ exact anchors.
+ disposition: Close only after protected main merge.
+adversarial_checks:
+- Whole 653-line record and all three original nodes/two arrows read. 2017 primary main body, Methods,
+ Table 1 and captions read; 2022 complete abstract only. No figure images, separate supplements, raw
+ data or analysis code audited.
+- Geobacter qPCR-derived growth and an acetate/biomass allocation model are not direct electron uptake
+ or current. The <0.6% value depends on the acetate-only donor, 10% biomass and 90% transfer assumptions.
+ Both the transfer node and its retained direction remain HYPOTHESIZED/PARTIAL.
+- Preserve positive 72-h product measurements while exposing 2/4 initial responders and 8/12 follow-up
+ responders. Regressions use responders; product percentages are not all-culture means or universal responses.
+ Lower Clostridium biomass and useful chemical yields do not establish mutualism.
+- Merge the duplicate product outcome into the measured response, preserve its evidence and remove the
+ tautological second arrow. Remove unsupported electron-chain annotation, SYNTROPHY and MUTUALISM classifications
+ from these nodes. Exact two canonical participants are explicit; no taxon IDs invented.
+- Correct exact discussion anchors and stale DIET filename note. Nanowire heterogeneity remains an author
+ hypothesis. The 2022 abstract supports a putative cobamide model only; no 0.22-um spent-medium assay
+ is claimed verified, and no mediator is silently promoted to established fact.
+- Graph diff inspected. Guarded writer, one append-only history and one regenerated page. All 459 other
+ records, 920 caches, canonical taxonomy and non-graph raw blocks preserved; stronger non-graph uptake/connection/product
+ claims remain outside this correction and are not certified.
+- Both-root pre-paper baseline, schema/strict/terms/references/snippets/history/rank gates retained with
+ actual outputs and hashes. All 34 existing network findings unchanged, zero structural errors. Repeated
+ renders deterministic and descriptions parser-checked across 456 published pages, without a browser
+ screenshot claim.
+- Four new focused tests plus historical and shared regressions passed, including positive/negative reference-validator
+ canaries. Participant registry 193 to 194; one new community-level-only two-member record. Census bounds
+ and production matching logic unchanged.
+- 'Dedup covered 793 all-state issue titles/bodies and ignored/hidden local files; #256/#295/#289/#306
+ bodies read. Prior contact-route and generic-snippet fixes preserved, remaining broader uptake-causation
+ and responder-scope claims addressed. Not all issue comments or PR reviews inspected.'
+- Methanosaeta/Methanosarcina source work is deferred, not counted as reviewed in this one-record PR.
+ A separate one-community Methanosaeta Edison dry run made no API calls and awaits specific spend authorization;
+ no paid job is implied by this Clostridium repair.
+- Self-adversarial review is not independent approval. Exact-head GitHub COMMENT and actual post-commit
+ docs-current are separate publication gates. Protected main queue and dependent-parent merges remain
+ required; full-corpus completion is not claimed.
+verification:
+ combined_regressions: 455 passed in 168.19s (0:02:48)
+ new_regression_tests: 4
+ schema_strict_terms_history: Passed with actual outputs and digests
+ references: 'CLI Total checks counts reported issues, not executed checks. Exit 0 means no reported
+ issues; textual matching does not establish scientific support or independent provenance. SupportingReference
+ coverage remains incomplete under #476.'
+ snippet_counts_by_record:
+ kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml:
+ MATCH: 22
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ network:
+ existing_findings_preserved: 34
+ added_findings: {}
+ removed_findings: {}
+ black_ruff_diff: passed
+ tested_file_sha256:
+ reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml: 91f2b38628bc946d11bf40ae7d52501867dda13969429bac62a95514be38473c
+ tests/test_causal_review_batch45.py: 73160070d62babe533dbd60e0da6582aaa2c93eeb71cf7ca497a70ab15a00203
+ tests/test_participating_taxa.py: 9420e75cb8c477620597c3edf066ceaa5e431b4d5053398e8f635d81069207a1
+ kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml: 2bfa8ffd6b7d147f3c471eb88aa26482f93b0cc8d7b23dc39838402715463329
+ reports/causal_graph_review/README.md: ce166b800cc8ede66788b97c0d919f82887118e68ba88002419d77a70b76ba73
+ post_commit_docs_current: Separate publication gate, not asserted before commit.
+participant_census:
+ measurements:
+ baseline:
+ records: 460
+ with_community_level: 387
+ mixed: 125
+ community_level_only: 262
+ taxa: 1494
+ credited_solely_by_the_rule: 1221
+ current:
+ records: 460
+ with_community_level: 388
+ mixed: 125
+ community_level_only: 263
+ taxa: 1496
+ credited_solely_by_the_rule: 1223
+ interpretation: One two-member graph becomes explicitly community-level for the proposed interaction
+ and conditional coculture outcome. Mixed count remains 125; registry 193 to 194. No census bounds
+ or production matching logic changed.
+corpus:
+ records: 460
+ nodes: 1465
+ edges: 681
+ review_status_counts:
+ needs_research: 12
+ pending: 280
+ reviewed: 168
+limitations:
+- Whole 653-line record, all three original nodes and both arrows read. Complete 2017 primary main body,
+ Methods, Table 1 and embedded captions read; 2022 complete abstract only, publisher confirms subscription
+ preview. No figure images, separate supplements, raw data or analysis code audited.
+- 'Repair only: three to two nodes and two to one explicitly HYPOTHESIZED arrow; no new causal structure
+ or provider spend for this record.'
+- All canonical taxonomy, non-graph raw blocks, prior history and 920 source caches preserved, not certified.
+ Non-graph uptake, nanowire and product-causation claims remain outside this graph-scoped correction.
+- 'Reference CLI Total checks counts reported issues, not executed checks; SupportingReference coverage
+ remains incomplete under #476. Textual matches do not independently establish source provenance (#1362)
+ or scientific support.'
+- Source-based self-adversarial review is not independent approval. Methanosaeta and Methanosarcina remain
+ outside this one-record edit and are not counted as reviewed. Full-corpus completion and protected-main
+ merge are not claimed.
diff --git a/reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml b/reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml
new file mode 100644
index 000000000..c76901537
--- /dev/null
+++ b/reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml
@@ -0,0 +1,118 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: 7bdc93828cb9585f0711253d58d7382037207010
+baseline_commit: 7bdc93828cb9585f0711253d58d7382037207010
+base_tree: ae873b509fa12c69970cbafa96265ab9d55b8eb5
+issues:
+- 1478
+issue_deduplication:
+ all_state_issue_titles_and_bodies: 793
+ ignored_hidden_local_search: true
+ relevant_bodies_read:
+ - 256
+ - 295
+ - 289
+ - 306
+ local_matching_lines: 63
+ limitations: Search includes two deferred methanogen candidates and historical render/audit logs. Not all comments
+ or PR reviews inspected.
+reference_cache_original_hashes:
+ references_cache/PMID_28287150.txt: fdddff4829504900d4fcc745c214415a4cd3db3f57b1afe864237a4ec0c8c333
+ references_cache/PMID_34939136.txt: 8e7d9b0ab75beb3caf39c10356a7f7b9cf97547b1c6388ba92154c00c7e9e4ba
+limitations:
+- Whole 653-line record, all three original nodes and both arrows read. Complete 2017 primary main body, Methods,
+ Table 1 and embedded captions read; 2022 complete abstract only, publisher confirms subscription preview. No figure
+ images, separate supplements, raw data or analysis code audited.
+- 'Repair only: three to two nodes and two to one explicitly HYPOTHESIZED arrow; no new causal structure or provider
+ spend for this record.'
+- All canonical taxonomy, non-graph raw blocks, prior history and 920 source caches preserved, not certified. Non-graph
+ uptake, nanowire and product-causation claims remain outside this graph-scoped correction.
+- 'Reference CLI Total checks counts reported issues, not executed checks; SupportingReference coverage remains
+ incomplete under #476. Textual matches do not independently establish source provenance (#1362) or scientific
+ support.'
+- Source-based self-adversarial review is not independent approval. Methanosaeta and Methanosarcina remain outside
+ this one-record edit and are not counted as reviewed. Full-corpus completion and protected-main merge are not
+ claimed.
+records:
+- path: kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml
+ id: CommunityMech:000031
+ original_sha256: d3a7d0c3298583e167a50201c8da4cd94d0ac51c1516a8587a41259e85f4718e
+ record_sha256: 2bfa8ffd6b7d147f3c471eb88aa26482f93b0cc8d7b23dc39838402715463329
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml
+ scope: Whole record and every original node/arrow reviewed; measurements distinguished from inferred mediator.
+ summary: Qualify growth-inferred electron transfer and its one retained arrow; restrict product yields to responding
+ cultures; remove duplicate outcome and unsupported mutualism; correct controversy and exact anchors.
+ renamed_nodes:
+ Acetate Oxidation and Interspecies Electron Transfer: Proposed Acetate Oxidation and Interspecies Electron Transfer
+ Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift: Coculture-Associated Glycerol Fermentation
+ Product Shift
+ node_decisions:
+ - node: Proposed Acetate Oxidation and Interspecies Electron Transfer
+ rationale: Retain only the HYPOTHESIZED growth-based acetate/IET model with both canonical participants; not
+ measured uptake or demonstrated syntrophy.
+ - node: Coculture-Associated Glycerol Fermentation Product Shift
+ rationale: Retain conditional measured product yields, remove mutualism and unproven electron-chain annotation;
+ incorporate duplicate outcome evidence.
+ removed_node_decisions:
+ - node: Increased 1,3-Propanediol and Butyrate Production
+ rationale: Same product shift as the fermentation-response node, not a distinct downstream causal event; preserve
+ its evidence in the surviving response.
+ edges_before:
+ - source: Acetate Oxidation and Interspecies Electron Transfer
+ target: Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift
+ description: Electrons taken up from G. sulfurreducens induce the metabolic shift in C. pasteurianum toward
+ 1,3-propanediol and butyrate. The transfer route is unresolved, so this edge asserts electron uptake causing
+ the shift, not a contact-dependent mechanism.
+ - source: Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift
+ target: Increased 1,3-Propanediol and Butyrate Production
+ description: The electron-transfer-induced metabolic shift redirects glycerol fermentation products toward higher
+ 1,3-propanediol and butyrate yields.
+ edges_after:
+ - source: Proposed Acetate Oxidation and Interspecies Electron Transfer
+ target: Coculture-Associated Glycerol Fermentation Product Shift
+ description: 'HYPOTHESIZED: Acetate-derived electron transfer could alter Clostridium redox regulation and thereby
+ its glycerol-fermentation product profile. Growth/product associations and an assumed electron balance motivate
+ this direction, but do not selectively establish electron uptake as the mediator. The follow-up proposes cobamides
+ and possible electron entry as alternatives or contributors, not verified replacements.'
+ retained_edge_decisions:
+ - source: Proposed Acetate Oxidation and Interspecies Electron Transfer
+ target: Coculture-Associated Glycerol Fermentation Product Shift
+ description: 'HYPOTHESIZED: Acetate-derived electron transfer could alter Clostridium redox regulation and thereby
+ its glycerol-fermentation product profile. Growth/product associations and an assumed electron balance motivate
+ this direction, but do not selectively establish electron uptake as the mediator. The follow-up proposes cobamides
+ and possible electron entry as alternatives or contributors, not verified replacements.'
+ rationale: Explicit hypothesis of redox-mediated product regulation; association and assumed balance do not
+ selectively prove the mediator.
+ removed_edge_decisions:
+ - source: Glycerol Fermentation with Electron-Transfer-Induced Metabolic Shift
+ target: Increased 1,3-Propanediol and Butyrate Production
+ description: The electron-transfer-induced metabolic shift redirects glycerol fermentation products toward higher
+ 1,3-propanediol and butyrate yields.
+ rationale: A product-profile shift causing the same product-profile shift is a restatement, not a separate causal
+ link.
+ references:
+ - PMID:28287150
+ - PMID:34939136
+ issues:
+ - 1478
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture/2026-10-06T123147Z-codex-030fb7.yaml
+ source_review:
+ PMID:28287150:
+ cache: references_cache/PMID_28287150.txt
+ sha256: fdddff4829504900d4fcc745c214415a4cd3db3f57b1afe864237a4ec0c8c333
+ url: https://doi.org/10.1038/srep44334
+ scope: Complete appended primary main body/Methods/Table 1/captions, not figure images or separate supplements.
+ PMID:34939136:
+ cache: references_cache/PMID_34939136.txt
+ sha256: 8e7d9b0ab75beb3caf39c10356a7f7b9cf97547b1c6388ba92154c00c7e9e4ba
+ url: https://link.springer.com/article/10.1007/s00253-021-11736-7
+ scope: Complete abstract only; subscription preview. Cell-free assay not verified.
diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv
index e17512b28..8372be4d8 100644
--- a/reports/causal_graph_review/inventory.tsv
+++ b/reports/causal_graph_review/inventory.tsv
@@ -180,7 +180,7 @@ kb/communities/GLBRC_Populus_Variovorax_SynCom28.yaml CommunityMech:000028 c251f
kb/communities/GLBRC_UFMP_Fermentation_Community.yaml CommunityMech:000029 0cd65716c7bf522b2c8326bdc476339c3196f551d9a2ee92c405d15dc9ea9c92 3 2 87.8 reports/causal_graph_review/decisions/20261006-three-records-batch44.yaml reviewed
kb/communities/GOM_Oil_Degrading_Consortium.yaml CommunityMech:000030 90d4d45224abfc9829feb8fd1cabde320c410a7a843ea3410c89dda4852cc299 3 0 65.0 reports/causal_graph_review/decisions/20261006-three-records-batch44.yaml reviewed
kb/communities/Garlic_Pseudomonas_SynCom6.yaml CommunityMech:000095 0052209591a0d6d3e106ad27feaca9dde69645f9725f01ba63e41ebeb5c5c59c 1 0 65.0 reports/causal_graph_review/decisions/20261006-three-records-batch44.yaml reviewed
-kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml CommunityMech:000031 d3a7d0c3298583e167a50201c8da4cd94d0ac51c1516a8587a41259e85f4718e 3 2 100.0 pending
+kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml CommunityMech:000031 2bfa8ffd6b7d147f3c471eb88aa26482f93b0cc8d7b23dc39838402715463329 2 1 75.0 reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml reviewed
kb/communities/Geobacter_Methanosaeta_DIET.yaml CommunityMech:000032 3fc22ecba6b448dd63c54896e119773338b3e331d88be489b54bb1c58277fc6a 3 2 100.0 pending
kb/communities/Geobacter_Methanosarcina_DIET.yaml CommunityMech:000033 3c1a692277d402834b3acc3d529d8abe87a2afe7a0ae03027aae66eff187a543 3 2 100.0 pending
kb/communities/Geobacter_Pseudomonas_Formate_Fumarate_Electroactive_Coculture.yaml CommunityMech:000201 dbef08d1731c382db77222a55e9b0ea021f739c52993a737a73b35007e328fb4 4 2 100.0 pending
diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json
index 74c7ff1ce..f4e2527d2 100644
--- a/reports/causal_graph_review/summary.json
+++ b/reports/causal_graph_review/summary.json
@@ -2,14 +2,14 @@
"scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.",
"semantic_review_rule": "Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.",
"records": 460,
- "nodes": 1466,
- "edges": 682,
+ "nodes": 1465,
+ "edges": 681,
"records_without_nodes": 8,
"records_without_edges": 148,
"review_status_counts": {
"needs_research": 12,
- "pending": 281,
- "reviewed": 167
+ "pending": 280,
+ "reviewed": 168
},
"structural_defects": [],
"network_audit": [
diff --git a/reports/causal_graph_review/validation-20261006-batch45.json b/reports/causal_graph_review/validation-20261006-batch45.json
new file mode 100644
index 000000000..956e68e98
--- /dev/null
+++ b/reports/causal_graph_review/validation-20261006-batch45.json
@@ -0,0 +1,484 @@
+{
+ "base_commit": "7bdc93828cb9585f0711253d58d7382037207010",
+ "scope": [
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml"
+ ],
+ "reference_validator_version": "0.1.7",
+ "results": [
+ {
+ "check": "Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-schema",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-schema.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-strict",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-strict.tsv",
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-strict.log",
+ "log_sha256": "4862e271af02e4b17cfb00d8a770f9db18ad381d2577f97b43edf92211161bd7",
+ "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch45/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: /private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-strict.tsv\n"
+ },
+ {
+ "check": "Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-terms",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator",
+ "validate-data",
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-terms.log",
+ "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018",
+ "output_tail": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-references",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-references.log",
+ "log_sha256": "2b1beb8ef9114ec8aec6cae5fc2ed08acfca05666e5fa0e66e8ca6a2619b57e7",
+ "output_tail": "Validating kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_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",
+ "explained_output_tail": "Validating kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_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": "Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-snippets",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-snippets.log",
+ "log_sha256": "96a23c88588d68e990af5d62f9c27df12879566b4125e7703a275c3bfa7adcd7",
+ "output_tail": "# 22 evidence snippets scanned across 1 files\n MATCH 22\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": "Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-rank",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-rank.log",
+ "log_sha256": "d226ffaad47d6c3940b090967a3ab3b1ea2f7a38b24dfc74a9eafc742d2ef149",
+ "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000031\",\n \"name\": \"Geobacter-Clostridium Interspecies Electron Transfer Coculture\",\n \"score\": 75.0,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 2,\n \"downstream_edges\": 1,\n \"interaction_evidence\": 4,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"additional_interactions\",\n \"additional_downstream\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-history-0",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture/2026-10-06T123147Z-codex-030fb7.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture-history-0.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "inventory",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "reports/causal_graph_review/build_inventory.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/inventory.log",
+ "log_sha256": "96bd47c9189cd2d0f85123c1918eeb6a4d1ddf4b622a6eaf52ae169c8d17f995",
+ "output_tail": "{\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\": 1465,\n \"edges\": 681,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 148,\n \"review_status_counts\": {\n \"needs_research\": 12,\n \"pending\": 280,\n \"reviewed\": 168\n },\n \"structural_defects\": []\n}\n"
+ },
+ {
+ "check": "network",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-m",
+ "communitymech.cli",
+ "audit-network",
+ "--json"
+ ],
+ "exit_code": 1,
+ "expected_exit_codes": [
+ 1
+ ],
+ "log": "/private/tmp/communitymech-batch45/network.log",
+ "log_sha256": "71a1e46fdd5d7c44e1766fabc85efb996c70258e3e64018891cfa94bb22fb13e",
+ "output_tail": "{\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": "rank-all",
+ "command": [
+ "just",
+ "rank-causal-graphs"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/rank-all.log",
+ "log_sha256": "98b6e120a953c9bbac34d30ce25284de78649efdfcee03dffaf3df3e6cfffb93",
+ "output_tail": "ities/Soybean_N_Fixation_sfSynCom.yaml\tCommunityMech:000064\tSoybean N-Fixation Simplified SynCom\t4\t4\t0\t3\t2\t3\t\t0\t0\n402\t100.0\tkb/communities/Sphingobium_Rhodococcus_Lignin_Dimer_Valorization_Coculture.yaml\tCommunityMech:000267\tSphingobium-Rhodococcus Lignin-Dimer Valorization Coculture\t2\t2\t0\t3\t2\t7\t\t0\t0\n403\t100.0\tkb/communities/Staphylococcus_Candida_Context_Dependent_Biofilm_Coculture.yaml\tCommunityMech:000326\tStaphylococcus-Candida Context-Dependent Biofilm Coculture\t2\t2\t0\t6\t2\t13\t\t0\t0\n404\t100.0\tkb/communities/Stordalen_Mire_Methylotrophic_Methanogenesis_Community.yaml\tCommunityMech:000254\tStordalen Mire Methylotrophic Methanogenesis Community\t3\t3\t0\t4\t4\t9\t\t0\t0\n405\t100.0\tkb/communities/Streptomyces_A2_A5_A11_M7_Pesticide_Consortium.yaml\tCommunityMech:000335\tStreptomyces A2-A5-A11-M7 Pesticide-Bioremediation Consortium\t4\t4\t0\t4\t2\t5\t\t0\t0\n406\t100.0\tkb/communities/Subsurface_Carboxydocella_CO_Aquifer_Community.yaml\tCommunityMech:000251\tSubsurface Carboxydocella CO-Oxidation Aquifer Community\t1\t1\t0\t5\t2\t5\t\t0\t0\n407\t100.0\tkb/communities/Suillus_Bacillus_Thiamine_Ectomycorrhizal_SynCom.yaml\tCommunityMech:000312\tSuillus clintonianus-Bacillus altitudinis Thiamine Cross-Feeding SynCom\t3\t3\t0\t4\t3\t4\t\t0\t0\n408\t100.0\tkb/communities/Sulfide_Spring_Autotrophic_CPR_Biofilm.yaml\tCommunityMech:000222\tSulfide Spring Autotrophic CPR-Hosting Biofilm\t3\t3\t0\t3\t2\t4\t\t0\t0\n409\t100.0\tkb/communities/SynComBac10_Chicken_Intestinal_SynCom.yaml\tCommunityMech:000127\tSynComBac10 Chicken Intestinal SynCom\t3\t3\t0\t3\t2\t3\t\t0\t0\n410\t100.0\tkb/communities/SynCom_ARC_Peanut_Aflatoxin_Nodulation.yaml\tCommunityMech:000314\tSynCom ARC Peanut Aflatoxin-Control and Nodulation-Coupling Community\t5\t5\t0\t3\t2\t3\t\t0\t0\n411\t100.0\tkb/communities/SynCom_BsBv_Cigar_Tobacco_Leaf_Fermentation.yaml\tCommunityMech:000278\tSynCom BsBv Cigar Tobacco Leaf Fermentation\t2\t2\t0\t3\t2\t3\t\t0\t0\n412\t100.0\tkb/communities/SynCom_Chlorella_sorokiniana_Biogas_Slurry_Coupling_System.yaml\tCommunityMech:000285\tSynCom + Chlorella sorokiniana Biogas-slurry Coupling System\t2\t2\t0\t5\t3\t5\t\t0\t0\n413\t100.0\tkb/communities/SynCom_MetG2_Rhizobacteria_Sugarcane_Stress_Resilience.yaml\tCommunityMech:000302\tSynCom MetG2 Rhizobacteria Sugarcane Stress Resilience\t2\t2\t0\t3\t2\t4\t\t0\t0\n414\t100.0\tkb/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml\tCommunityMech:000283\tSesame-flavor Baijiu Fuqu SynCom (13-genus)\t13\t13\t0\t3\t2\t3\t\t0\t0\n415\t100.0\tkb/communities/SynCom_Y_Agrobacterium_Bacillus_Biofilm_Biocontrol_Coculture.yaml\tCommunityMech:000272\tSynCom Y Agrobacterium-Bacillus Biofilm Biocontrol Co-culture\t2\t2\t0\t4\t2\t6\t\t0\t0\n416\t100.0\tkb/communities/Synechococcus_Azotobacter_Photoproduction_Mutualism.yaml\tCommunityMech:000207\tSynechococcus-Azotobacter Photoproduction Mutualism\t2\t2\t0\t3\t2\t6\t\t0\t0\n417\t100.0\tkb/communities/Synechococcus_Bacillus_SPC.yaml\tCommunityMech:000065\tSynechococcus-Bacillus Synthetic Photosynthetic Consortium\t2\t2\t0\t3\t2\t4\t\t0\t0\n418\t100.0\tkb/communities/Synechococcus_Ecoli_SPC.yaml\tCommunityMech:000066\tSynechococcus-E.coli Synthetic Photosynthetic Consortium\t2\t2\t0\t3\t2\t4\t\t0\t0\n419\t100.0\tkb/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml\tCommunityMech:000198\tSynechococcus-Halomonas Light-Driven PHB Coculture\t2\t2\t0\t3\t2\t6\t\t0\t0\n420\t100.0\tkb/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml\tCommunityMech:000167\tSynechococcus-Pseudomonas Phototrophic PHA and DNT Coculture\t2\t2\t0\t4\t2\t8\t\t0\t0\n421\t100.0\tkb/communities/Synechococcus_Saccharomyces_SPC.yaml\tCommunityMech:000067\tSynechococcus-Saccharomyces Synthetic Photosynthetic Consortium\t2\t2\t0\t3\t2\t4\t\t0\t0\n422\t100.0\tkb/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml\tCommunityMech:000211\tSynechococcus-Shewanella D-Lactate Biophotovoltaic Consortium\t2\t2\t0\t3\t2\t6\t\t0\t0\n423\t100.0\tkb/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml\tCommunityMech:000149\tSynthetic Lichen Synechococcus-Rhodotorula Coculture\t2\t2\t0\t3\t2\t4\t\t0\t0\n424\t100.0\tkb/communities/Syntrophobacter_Methanobacterium_Syntrophy.yaml\tCommunityMech:000068\tSyntrophobacter-Methanobacterium Syntrophic Consortium\t2\t2\t0\t3\t3\t8\t\t0\t0\n425\t100.0\tkb/communities/Syntrophobacter_Methanospirillum_Syntrophy.yaml\tCommunityMech:000069\tSyntrophobacter-Methanospirillum Syntrophic Consortium\t2\t2\t0\t3\t3\t5\t\t0\t0\n426\t100.0\tkb/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml\tCommunityMech:000189\tSyntrophomonas-Methanococcus Butyrate Growth Coordination Coculture\t2\t2\t0\t3\t2\t6\t\t0\t0\n427\t100.0\tkb/communities/Syntrophomonas_Methanospirillum_Syntrophy.yaml\tCommunityMech:000070\tSyntrophomonas-Methanospirillum Syntrophic Consortium\t2\t2\t0\t3\t3\t7\t\t0\t0\n428\t100.0\tkb/communities/Syntrophus_Benzoate_Degrader.yaml\tCommunityMech:000071\tSyntrophus Benzoate Degrader\t2\t2\t0\t3\t2\t6\t\t0\t0\n429\t100.0\tkb/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml\tCommunityMech:000187\tSyntrophus-Methanospirillum Gentianae Benzoate Coculture\t2\t2\t0\t3\t2\t7\t\t0\t0\n430\t100.0\tkb/communities/THOR_Rhizosphere_Model_Community.yaml\tCommunityMech:000079\tTHOR Rhizosphere Model Community\t3\t3\t0\t4\t2\t5\t\t0\t0\n431\t100.0\tkb/communities/TYQ1_Nematode_Biocontrol_SynCom.yaml\tCommunityMech:000072\tTYQ1 Nematode Biocontrol SynCom\t8\t8\t0\t4\t4\t4\t\t0\t0\n432\t100.0\tkb/communities/Teosinte_Maize_Biofertilizer_SynCom7.yaml\tCommunityMech:000100\tTeosinte-Derived Maize Biofertilizer SynCom7\t4\t4\t0\t6\t2\t12\t\t0\t0\n433\t100.0\tkb/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml\tCommunityMech:000259\tThalassiosira-Marinobacter Marine Snow Coculture\t2\t2\t0\t4\t2\t10\t\t0\t0\n434\t100.0\tkb/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml\tCommunityMech:000162\tThalassiosira-Ruegeria Phycosphere Coculture\t2\t2\t0\t3\t2\t4\t\t0\t0\n435\t100.0\tkb/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml\tCommunityMech:000182\tThermacetogenium-Methanothermobacter Acetate Oxidation Coculture\t2\t2\t0\t3\t2\t8\t\t0\t0\n436\t100.0\tkb/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml\tCommunityMech:000282\tThermophilic Lignocellulose-degrading Composting SynCom\t5\t5\t0\t3\t2\t3\t\t0\t0\n437\t100.0\tkb/communities/Thermophilic_Pyrite_QS_Consortium.yaml\tCommunityMech:000073\tThermophilic Pyrite Quorum Sensing Consortium\t3\t3\t0\t6\t2\t14\t\t0\t0\n438\t100.0\tkb/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml\tCommunityMech:000186\tThermotoga-Methanocaldococcus Hyperthermophilic Syntrophy\t2\t2\t0\t3\t2\t8\t\t0\t0\n439\t100.0\tkb/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml\tCommunityMech:000239\tThiocyanate-Degrading Afipia and Thiobacillus Bioreactor Community\t3\t3\t0\t3\t2\t3\t\t0\t0\n440\t100.0\tkb/communities/Tinto_River_Iron_Cycling_Community.yaml\tCommunityMech:000074\tTinto River Iron Cycling Community\t6\t6\t0\t5\t3\t6\t\t0\t0\n441\t100.0\tkb/communities/Tobacco_Chemotactic_Biocontrol_SynCom.yaml\tCommunityMech:000106\tTobacco Chemotactic Biocontrol SynCom\t2\t2\t0\t3\t2\t4\t\t0\t0\n442\t100.0\tkb/communities/Tomato_Oxylipin_SynCom3.yaml\tCommunityMech:000107\tTomato Oxylipin-Protective SynCom3\t3\t3\t0\t3\t2\t4\t\t0\t0\n443\t100.0\tkb/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml\tCommunityMech:000112\tTribromophenol Anaerobic Bioremediation SynCom\t3\t3\t0\t4\t3\t5\t\t0\t0\n444\t100.0\tkb/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml\tCommunityMech:000188\tTrichococcus-Syntrophomonas-Methanospirillum Butyrate Coculture\t3\t3\t0\t3\t2\t6\t\t0\t0\n445\t100.0\tkb/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml\tCommunityMech:000205\tTrichoderma-E. coli Cellulosic Isobutanol Coculture\t2\t2\t0\t3\t2\t5\t\t0\t0\n446\t100.0\tkb/communities/Trichoderma_Lactate_Platform.yaml\tCommunityMech:000075\tTrichoderma Lactate Platform for SCFA Production\t3\t3\t0\t3\t2\t3\t\t0\t0\n447\t100.0\tkb/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml\tCommunityMech:000270\tTrichoderma-Streptomyces Filamentous Cellulose Coculture\t2\t2\t0\t3\t2\t7\t\t0\t0\n448\t100.0\tkb/communities/Trichodesmium_Alteromonas_Marine_Consortium.yaml\tCommunityMech:000147\tTrichodesmium-Alteromonas Marine Consortium\t3\t3\t0\t3\t2\t5\t\t0\t0\n449\t100.0\tkb/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml\tCommunityMech:000337\tTropidoatractus magnetotacticus Magnetotactic Ciliate Tripartite Syntrophy\t3\t3\t0\t4\t2\t9\t\t0\t0\n450\t100.0\tkb/communities/Urine_Nitrification_SynCom.yaml\tCommunityMech:000117\tUrine Nitrification Synthetic Microbial Community\t5\t5\t0\t3\t2\t5\t\t0\t0\n451\t100.0\tkb/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml\tCommunityMech:000213\tVariovorax-Cryptococcus Vitamin Cross-Feeding Microcosm\t2\t2\t0\t3\t2\t4\t\t0\t0\n452\t100.0\tkb/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml\tCommunityMech:000328\tWaste-Sludge Electro-Fermentation Biofilm-Suspension Community\t5\t5\t0\t4\t2\t6\t\t0\t0\n453\t100.0\tkb/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.yaml\tCommunityMech:000098\tWatermelon Rhizosphere Fusarium-Protective SynCom8\t2\t2\t0\t3\t2\t7\t\t0\t0\n454\t100.0\tkb/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml\tCommunityMech:000255\tWetland Oxygen-Sulfate Greenhouse Gas Microcosm Community\t3\t3\t0\t3\t2\t6\t\t0\t0\n455\t100.0\tkb/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.yaml\tCommunityMech:000118\tWheat Straw Biogas Pretreatment SynCom\t4\t4\t0\t3\t2\t4\t\t0\t0\n456\t100.0\tkb/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml\tCommunityMech:000354\tYarrowia lipolytica Division-of-Labor Lipid Consortium\t2\t2\t0\t3\t2\t3\t\t0\t0\n457\t100.0\tkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml\tCommunityMech:000164\tYogurt Two-Species Starter Culture\t2\t2\t0\t4\t2\t9\t\t0\t0\n458\t100.0\tkb/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml\tCommunityMech:000210\tZymomonas-E. coli Exometabolomics-Designed Obligate Mutualism\t2\t2\t0\t3\t2\t6\t\t0\t0\n459\t100.0\tkb/communities/hCom2_Complex_Gut_Microbiome.yaml\tCommunityMech:000123\thCom2 Complex Gut Microbiome\t1\t1\t0\t3\t2\t3\t\t0\t0\n460\t100.0\tkb/communities/mCAFEs_Brachypodium_RCC.yaml\tCommunityMech:000078\tm-CAFEs Brachypodium Reduced Complexity Consortia\t10\t10\t0\t6\t2\t11\t\t0\t0\nPYTHONPATH=src uv run python scripts/rank_causal_graph_readiness.py \n"
+ },
+ {
+ "check": "render",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-m",
+ "communitymech.render"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/render.log",
+ "log_sha256": "3fe26abfd3a03ae1cd83f42ec9b531ba4cd26389de2c1636b59248dcb36986be",
+ "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch45/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch45/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch45/docs/index.html\n"
+ },
+ {
+ "check": "render-repeat",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-m",
+ "communitymech.render"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/render-repeat.log",
+ "log_sha256": "3fe26abfd3a03ae1cd83f42ec9b531ba4cd26389de2c1636b59248dcb36986be",
+ "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch45/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch45/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch45/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch45/docs/index.html\n"
+ },
+ {
+ "check": "connectivity-survey",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-c",
+ "import json, pathlib, runpy\nfn=runpy.run_path('tests/test_community_level_connectivity_credit.py')['_survey']\nresult={}\nfor name,root in [('baseline', pathlib.Path('/private/tmp/communitymech-causal-batch44')), ('current',pathlib.Path.cwd())]:\n paths=sorted(p for r in ['kb/communities','data/isolates'] for p in (root/r).rglob('*.yaml'))\n assert len(paths)==460\n fn.__globals__['record_files']=lambda: paths\n result[name]=fn()\nprint(json.dumps(result))\n"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/connectivity-survey.log",
+ "log_sha256": "01e8d16fb1b7009ea171ab80ac1facff9cbe0e48be7e637a1a1ab1d003a4b695",
+ "output_tail": "{\"baseline\": {\"records\": 460, \"with_community_level\": 387, \"mixed\": 125, \"community_level_only\": 262, \"taxa\": 1494, \"credited_solely_by_the_rule\": 1221}, \"current\": {\"records\": 460, \"with_community_level\": 388, \"mixed\": 125, \"community_level_only\": 263, \"taxa\": 1496, \"credited_solely_by_the_rule\": 1223}}\n"
+ },
+ {
+ "check": "regressions",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/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_batch25.py",
+ "tests/test_causal_review_batch27.py",
+ "tests/test_causal_review_batch28.py",
+ "tests/test_causal_review_batch29.py",
+ "tests/test_causal_review_batch30.py",
+ "tests/test_causal_review_batch31.py",
+ "tests/test_causal_review_batch32.py",
+ "tests/test_causal_review_batch33.py",
+ "tests/test_causal_review_batch34.py",
+ "tests/test_causal_review_batch35.py",
+ "tests/test_causal_review_batch36.py",
+ "tests/test_causal_review_batch37.py",
+ "tests/test_causal_review_batch38.py",
+ "tests/test_causal_review_batch39.py",
+ "tests/test_causal_review_batch40.py",
+ "tests/test_causal_review_batch41.py",
+ "tests/test_causal_review_batch42.py",
+ "tests/test_causal_review_batch43.py",
+ "tests/test_causal_review_batch44.py",
+ "tests/test_causal_review_batch45.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_site_audit_fixes.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",
+ "tests/test_no_paywalled_text_in_repo.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/regressions.log",
+ "log_sha256": "2f438722fb52959275e8f214204e374bd6a9273cd8b0ebafb4315f90b632e7c0",
+ "output_tail": "........................................................................ [ 15%]\n........................................................................ [ 31%]\n........................................................................ [ 47%]\n........................................................................ [ 63%]\n........................................................................ [ 79%]\n........................................................................ [ 94%]\n....................... [100%]\n455 passed in 168.19s (0:02:48)\n"
+ },
+ {
+ "check": "black",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/3Q_kifQtLB624D5bBWGIf/bin/black",
+ "--check",
+ "tests/test_causal_review_batch45.py",
+ "tests/test_participating_taxa.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/black.log",
+ "log_sha256": "b9cf511501d306d2bd8355ccb165c8ddc0a6fdd62d7c72c4a7b1795cf8934c8c",
+ "output_tail": "All done! \u2728 \ud83c\udf70 \u2728\n2 files would be left unchanged.\n"
+ },
+ {
+ "check": "ruff",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/wCcxEYRM4HeHgwYPZemHX/bin/ruff",
+ "check",
+ "tests/test_causal_review_batch45.py",
+ "tests/test_participating_taxa.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/ruff.log",
+ "log_sha256": "82b3e6a6c090a57601d22943bd23fca9218d1031dbe5a7b754092f9a156b4f18",
+ "output_tail": "All checks passed!\n"
+ },
+ {
+ "check": "diff-check",
+ "command": [
+ "git",
+ "diff",
+ "--check"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch45/diff-check.log",
+ "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "output_tail": ""
+ }
+ ],
+ "limitations": [
+ "Whole 653-line record, all three original nodes and both arrows read. Complete 2017 primary main body, Methods, Table 1 and embedded captions read; 2022 complete abstract only, publisher confirms subscription preview. No figure images, separate supplements, raw data or analysis code audited.",
+ "Repair only: three to two nodes and two to one explicitly HYPOTHESIZED arrow; no new causal structure or provider spend for this record.",
+ "All canonical taxonomy, non-graph raw blocks, prior history and 920 source caches preserved, not certified. Non-graph uptake, nanowire and product-causation claims remain outside this graph-scoped correction.",
+ "Reference CLI Total checks counts reported issues, not executed checks; SupportingReference coverage remains incomplete under #476. Textual matches do not independently establish source provenance (#1362) or scientific support.",
+ "Source-based self-adversarial review is not independent approval. Methanosaeta and Methanosarcina remain outside this one-record edit and are not counted as reviewed. Full-corpus completion and protected-main merge are not claimed.",
+ "HTML descriptions checked by exact parser and repeat renders, not browser screenshots. Post-commit docs-current is a separate publication gate.",
+ "CLI Total checks counts reported issues, not executed checks. Exit 0 means no reported issues; textual matching does not establish scientific support or independent provenance. SupportingReference coverage remains incomplete under #476."
+ ],
+ "snippet_counts_by_record": {
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml": {
+ "MATCH": 22,
+ "RENDERING": 0,
+ "ASSEMBLED": 0,
+ "WEAK": 0,
+ "MISMATCH": 0,
+ "NOCONTENT": 0
+ }
+ },
+ "unchanged_raw_blocks": 14,
+ "unchanged_record_files": 459,
+ "unchanged_cache_files": 920,
+ "network_delta": {
+ "existing_findings_preserved": 34,
+ "added_findings": {},
+ "removed_findings": {}
+ },
+ "render_determinism": true,
+ "published_description_coverage": {
+ "pages": 456,
+ "nodes": 1451,
+ "arrows": 673
+ },
+ "participant_census": {
+ "measurements": {
+ "baseline": {
+ "records": 460,
+ "with_community_level": 387,
+ "mixed": 125,
+ "community_level_only": 262,
+ "taxa": 1494,
+ "credited_solely_by_the_rule": 1221
+ },
+ "current": {
+ "records": 460,
+ "with_community_level": 388,
+ "mixed": 125,
+ "community_level_only": 263,
+ "taxa": 1496,
+ "credited_solely_by_the_rule": 1223
+ }
+ },
+ "interpretation": "One two-member graph becomes explicitly community-level for the proposed interaction and conditional coculture outcome. Mixed count remains 125; registry 193 to 194. No census bounds or production matching logic changed."
+ },
+ "corpus": {
+ "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.",
+ "records": 460,
+ "nodes": 1465,
+ "edges": 681,
+ "records_without_nodes": 8,
+ "records_without_edges": 148,
+ "review_status_counts": {
+ "needs_research": 12,
+ "pending": 280,
+ "reviewed": 168
+ },
+ "structural_defects": []
+ },
+ "tested_file_sha256": {
+ "reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml": "91f2b38628bc946d11bf40ae7d52501867dda13969429bac62a95514be38473c",
+ "tests/test_causal_review_batch45.py": "73160070d62babe533dbd60e0da6582aaa2c93eeb71cf7ca497a70ab15a00203",
+ "tests/test_participating_taxa.py": "9420e75cb8c477620597c3edf066ceaa5e431b4d5053398e8f635d81069207a1",
+ "kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml": "2bfa8ffd6b7d147f3c471eb88aa26482f93b0cc8d7b23dc39838402715463329",
+ "reports/causal_graph_review/README.md": "ce166b800cc8ede66788b97c0d919f82887118e68ba88002419d77a70b76ba73"
+ },
+ "status": "verified_clostridium_graph_repair",
+ "reference_validator_caveat": "CLI Total checks counts reported issues, not executed checks. Exit 0 means no reported issues; textual matching does not establish scientific support or independent provenance. SupportingReference coverage remains incomplete under #476.",
+ "pre_research_baseline": {
+ "base_commit": "7bdc93828cb9585f0711253d58d7382037207010",
+ "base_tree": "ae873b509fa12c69970cbafa96265ab9d55b8eb5",
+ "research_worktree": "/private/tmp/communitymech-causal-batch44",
+ "checks": [
+ {
+ "name": "rank",
+ "command": [
+ "just",
+ "rank-causal-graphs"
+ ],
+ "exit_code": 0,
+ "expected_exit_code": 0,
+ "log": "/private/tmp/communitymech-batch45/baseline-rank.log",
+ "sha256": "ce6fef3958bc7649c0383bc1c7d39608bf5d44e524e4a22a24d7c0a287d8267b",
+ "output_tail": "nol_Anaerobic_Bioremediation_SynCom.yaml\tCommunityMech:000112\tTribromophenol Anaerobic Bioremediation SynCom\t3\t3\t0\t4\t3\t5\t\t0\t0\n444\t100.0\tkb/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml\tCommunityMech:000188\tTrichococcus-Syntrophomonas-Methanospirillum Butyrate Coculture\t3\t3\t0\t3\t2\t6\t\t0\t0\n445\t100.0\tkb/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml\tCommunityMech:000205\tTrichoderma-E. coli Cellulosic Isobutanol Coculture\t2\t2\t0\t3\t2\t5\t\t0\t0\n446\t100.0\tkb/communities/Trichoderma_Lactate_Platform.yaml\tCommunityMech:000075\tTrichoderma Lactate Platform for SCFA Production\t3\t3\t0\t3\t2\t3\t\t0\t0\n447\t100.0\tkb/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml\tCommunityMech:000270\tTrichoderma-Streptomyces Filamentous Cellulose Coculture\t2\t2\t0\t3\t2\t7\t\t0\t0\n448\t100.0\tkb/communities/Trichodesmium_Alteromonas_Marine_Consortium.yaml\tCommunityMech:000147\tTrichodesmium-Alteromonas Marine Consortium\t3\t3\t0\t3\t2\t5\t\t0\t0\n449\t100.0\tkb/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml\tCommunityMech:000337\tTropidoatractus magnetotacticus Magnetotactic Ciliate Tripartite Syntrophy\t3\t3\t0\t4\t2\t9\t\t0\t0\n450\t100.0\tkb/communities/Urine_Nitrification_SynCom.yaml\tCommunityMech:000117\tUrine Nitrification Synthetic Microbial Community\t5\t5\t0\t3\t2\t5\t\t0\t0\n451\t100.0\tkb/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml\tCommunityMech:000213\tVariovorax-Cryptococcus Vitamin Cross-Feeding Microcosm\t2\t2\t0\t3\t2\t4\t\t0\t0\n452\t100.0\tkb/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml\tCommunityMech:000328\tWaste-Sludge Electro-Fermentation Biofilm-Suspension Community\t5\t5\t0\t4\t2\t6\t\t0\t0\n453\t100.0\tkb/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.yaml\tCommunityMech:000098\tWatermelon Rhizosphere Fusarium-Protective SynCom8\t2\t2\t0\t3\t2\t7\t\t0\t0\n454\t100.0\tkb/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml\tCommunityMech:000255\tWetland Oxygen-Sulfate Greenhouse Gas Microcosm Community\t3\t3\t0\t3\t2\t6\t\t0\t0\n455\t100.0\tkb/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.yaml\tCommunityMech:000118\tWheat Straw Biogas Pretreatment SynCom\t4\t4\t0\t3\t2\t4\t\t0\t0\n456\t100.0\tkb/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml\tCommunityMech:000354\tYarrowia lipolytica Division-of-Labor Lipid Consortium\t2\t2\t0\t3\t2\t3\t\t0\t0\n457\t100.0\tkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml\tCommunityMech:000164\tYogurt Two-Species Starter Culture\t2\t2\t0\t4\t2\t9\t\t0\t0\n458\t100.0\tkb/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml\tCommunityMech:000210\tZymomonas-E. coli Exometabolomics-Designed Obligate Mutualism\t2\t2\t0\t3\t2\t6\t\t0\t0\n459\t100.0\tkb/communities/hCom2_Complex_Gut_Microbiome.yaml\tCommunityMech:000123\thCom2 Complex Gut Microbiome\t1\t1\t0\t3\t2\t3\t\t0\t0\n460\t100.0\tkb/communities/mCAFEs_Brachypodium_RCC.yaml\tCommunityMech:000078\tm-CAFEs Brachypodium Reduced Complexity Consortia\t10\t10\t0\t6\t2\t11\t\t0\t0\nPYTHONPATH=src uv run python scripts/rank_causal_graph_readiness.py \n"
+ },
+ {
+ "name": "just-network",
+ "command": [
+ "just",
+ "audit-network-json"
+ ],
+ "exit_code": 2,
+ "expected_exit_code": 2,
+ "log": "/private/tmp/communitymech-batch45/baseline-just-network.log",
+ "sha256": "8595db43420d3f0a01c57acd6ad733a531a72e962486d20b4e1c2840dda55bff",
+ "output_tail": "uv run communitymech audit-network --json\nerror: Failed to spawn: `communitymech`\n Caused by: No such file or directory (os error 2)\nerror: recipe `audit-network-json` failed on line 574 with exit code 2\n"
+ },
+ {
+ "name": "network",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-m",
+ "communitymech.cli",
+ "audit-network",
+ "--json"
+ ],
+ "exit_code": 1,
+ "expected_exit_code": 1,
+ "log": "/private/tmp/communitymech-batch45/baseline-network.log",
+ "sha256": "71a1e46fdd5d7c44e1766fabc85efb996c70258e3e64018891cfa94bb22fb13e",
+ "output_tail": " 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"
+ },
+ {
+ "name": "downstream",
+ "command": [
+ "rg",
+ "--no-ignore",
+ "--hidden",
+ "-n",
+ "downstream:",
+ "kb/communities",
+ "data/isolates",
+ "--glob",
+ "*.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_code": 0,
+ "log": "/private/tmp/communitymech-batch45/baseline-downstream.log",
+ "sha256": "0fc94c13bb307f3165477cfe9e0857808f63b133314aa5013d142ee1af1183cc",
+ "output_tail": "es/Methylacidiphilum_Galdieria_Thermoacidophilic_Coculture.yaml:268: downstream:\nkb/communities/Methylacidiphilum_Galdieria_Thermoacidophilic_Coculture.yaml:315: downstream:\nkb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml:147: downstream:\nkb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml:247: downstream:\nkb/communities/Pepper_Phytophthora_SynCom5.yaml:123: downstream:\nkb/communities/Pepper_Phytophthora_SynCom5.yaml:146: downstream:\nkb/communities/Miscanthus_REE_Tailings_Nitrogen_SynCom10.yaml:135: downstream:\nkb/communities/Miscanthus_REE_Tailings_Nitrogen_SynCom10.yaml:173: downstream:\nkb/communities/Chromium_Sulfur_Reduction_Enrichment.yaml:159: downstream:\nkb/communities/Chromium_Sulfur_Reduction_Enrichment.yaml:200: downstream:\nkb/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml:342: downstream:\nkb/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml:381: downstream:\nkb/communities/At_RSPHERE_SynCom.yaml:207: downstream:\nkb/communities/At_RSPHERE_SynCom.yaml:249: downstream:\nkb/communities/Chlamydomonas_Bacterial_H2_Consortium.yaml:311: downstream:\nkb/communities/Chlamydomonas_Bacterial_H2_Consortium.yaml:365: downstream:\nkb/communities/Shewanella_Streptococcus_Starch_Microbial_Fuel_Cell.yaml:140: downstream:\nkb/communities/Shewanella_Streptococcus_Starch_Microbial_Fuel_Cell.yaml:221: downstream:\nkb/communities/Avena_Rhizosphere_Detritusphere_Niche_Succession.yaml:104: downstream:\nkb/communities/Avena_Rhizosphere_Detritusphere_Niche_Succession.yaml:127: downstream:\nkb/communities/Desulfovibrio_Methanococcus_Syntrophy.yaml:138: downstream:\nkb/communities/Desulfovibrio_Methanococcus_Syntrophy.yaml:182: downstream:\nkb/communities/Desulfovibrio_Methanococcus_Syntrophy.yaml:232: downstream:\nkb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml:285: downstream:\nkb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml:324: downstream:\nkb/communities/Lake_Washington_Methane_Oxygen_Methylotroph_Community.yaml:336: downstream:\nkb/communities/Ferroplasma_Leptospirillum_Syntrophy.yaml:125: downstream:\nkb/communities/KBase_ORT_Workflow_Community_Model.yaml:170: downstream:\nkb/communities/KBase_ORT_Workflow_Community_Model.yaml:261: downstream:\nkb/communities/Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.yaml:98: downstream:\nkb/communities/Soybean_Chlorophyll_Selected_Biofertilizer_SynCom.yaml:155: downstream:\nkb/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml:135: downstream:\nkb/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml:177: downstream:\nkb/communities/Salar_Atacama_Lithium_Brine_Community.yaml:295: downstream:\nkb/communities/Salar_Atacama_Lithium_Brine_Community.yaml:339: downstream:\nkb/communities/High_Ammonia_Biogas_0B_Butyrate_Oxidizing_Enrichment.yaml:233: downstream:\nkb/communities/Groundwater_Elusimicrobia_Diverse_Metabolisms.yaml:96: downstream:\n"
+ }
+ ]
+ }
+}
diff --git a/tests/test_causal_review_batch45.py b/tests/test_causal_review_batch45.py
new file mode 100644
index 000000000..ccd113a40
--- /dev/null
+++ b/tests/test_causal_review_batch45.py
@@ -0,0 +1,86 @@
+"""Separate observed conditional product yields from their proposed mediator."""
+
+import hashlib
+from pathlib import Path
+
+import yaml
+
+ROOT = Path(__file__).resolve().parents[1]
+LEDGER = ROOT / "reports/causal_graph_review/decisions/20261006-clostridium-batch45.yaml"
+
+
+def record():
+ ledger = yaml.safe_load(LEDGER.read_text())
+ row = ledger["records"][0]
+ return ledger, row, yaml.safe_load((ROOT / row["path"]).read_text())
+
+
+def test_electron_transfer_is_an_inferred_balance_not_measured_uptake():
+ _, _, doc = record()
+ transfer, response = doc["ecological_interactions"]
+ assert transfer["description"].startswith("HYPOTHESIZED:")
+ assert "does not directly measure electron uptake" in transfer["description"]
+ assert "10% electron allocation to biomass" in transfer["description"]
+ assert "remaining 90%" in transfer["description"]
+ assert "not a measured flux" in transfer["description"]
+ assert all(e["supports"] == "PARTIAL" for e in transfer["evidence"])
+ (arrow,) = transfer["downstream"]
+ assert arrow["target"] == response["name"]
+ assert arrow["description"].startswith("HYPOTHESIZED:")
+ assert "do not selectively establish" in arrow["description"]
+
+
+def test_product_yields_are_conditional_not_mutualism_or_a_duplicate_event():
+ _, _, doc = record()
+ transfer, response = doc["ecological_interactions"]
+ assert "two responsive cultures among four" in response["description"]
+ assert "At 72 h" in response["description"]
+ assert "eight of twelve" in response["description"]
+ assert "regressions use those responders" in response["description"]
+ assert "Clostridium growth was reduced" in response["description"]
+ assert "do not establish mutual benefit" in response["description"]
+ assert response["evidence"][0]["supports"] == "SUPPORT"
+ assert "downstream" not in response
+ for node in [transfer, response]:
+ assert "interaction_type" not in node
+ assert node["scope"] == "COMMUNITY_LEVEL"
+ assert [p["term"] for p in node["participating_taxa"]] == [
+ t["taxon_term"]["term"] for t in doc["taxonomy"]
+ ]
+ assert all(p["term"]["id"] != "GO:0022900" for p in response["biological_processes"])
+
+
+def test_discussion_anchors_move_and_paywalled_assay_stays_unverified():
+ _, _, doc = record()
+ transfer, response = doc["ecological_interactions"]
+ discussion = doc["discussions"][0]
+ assert discussion["attaches_to"] == [
+ "ecological_interactions#" + n["name"] for n in [transfer, response]
+ ]
+ assert "proposes, rather than measures" in discussion["rationale"]
+ assert "pending-rename note is obsolete" in discussion["rationale"]
+ assert "spent-medium result was not verified" in discussion["rationale"]
+ assert all(e["supports"] == "PARTIAL" for e in discussion["evidence"])
+ assert doc["discussions"][-1]["status"] == "OPEN"
+
+
+def test_all_original_nodes_and_arrows_have_hash_bound_decisions():
+ ledger, row, doc = record()
+ assert ledger["review_mode"] == "source_based_self_adversarial_review"
+ assert ledger["independent_approval"] is False
+ assert ledger["issues"] == [1478]
+ assert len(ledger["records"]) == 1
+ assert len(row["node_decisions"]) == 2
+ assert len(row["removed_node_decisions"]) == 1
+ assert len(row["retained_edge_decisions"]) == 1
+ assert len(row["removed_edge_decisions"]) == 1
+ assert len(row["edges_before"]) == 2 and len(row["edges_after"]) == 1
+ assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"]
+ assert len(row["history_files"]) == 1
+ assert (ROOT / row["history_files"][0]).is_file()
+ assert doc["curation_history"][-1]["llm_assisted"] is True
+ assert ledger["issue_deduplication"]["ignored_hidden_local_search"] is True
+ for path, digest in ledger["reference_cache_original_hashes"].items():
+ assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == digest
+ assert "abstract only" in row["source_review"]["PMID:34939136"]["scope"]
+ assert any("non-graph raw blocks" in value for value in ledger["limitations"])
diff --git a/tests/test_participating_taxa.py b/tests/test_participating_taxa.py
index 0a3550a70..11c4ca6e2 100644
--- a/tests/test_participating_taxa.py
+++ b/tests/test_participating_taxa.py
@@ -276,6 +276,7 @@ def test_a_curie_is_ambiguous_where_members_share_an_id(example):
"GLBRC_UFMP_Fermentation_Community.yaml",
"GOM_Oil_Degrading_Consortium.yaml",
"Garlic_Pseudomonas_SynCom6.yaml",
+ "Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.yaml",
"Geobacter_Methanosarcina_DIET.yaml",
"Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml",
"Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml",