diff --git a/docs/communities/DVM_Triculture.html b/docs/communities/DVM_Triculture.html
index fd6230014..5e0aa6b73 100644
--- a/docs/communities/DVM_Triculture.html
+++ b/docs/communities/DVM_Triculture.html
@@ -628,8 +628,7 @@
Ecological Interactions
Lactate Oxidation and H2/Acetate Production
SYNTROPHY
- Desulfovibrio vulgaris oxidizes lactate to acetate, CO2, and H2. In the absence of sulfate, this oxidation occurs syntrophically with both methanogens maintaining low H2 partial pressure. The stoichiometric degradation of lactate produces intermediates (H2 and acetate) that both methanogens can utilize. When sulfate is present, D. vulgaris shifts metabolism to use sulfate as the electron acceptor, altering the balance of H2 and acetate production and creating competitive dynamics with the methanogens.
-
+ In the constructed 2019 DVM cultures, D. vulgaris fermented lactate to acetate and hydrogen under no-added-sulfate conditions. M. maripaludis uses hydrogen, whereas M. barkeri can use hydrogen and acetate; acetate is not a substrate for both methanogens. The tri-culture and Dv-Mm pair showed full lactate conversion, but residual acetate remained in the tri-culture and Dv-Mb pair. Sulfate availability shifts the balance toward donor respiration. The experimental Dv was a laboratory Hildenborough variant with two syntrophy-enabling polymorphisms, not an unqualified wild-type strain.
Source Taxon: Desulfovibrio vulgaris
@@ -680,7 +679,7 @@ Lactate Oxidation and H2/Acetate Production
- lactate oxidation
+ lactate metabolic process
(GO:0006089)
@@ -694,12 +693,12 @@ Lactate Oxidation and H2/Acetate Production
→ Hydrogenotrophic Methanogenesis by M. maripaludis
-
H2 produced by D. vulgaris is consumed by M. maripaludis for methanogenesis
+
PARTIAL - lactate fermentation supplies hydrogen that can support M. maripaludis methanogenesis and product removal. The functional pair and tri-culture support this physiological route, but partner-resolved flux and the fraction supplied by fermentation were not isolated; initial headspace also contained hydrogen and carbon dioxide.
→ Dual-pathway Methanogenesis by M. barkeri
-
Both H2 and acetate produced by D. vulgaris are consumed by M. barkeri
+
PARTIAL - lactate fermentation supplies acetate and hydrogen that can support M. barkeri methane production. Monoculture hydrogen perturbations and Dv-Mb mass balances support hydrogen co-utilization, but do not resolve pathway shares in the tri-culture or establish complete acetate consumption.
@@ -712,13 +711,13 @@ Evidence
- "vulgaris was grown in the absence of added sulfate in coculture with Methanosarcina barkeri (type strain), which uses both H(2)-CO(2) and acetate for methanogenesis, lactate was stoichiometrically degraded to CH(4) and presumably to CO(2)"
+ "chemically defined media with lactate (30 mM), as the sole organic carbon source"
@@ -731,7 +730,7 @@ Evidence
- SUPPORT (IN_VITRO)
- "With increasing sulfate, system stability and productivity decreases and does so faster in communities with aceto/hydrogenotrophic methanogens despite the continued presence of acetate"
+ "was not able to consume all of the acetate fermented"
@@ -744,8 +743,7 @@ Evidence
Hydrogenotrophic Methanogenesis by M. maripaludis
SYNTROPHY
- Methanococcus maripaludis consumes H2 and CO2 produced by D. vulgaris to produce methane via hydrogenotrophic methanogenesis. This H2 removal maintains low H2 partial pressure, making lactate oxidation thermodynamically favorable for D. vulgaris. However, increasing sulfate availability reduces the effectiveness of this syntrophy as D. vulgaris can use sulfate instead of relying on H2 transfer, creating competition for available H2.
-
+ M. maripaludis is the hydrogenotrophic partner in the lactate-fed Dv-Mm pair and DVM tri-culture. Hydrogen consumption provides the product-removal basis of syntrophy. The pair remained stable at 7.5 mM sulfate but methane production diminished at 15 mM sulfate across transfers. These measured outcomes support the route, not a traced partition of donor-derived hydrogen or carbon dioxide; culture headspace already contained both gases. PARTIAL - the exact contribution of resource competition to the sulfate response is inferred.
Source Taxon: Methanococcus maripaludis
@@ -801,7 +799,7 @@ Evidence
- SUPPORT (IN_VITRO)
- "With increasing sulfate, system stability and productivity decreases and does so faster in communities with aceto/hydrogenotrophic methanogens despite the continued presence of acetate"
+ "displayed stable coexistence at half-sulfate treatments"
@@ -814,8 +812,7 @@ Evidence
Dual-pathway Methanogenesis by M. barkeri
SYNTROPHY
- Methanosarcina barkeri can utilize both H2-CO2 and acetate produced by D. vulgaris for methanogenesis. This dual metabolic capability is particularly important in the absence of sulfate, where M. barkeri contributes significantly to methane production. However, under sulfate treatments, M. barkeri's contribution is diminished even when acetate is available, likely due to competitive interactions with D. vulgaris for H2 and potentially other resources. This demonstrates differential sensitivity of acetotrophic versus hydrogenotrophic methanogenesis to sulfate-mediated perturbations.
-
+ M. barkeri contributed to the higher methane output of the no-added-sulfate DVM tri-culture, while substantial acetate remained. Separate monocultures supplied with 30 mM acetate produced more methane with higher hydrogen pressure, including about 60 mM versus 20 mM methane with 80% versus no added headspace hydrogen. Mass balances in no-added-sulfate Dv-Mb pairs require hydrogen utilization in addition to acetate use. PARTIAL - parallel hydrogenotrophic/acetotrophic routes versus coupled hydrogen oxidation and acetate reduction, and their shares in the tri-culture, are not resolved. This is not evidence for complete acetate use or an obligate hydrogen requirement under every condition.
Source Taxon: Methanosarcina barkeri
@@ -877,20 +874,20 @@ Evidence
- SUPPORT (IN_VITRO)
- "Syntrophic interactions among sulfate reducers and aceto/hydrogenotrophic and obligate hydrogenotrophic methanogens form a key component of these communities, yet, the impact of these different syntrophic routes on methane production and their stability against sulfate availability are not well understood"
+ "increasing H2 pressure in the headspace"
- "vulgaris was grown in the absence of added sulfate in coculture with Methanosarcina barkeri (type strain), which uses both H(2)-CO(2) and acetate for methanogenesis, lactate was stoichiometrically degraded to CH(4) and presumably to CO(2)"
+ "the methane production in the system cannot be explained solely by acetotrophic methanogenesis"
@@ -903,8 +900,7 @@ Evidence
Sulfate-mediated Competition
COMPETITION
- Increasing sulfate availability shifts community dynamics by enabling D. vulgaris to use sulfate as an electron acceptor rather than relying solely on syntrophic H2 transfer. This creates competitive situations where D. vulgaris can use both H2 and lactate, potentially outcompeting the methanogens. The differential impact on the two methanogens reveals that acetotrophic (M. barkeri) and hydrogenotrophic (M. maripaludis) pathways respond differently to sulfate gradients, providing insights into how geochemical conditions regulate methanogenic community structure.
-
+ With 30 mM lactate, sulfate was added at 0, 7.5 or 15 mM across three 21-day culturing periods. Methane production and methanogen gene abundance declined with sulfate, with M. barkeri more sensitive than M. maripaludis; acetate remained available. Dv-Mb methane production was already impaired at 7.5 mM, while the Dv-Mm pair showed a diminishing trend at 15 mM. PARTIAL - sulfate-enabled donor respiration and competition for hydrogen provide the source-supported explanation, strengthened by Mb monoculture hydrogen perturbations and pair mass balances. These assays do not selectively isolate that mechanism in the tri-culture or establish acetate competition, lactate use by the methanogens, or an irreversible loss of every methanogen.
Source Taxon: Desulfovibrio vulgaris
@@ -964,7 +960,20 @@ Evidence
- SUPPORT (IN_VITRO)
- "With increasing sulfate, system stability and productivity decreases and does so faster in communities with aceto/hydrogenotrophic methanogens despite the continued presence of acetate"
+ "resulted in a loss of methane production already in half-sulfate treatments"
+
+
+
+
+
+
+ "competition with Dv and Mm for this compound"
@@ -977,6 +986,25 @@ Evidence
+
+ Knowledge gaps & discussions (1)
+
+
+
+ KNOWLEDGE_GAP
+ OPEN
+ What fractions of DVM methane flux follow each pathway, and how much of the sulfate effect is mediated by hydrogen competition?
+
+
Preserve positive lactate conversion, increased tri-culture methane output, sulfate responses and the separate Mb monoculture hydrogen perturbation. Pair mass balance does not uniquely distinguish biochemical routes or quantify tri-culture flux. Initial headspace hydrogen/carbon dioxide prevents an exclusive donor-origin claim. The 1981 cached abstract concerns different pair experiments and medium conditions, not the 2019 tri-culture. Full 2019 primary main text, Methods, Tables1-2 and main captions read; no original images, external supplements or raw-data audit. All four nodes and two existing arrows retained, with exact-system uncertainty exposed. Canonical taxa and non-graph metadata are preserved, not recertified; #1364 remains open. No new causal structure or Edison spend.
+
+
Attaches to: ecological_interactions#Lactate Oxidation and H2/Acetate Production, ecological_interactions#Hydrogenotrophic Methanogenesis by M. maripaludis, ecological_interactions#Dual-pathway Methanogenesis by M. barkeri, ecological_interactions#Sulfate-mediated Competition
+
+
+
+
+
+
+
@@ -1332,7 +1360,7 @@ Evidence
processes.push("lactate catabolic process");
- processes.push("lactate oxidation");
+ processes.push("lactate metabolic process");
var evidenceCount = 2;
@@ -1468,7 +1496,7 @@ Evidence
processes.push("dissimilatory sulfate reduction");
- var evidenceCount = 1;
+ var evidenceCount = 2;
nodes.push({
id: intId,
diff --git a/history/records/DVM_Triculture/2026-10-06T185257Z-codex-5706a2.yaml b/history/records/DVM_Triculture/2026-10-06T185257Z-codex-5706a2.yaml
new file mode 100644
index 000000000..c9aa38679
--- /dev/null
+++ b/history/records/DVM_Triculture/2026-10-06T185257Z-codex-5706a2.yaml
@@ -0,0 +1,25 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/DVM_Triculture.yaml
+ slug: DVM_Triculture
+session:
+ id: 2026-10-06T185257Z-codex-5706a2
+ timestamp: '2026-10-06T18:52:57Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1530
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Bound DVM substrate provision, methane pathway partition and sulfate competition
+ by exact assay.
+ details: Source-based self-adversarial review. reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml
diff --git a/kb/communities/DVM_Triculture.yaml b/kb/communities/DVM_Triculture.yaml
index b1cc013ee..be19f0cb5 100644
--- a/kb/communities/DVM_Triculture.yaml
+++ b/kb/communities/DVM_Triculture.yaml
@@ -128,14 +128,12 @@ taxonomy:
explanation: Demonstrates M. barkeri's sulfate-dependent contribution to methanogenesis
ecological_interactions:
- name: Lactate Oxidation and H2/Acetate Production
- description: 'Desulfovibrio vulgaris oxidizes lactate to acetate, CO2, and H2. In the absence of sulfate,
- this oxidation occurs syntrophically with both methanogens maintaining low H2 partial pressure. The
- stoichiometric degradation of lactate produces intermediates (H2 and acetate) that both methanogens
- can utilize. When sulfate is present, D. vulgaris shifts metabolism to use sulfate as the electron
- acceptor, altering the balance of H2 and acetate production and creating competitive dynamics with
- the methanogens.
-
- '
+ description: In the constructed 2019 DVM cultures, D. vulgaris fermented lactate to acetate and hydrogen under
+ no-added-sulfate conditions. M. maripaludis uses hydrogen, whereas M. barkeri can use hydrogen and acetate;
+ acetate is not a substrate for both methanogens. The tri-culture and Dv-Mm pair showed full lactate conversion,
+ but residual acetate remained in the tri-culture and Dv-Mb pair. Sulfate availability shifts the balance toward
+ donor respiration. The experimental Dv was a laboratory Hildenborough variant with two syntrophy-enabling polymorphisms,
+ not an unqualified wild-type strain.
interaction_type: SYNTROPHY
scope: COMMUNITY_LEVEL
participating_taxa:
@@ -161,58 +159,63 @@ ecological_interactions:
term:
id: CHEBI:24996
label: lactate
- concentration: Primary substrate
+ notes: 'Contextual metabolic role, not a measured concentration: Primary substrate. Subject to the assay and
+ mechanism limits in this interaction.'
- preferred_term: acetate
term:
id: CHEBI:30089
label: acetate
- concentration: Product of lactate oxidation - substrate for M. barkeri
+ notes: 'Contextual metabolic role, not a measured concentration: Product of lactate oxidation - substrate for
+ M. barkeri. Subject to the assay and mechanism limits in this interaction.'
- preferred_term: dihydrogen
term:
id: CHEBI:18276
label: dihydrogen
- concentration: Product of lactate oxidation - must be maintained at low levels
+ notes: 'Contextual metabolic role, not a measured concentration: Product of lactate oxidation - must be maintained
+ at low levels. Subject to the assay and mechanism limits in this interaction.'
- preferred_term: sulfate
term:
id: CHEBI:16189
label: sulfate
- concentration: Alternative electron acceptor - regulates community dynamics
+ notes: 'Contextual metabolic role, not a measured concentration: Alternative electron acceptor - regulates community
+ dynamics. Subject to the assay and mechanism limits in this interaction.'
biological_processes:
- preferred_term: lactate catabolic process
term:
id: GO:1903457
label: lactate catabolic process
- - preferred_term: lactate oxidation
+ - preferred_term: lactate metabolic process
term:
id: GO:0006089
label: lactate metabolic process
downstream:
- target: Hydrogenotrophic Methanogenesis by M. maripaludis
- description: H2 produced by D. vulgaris is consumed by M. maripaludis for methanogenesis
+ description: PARTIAL - lactate fermentation supplies hydrogen that can support M. maripaludis methanogenesis
+ and product removal. The functional pair and tri-culture support this physiological route, but partner-resolved
+ flux and the fraction supplied by fermentation were not isolated; initial headspace also contained hydrogen
+ and carbon dioxide.
- target: Dual-pathway Methanogenesis by M. barkeri
- description: Both H2 and acetate produced by D. vulgaris are consumed by M. barkeri
+ description: PARTIAL - lactate fermentation supplies acetate and hydrogen that can support M. barkeri methane
+ production. Monoculture hydrogen perturbations and Dv-Mb mass balances support hydrogen co-utilization, but
+ do not resolve pathway shares in the tri-culture or establish complete acetate consumption.
evidence:
- - reference: PMID:16345708
+ - reference: doi:10.1098/rsif.2019.0129
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: vulgaris was grown in the absence of added sulfate in coculture with Methanosarcina barkeri
- (type strain), which uses both H(2)-CO(2) and acetate for methanogenesis, lactate was stoichiometrically
- degraded to CH(4) and presumably to CO(2)
- explanation: Demonstrates stoichiometric lactate degradation in syntrophic association
+ snippet: chemically defined media with lactate (30 mM), as the sole organic carbon source
+ explanation: Supports the actual culture substrate; Results2.1 and Methods4.1 distinguish conversion outcomes
+ and the laboratory donor variant.
- reference: doi:10.1098/rsif.2019.0129
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: With increasing sulfate, system stability and productivity decreases and does so faster in
- communities with aceto/hydrogenotrophic methanogens despite the continued presence of acetate
- explanation: Establishes sulfate-dependent shift in D. vulgaris metabolism
+ snippet: was not able to consume all of the acetate fermented
+ explanation: Supports incomplete acetate consumption in the 2019 system, not the older 1981 pair outcome.
- name: Hydrogenotrophic Methanogenesis by M. maripaludis
- description: 'Methanococcus maripaludis consumes H2 and CO2 produced by D. vulgaris to produce methane
- via hydrogenotrophic methanogenesis. This H2 removal maintains low H2 partial pressure, making lactate
- oxidation thermodynamically favorable for D. vulgaris. However, increasing sulfate availability reduces
- the effectiveness of this syntrophy as D. vulgaris can use sulfate instead of relying on H2 transfer,
- creating competition for available H2.
-
- '
+ description: M. maripaludis is the hydrogenotrophic partner in the lactate-fed Dv-Mm pair and DVM tri-culture.
+ Hydrogen consumption provides the product-removal basis of syntrophy. The pair remained stable at 7.5 mM sulfate
+ but methane production diminished at 15 mM sulfate across transfers. These measured outcomes support the route,
+ not a traced partition of donor-derived hydrogen or carbon dioxide; culture headspace already contained both
+ gases. PARTIAL - the exact contribution of resource competition to the sulfate response is inferred.
interaction_type: SYNTROPHY
scope: PAIRWISE
source_taxon:
@@ -230,17 +233,20 @@ ecological_interactions:
term:
id: CHEBI:18276
label: dihydrogen
- concentration: Consumed from environment - must be maintained at low levels
+ notes: 'Contextual metabolic role, not a measured concentration: Consumed from environment - must be maintained
+ at low levels. Subject to the assay and mechanism limits in this interaction.'
- preferred_term: methane
term:
id: CHEBI:16183
label: methane
- concentration: Product of methanogenesis
+ notes: 'Contextual metabolic role, not a measured concentration: Product of methanogenesis. Subject to the assay
+ and mechanism limits in this interaction.'
- preferred_term: carbon dioxide
term:
id: CHEBI:16526
label: carbon dioxide
- concentration: Co-substrate for methanogenesis
+ notes: 'Contextual metabolic role, not a measured concentration: Co-substrate for methanogenesis. Subject to
+ the assay and mechanism limits in this interaction.'
biological_processes:
- preferred_term: methanogenesis
term:
@@ -250,18 +256,17 @@ ecological_interactions:
- reference: doi:10.1098/rsif.2019.0129
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: With increasing sulfate, system stability and productivity decreases and does so faster in
- communities with aceto/hydrogenotrophic methanogens despite the continued presence of acetate
- explanation: Demonstrates M. maripaludis contribution to enhanced tri-culture productivity
+ snippet: displayed stable coexistence at half-sulfate treatments
+ explanation: Results2.2 identifies the Dv-Mm pair; its 7.5 mM versus 15 mM response must not be attributed solely
+ to a generic abstract sentence.
- name: Dual-pathway Methanogenesis by M. barkeri
- description: 'Methanosarcina barkeri can utilize both H2-CO2 and acetate produced by D. vulgaris for
- methanogenesis. This dual metabolic capability is particularly important in the absence of sulfate,
- where M. barkeri contributes significantly to methane production. However, under sulfate treatments,
- M. barkeri''s contribution is diminished even when acetate is available, likely due to competitive
- interactions with D. vulgaris for H2 and potentially other resources. This demonstrates differential
- sensitivity of acetotrophic versus hydrogenotrophic methanogenesis to sulfate-mediated perturbations.
-
- '
+ description: M. barkeri contributed to the higher methane output of the no-added-sulfate DVM tri-culture, while
+ substantial acetate remained. Separate monocultures supplied with 30 mM acetate produced more methane with higher
+ hydrogen pressure, including about 60 mM versus 20 mM methane with 80% versus no added headspace hydrogen. Mass
+ balances in no-added-sulfate Dv-Mb pairs require hydrogen utilization in addition to acetate use. PARTIAL -
+ parallel hydrogenotrophic/acetotrophic routes versus coupled hydrogen oxidation and acetate reduction, and their
+ shares in the tri-culture, are not resolved. This is not evidence for complete acetate use or an obligate hydrogen
+ requirement under every condition.
interaction_type: SYNTROPHY
scope: PAIRWISE
source_taxon:
@@ -279,17 +284,20 @@ ecological_interactions:
term:
id: CHEBI:18276
label: dihydrogen
- concentration: Substrate for hydrogenotrophic methanogenesis
+ notes: 'Contextual metabolic role, not a measured concentration: Substrate for hydrogenotrophic methanogenesis.
+ Subject to the assay and mechanism limits in this interaction.'
- preferred_term: acetate
term:
id: CHEBI:30089
label: acetate
- concentration: Substrate for acetotrophic methanogenesis
+ notes: 'Contextual metabolic role, not a measured concentration: Substrate for acetotrophic methanogenesis.
+ Subject to the assay and mechanism limits in this interaction.'
- preferred_term: methane
term:
id: CHEBI:16183
label: methane
- concentration: Product of methanogenesis
+ notes: 'Contextual metabolic role, not a measured concentration: Product of methanogenesis. Subject to the assay
+ and mechanism limits in this interaction.'
biological_processes:
- preferred_term: methanogenesis
term:
@@ -303,26 +311,23 @@ ecological_interactions:
- reference: doi:10.1098/rsif.2019.0129
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: Syntrophic interactions among sulfate reducers and aceto/hydrogenotrophic and obligate hydrogenotrophic
- methanogens form a key component of these communities, yet, the impact of these different syntrophic
- routes on methane production and their stability against sulfate availability are not well understood
- explanation: Demonstrates sulfate-dependent regulation of M. barkeri methanogenesis
- - reference: PMID:16345708
+ snippet: increasing H2 pressure in the headspace
+ explanation: Results2.3 and Figure4 describe the separate Mb monoculture perturbation, not a tri-culture rescue
+ experiment.
+ - reference: doi:10.1098/rsif.2019.0129
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: vulgaris was grown in the absence of added sulfate in coculture with Methanosarcina barkeri
- (type strain), which uses both H(2)-CO(2) and acetate for methanogenesis, lactate was stoichiometrically
- degraded to CH(4) and presumably to CO(2)
- explanation: Establishes dual metabolic capability of M. barkeri
+ snippet: the methane production in the system cannot be explained solely by acetotrophic methanogenesis
+ explanation: Results2.4 applies mass balance to the Dv-Mb pair. It supports hydrogen involvement but not unique
+ biochemical pathway allocation in DVM.
- name: Sulfate-mediated Competition
- description: 'Increasing sulfate availability shifts community dynamics by enabling D. vulgaris to use
- sulfate as an electron acceptor rather than relying solely on syntrophic H2 transfer. This creates
- competitive situations where D. vulgaris can use both H2 and lactate, potentially outcompeting the
- methanogens. The differential impact on the two methanogens reveals that acetotrophic (M. barkeri)
- and hydrogenotrophic (M. maripaludis) pathways respond differently to sulfate gradients, providing
- insights into how geochemical conditions regulate methanogenic community structure.
-
- '
+ description: With 30 mM lactate, sulfate was added at 0, 7.5 or 15 mM across three 21-day culturing periods. Methane
+ production and methanogen gene abundance declined with sulfate, with M. barkeri more sensitive than M. maripaludis;
+ acetate remained available. Dv-Mb methane production was already impaired at 7.5 mM, while the Dv-Mm pair showed
+ a diminishing trend at 15 mM. PARTIAL - sulfate-enabled donor respiration and competition for hydrogen provide
+ the source-supported explanation, strengthened by Mb monoculture hydrogen perturbations and pair mass balances.
+ These assays do not selectively isolate that mechanism in the tri-culture or establish acetate competition,
+ lactate use by the methanogens, or an irreversible loss of every methanogen.
interaction_type: COMPETITION
scope: COMMUNITY_LEVEL
participating_taxa:
@@ -348,12 +353,14 @@ ecological_interactions:
term:
id: CHEBI:16189
label: sulfate
- concentration: Electron acceptor - drives competitive dynamics
+ notes: 'Contextual metabolic role, not a measured concentration: Electron acceptor - drives competitive dynamics.
+ Subject to the assay and mechanism limits in this interaction.'
- preferred_term: dihydrogen
term:
id: CHEBI:18276
label: dihydrogen
- concentration: Contested resource between D. vulgaris and methanogens
+ notes: 'Contextual metabolic role, not a measured concentration: Contested resource between D. vulgaris and
+ methanogens. Subject to the assay and mechanism limits in this interaction.'
biological_processes:
- preferred_term: dissimilatory sulfate reduction
term:
@@ -363,9 +370,15 @@ ecological_interactions:
- reference: doi:10.1098/rsif.2019.0129
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: With increasing sulfate, system stability and productivity decreases and does so faster in
- communities with aceto/hydrogenotrophic methanogens despite the continued presence of acetate
- explanation: Demonstrates sulfate-mediated competitive shift in community dynamics
+ snippet: resulted in a loss of methane production already in half-sulfate treatments
+ explanation: Supports the Dv-Mb pair response to sulfate; the full source separately reports Dv-Mm and tri-culture
+ responses.
+ - reference: doi:10.1098/rsif.2019.0129
+ supports: PARTIAL
+ evidence_source: IN_VITRO
+ snippet: competition with Dv and Mm for this compound
+ explanation: Discussion identifies hydrogen competition as the proposed explanation for Mb instability, not
+ a selectively isolated tri-culture mediator.
environmental_factors:
- name: Anaerobic Conditions
value: Strict anaerobic
@@ -557,3 +570,31 @@ cultivation_setup:
evidence_source: IN_VITRO
snippet: For the co- and tri-cultures, 30 mM Na-lactate was added as the carbon
source
+discussions:
+- discussion_id: dvm_pathway_partition_and_sulfate_mediation
+ prompt: What fractions of DVM methane flux follow each pathway, and how much of the sulfate effect is mediated
+ by hydrogen competition?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#Lactate Oxidation and H2/Acetate Production
+ - ecological_interactions#Hydrogenotrophic Methanogenesis by M. maripaludis
+ - ecological_interactions#Dual-pathway Methanogenesis by M. barkeri
+ - ecological_interactions#Sulfate-mediated Competition
+ rationale: 'Preserve positive lactate conversion, increased tri-culture methane output, sulfate responses and
+ the separate Mb monoculture hydrogen perturbation. Pair mass balance does not uniquely distinguish biochemical
+ routes or quantify tri-culture flux. Initial headspace hydrogen/carbon dioxide prevents an exclusive donor-origin
+ claim. The 1981 cached abstract concerns different pair experiments and medium conditions, not the 2019 tri-culture.
+ Full 2019 primary main text, Methods, Tables1-2 and main captions read; no original images, external supplements
+ or raw-data audit. All four nodes and two existing arrows retained, with exact-system uncertainty exposed. Canonical
+ taxa and non-graph metadata are preserved, not recertified; #1364 remains open. No new causal structure or Edison
+ spend.'
+ posed_by: codex
+ posed_date: '2026-10-06'
+curation_history:
+- timestamp: '2026-10-06T18:52:55Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Bound DVM substrate provision, methane pathway partition and sulfate competition by exact assay. Issue
+ #1530; reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml'
+ llm_assisted: true
diff --git a/reports/causal_graph_review/README.md b/reports/causal_graph_review/README.md
index ed1885bb6..98d2a80d1 100644
--- a/reports/causal_graph_review/README.md
+++ b/reports/causal_graph_review/README.md
@@ -5,6 +5,22 @@ 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`.
+## Batch57: DVM Tri-culture
+
+[Decisions](decisions/20261006-dvm-batch57.yaml),
+[validation](validation-20261006-batch57.json) and
+[self-adversarial review](adversarial-review-20261006-batch57.yaml) cover all four
+existing nodes and two arrows. Positive lactate conversion, methane production and
+sulfate-treatment responses remain. Both substrate-supply arrows are qualified for
+unresolved flux allocation; separate monoculture perturbations and pair mass balances
+are not presented as measured tri-culture pathway shares.
+
+The full 2019 primary main text, Methods, Tables1-2 and main captions were read;
+the 1981 source was limited to its cached abstract. Original images, supplements,
+raw data and independent mass-balance replication were not audited. All 920 caches
+remain unchanged. Repair #1530 awaits protected-main merge; existing non-graph
+metadata issue #1364 remains open. No new graph structure or paid provider call.
+
## Batch55: REE, Maize And Jiangshui
[Decisions](decisions/20261006-three-records-batch55.yaml),
diff --git a/reports/causal_graph_review/adversarial-review-20261006-batch57.yaml b/reports/causal_graph_review/adversarial-review-20261006-batch57.yaml
new file mode 100644
index 000000000..91a89f629
--- /dev/null
+++ b/reports/causal_graph_review/adversarial-review-20261006-batch57.yaml
@@ -0,0 +1,119 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: d61d3a6a0f782c5df8febccd0ecae0ea8c3759ca
+scope:
+- kb/communities/DVM_Triculture.yaml
+decision_ledger: reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml
+validation_report: reports/causal_graph_review/validation-20261006-batch57.json
+findings:
+- issue: 1530
+ severity: P2
+ status: addressed_in_this_change
+ finding: Bound DVM substrate provision, methane pathway partition and sulfate competition by exact assay.
+ disposition: Close only after protected-main merge.
+- issue: 1364
+ severity: P2
+ status: unresolved_non_graph
+ finding: DVM origin, protocol and overbroad non-graph mechanism metadata.
+ disposition: Keep open after graph repair merge.
+adversarial_checks:
+- Whole DVM record and all4 original nodes/2 arrows read; no new structure or removed physiological route.
+ Full2019 primary main text, Methods4.1-4.8, Tables1-2 and main captions read. No original image pixels,
+ supplements/raw data or independent mass-balance replication.1981 source limited to cached abstract.
+- Preserve positive lactate conversion, greater no-added-sulfate tri-culture methane output, sulfate-treatment
+ responses and Mb monoculture hydrogen-pressure intervention. Lack of unique flux partition does not
+ negate these controlled phenotypes.
+- Correct the implication that both methanogens use acetate. Residual acetate remained despite complete
+ lactate conversion. Do not replace2019 incomplete conversion with the older1981 different-pair stoichiometric
+ endpoint.
+- Distinguish separate monoculture hydrogen perturbations, Dv-Mb mass balance and DVM tri-culture response.
+ Mass balance requires hydrogen involvement but cannot uniquely identify parallel versus coupled routes
+ or their tri-culture shares. No obligate hydrogen requirement inferred from the methane increase.
+- Initial culture headspace supplied hydrogen and carbon dioxide. Both substrate-supply arrows remain
+ PARTIAL for exact flux allocation rather than claiming exclusive donor origin. Dv was the laboratory
+ Hildenborough variant with two polymorphisms; canonical taxa/labels unchanged.
+- Sulfate concentrations0/7.5/15mM with30mM lactate are distinct treatments. Earlier Dv-Mb impairment
+ does not establish irreversible extinction or acetate competition. Hydrogen competition is supported
+ as an explanation, not selectively isolated tri-culture mediation.
+- Raw non-graph blocks remain byte-identical and are not recertified. Existing1364 remains open for culture
+ vessel, medium-fill volume, gas regime, inoculum, constructed origin and overbroad narrative roles.
+ Cached abstract_only metadata predates appended full text; all920 caches unchanged and7 graph snippets
+ independently primary-matched.
+- Reviewed the complete biological diff, exact discussion anchors and regression assertions. Every-node/every-arrow
+ decisions match current record hashes.459 other records unchanged; both-root participant census unchanged.36
+ pre-existing network warnings and zero structural defects, with no new warnings.
+- Actual schema/strict/term/reference/snippet/history/rank/regression gates and output digests recorded.
+ Repeat generated rendering and456-page exact description parser verification passed; no browser-screenshot
+ claim. Post-commit docs-current remains a separate required publication gate.
+- 833 all-state issue titles/bodies searched,14 scoped ignored/hidden local matches, relevant existing
+ issues read; not every historical comment/PR or matching file.1530 addressed but open until protected-main
+ merge;1364 remains unresolved. Self-review is COMMENT, not independent approval. No Edison dryrun, paid
+ submission/report or spend.
+verification:
+ combined_regressions: 531 passed in 203.79s (0:03:23)
+ new_regression_tests: 5
+ schema_strict_terms_history: Passed with actual output digests
+ references: CLI Total checks counts reported issues, not executed checks. Cache MATCH does not prove
+ scientific entailment or complete provenance. Full2019 primary inspected and all7 graph snippets independently
+ matched; nongraph metadata remains1364. Existing476/496/1091/1095 limitations remain.
+ snippet_counts_by_record:
+ kb/communities/DVM_Triculture.yaml:
+ MATCH: 25
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ network:
+ existing_findings_preserved: 36
+ added_findings: {}
+ removed_findings: {}
+ black_ruff_diff: passed
+ tested_file_sha256:
+ reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml: c24205828d335525d3419029ab5109916df473393094b010e3dc04209d72672a
+ tests/test_causal_review_batch57.py: 655e2fdc3d4ee988a7ef4e083e00a0adba35421409c54bcbacf1cd6d4cbec113
+ kb/communities/DVM_Triculture.yaml: a35537c075a8b201555340df6b43a65be0409250e87e476fb4dac682201e6f36
+ reports/causal_graph_review/README.md: e22ace9bab3958b94b1a9db9a772dcdbafd0a60c16ded7c25009dab4b0f3063b
+ post_commit_docs_current: Separate publication gate, not asserted before commit.
+participant_census:
+ measurements:
+ baseline:
+ records: 460
+ with_community_level: 390
+ mixed: 124
+ community_level_only: 266
+ taxa: 1505
+ credited_solely_by_the_rule: 1236
+ current:
+ records: 460
+ with_community_level: 390
+ mixed: 124
+ community_level_only: 266
+ taxa: 1505
+ credited_solely_by_the_rule: 1236
+ interpretation: DVM keeps its two pairwise and two explicit community nodes with unchanged canonical
+ taxa. Both-root census unchanged; no connectivity-rule or membership changes.
+corpus:
+ records: 460
+ nodes: 1461
+ edges: 654
+ review_status_counts:
+ needs_research: 18
+ pending: 251
+ reviewed: 191
+limitations:
+- All four nodes/two arrows reviewed and retained; both arrows PARTIAL for exact flux allocation. No new
+ causal structure, Edison dry run, paid request or report.
+- 2019 primary full main text/Methods/Tables1-2/main captions read; no original figure pixels, external
+ supplements/raw data or independent mass-balance replication.1981 cached abstract only; fresh PubMed
+ view did not expose text.
+- Canonical taxonomy and raw non-graph fields preserved, not recertified. Existing1364 tracks incorrect
+ origin/protocol and overbroad non-graph mechanism metadata; remains open after graph merge.
+- All920 cache files unchanged. Seven graph snippets independently matched to fresh primary main text;
+ cache MATCH and the abstract_only front matter do not certify all cache provenance. Existing496 concerns
+ that misleading full-text status.
+- 833 all-state issue titles/bodies searched;14 matching ignored/hidden local files with docs/site/cache
+ exclusions. Relevant existing issues inspected, not every historical comment/PR or every matching file.
+- Self-adversarial review, not independent approval. Repair1530 stays open until protected-main merge.
+ SupportingReference coverage476, writer artifact1095 and Linux DOI lookup1091 remain pre-existing limitations.
diff --git a/reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml b/reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml
new file mode 100644
index 000000000..6d4bdcdfc
--- /dev/null
+++ b/reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml
@@ -0,0 +1,118 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: d61d3a6a0f782c5df8febccd0ecae0ea8c3759ca
+baseline_commit: d61d3a6a0f782c5df8febccd0ecae0ea8c3759ca
+base_tree: b1be6bbcb5a107378ba50075dfb062b14152c60d
+pre_source_baseline_sha256: b37a0d9b620870bd1a541cef9b8ee67f2f8b10c8798f97edf4e5a02cfce370e7
+issues:
+- 1530
+unresolved_non_graph_issues:
+- 1364
+issue_deduplication:
+ all_state_issue_titles_and_bodies: 833
+ ignored_hidden_local_search: true
+ matching_local_files: 14
+ related_issues:
+ - 1364
+ - 1398
+ - 1399
+ - 1400
+ - 496
+reference_cache_original_hashes:
+ references_cache/doi_10.1098_rsif.2019.0129.md: 2478af1fb20fd55912d1737a025cc659f2db4bef173151a02d9931410f0c1b5f
+ references_cache/PMID_16345708.md: 5e0e85bae63d540c243ab12bdc2a3d3fef677857206075289d73efb6c617cf02
+primary_artifacts:
+ dvm-primary.html: 741f79cd71a4d16e3d94d9839c1105f5bfac606deb8092368ea3bd34f1ca95ad
+ dvm-primary.txt: 179b12905519216d52e716361a7c6ce115e2e021a70e90efc5182ecf6e7bf930
+primary_urls:
+- https://pmc.ncbi.nlm.nih.gov/articles/PMC6544901/
+primary_graph_fragments_verified: 7
+limitations:
+- All four nodes/two arrows reviewed and retained; both arrows PARTIAL for exact flux allocation. No new causal
+ structure, Edison dry run, paid request or report.
+- 2019 primary full main text/Methods/Tables1-2/main captions read; no original figure pixels, external supplements/raw
+ data or independent mass-balance replication.1981 cached abstract only; fresh PubMed view did not expose text.
+- Canonical taxonomy and raw non-graph fields preserved, not recertified. Existing1364 tracks incorrect origin/protocol
+ and overbroad non-graph mechanism metadata; remains open after graph merge.
+- All920 cache files unchanged. Seven graph snippets independently matched to fresh primary main text; cache MATCH
+ and the abstract_only front matter do not certify all cache provenance. Existing496 concerns that misleading full-text
+ status.
+- 833 all-state issue titles/bodies searched;14 matching ignored/hidden local files with docs/site/cache exclusions.
+ Relevant existing issues inspected, not every historical comment/PR or every matching file.
+- Self-adversarial review, not independent approval. Repair1530 stays open until protected-main merge. SupportingReference
+ coverage476, writer artifact1095 and Linux DOI lookup1091 remain pre-existing limitations.
+records:
+- path: kb/communities/DVM_Triculture.yaml
+ id: CommunityMech:000021
+ original_sha256: f266bb55b26a98251d9302e6a411526e3908eb775203bd87b4fa8b47fcb07743
+ record_sha256: a35537c075a8b201555340df6b43a65be0409250e87e476fb4dac682201e6f36
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml
+ scope: Whole record, all four existing nodes and two arrows; source-bounded repair without extension.
+ summary: Bound DVM substrate provision, methane pathway partition and sulfate competition by exact assay.
+ renamed_nodes: {}
+ node_decisions:
+ - node: Lactate Oxidation and H2/Acetate Production
+ rationale: Preserve donor fermentation with recipient-specific substrate use and incomplete acetate conversion.
+ - node: Hydrogenotrophic Methanogenesis by M. maripaludis
+ rationale: Preserve hydrogenotrophic syntrophy and sulfate-dependent pair outcomes without exclusive donor gas
+ origin.
+ - node: Dual-pathway Methanogenesis by M. barkeri
+ rationale: Preserve positive methane and monoculture perturbation results while distinguishing pair mass balance
+ from tri-culture pathway allocation.
+ - node: Sulfate-mediated Competition
+ rationale: Preserve sulfate-treatment phenotypes without selectively proven tri-culture competition mediation.
+ removed_node_decisions: []
+ edges_before:
+ - source: Lactate Oxidation and H2/Acetate Production
+ target: Hydrogenotrophic Methanogenesis by M. maripaludis
+ description: H2 produced by D. vulgaris is consumed by M. maripaludis for methanogenesis
+ - source: Lactate Oxidation and H2/Acetate Production
+ target: Dual-pathway Methanogenesis by M. barkeri
+ description: Both H2 and acetate produced by D. vulgaris are consumed by M. barkeri
+ edges_after:
+ - source: Lactate Oxidation and H2/Acetate Production
+ target: Hydrogenotrophic Methanogenesis by M. maripaludis
+ description: PARTIAL - lactate fermentation supplies hydrogen that can support M. maripaludis methanogenesis
+ and product removal. The functional pair and tri-culture support this physiological route, but partner-resolved
+ flux and the fraction supplied by fermentation were not isolated; initial headspace also contained hydrogen
+ and carbon dioxide.
+ - source: Lactate Oxidation and H2/Acetate Production
+ target: Dual-pathway Methanogenesis by M. barkeri
+ description: PARTIAL - lactate fermentation supplies acetate and hydrogen that can support M. barkeri methane
+ production. Monoculture hydrogen perturbations and Dv-Mb mass balances support hydrogen co-utilization, but
+ do not resolve pathway shares in the tri-culture or establish complete acetate consumption.
+ retained_edge_decisions:
+ - source: Lactate Oxidation and H2/Acetate Production
+ target: Hydrogenotrophic Methanogenesis by M. maripaludis
+ description: PARTIAL - lactate fermentation supplies hydrogen that can support M. maripaludis methanogenesis
+ and product removal. The functional pair and tri-culture support this physiological route, but partner-resolved
+ flux and the fraction supplied by fermentation were not isolated; initial headspace also contained hydrogen
+ and carbon dioxide.
+ rationale: Retain physiological substrate supply with PARTIAL quantitative and exact-system allocation.
+ - source: Lactate Oxidation and H2/Acetate Production
+ target: Dual-pathway Methanogenesis by M. barkeri
+ description: PARTIAL - lactate fermentation supplies acetate and hydrogen that can support M. barkeri methane
+ production. Monoculture hydrogen perturbations and Dv-Mb mass balances support hydrogen co-utilization, but
+ do not resolve pathway shares in the tri-culture or establish complete acetate consumption.
+ rationale: Retain physiological substrate supply with PARTIAL quantitative and exact-system allocation.
+ removed_edge_decisions: []
+ references:
+ - doi:10.1098/rsif.2019.0129
+ - PMID:16345708
+ issues:
+ - 1530
+ - 1364
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/DVM_Triculture/2026-10-06T185257Z-codex-5706a2.yaml
+ source_review:
+ scope: Full2019 primary main text, Methods4.1-4.8, Tables1-2 and main captions read; no original images, external
+ supplements, raw data or independent mass-balance replication.1981 cached abstract only.
+ cache_provenance_certified: false
diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv
index 08a553078..6152a514c 100644
--- a/reports/causal_graph_review/inventory.tsv
+++ b/reports/causal_graph_review/inventory.tsv
@@ -131,7 +131,7 @@ kb/communities/Cyantraniliprole_Fahmy_Consortium_T4.yaml CommunityMech:000369 0e
kb/communities/Cyprus_Copper_Sulphide_Bioleaching_Consortium.yaml CommunityMech:000217 c914e6ebd91d24dbb0b18b48b2aff7979e6528900cc282824d40b8da8afb29c8 3 0 63.3 reports/causal_graph_review/decisions/20261006-four-records-batch28.yaml reviewed
kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml CommunityMech:000410 f9b1a67fb3fcd903a1adcb16f0eb5279a3738ff6807ddc4cc9203553be36bc3a 3 0 73.3 reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml needs_research
kb/communities/DIETsimp_Lignocellulose_to_Methane_DIET_Consortia.yaml CommunityMech:000297 41e06f6c3fa5433a002180badb92870c4664a3863c394d4c7d25acf38a23a3be 3 2 96.7 reports/causal_graph_review/decisions/20261006-four-records-batch28.yaml reviewed
-kb/communities/DVM_Triculture.yaml CommunityMech:000021 f266bb55b26a98251d9302e6a411526e3908eb775203bd87b4fa8b47fcb07743 4 2 100.0 pending
+kb/communities/DVM_Triculture.yaml CommunityMech:000021 a35537c075a8b201555340df6b43a65be0409250e87e476fb4dac682201e6f36 4 2 100.0 reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml reviewed
kb/communities/Dairy_Wastewater_Algal_Cyanobacterial_Cultivation_Panel.yaml CommunityMech:000384 1eee347250881287de8d9d9be43dd5bba641e69001b46ea19e8048aeb1214bf6 0 0 0.0 pending
kb/communities/Dangl_SynComm_35.yaml CommunityMech:000022 9a828b5a59f88ca41699338a0187ebbe4d59da5b05fcc4ef40cf788b2ee9a277 4 2 89.4 reports/causal_graph_review/decisions/20261006-three-records-batch29.yaml reviewed
kb/communities/Deepwater_Horizon_Deep_Sea_Oil_Plume_Succession.yaml CommunityMech:000166 7cc349b1d2309b6d071aeaea72234305922c0c76458baab1469ce258142083f7 3 2 89.0 reports/causal_graph_review/decisions/20261006-three-records-batch29.yaml reviewed
diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json
index f043e5dd6..a3a4988d8 100644
--- a/reports/causal_graph_review/summary.json
+++ b/reports/causal_graph_review/summary.json
@@ -8,8 +8,8 @@
"records_without_edges": 155,
"review_status_counts": {
"needs_research": 18,
- "pending": 252,
- "reviewed": 190
+ "pending": 251,
+ "reviewed": 191
},
"structural_defects": [],
"network_audit": [
diff --git a/reports/causal_graph_review/validation-20261006-batch57.json b/reports/causal_graph_review/validation-20261006-batch57.json
new file mode 100644
index 000000000..f3250bd77
--- /dev/null
+++ b/reports/causal_graph_review/validation-20261006-batch57.json
@@ -0,0 +1,515 @@
+{
+ "base_commit": "d61d3a6a0f782c5df8febccd0ecae0ea8c3759ca",
+ "scope": [
+ "kb/communities/DVM_Triculture.yaml"
+ ],
+ "reference_validator_version": "0.1.7",
+ "results": [
+ {
+ "check": "DVM_Triculture-schema",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/DVM_Triculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/DVM_Triculture-schema.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "DVM_Triculture-strict",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/private/tmp/communitymech-batch57/DVM_Triculture-strict.tsv",
+ "kb/communities/DVM_Triculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/DVM_Triculture-strict.log",
+ "log_sha256": "ef77f4d630bf6a72102f16be8e836ce74f9a04e63b78ed6ff8d047577f0b06da",
+ "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch57/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-batch57/DVM_Triculture-strict.tsv\n"
+ },
+ {
+ "check": "DVM_Triculture-terms",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator",
+ "validate-data",
+ "kb/communities/DVM_Triculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/DVM_Triculture-terms.log",
+ "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018",
+ "output_tail": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "DVM_Triculture-references",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/DVM_Triculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/DVM_Triculture-references.log",
+ "log_sha256": "b3188dbd4b6097ca90c365034f3bd9bc86b8697eba7c0d640333d3ffedd9c5a5",
+ "output_tail": "Validating kb/communities/DVM_Triculture.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/DVM_Triculture.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": "DVM_Triculture-snippets",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/DVM_Triculture.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/DVM_Triculture-snippets.log",
+ "log_sha256": "f261f4401991124875d6e69fbc7c75c05d38b3868788199bef07a85e404ac32e",
+ "output_tail": "# 25 evidence snippets scanned across 1 files\n MATCH 25\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": "DVM_Triculture-rank",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/DVM_Triculture.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/DVM_Triculture-rank.log",
+ "log_sha256": "efccf14382252356899e22d5b4f29fc669242079aff9748d9c280ffbc07a2e5c",
+ "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000021\",\n \"name\": \"DVM Tri-culture\",\n \"score\": 100.0,\n \"taxonomy\": 3,\n \"connected_taxa\": 3,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 4,\n \"downstream_edges\": 2,\n \"interaction_evidence\": 7,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [],\n \"path\": \"kb/communities/DVM_Triculture.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "DVM_Triculture-history-0",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/DVM_Triculture/2026-10-06T185257Z-codex-5706a2.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/DVM_Triculture-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-batch57/inventory.log",
+ "log_sha256": "54e9bffd3f855e54bd01abec019dfdb53ec341213a5b7142900ec8ac1bffc671",
+ "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\": 1461,\n \"edges\": 654,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 155,\n \"review_status_counts\": {\n \"needs_research\": 18,\n \"pending\": 251,\n \"reviewed\": 191\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-batch57/network.log",
+ "log_sha256": "0955d3471f474fec8dcceb846ff932573d11c9833de73b2b2822241553762186",
+ "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-batch57/rank-all.log",
+ "log_sha256": "15045236fc89a52b5072edf8022f82b7b8bbca5e0448af52878e76662ba577b4",
+ "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-batch57/render.log",
+ "log_sha256": "7958548aae9fced789a548d193a4390ded8da0be3f7f7a48cbe9472d87a2448a",
+ "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch57/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch57/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch57/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-batch57/render-repeat.log",
+ "log_sha256": "7958548aae9fced789a548d193a4390ded8da0be3f7f7a48cbe9472d87a2448a",
+ "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch57/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch57/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch57/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch57/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-batch56')),('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-batch57/connectivity-survey.log",
+ "log_sha256": "2ebe9a828c3195e89a0931934fd0781047b3b112d0aa63c7a5cdba7fcb0e27ee",
+ "output_tail": "{\"baseline\": {\"records\": 460, \"with_community_level\": 390, \"mixed\": 124, \"community_level_only\": 266, \"taxa\": 1505, \"credited_solely_by_the_rule\": 1236}, \"current\": {\"records\": 460, \"with_community_level\": 390, \"mixed\": 124, \"community_level_only\": 266, \"taxa\": 1505, \"credited_solely_by_the_rule\": 1236}}\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_batch46.py",
+ "tests/test_causal_review_batch47.py",
+ "tests/test_causal_review_batch48.py",
+ "tests/test_causal_review_batch49.py",
+ "tests/test_causal_review_batch5.py",
+ "tests/test_causal_review_batch50.py",
+ "tests/test_causal_review_batch51.py",
+ "tests/test_causal_review_batch52.py",
+ "tests/test_causal_review_batch53.py",
+ "tests/test_causal_review_batch54.py",
+ "tests/test_causal_review_batch55.py",
+ "tests/test_causal_review_batch56.py",
+ "tests/test_causal_review_batch57.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-batch57/regressions.log",
+ "log_sha256": "c838f4d0c6eaadf55435081859d59f82afad8fac6e38e706233ea6493986d679",
+ "output_tail": "........................................................................ [ 13%]\n........................................................................ [ 27%]\n........................................................................ [ 40%]\n........................................................................ [ 54%]\n........................................................................ [ 67%]\n........................................................................ [ 81%]\n........................................................................ [ 94%]\n........................... [100%]\n531 passed in 203.79s (0:03:23)\n"
+ },
+ {
+ "check": "black",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/3Q_kifQtLB624D5bBWGIf/bin/black",
+ "--check",
+ "tests/test_causal_review_batch57.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/black.log",
+ "log_sha256": "1a56c7cd8457fd05d978cfbd139d7bfd86e86acaa9b57668e718ef8bccc0cf48",
+ "output_tail": "All done! \u2728 \ud83c\udf70 \u2728\n1 file would be left unchanged.\n"
+ },
+ {
+ "check": "ruff",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/wCcxEYRM4HeHgwYPZemHX/bin/ruff",
+ "check",
+ "tests/test_causal_review_batch57.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/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-batch57/diff-check.log",
+ "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "output_tail": ""
+ },
+ {
+ "check": "primary-graph-fragments",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-c",
+ "import json,pathlib,yaml\nroot=pathlib.Path('/private/tmp/communitymech-batch57')\ndoc=yaml.safe_load(pathlib.Path('kb/communities/DVM_Triculture.yaml').read_text())\nprimary=''.join((root/'dvm-primary.txt').read_text().split())\nfragments=[e['snippet'] for n in doc['ecological_interactions'] for e in n['evidence']]\nassert len(fragments)==7 and all(''.join(q.split()) in primary for q in fragments)\nassert 'Theactualamountsofacetateusedinreactions2and6' in primary\nprint(json.dumps({'primary_matched_graph_fragments':len(fragments),'all_cache_provenance_certified':False,'pathway_allocation_identified':False}))\n"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch57/primary-graph-fragments.log",
+ "log_sha256": "4a85d16d26194dd4bdcb9647df27c68c8fac86c9a73c6c390a4267b80edc29fa",
+ "output_tail": "{\"primary_matched_graph_fragments\": 7, \"all_cache_provenance_certified\": false, \"pathway_allocation_identified\": false}\n"
+ }
+ ],
+ "limitations": [
+ "All four nodes/two arrows reviewed and retained; both arrows PARTIAL for exact flux allocation. No new causal structure, Edison dry run, paid request or report.",
+ "2019 primary full main text/Methods/Tables1-2/main captions read; no original figure pixels, external supplements/raw data or independent mass-balance replication.1981 cached abstract only; fresh PubMed view did not expose text.",
+ "Canonical taxonomy and raw non-graph fields preserved, not recertified. Existing1364 tracks incorrect origin/protocol and overbroad non-graph mechanism metadata; remains open after graph merge.",
+ "All920 cache files unchanged. Seven graph snippets independently matched to fresh primary main text; cache MATCH and the abstract_only front matter do not certify all cache provenance. Existing496 concerns that misleading full-text status.",
+ "833 all-state issue titles/bodies searched;14 matching ignored/hidden local files with docs/site/cache exclusions. Relevant existing issues inspected, not every historical comment/PR or every matching file.",
+ "Self-adversarial review, not independent approval. Repair1530 stays open until protected-main merge. SupportingReference coverage476, writer artifact1095 and Linux DOI lookup1091 remain pre-existing limitations.",
+ "HTML descriptions checked by exact parser and repeat renders, not browser screenshots. Post-commit docs-current is a separate publication gate."
+ ],
+ "snippet_counts_by_record": {
+ "kb/communities/DVM_Triculture.yaml": {
+ "MATCH": 25,
+ "RENDERING": 0,
+ "ASSEMBLED": 0,
+ "WEAK": 0,
+ "MISMATCH": 0,
+ "NOCONTENT": 0
+ }
+ },
+ "unchanged_raw_blocks": 15,
+ "unchanged_record_files": 459,
+ "unchanged_cache_files": 920,
+ "primary_artifacts": {
+ "dvm-primary.html": "741f79cd71a4d16e3d94d9839c1105f5bfac606deb8092368ea3bd34f1ca95ad",
+ "dvm-primary.txt": "179b12905519216d52e716361a7c6ce115e2e021a70e90efc5182ecf6e7bf930"
+ },
+ "cache_provenance_caveat": "All cache bytes preserved; seven graph snippets independently primary-matched. MATCH does not certify all cached/nongraph content; abstract_only metadata predates appended full text.",
+ "network_delta": {
+ "existing_findings_preserved": 36,
+ "added_findings": {},
+ "removed_findings": {}
+ },
+ "render_determinism": true,
+ "published_description_coverage": {
+ "pages": 456,
+ "nodes": 1447,
+ "arrows": 646
+ },
+ "participant_census": {
+ "measurements": {
+ "baseline": {
+ "records": 460,
+ "with_community_level": 390,
+ "mixed": 124,
+ "community_level_only": 266,
+ "taxa": 1505,
+ "credited_solely_by_the_rule": 1236
+ },
+ "current": {
+ "records": 460,
+ "with_community_level": 390,
+ "mixed": 124,
+ "community_level_only": 266,
+ "taxa": 1505,
+ "credited_solely_by_the_rule": 1236
+ }
+ },
+ "interpretation": "DVM keeps its two pairwise and two explicit community nodes with unchanged canonical taxa. Both-root census unchanged; no connectivity-rule or membership changes."
+ },
+ "network_warning_count": 36,
+ "corpus": {
+ "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.",
+ "records": 460,
+ "nodes": 1461,
+ "edges": 654,
+ "records_without_nodes": 8,
+ "records_without_edges": 155,
+ "review_status_counts": {
+ "needs_research": 18,
+ "pending": 251,
+ "reviewed": 191
+ },
+ "structural_defects": []
+ },
+ "tested_file_sha256": {
+ "reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml": "c24205828d335525d3419029ab5109916df473393094b010e3dc04209d72672a",
+ "tests/test_causal_review_batch57.py": "655e2fdc3d4ee988a7ef4e083e00a0adba35421409c54bcbacf1cd6d4cbec113",
+ "kb/communities/DVM_Triculture.yaml": "a35537c075a8b201555340df6b43a65be0409250e87e476fb4dac682201e6f36",
+ "reports/causal_graph_review/README.md": "e22ace9bab3958b94b1a9db9a772dcdbafd0a60c16ded7c25009dab4b0f3063b"
+ },
+ "status": "verified_dvm_graph_repair",
+ "pre_research_baseline": {
+ "base_commit": "d61d3a6a0f782c5df8febccd0ecae0ea8c3759ca",
+ "base_tree": "b1be6bbcb5a107378ba50075dfb062b14152c60d",
+ "research_worktree": "/private/tmp/communitymech-causal-batch56",
+ "checks": [
+ {
+ "name": "rank",
+ "command": [
+ "just",
+ "rank-causal-graphs"
+ ],
+ "exit_code": 0,
+ "expected_exit_code": 0,
+ "log": "/private/tmp/communitymech-batch57/baseline-rank.log",
+ "sha256": "9d79ea15e18ca814f177d7a5521c204f3f71474c83e1b95c5b8c3f6673e58fb1",
+ "output_tail": "/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-batch57/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-batch57/baseline-network.log",
+ "sha256": "0955d3471f474fec8dcceb846ff932573d11c9833de73b2b2822241553762186",
+ "output_tail": " \"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-batch57/baseline-downstream.log",
+ "sha256": "63c5189cad1e501d3ee3c474153d6d1995ef97c22fe5872c65872df81cd8affe",
+ "output_tail": "acter_Dynamic_Interaction.yaml:143: 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/Deepwater_Horizon_Deep_Sea_Oil_Plume_Succession.yaml:197: downstream:\nkb/communities/Deepwater_Horizon_Deep_Sea_Oil_Plume_Succession.yaml:241: downstream:\nkb/communities/Dual_Bacillus_coagulans_Pseudomonas_putida_Lactic_Acid_Coculture.yaml:134: downstream:\nkb/communities/Dual_Bacillus_coagulans_Pseudomonas_putida_Lactic_Acid_Coculture.yaml:189: downstream:\nkb/communities/Dehalococcoides_Syntrophomonas_TCE_Dechlorination_Coculture.yaml:152: downstream:\nkb/communities/Dehalococcoides_Syntrophomonas_TCE_Dechlorination_Coculture.yaml:236: downstream:\nkb/communities/Asgard_Wetland_Soil_Methanogenesis_Substrate_Community.yaml:157: downstream:\nkb/communities/Asgard_Wetland_Soil_Methanogenesis_Substrate_Community.yaml:196: downstream:\nkb/communities/Moss_Microbe_Complex_Regolith_Biofertilizer.yaml:169: downstream:\nkb/communities/Moss_Microbe_Complex_Regolith_Biofertilizer.yaml:199: 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/SO3_BS3_Lithium_Battery_Bioleaching_Consortium.yaml:141: downstream:\nkb/communities/Chlamydomonas_Bacterial_H2_Consortium.yaml:311: downstream:\nkb/communities/Chlamydomonas_Bacterial_H2_Consortium.yaml:365: downstream:\nkb/communities/Methylocaldum_Cupriavidus_Methane_Acetate_Crossfeeding_Coculture.yaml:156: downstream:\nkb/communities/Methylocaldum_Cupriavidus_Methane_Acetate_Crossfeeding_Coculture.yaml:246: downstream:\nkb/communities/Pseudomonas_Pedobacter_Social_Spreading_Coculture.yaml:140: downstream:\nkb/communities/Pseudomonas_Pedobacter_Social_Spreading_Coculture.yaml:175: downstream:\n"
+ }
+ ],
+ "baseline_sha256": "b37a0d9b620870bd1a541cef9b8ee67f2f8b10c8798f97edf4e5a02cfce370e7"
+ },
+ "reference_validator_caveat": "CLI Total checks counts reported issues, not executed checks. Cache MATCH does not prove scientific entailment or complete provenance. Full2019 primary inspected and all7 graph snippets independently matched; nongraph metadata remains1364. Existing476/496/1091/1095 limitations remain."
+}
diff --git a/tests/test_causal_review_batch57.py b/tests/test_causal_review_batch57.py
new file mode 100644
index 000000000..4b1f1d861
--- /dev/null
+++ b/tests/test_causal_review_batch57.py
@@ -0,0 +1,90 @@
+"""Pin DVM assay boundaries and complete node/arrow review coverage."""
+
+import hashlib
+from pathlib import Path
+
+import yaml
+
+ROOT = Path(__file__).resolve().parents[1]
+LEDGER = ROOT / "reports/causal_graph_review/decisions/20261006-dvm-batch57.yaml"
+
+
+def records():
+ ledger = yaml.safe_load(LEDGER.read_text())
+ row = ledger["records"][0]
+ return ledger, row, yaml.safe_load((ROOT / row["path"]).read_text())
+
+
+def test_dvm_keeps_canonical_taxa_and_existing_graph_topology():
+ _, row, doc = records()
+ assert [t["taxon_term"]["term"]["id"] for t in doc["taxonomy"]] == [
+ "NCBITaxon:881",
+ "NCBITaxon:39152",
+ "NCBITaxon:2208",
+ ]
+ nodes = doc["ecological_interactions"]
+ assert len(nodes) == 4
+ assert [n["scope"] for n in nodes] == [
+ "COMMUNITY_LEVEL",
+ "PAIRWISE",
+ "PAIRWISE",
+ "COMMUNITY_LEVEL",
+ ]
+ before = {(e["source"], e["target"]) for e in row["edges_before"]}
+ after = {(e["source"], e["target"]) for e in row["edges_after"]}
+ assert len(before) == 2 and before == after
+ assert all(e["description"].startswith("PARTIAL - ") for e in row["edges_after"])
+
+
+def test_dvm_preserves_positive_conversion_without_complete_acetate_use():
+ _, _, doc = records()
+ donor, _, mb, _ = doc["ecological_interactions"]
+ assert "full lactate conversion" in donor["description"]
+ assert "residual acetate remained" in donor["description"]
+ assert "acetate is not a substrate for both" in donor["description"]
+ assert "two syntrophy-enabling polymorphisms" in donor["description"]
+ assert "higher methane output" in mb["description"]
+ assert "not evidence for complete acetate use" in mb["description"]
+
+
+def test_dvm_does_not_substitute_monoculture_or_pair_for_triculture_flux():
+ _, _, doc = records()
+ _, mm, mb, sulfate = doc["ecological_interactions"]
+ assert "headspace already contained both gases" in mm["description"]
+ assert "Separate monocultures" in mb["description"]
+ assert "Mass balances in no-added-sulfate Dv-Mb pairs" in mb["description"]
+ assert "shares in the tri-culture, are not resolved" in mb["description"]
+ assert "7.5 mM" in sulfate["description"] and "15 mM" in sulfate["description"]
+ assert "do not selectively isolate that mechanism" in sulfate["description"]
+ for node in doc["ecological_interactions"]:
+ assert all(e["reference"] == "doi:10.1098/rsif.2019.0129" for e in node["evidence"])
+ assert all("concentration" not in m for m in node.get("metabolites", []))
+
+
+def test_dvm_every_node_arrow_and_open_anchor_is_accounted_for():
+ ledger, row, doc = records()
+ assert ledger["independent_approval"] is False
+ assert ledger["issues"] == [1530]
+ assert ledger["unresolved_non_graph_issues"] == [1364]
+ assert row["status"] == "reviewed"
+ assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"]
+ names = {n["name"] for n in doc["ecological_interactions"]}
+ assert len(row["node_decisions"]) == 4
+ assert {r["node"] for r in row["node_decisions"]} == names
+ assert not row["removed_node_decisions"] and not row["removed_edge_decisions"]
+ assert len(row["retained_edge_decisions"]) == 2
+ discussion = doc["discussions"][-1]
+ assert discussion["status"] == "OPEN" and discussion["kind"] == "KNOWLEDGE_GAP"
+ assert {a.split("#", 1)[1] for a in discussion["attaches_to"]} == names
+ assert doc["curation_history"][-1]["llm_assisted"] is True
+
+
+def test_dvm_primary_scope_and_cache_preservation_are_explicit():
+ ledger, row, _ = records()
+ assert ledger["primary_graph_fragments_verified"] == 7
+ assert "1981 cached abstract only" in row["source_review"]["scope"]
+ assert "no original images" in row["source_review"]["scope"]
+ assert row["source_review"]["cache_provenance_certified"] is False
+ 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