From 40055a1198cab10ef0c848d1588f56de2624902f Mon Sep 17 00:00:00 2001
From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com>
Date: Tue, 6 Oct 2026 02:17:53 -0700
Subject: [PATCH] Qualify polymer, groundwater and microalgal causal mechanisms
---
..._Y2_Polyethylene_Degrading_Consortium.html | 127 ++-
...iotic_CPR_DPANN_Groundwater_Community.html | 289 ++++---
...ella_Microalgal_Biorefinery_Coculture.html | 152 ++--
.../2026-10-06T090852Z-codex-d2e3d0.yaml | 28 +
.../2026-10-06T090852Z-codex-64a1b6.yaml | 30 +
.../2026-10-06T090853Z-codex-5f6b10.yaml | 29 +
..._Y2_Polyethylene_Degrading_Consortium.yaml | 118 +--
...iotic_CPR_DPANN_Groundwater_Community.yaml | 260 +++---
...ella_Microalgal_Biorefinery_Coculture.yaml | 145 ++--
.../adversarial-review-20261006-batch38.yaml | 155 ++++
.../20261006-three-records-batch38.yaml | 264 ++++++
reports/causal_graph_review/inventory.tsv | 6 +-
reports/causal_graph_review/summary.json | 6 +-
.../validation-20261006-batch38.json | 750 ++++++++++++++++++
tests/test_causal_review_batch38.py | 187 +++++
15 files changed, 2005 insertions(+), 541 deletions(-)
create mode 100644 history/records/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium/2026-10-06T090852Z-codex-d2e3d0.yaml
create mode 100644 history/records/Episymbiotic_CPR_DPANN_Groundwater_Community/2026-10-06T090852Z-codex-64a1b6.yaml
create mode 100644 history/records/Euglena_Chlorella_Microalgal_Biorefinery_Coculture/2026-10-06T090853Z-codex-5f6b10.yaml
create mode 100644 reports/causal_graph_review/adversarial-review-20261006-batch38.yaml
create mode 100644 reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
create mode 100644 reports/causal_graph_review/validation-20261006-batch38.json
create mode 100644 tests/test_causal_review_batch38.py
diff --git a/docs/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.html b/docs/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.html
index a83507095..dc7a7e32a 100644
--- a/docs/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.html
+++ b/docs/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.html
@@ -560,7 +560,7 @@
"YF2, encoding key oxidases (LadA, AlkB, CYP450), served as the primary degrader for backbone cleavage, while Y2, enriched with esterases and lipases, facilitated intermediate metabolism through cross-feeding."
@@ -646,43 +629,25 @@ "site-specific diversity of CPR bacteria and DPANN archaea that coexist with diverse hosts in groundwater aquifers"
@@ -703,28 +690,25 @@ "little species-level overlap of metagenome-assembled genomes (MAGs) across the groundwater sites"
@@ -753,34 +737,25 @@ "indicate that a fair number of CPR/DPANN cells retain host attachment throughout the filtration process"
@@ -809,14 +784,22 @@ "host-attached CPR bacteria consistently exhibit a higher replication rate than non-host-attached CPR bacteria"
@@ -952,13 +922,39 @@ "the growth of CPR bacteria seems to be stimulated by attachment to host-cell surfaces"
+ "EG primarily enhanced light-harvesting capacity and antioxidative metabolite secretion"
@@ -678,19 +649,13 @@ "CP intensified electron transport activity, enhanced carbon fixation capacity, and released lipid-associated metabolites"
@@ -758,10 +713,8 @@ "collectively driving process intensification in terms of biomass and lipid productivity"
@@ -840,10 +781,8 @@
-
The coculture increased biomass, lipid productivity, and alpha-tocopherol yield relative to monocultures and shortened the logarithmic growth phase.
-
+
The optimized 3:7 coculture in TAP medium showed higher total biomass, lipid productivity and alpha-tocopherol output than the monocultures, with a shorter reported logarithmic phase. These aggregate endpoints do not establish that both species benefit. Separate exogenous alpha-lipoic acid supplementation further improved output; it is not proof of endogenous cross-feeding or the same baseline condition.
@@ -910,6 +849,25 @@
Evidence
+
+ Knowledge gaps & discussions (1)
+
+
+
+ KNOWLEDGE_GAP
+ OPEN
+ Which organism-specific transfers or physiological changes mediate the aggregate coculture outputs?
+
+
Remove the two profile-to-summary part/whole arrows; retain the complementarity-to-output arrow only as HYPOTHESIZED. Represent single-organism profiles as intrinsic source-only nodes, not self-edges. No alpha-tocopherol donor is assigned from the broad antioxidative profile. Total production does not demonstrate reciprocal fitness, and exogenous alpha-lipoic acid is not evidence of endogenous exchange. Primary abstract only: underlying Methods/Results and supplements were not acquired. Preserve NCBITaxon:3078 with its canonical Auxenochlorella label and the publication preferred name. Non-graph omics and protocol details remain #1443; no new microbial mechanism is inferred from the supplementation treatment.
+
+
Attaches to: ecological_interactions#Euglena Light Harvesting and Antioxidative Secretion, ecological_interactions#Chlorella Electron Transport and Lipid Metabolite Release, ecological_interactions#Complementary Microalgal Metabolic Division of Labor, ecological_interactions#Synergistic Biorefinery Production
+
+
+
+
+
+
+
@@ -1205,13 +1163,9 @@
Evidence
(function() {
var intId = "interaction:0";
- var intType = "NICHE_PARTITIONING";
+ var intType = "UNKNOWN";
var metabolites = [];
-
- metabolites.push("alpha-tocopherol");
-
-
var processes = [];
@@ -1231,24 +1185,18 @@
Evidence
});
+ var srcKey = "Euglena gracilis";
+ if (taxonNodeIds[srcKey]) {
+ links.push({ source: taxonNodeIds[srcKey], target: intId });
+ }
- var participantKeys = [
-
- "Euglena gracilis"
-
- ];
- participantKeys.forEach(function(key) {
- if (taxonNodeIds[key]) {
- links.push({ source: taxonNodeIds[key], target: intId });
- }
- });
})();
(function() {
var intId = "interaction:1";
- var intType = "NICHE_PARTITIONING";
+ var intType = "UNKNOWN";
var metabolites = [];
@@ -1276,32 +1224,22 @@
Evidence
});
+ var srcKey = "Chlorella pyrenoidosa";
+ if (taxonNodeIds[srcKey]) {
+ links.push({ source: taxonNodeIds[srcKey], target: intId });
+ }
- var participantKeys = [
-
- "Chlorella pyrenoidosa"
-
- ];
- participantKeys.forEach(function(key) {
- if (taxonNodeIds[key]) {
- links.push({ source: taxonNodeIds[key], target: intId });
- }
- });
})();
(function() {
var intId = "interaction:2";
- var intType = "NICHE_PARTITIONING";
+ var intType = "UNKNOWN";
var metabolites = [];
var processes = [];
-
- processes.push("carbon fixation");
-
-
var evidenceCount = 2;
nodes.push({
@@ -1334,7 +1272,7 @@
Evidence
(function() {
var intId = "interaction:3";
- var intType = "MUTUALISM";
+ var intType = "UNKNOWN";
var metabolites = [];
diff --git a/history/records/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium/2026-10-06T090852Z-codex-d2e3d0.yaml b/history/records/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium/2026-10-06T090852Z-codex-d2e3d0.yaml
new file mode 100644
index 000000000..4958319c4
--- /dev/null
+++ b/history/records/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium/2026-10-06T090852Z-codex-d2e3d0.yaml
@@ -0,0 +1,28 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml
+ slug: Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium
+session:
+ id: 2026-10-06T090852Z-codex-d2e3d0
+ timestamp: '2026-10-06T09:08:52Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1438
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Retain the genomic donor/recipient hypothesis without categorical cross-feeding
+ or measured polymer-enzyme flux.; Retain two-member comparative output without mutualism
+ or a part/whole outcome arrow.; Retain polymer surface endpoints without complete mineralization
+ or interstrain flux claims.
+ details: Twelve existing nodes retained; three part/whole arrows removed and three mechanistic
+ hypotheses retained. No added nodes or arrows. reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
diff --git a/history/records/Episymbiotic_CPR_DPANN_Groundwater_Community/2026-10-06T090852Z-codex-64a1b6.yaml b/history/records/Episymbiotic_CPR_DPANN_Groundwater_Community/2026-10-06T090852Z-codex-64a1b6.yaml
new file mode 100644
index 000000000..5ebd2f84f
--- /dev/null
+++ b/history/records/Episymbiotic_CPR_DPANN_Groundwater_Community/2026-10-06T090852Z-codex-64a1b6.yaml
@@ -0,0 +1,30 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml
+ slug: Episymbiotic_CPR_DPANN_Groundwater_Community
+session:
+ id: 2026-10-06T090852Z-codex-64a1b6
+ timestamp: '2026-10-06T09:08:52Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1439
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Retain the eight-site genomic framework without colonization facilitation or a
+ defined-culture claim.; Retain site differences without a selectively established niche
+ mechanism.; Retain size-fraction attachment proxies with modeled count and identification
+ limits.; Retain reported physical attachment with uncertain cell identities and a hypothesized
+ CPR consequence.; Retain CPR-only population replication-state association without causal
+ or host-neutrality claims.
+ details: Twelve existing nodes retained; three part/whole arrows removed and three mechanistic
+ hypotheses retained. No added nodes or arrows. reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
diff --git a/history/records/Euglena_Chlorella_Microalgal_Biorefinery_Coculture/2026-10-06T090853Z-codex-5f6b10.yaml b/history/records/Euglena_Chlorella_Microalgal_Biorefinery_Coculture/2026-10-06T090853Z-codex-5f6b10.yaml
new file mode 100644
index 000000000..8b0f56480
--- /dev/null
+++ b/history/records/Euglena_Chlorella_Microalgal_Biorefinery_Coculture/2026-10-06T090853Z-codex-5f6b10.yaml
@@ -0,0 +1,29 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml
+ slug: Euglena_Chlorella_Microalgal_Biorefinery_Coculture
+session:
+ id: 2026-10-06T090853Z-codex-5f6b10
+ timestamp: '2026-10-06T09:08:53Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1440
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Retain the Euglena-associated profile as intrinsic without a specific tocopherol
+ donor claim or summary arrow.; Retain the Chlorella-associated profile as intrinsic without
+ proven transfer or a summary arrow.; Retain proposed complementarity and only a hypothesized
+ contribution to aggregate output.; Retain total production gains without reciprocal organism
+ fitness or supplementation conflation.
+ details: Twelve existing nodes retained; three part/whole arrows removed and three mechanistic
+ hypotheses retained. No added nodes or arrows. reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
diff --git a/kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml b/kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml
index 9a952ce88..0b69aeac0 100644
--- a/kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml
+++ b/kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml
@@ -72,11 +72,10 @@ taxonomy:
explanation: Identifies Sphingobacterium sp. Y2 as an isolated consortium member.
ecological_interactions:
- name: Metabolic division of labor in polyethylene degradation
- description: Complementary enzymatic repertoire drives synergistic PE degradation. Ensifer YF2, the
- primary degrader, performs backbone cleavage via oxidases (LadA, AlkB, CYP450); Sphingobacterium
- Y2, enriched in esterases and lipases, metabolizes the resulting intermediates through
- cross-feeding.
- interaction_type: CROSS_FEEDING
+ description: HYPOTHESIZED - genomic oxidase annotations in Ensifer YF2 and esterase/lipase annotations in Sphingobacterium
+ Y2 motivate a model in which YF2 supplies polymer-derived intermediates to Y2. The directed pair represents
+ that conceptual model, not measured donor export, identified exchanged compounds, recipient uptake or selectively
+ established enzyme activity on polyethylene.
scope: PAIRWISE
source_taxon:
preferred_term: Ensifer sp. YF2
@@ -88,62 +87,48 @@ ecological_interactions:
term:
id: NCBITaxon:28453
label: Sphingobacterium
- biological_processes:
- - preferred_term: alkane catabolic process
- term:
- id: GO:0043448
- label: alkane catabolic process
downstream:
- target: Synergistic enhancement of PE degradation in the dual-strain consortium
- description: Ensifer backbone cleavage and Sphingobacterium intermediate
- metabolism combine into the YF2/Y2 dual consortium's enhanced PE
- degradation phenotype.
+ description: HYPOTHESIZED - complementary transformation capacities could contribute to the stronger YF2/Y2
+ consortium phenotype. Genomic annotation and the coculture comparison do not isolate cross-feeding as the
+ cause of that improvement.
+ evidence:
+ - reference: PMID:41996795
+ supports: PARTIAL
+ evidence_source: COMPUTATIONAL
+ snippet: YF2, encoding key oxidases (LadA, AlkB, CYP450), served as the primary degrader for backbone cleavage,
+ while Y2, enriched with esterases and lipases, facilitated intermediate metabolism through cross-feeding.
+ explanation: The abstract assigns roles from genomic complementarity and presents a conceptual model; it does
+ not expose a direct exchange or enzyme-necessity experiment.
+- name: Synergistic enhancement of PE degradation in the dual-strain consortium
+ description: The abstract reports greater polyethylene degradation by the YF2/Y2 pair than by either isolate or
+ the screened three-strain mixture including MF1. This is a consortium-output comparison, not demonstrated reciprocal
+ fitness benefit, an identified exchanged metabolite or a formal additive-synergy test. MF1 is a comparator,
+ not a member of this curated pair.
+ scope: COMMUNITY_LEVEL
evidence:
- reference: PMID:41996795
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: YF2, encoding key oxidases (LadA, AlkB, CYP450), served as the primary degrader for
- backbone cleavage, while Y2, enriched with esterases and lipases, facilitated intermediate
- metabolism through cross-feeding.
- explanation: Genomic evidence for YF2 backbone cleavage feeding intermediates to Y2.
-- name: Synergistic enhancement of PE degradation in the dual-strain consortium
- description: Co-culture of Ensifer YF2 and Sphingobacterium Y2 degraded polyethylene more
- efficiently than either strain alone or the full three-strain combination, indicating emergent
- synergy from functional compatibility rather than taxonomic richness.
- interaction_type: MUTUALISM
- scope: PAIRWISE
- source_taxon:
- preferred_term: Ensifer sp. YF2
+ snippet: A dual-strain consortium (YF2 +Y2) demonstrated enhanced degradation compared to individual strains
+ and the three-strain combination, indicating that functional compatibility rather than taxonomic richness
+ drives consortium performance.
+ explanation: Supports the reported comparative consortium performance, not reciprocal organism fitness or a
+ selectively resolved mechanism.
+ participating_taxa:
+ - preferred_term: Ensifer sp. YF2
term:
id: NCBITaxon:106591
label: Ensifer
- target_taxon:
- preferred_term: Sphingobacterium sp. Y2
+ - preferred_term: Sphingobacterium sp. Y2
term:
id: NCBITaxon:28453
label: Sphingobacterium
- biological_processes:
- - preferred_term: alkane catabolic process
- term:
- id: GO:0043448
- label: alkane catabolic process
- downstream:
- - target: Polyethylene Oxidation and Surface Erosion
- description: The enhanced dual-strain consortium grows with PE as the sole
- carbon source and induces oxidative and physical damage to the polymer.
- evidence:
- - reference: PMID:41996795
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: A dual-strain consortium (YF2 +Y2) demonstrated enhanced degradation compared to
- individual strains and the three-strain combination, indicating that functional compatibility
- rather than taxonomic richness drives consortium performance.
- explanation: Measured emergent synergy of the YF2+Y2 co-culture over monocultures and the 3-strain mix.
- name: Polyethylene Oxidation and Surface Erosion
- description: The Ensifer YF2 and Sphingobacterium Y2 consortium utilizes
- polyethylene as sole carbon source while oxidizing and eroding the polymer
- surface.
- interaction_type: CROSS_FEEDING
+ description: The tested two-member consortium was reported to use polyethylene as the sole carbon source and to
+ induce polymer oxidation and surface erosion. These physical and chemical endpoints do not by themselves establish
+ complete mineralization, a measured interstrain carbon flux or a separate downstream consequence of the performance
+ summary.
scope: COMMUNITY_LEVEL
participating_taxa:
- preferred_term: Ensifer sp. YF2
@@ -154,19 +139,13 @@ ecological_interactions:
term:
id: NCBITaxon:28453
label: Sphingobacterium
- biological_processes:
- - preferred_term: alkane catabolic process
- term:
- id: GO:0043448
- label: alkane catabolic process
evidence:
- reference: PMID:41996795
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: The consortium utilized PE as the sole carbon source, inducing oxidative
- modifications and physical erosion of the polymer surface.
- explanation: Supports the terminal polyethylene degradation phenotype of the
- effective YF2/Y2 consortium.
+ snippet: The consortium utilized PE as the sole carbon source, inducing oxidative modifications and physical
+ erosion of the polymer surface.
+ explanation: Supports the terminal polyethylene degradation phenotype of the effective YF2/Y2 consortium.
growth_media:
- name: polyethylene as sole carbon source (medium composition not specified in abstract)
preparation_notes: Consortium cultivated with polyethylene (PE) provided as the sole carbon source;
@@ -177,3 +156,28 @@ growth_media:
evidence_source: IN_VITRO
snippet: The consortium utilized PE as the sole carbon source, inducing oxidative modifications and physical erosion of the polymer surface.
explanation: Source reports polyethylene as the sole carbon source of the cultivation; no further growth conditions are given in the accessible abstract.
+discussions:
+- discussion_id: yf2_y2_genomic_model_and_polymer_endpoints
+ prompt: Which exchanged compounds and enzymes account for the YF2/Y2 polymer phenotype?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#Metabolic division of labor in polyethylene degradation
+ - ecological_interactions#Synergistic enhancement of PE degradation in the dual-strain consortium
+ - ecological_interactions#Polyethylene Oxidation and Surface Erosion
+ rationale: 'Retain the existing conceptual donor/recipient model and only a HYPOTHESIZED contribution to comparative
+ performance. Remove the performance-to-surface-endpoint part/whole arrow. The available primary abstract does
+ not expose isotope tracing, enzyme perturbations or species-resolved fitness. Preserve the exact pair and AMBIGUOUS
+ Ensifer grounding; do not reintroduce the screened MF1 member. The publisher labels the article open access,
+ but full-body retrieval failed in this session; this is not evidence of a paywall. Non-graph role and access/protocol
+ claims remain #1441. No new causal structure is needed to repair the existing claims.'
+ posed_by: codex
+ posed_date: '2026-10-06'
+curation_history:
+- timestamp: '2026-10-06T09:08:51Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Retain the genomic donor/recipient hypothesis without categorical cross-feeding or measured polymer-enzyme
+ flux.; Retain two-member comparative output without mutualism or a part/whole outcome arrow.; Retain polymer
+ surface endpoints without complete mineralization or interstrain flux claims. Issue #1438; reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml'
+ llm_assisted: true
diff --git a/kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml b/kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml
index 238b902c3..f18ef403b 100644
--- a/kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml
+++ b/kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml
@@ -85,154 +85,177 @@ taxonomy:
explanation: Supports the diverse host community membership.
ecological_interactions:
- name: Groundwater CPR/DPANN-Host Coexistence
- description: >
- Genome-resolved metagenomics of eight Northern California groundwater
- communities recovered 746 CPR and DPANN genomes from small-celled symbionts
- that coexist with diverse host organisms in the aquifers.
- interaction_type: COLONIZATION_FACILITATION
+ description: Genome-resolved surveys recovered 746 CPR and DPANN genomes across eight Northern California groundwater
+ sites. This framework pools distinct environmental communities, not one defined three-member culture. The canonical
+ participants are broad lineage/host categories; genome recovery and coexistence do not establish colonization
+ facilitation or every possible host association.
scope: COMMUNITY_LEVEL
- biological_processes:
- - preferred_term: biological process involved in interspecies interaction between organisms
- term:
- id: GO:0044419
- label: biological process involved in interspecies interaction between organisms
evidence:
- reference: PMID:33495623
supports: SUPPORT
- evidence_source: IN_VIVO
+ evidence_source: COMPUTATIONAL
snippet: recovered 746 CPR and DPANN genomes in total
- explanation: >
- Supports the CPR and DPANN genome collection recovered from the eight
- groundwater communities.
+ explanation: 'Supports the CPR and DPANN genome collection recovered from the eight groundwater communities.
+
+ '
- reference: PMID:33495623
supports: SUPPORT
- evidence_source: IN_VIVO
- snippet: site-specific diversity of CPR bacteria and DPANN archaea that coexist with
- diverse hosts in groundwater aquifers
- explanation: >
- Supports coexistence between groundwater CPR/DPANN lineages and diverse
- host organisms.
+ evidence_source: COMPUTATIONAL
+ snippet: site-specific diversity of CPR bacteria and DPANN archaea that coexist with diverse hosts in groundwater
+ aquifers
+ explanation: 'Supports coexistence between groundwater CPR/DPANN lineages and diverse host organisms.
+
+ '
+ participating_taxa:
+ - preferred_term: groundwater CPR (Candidate Phyla Radiation) bacteria
+ term:
+ id: NCBITaxon:1783273
+ label: Patescibacteria group
+ - preferred_term: groundwater DPANN archaea
+ term:
+ id: NCBITaxon:1783276
+ label: Nanobdellati
+ - preferred_term: groundwater CPR/DPANN host bacteria and archaea
+ term:
+ id: NCBITaxon:131567
+ label: cellular organisms
- name: Site-Specific CPR/DPANN Differentiation
- description: >
- Little species-level overlap among metagenome-assembled genomes across
- groundwater sites indicated that CPR and DPANN communities were
- differentiated by local physicochemical conditions and host populations.
- interaction_type: NICHE_PARTITIONING
+ description: Most site pairs had little species-level genome overlap. Hydrogeochemistry, host composition, dispersal
+ history, founder effects and sampling can contribute to this pattern; the comparison does not selectively demonstrate
+ physiological niche partitioning or a universal interspecies mechanism.
scope: COMMUNITY_LEVEL
- biological_processes:
- - preferred_term: biological process involved in interspecies interaction between organisms
- term:
- id: GO:0044419
- label: biological process involved in interspecies interaction between organisms
evidence:
- reference: PMID:33495623
supports: SUPPORT
- evidence_source: IN_VIVO
- snippet: little species-level overlap of metagenome-assembled genomes (MAGs)
- across the groundwater sites
+ evidence_source: COMPUTATIONAL
+ snippet: little species-level overlap of metagenome-assembled genomes (MAGs) across the groundwater sites
explanation: Supports the site-specific differentiation pattern.
-- name: Size-Fraction CPR/DPANN Host-Attachment Signal
- description: >
- CPR and DPANN genomes detected in larger groundwater-cell size fractions
- provided genomic evidence that many ultrasmall CPR/DPANN cells remained
- physically attached to larger host cells during filtration.
- interaction_type: COLONIZATION_FACILITATION
- scope: COMMUNITY_LEVEL
- biological_processes:
- - preferred_term: cell adhesion
+ participating_taxa:
+ - preferred_term: groundwater CPR (Candidate Phyla Radiation) bacteria
term:
- id: GO:0007155
- label: cell adhesion
- - preferred_term: biological process involved in interspecies interaction between organisms
+ id: NCBITaxon:1783273
+ label: Patescibacteria group
+ - preferred_term: groundwater DPANN archaea
term:
- id: GO:0044419
- label: biological process involved in interspecies interaction between organisms
+ id: NCBITaxon:1783276
+ label: Nanobdellati
+ - preferred_term: groundwater CPR/DPANN host bacteria and archaea
+ term:
+ id: NCBITaxon:131567
+ label: cellular organisms
+- name: Size-Fraction CPR/DPANN Host-Attachment Signal
+ description: Larger size fractions contained CPR/DPANN genome signals consistent with some ultrasmall cells retaining
+ host attachment. This is a size-fraction proxy, not direct taxonomic identification of cell pairs. Estimated
+ cell counts used DNA yield and genome-size corrections, not direct cell counting; attachment disruption and
+ other size-associated effects limit the interpretation.
+ scope: COMMUNITY_LEVEL
evidence:
- reference: PMID:33495623
- supports: SUPPORT
- evidence_source: IN_VIVO
- snippet: indicate that a fair number of CPR/DPANN cells retain host attachment throughout
- the filtration process
- explanation: >
- Supports using the larger size fractions as a genomic signal of
- CPR/DPANN host attachment.
+ supports: PARTIAL
+ evidence_source: COMPUTATIONAL
+ snippet: indicate that a fair number of CPR/DPANN cells retain host attachment throughout the filtration process
+ explanation: Supports the authors' interpretation of a fraction-associated genomic signal, not direct identification
+ of attached pairs.
+ participating_taxa:
+ - preferred_term: groundwater CPR (Candidate Phyla Radiation) bacteria
+ term:
+ id: NCBITaxon:1783273
+ label: Patescibacteria group
+ - preferred_term: groundwater DPANN archaea
+ term:
+ id: NCBITaxon:1783276
+ label: Nanobdellati
+ - preferred_term: groundwater CPR/DPANN host bacteria and archaea
+ term:
+ id: NCBITaxon:131567
+ label: cellular organisms
- name: CPR/DPANN Episymbiotic Attachment to Hosts
- description: >
- Cryogenic transmission electron microscopy and genomic analyses identified
- ultrasmall CPR and DPANN lineages that reproducibly attach to prokaryotic
- host-cell surfaces through pili-like structures.
- interaction_type: COLONIZATION_FACILITATION
+ description: The authors report cryo-TEM observations of ultrasmall cells attached to larger cells in concentrated
+ Ag groundwater, with pili-like appendages at some interfaces. Their assignment to CPR or DPANN is inferred from
+ size and community context, not a resolved taxonomic identity for each imaged pair. These observations do not
+ establish a necessary attachment protein, transferred resource or host fitness effect.
scope: COMMUNITY_LEVEL
biological_processes:
- preferred_term: cell adhesion
term:
id: GO:0007155
label: cell adhesion
- - preferred_term: biological process involved in interspecies interaction between organisms
- term:
- id: GO:0044419
- label: biological process involved in interspecies interaction between organisms
downstream:
- target: Host-Attached CPR Replication Stimulation
- description: >
- Host-cell surface attachment is inferred to stimulate CPR bacterial
- replication because attached CPR cells in larger size fractions showed
- higher instantaneous replication rates than unattached CPR cells from the
- same groundwater community.
+ description: HYPOTHESIZED - access to host-associated resources could stimulate CPR replication. Attached-cell
+ images and higher CPR iRep in larger fractions support this interpretation, but attachment was not selectively
+ perturbed and the putative resource transfer was not measured. The replication comparison does not include
+ DPANN archaea.
evidence:
- reference: PMID:33495623
- supports: SUPPORT
+ supports: PARTIAL
evidence_source: IN_VIVO
snippet: CPR and DPANN lineages that reproducibly attach to host cells
- explanation: >
- Supports reproducible CPR/DPANN episymbiotic attachment to host cells.
+ explanation: The combined abstract interpretation exceeds the taxonomic resolution of individual cryo-TEM images;
+ identity is inferred from size and context.
- reference: PMID:33495623
supports: SUPPORT
evidence_source: IN_VIVO
snippet: attaching through pili-like structures
- explanation: >
- Supports the host-contact mechanism observed for ultrasmall episymbionts
- in the Ag groundwater cryo-TEM images.
-- name: Host-Attached CPR Replication Stimulation
- description: >
- Higher instantaneous replication rates in larger size fractions indicated
- that CPR bacteria attached to host-cell surfaces replicated faster than
- unattached CPR bacteria from the same groundwater community.
- interaction_type: COMMENSALISM
- scope: COMMUNITY_LEVEL
+ explanation: Supports reported pili-like morphology at cell interfaces, not selective demonstration of a particular
+ attachment molecule.
+ - reference: PMID:33495623
+ supports: PARTIAL
+ evidence_source: IN_VIVO
+ snippet: likely to be CPR or DPANN organisms
+ explanation: Main text explicitly limits the taxonomic assignment of the imaged ultrasmall cells.
participating_taxa:
- preferred_term: groundwater CPR (Candidate Phyla Radiation) bacteria
term:
id: NCBITaxon:1783273
label: Patescibacteria group
+ - preferred_term: groundwater DPANN archaea
+ term:
+ id: NCBITaxon:1783276
+ label: Nanobdellati
- preferred_term: groundwater CPR/DPANN host bacteria and archaea
term:
id: NCBITaxon:131567
label: cellular organisms
- biological_processes:
- - preferred_term: growth
+- name: Host-Attached CPR Replication Stimulation
+ description: At three of four size-fraction sampling points in Ag groundwater, CPR populations had significantly
+ higher iRep in the 0.65-2.5 micrometer fraction than in the 0.1-0.2 micrometer fraction. iRep is average genome-replication
+ state, not a single-cell growth rate or doubling time. Archaea were excluded from this analysis. An association
+ with probable attachment does not establish causation or commensalism because host fitness was not measured.
+ scope: COMMUNITY_LEVEL
+ participating_taxa:
+ - preferred_term: groundwater CPR (Candidate Phyla Radiation) bacteria
term:
- id: GO:0040007
- label: growth
- - preferred_term: biological process involved in interspecies interaction between organisms
+ id: NCBITaxon:1783273
+ label: Patescibacteria group
+ - preferred_term: groundwater CPR/DPANN host bacteria and archaea
term:
- id: GO:0044419
- label: biological process involved in interspecies interaction between organisms
+ id: NCBITaxon:131567
+ label: cellular organisms
evidence:
+ - reference: PMID:33495623
+ supports: PARTIAL
+ evidence_source: COMPUTATIONAL
+ snippet: host-attached CPR bacteria consistently exhibit a higher replication rate than non-host-attached CPR
+ bacteria
+ explanation: Supports an iRep/size-fraction association in CPR populations, not a causal attachment intervention
+ or a measured effect on host fitness.
+ - reference: PMID:33495623
+ supports: PARTIAL
+ evidence_source: COMPUTATIONAL
+ snippet: the growth of CPR bacteria seems to be stimulated by attachment to host-cell surfaces
+ explanation: Supports an iRep/size-fraction association in CPR populations, not a causal attachment intervention
+ or a measured effect on host fitness.
- reference: PMID:33495623
supports: SUPPORT
- evidence_source: IN_VIVO
- snippet: host-attached CPR bacteria consistently exhibit a higher replication rate than
- non-host-attached CPR bacteria
- explanation: >
- Supports stimulation of CPR replication in host-attached size fractions.
+ evidence_source: COMPUTATIONAL
+ snippet: archaeal genomes were excluded
+ explanation: The replication analysis does not establish a corresponding DPANN effect.
- reference: PMID:33495623
supports: SUPPORT
- evidence_source: IN_VIVO
- snippet: the growth of CPR bacteria seems to be stimulated by attachment to
- host-cell surfaces
- explanation: >
- Summarizes the inferred positive effect of host attachment on CPR growth.
+ evidence_source: COMPUTATIONAL
+ snippet: average replication state of the cell population
+ explanation: Defines the iRep readout; it is not an individual-cell growth rate.
environmental_factors:
- name: Site land use
value: one agricultural and seven pristine groundwater sites
@@ -306,10 +329,39 @@ curation_history:
- timestamp: '2026-10-02T05:45:52Z'
curator: codex
action: PRUNE_CAUSAL_GRAPH_WORKFLOW_EDGES
- changes: >
- Removed three downstream edges that connected CPR/DPANN genome recovery to
- cross-site and size-fraction comparisons, and size-fraction host-attachment
- signals to direct imaging, as analysis steps rather than groundwater
- mechanisms. Kept the host-attachment to CPR replication edge and rewrote its
- description to state the inferred host-surface stimulation mechanism.
+ changes: 'Removed three downstream edges that connected CPR/DPANN genome recovery to cross-site and size-fraction
+ comparisons, and size-fraction host-attachment signals to direct imaging, as analysis steps rather than groundwater
+ mechanisms. Kept the host-attachment to CPR replication edge and rewrote its description to state the inferred
+ host-surface stimulation mechanism.
+
+ '
+ llm_assisted: true
+- timestamp: '2026-10-06T09:08:52Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Retain the eight-site genomic framework without colonization facilitation or a defined-culture claim.;
+ Retain site differences without a selectively established niche mechanism.; Retain size-fraction attachment
+ proxies with modeled count and identification limits.; Retain reported physical attachment with uncertain cell
+ identities and a hypothesized CPR consequence.; Retain CPR-only population replication-state association without
+ causal or host-neutrality claims. Issue #1439; reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml'
llm_assisted: true
+discussions:
+- discussion_id: groundwater_attachment_identity_and_replication_causality
+ prompt: Which hosts, resources and attachment mechanisms explain the CPR replication association?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#Groundwater CPR/DPANN-Host Coexistence
+ - ecological_interactions#Site-Specific CPR/DPANN Differentiation
+ - ecological_interactions#Size-Fraction CPR/DPANN Host-Attachment Signal
+ - ecological_interactions#CPR/DPANN Episymbiotic Attachment to Hosts
+ - ecological_interactions#Host-Attached CPR Replication Stimulation
+ rationale: 'The only arrow remains HYPOTHESIZED. Size fractions are imperfect proxies, imaged ultrasmall-cell
+ taxonomy is inferred, and iRep describes CPR population replication state; DPANN archaea were excluded. Host
+ fitness and transferred resources were not measured, so commensalism and syntrophic flux are not established.
+ Preserve the three workflow-edge removals in the 2026-10-02 history. The eight-site framework is not a single
+ reconstructed community. PMID:32252814 concerns separate Oak Ridge groundwater rather than the same California
+ sites; non-graph provenance and role claims remain #1442. No new partner-specific structure is supported by
+ these observations alone.'
+ posed_by: codex
+ posed_date: '2026-10-06'
diff --git a/kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml b/kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml
index 3905b5572..deb7a24e9 100644
--- a/kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml
+++ b/kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml
@@ -74,50 +74,34 @@ taxonomy:
explanation: Supports the electron-transport, carbon-fixation, and metabolite-release role of C. pyrenoidosa.
ecological_interactions:
- name: Euglena Light Harvesting and Antioxidative Secretion
- description: >
- Euglena gracilis contributed the light-harvesting and antioxidative
- metabolite-secretion side of the optimized coculture's metabolic division of
- labor, supplying photosynthetic and antioxidant functions that complemented
- Chlorella pyrenoidosa carbon fixation and lipid-metabolite release.
- interaction_type: NICHE_PARTITIONING
- scope: COMMUNITY_LEVEL
- participating_taxa:
- - preferred_term: Euglena gracilis
- term:
- id: NCBITaxon:3039
- label: Euglena gracilis
- metabolites:
- - preferred_term: alpha-tocopherol
- term:
- id: CHEBI:22470
- label: alpha-tocopherol
+ description: PARTIAL - the abstract assigns enhanced light harvesting and an antioxidative secretion profile to
+ Euglena gracilis from multi-omics. This is an organism-associated profile, not by itself niche partitioning
+ or evidence that alpha-tocopherol was exported by this member and taken up by its partner. The underlying assays
+ and organism-specific flux resolution were not accessed.
+ scope: PAIRWISE
biological_processes:
- preferred_term: photosynthesis
term:
id: GO:0015979
label: photosynthesis
- downstream:
- - target: Complementary Microalgal Metabolic Division of Labor
- description: Euglena light harvesting and antioxidative secretion form one side of the coculture division of labor
evidence:
- reference: PMID:42248260
- supports: SUPPORT
- evidence_source: IN_VITRO
+ supports: PARTIAL
+ evidence_source: COMPUTATIONAL
snippet: EG primarily enhanced light-harvesting capacity and antioxidative metabolite secretion
- explanation: Supports the Euglena-specific light-harvesting and antioxidative-secretion role.
-- name: Chlorella Electron Transport and Lipid Metabolite Release
- description: >
- Chlorella pyrenoidosa contributed increased electron-transport activity,
- enhanced carbon fixation, and lipid-associated metabolite release, supplying
- the carbon-assimilation and lipid-production functions that complemented
- E. gracilis light harvesting and antioxidative metabolite secretion.
- interaction_type: NICHE_PARTITIONING
- scope: COMMUNITY_LEVEL
- participating_taxa:
- - preferred_term: Chlorella pyrenoidosa
+ explanation: Supports the organism-associated interpretation reported from multi-omics, without access to its
+ underlying assay resolution or a demonstrated transfer flux.
+ source_taxon:
+ preferred_term: Euglena gracilis
term:
- id: NCBITaxon:3078
- label: Auxenochlorella pyrenoidosa
+ id: NCBITaxon:3039
+ label: Euglena gracilis
+- name: Chlorella Electron Transport and Lipid Metabolite Release
+ description: PARTIAL - the abstract assigns enhanced electron transport, carbon-fixation capacity and lipid-associated
+ metabolite release to the Chlorella member. This profile does not establish which compounds were transferred
+ to Euglena or whether either member is required for the other's growth. Publication naming is retained alongside
+ the canonical Auxenochlorella pyrenoidosa taxon label.
+ scope: PAIRWISE
metabolites:
- preferred_term: lipid
term:
@@ -132,21 +116,23 @@ ecological_interactions:
term:
id: GO:0008610
label: lipid biosynthetic process
- downstream:
- - target: Complementary Microalgal Metabolic Division of Labor
- description: Chlorella carbon fixation and lipid-associated metabolite release form the other side of the coculture division of labor
evidence:
- reference: PMID:42248260
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: CP intensified electron transport activity, enhanced carbon fixation capacity, and released lipid-associated metabolites
- explanation: Supports the Chlorella-specific electron-transport, carbon-fixation, and lipid-metabolite role.
+ supports: PARTIAL
+ evidence_source: COMPUTATIONAL
+ snippet: CP intensified electron transport activity, enhanced carbon fixation capacity, and released lipid-associated
+ metabolites
+ explanation: Supports the organism-associated interpretation reported from multi-omics, without access to its
+ underlying assay resolution or a demonstrated transfer flux.
+ source_taxon:
+ preferred_term: Chlorella pyrenoidosa
+ term:
+ id: NCBITaxon:3078
+ label: Auxenochlorella pyrenoidosa
- name: Complementary Microalgal Metabolic Division of Labor
- description: >
- E. gracilis enhances light harvesting and antioxidative metabolite secretion,
- while C. pyrenoidosa enhances electron transport, carbon fixation, and release
- of lipid-associated metabolites.
- interaction_type: NICHE_PARTITIONING
+ description: HYPOTHESIZED - the two reported functional profiles suggest complementary metabolism in the optimized
+ coculture. This summary is not a separate experimental effect caused by listing its components, nor proof of
+ resource partitioning, identified donor/recipient exchange or necessary biochemical cooperation.
scope: COMMUNITY_LEVEL
participating_taxa:
- preferred_term: Euglena gracilis
@@ -157,33 +143,29 @@ ecological_interactions:
term:
id: NCBITaxon:3078
label: Auxenochlorella pyrenoidosa
- biological_processes:
- - preferred_term: carbon fixation
- term:
- id: GO:0015977
- label: carbon fixation
downstream:
- target: Synergistic Biorefinery Production
- description: >
- Complementary light-harvesting, antioxidative secretion, electron
- transport, carbon-fixation, and lipid-metabolite roles jointly drive the
- coculture biomass, lipid, and alpha-tocopherol production gains.
+ description: HYPOTHESIZED - complementary photosynthetic and metabolic capacities could contribute to the aggregate
+ production gains. The abstract links profiles and output, but does not resolve their selective mediation or
+ demonstrate reciprocal species fitness.
evidence:
- reference: PMID:42248260
- supports: SUPPORT
- evidence_source: IN_VITRO
+ supports: PARTIAL
+ evidence_source: COMPUTATIONAL
snippet: Multi-omics analysis revealed a clear metabolic division of labor
- explanation: Supports community-level metabolic specialization.
+ explanation: Supports the authors' multi-omics interpretation of complementarity, not a selectively established
+ causal mechanism for the aggregate production gains.
- reference: PMID:42248260
- supports: SUPPORT
- evidence_source: IN_VITRO
+ supports: PARTIAL
+ evidence_source: COMPUTATIONAL
snippet: collectively driving process intensification in terms of biomass and lipid productivity
- explanation: Supports the combined effect of complementary member functions.
+ explanation: Supports the authors' multi-omics interpretation of complementarity, not a selectively established
+ causal mechanism for the aggregate production gains.
- name: Synergistic Biorefinery Production
- description: >
- The coculture increased biomass, lipid productivity, and alpha-tocopherol
- yield relative to monocultures and shortened the logarithmic growth phase.
- interaction_type: MUTUALISM
+ description: The optimized 3:7 coculture in TAP medium showed higher total biomass, lipid productivity and alpha-tocopherol
+ output than the monocultures, with a shorter reported logarithmic phase. These aggregate endpoints do not establish
+ that both species benefit. Separate exogenous alpha-lipoic acid supplementation further improved output; it
+ is not proof of endogenous cross-feeding or the same baseline condition.
scope: COMMUNITY_LEVEL
participating_taxa:
- preferred_term: Euglena gracilis
@@ -203,7 +185,8 @@ ecological_interactions:
- reference: PMID:42248260
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: corresponding to 1.18-1.52-fold, 1.58-2.81-fold, and 2.13-9.90-fold increases relative to monoculture systems
+ snippet: corresponding to 1.18-1.52-fold, 1.58-2.81-fold, and 2.13-9.90-fold increases relative to monoculture
+ systems
explanation: Supports coculture production gains relative to monocultures.
- reference: PMID:42248260
supports: SUPPORT
@@ -264,3 +247,31 @@ external_resources:
explanation: Links the resource to the exact community.
metal_relevance: NOT_APPLICABLE
metal_notes: No metal or rare-earth processing role is reported for this microalgal coculture.
+discussions:
+- discussion_id: microalgal_profiles_transfer_and_fitness
+ prompt: Which organism-specific transfers or physiological changes mediate the aggregate coculture outputs?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#Euglena Light Harvesting and Antioxidative Secretion
+ - ecological_interactions#Chlorella Electron Transport and Lipid Metabolite Release
+ - ecological_interactions#Complementary Microalgal Metabolic Division of Labor
+ - ecological_interactions#Synergistic Biorefinery Production
+ rationale: 'Remove the two profile-to-summary part/whole arrows; retain the complementarity-to-output arrow only
+ as HYPOTHESIZED. Represent single-organism profiles as intrinsic source-only nodes, not self-edges. No alpha-tocopherol
+ donor is assigned from the broad antioxidative profile. Total production does not demonstrate reciprocal fitness,
+ and exogenous alpha-lipoic acid is not evidence of endogenous exchange. Primary abstract only: underlying Methods/Results
+ and supplements were not acquired. Preserve NCBITaxon:3078 with its canonical Auxenochlorella label and the
+ publication preferred name. Non-graph omics and protocol details remain #1443; no new microbial mechanism is
+ inferred from the supplementation treatment.'
+ posed_by: codex
+ posed_date: '2026-10-06'
+curation_history:
+- timestamp: '2026-10-06T09:08:52Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Retain the Euglena-associated profile as intrinsic without a specific tocopherol donor claim or summary
+ arrow.; Retain the Chlorella-associated profile as intrinsic without proven transfer or a summary arrow.; Retain
+ proposed complementarity and only a hypothesized contribution to aggregate output.; Retain total production
+ gains without reciprocal organism fitness or supplementation conflation. Issue #1440; reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml'
+ llm_assisted: true
diff --git a/reports/causal_graph_review/adversarial-review-20261006-batch38.yaml b/reports/causal_graph_review/adversarial-review-20261006-batch38.yaml
new file mode 100644
index 000000000..121da64c8
--- /dev/null
+++ b/reports/causal_graph_review/adversarial-review-20261006-batch38.yaml
@@ -0,0 +1,155 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: a22f0f871bdfe84762b2dfcf2e38cb2c2d17949f
+scope:
+- kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml
+- kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml
+- kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml
+decision_ledger: reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
+validation_report: reports/causal_graph_review/validation-20261006-batch38.json
+findings:
+- issue: 1438
+ severity: P2
+ status: addressed_in_this_change
+ finding: 'Ensifer YF2 Y2 graph: distinguish genomic cross-feeding model from measured polymer effects'
+ disposition: Existing graph corrected; close only after protected main merge.
+- issue: 1439
+ severity: P2
+ status: addressed_in_this_change
+ finding: 'CPR DPANN graph: qualify size-fraction attachment and CPR-only replication inference'
+ disposition: Existing graph corrected; close only after protected main merge.
+- issue: 1440
+ severity: P2
+ status: addressed_in_this_change
+ finding: 'Euglena Chlorella graph: separate intrinsic profiles, proposed complementarity and total production'
+ disposition: Existing graph corrected; close only after protected main merge.
+- issue: 1441
+ severity: P2
+ status: open_nongraph_followup
+ finding: 'Ensifer YF2 Y2 metadata: correct access claim and qualify genome-inferred organism roles'
+ disposition: Non-graph fields preserved, not certified. Remains open.
+- issue: 1442
+ severity: P2
+ status: open_nongraph_followup
+ finding: 'CPR DPANN metadata: separate Northern California hosts from Oak Ridge genomic context'
+ disposition: Non-graph fields preserved, not certified. Remains open.
+- issue: 1443
+ severity: P2
+ status: open_nongraph_followup
+ finding: 'Euglena Chlorella metadata: resolve member-specific omics and supplementation conditions'
+ disposition: Non-graph fields preserved, not certified. Remains open.
+adversarial_checks:
+- Whole records and complete graph diffs checked against primary sources at recorded access scope. Twelve
+ existing nodes retained, three part/whole arrows removed and three remaining arrows qualified as HYPOTHESIZED.
+ Every original node and arrow has a disposition. No added connectivity.
+- Ensifer genomic complementarity is a conceptual donor/recipient model, not measured exchange, enzyme
+ necessity or complete polymer mineralization. Comparative consortium output is not reciprocal fitness
+ or formal additive synergy. Preserve AMBIGUOUS Ensifer grounding and exclude the MF1 comparator from
+ membership.
+- 'Ensifer publisher indexed text labels the paper open access. Retrieval failure does not establish a
+ paywall; non-graph access and inferred role claims remain #1441. No full-body access claimed.'
+- CPR/DPANN is an eight-site framework, not a defined three-member culture. Keep broad canonical categories
+ without assigning all possible partner associations. Remove categorical colonization facilitation, niche
+ partitioning and commensalism.
+- Size fractions are attachment proxies and cell numbers are DNA/genome-size estimates. Cryo-TEM cell
+ identity is inferred; pili-like morphology is not a necessary protein or measured resource flux. Figure
+ captions and text were read, not images.
+- CPR iRep measures average genome-replication state, not a single-cell growth rate. Archaea were excluded.
+ The only attachment-to-replication arrow remains a hypothesis without selective intervention or host-fitness
+ evidence. Earlier workflow-arrow removals remain intact.
+- 'Separate Oak Ridge source is not the California framework. Secondary source read only through early
+ Results for provenance. Non-graph roles/provenance and stale cache metadata remain #1442; no cache modified.'
+- Euglena and Chlorella profiles are intrinsic source-only nodes under the existing PAIRWISE convention,
+ not self-edges. Remove both profile-to-summary arrows and the unsupported Euglena-specific alpha-tocopherol
+ donor assignment. Preserve the publication name plus canonical Auxenochlorella label.
+- 'Multi-omics interpretations do not resolve exact transfer or selective mediation. Aggregate output
+ is not reciprocal fitness; exogenous alpha-lipoic acid is a distinct treatment, not endogenous cross-feeding.
+ Abstract-only protocol and underlying omics-assay gaps remain #1443.'
+- Guarded writes and append-only history with llm-assisted events. Prior history semantically preserved;
+ all non-graph raw blocks, 457 other records and 920 cache files byte-preserved. Eight new tests cover
+ these distinctions, identities, histories, anchors and complete disposition accounting.
+- All three records were already in the 184-user participant registry. Euglena intrinsic profiles change
+ mixed-scope census from 123 to 124 and sole broad credit from 1221 to 1219; no taxonomy or numeric-bound
+ changes. All 33 network warnings exactly preserved with zero errors.
+- Repeated renders deterministic and all published descriptions parser-checked. Reference-validator 0.1.7
+ performs zero checks despite exit 0; no-op disclosed. Textual MATCH is not scientific validation. Actual
+ output tails and digests, including the pre-research baseline, are committed.
+- Deduplication searched 760 all-state issue titles/bodies and ignored/hidden-inclusive local files, not
+ every comment. No independent reviewer, protected merge or full-corpus completion claimed. No Edison
+ job or charge was needed for these existing-structure repairs.
+verification:
+ combined_regressions: 407 passed in 203.34s (0:03:23)
+ new_regression_tests: 8
+ schema_strict_terms_history: passed; actual output tails and digests retained
+ snippet_counts_by_record:
+ kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml:
+ MATCH: 6
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml:
+ MATCH: 19
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml:
+ MATCH: 16
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ network: Zero errors; 33 baseline warnings exactly preserved, none added.
+ black_ruff_diff: passed
+ tested_file_sha256:
+ reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml: 788d30c2bbcf8de2a515f5a32349e09db6f4ac476aab03479e1b8e06674d6d56
+ tests/test_causal_review_batch38.py: 1f8a7711a2a13a56a3a6519cdc11c995e350a7aa88e94246d6178a44b8467429
+ kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml: 57ac6be6ce479d6e721e7c7a81a54ede921eee8620e3b466d061750d7d24d60c
+ kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml: 365db2424aa243d7f2727a5bb344aae80293574cc6a1d2db7e5780ccb475eb09
+ kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml: 4d5cdc403a12e77b46efdff937eebb29fd0e3b71418a497ea69287ac0a8d0bfc
+ post_commit_docs_current: Separate publication gate; not asserted in pre-commit record.
+ protected_ci_and_merge: Eligible exact-head protected checks and queue still required.
+participant_census:
+ connectivity_before:
+ community_level_only: 264
+ credited_solely_by_the_rule: 1221
+ mixed: 123
+ records: 460
+ taxa: 1494
+ with_community_level: 387
+ connectivity_after:
+ community_level_only: 263
+ credited_solely_by_the_rule: 1219
+ mixed: 124
+ records: 460
+ taxa: 1494
+ with_community_level: 387
+ exact_change: All three records already registered; 184-user roster unchanged. Two intrinsic microalgal
+ profiles make Euglena/Chlorella mixed-scope (123 to 124) and lower sole broad credit by two (1221
+ to 1219). No taxonomy or numeric-bound changes.
+ numeric_bounds_changed: false
+corpus:
+ records: 460
+ nodes: 1469
+ edges: 689
+ review_status_counts:
+ needs_research: 8
+ pending: 297
+ reviewed: 155
+limitations:
+- Twelve existing nodes retained; three part/whole arrows removed; one explicitly hypothesized mechanism
+ link retained in each record. No added connectivity.
+- Primary full main body for CPR/DPANN, abstract-only access for Ensifer and Euglena. Separate Oak Ridge
+ source read only through early Results to resolve provenance. No visual figures, separate supplements
+ or raw data reviewed.
+- 'Canonical taxonomy and non-graph raw blocks preserved, not certified; #1441-1443 remain open. Access
+ failure is not proof of a paywall.'
+- Single-organism microalgal profiles become intrinsic source-only PAIRWISE, not self-edges. Higher aggregate
+ output does not establish reciprocal organism fitness.
+- Self-adversarial review is not independent approval, protected main merge or full-corpus completion.
+ Textual snippet matching is not scientific validation.
diff --git a/reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml b/reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
new file mode 100644
index 000000000..804dbe91e
--- /dev/null
+++ b/reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
@@ -0,0 +1,264 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: a22f0f871bdfe84762b2dfcf2e38cb2c2d17949f
+baseline_commit: a22f0f871bdfe84762b2dfcf2e38cb2c2d17949f
+base_tree: 53fbd8501df23432e22ae64785408cff1c614027
+issues:
+- 1438
+- 1439
+- 1440
+open_nongraph_followups:
+- 1441
+- 1442
+- 1443
+open_graph_research: []
+issue_deduplication:
+ all_state_issue_titles_bodies: 760
+ ignored_hidden_local_files_included: true
+ comments_exhaustive: false
+ relevant_issues_read:
+ - 757
+ - 382
+ - 376
+ - 369
+ finding: No exact duplicate in searched scope; existing Ensifer taxonomy corrections and CPR workflow-arrow pruning
+ preserved.
+reference_cache_original_hashes:
+ references_cache/PMID_32252814.md: fa4a7f671f2b82f7b560d241b3afeafa0e0e166bbe39b14c98d9056e017dca45
+ references_cache/PMID_42248260.txt: c9e7b10ee96beacc3839d931b72ca9e2237476ccdbd637ea639ad23a9fd95d06
+ references_cache/PMID_41996795.md: 8f3a0a8ebba422912961d04df1d22b44e44f8d384cc767670d1d186eda9cb605
+ references_cache/PMID_33495623.txt: ebd08537cd681044d563e52704fb20ac576c6865e39f0959f2c56956a50bf4ae
+ references_cache/PMID_33495623.md: c8951d3d91ab4748ac5717c055fc194859bf51fb4461d2ab253d5cb67d73bfd6
+edison:
+ status: not_needed_for_existing_structure_repair_no_provider_job_or_charge
+ rationale: No new nodes/arrows; existing hypotheses and outcomes are corrected. External supplementation does
+ not establish a new endogenous exchange, and observational groundwater data do not resolve new partner-specific
+ mechanisms.
+limitations:
+- Twelve existing nodes retained; three part/whole arrows removed; one explicitly hypothesized mechanism link retained
+ in each record. No added connectivity.
+- Primary full main body for CPR/DPANN, abstract-only access for Ensifer and Euglena. Separate Oak Ridge source
+ read only through early Results to resolve provenance. No visual figures, separate supplements or raw data reviewed.
+- 'Canonical taxonomy and non-graph raw blocks preserved, not certified; #1441-1443 remain open. Access failure
+ is not proof of a paywall.'
+- Single-organism microalgal profiles become intrinsic source-only PAIRWISE, not self-edges. Higher aggregate output
+ does not establish reciprocal organism fitness.
+- Self-adversarial review is not independent approval, protected main merge or full-corpus completion. Textual snippet
+ matching is not scientific validation.
+records:
+- path: kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml
+ id: CommunityMech:000299
+ original_sha256: 5b40f0230b5889ca76a5a0780186ed46a92e9f3b7ef96477ae493d2b8101d5d6
+ record_sha256: 57ac6be6ce479d6e721e7c7a81a54ede921eee8620e3b466d061750d7d24d60c
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
+ scope: Whole record and every existing node/arrow assessed at recorded primary access scope; non-graph fields
+ preserved, not certified.
+ summary: Retain the genomic donor/recipient hypothesis without categorical cross-feeding or measured polymer-enzyme
+ flux.; Retain two-member comparative output without mutualism or a part/whole outcome arrow.; Retain polymer
+ surface endpoints without complete mineralization or interstrain flux claims.
+ renamed_nodes: {}
+ node_decisions:
+ - node: Metabolic division of labor in polyethylene degradation
+ rationale: Retain the genomic donor/recipient hypothesis without categorical cross-feeding or measured polymer-enzyme
+ flux.
+ - node: Synergistic enhancement of PE degradation in the dual-strain consortium
+ rationale: Retain two-member comparative output without mutualism or a part/whole outcome arrow.
+ - node: Polyethylene Oxidation and Surface Erosion
+ rationale: Retain polymer surface endpoints without complete mineralization or interstrain flux claims.
+ removed_node_decisions: []
+ edges_before:
+ - source: Metabolic division of labor in polyethylene degradation
+ target: Synergistic enhancement of PE degradation in the dual-strain consortium
+ description: Ensifer backbone cleavage and Sphingobacterium intermediate metabolism combine into the YF2/Y2
+ dual consortium's enhanced PE degradation phenotype.
+ - source: Synergistic enhancement of PE degradation in the dual-strain consortium
+ target: Polyethylene Oxidation and Surface Erosion
+ description: The enhanced dual-strain consortium grows with PE as the sole carbon source and induces oxidative
+ and physical damage to the polymer.
+ edges_after:
+ - source: Metabolic division of labor in polyethylene degradation
+ target: Synergistic enhancement of PE degradation in the dual-strain consortium
+ description: HYPOTHESIZED - complementary transformation capacities could contribute to the stronger YF2/Y2
+ consortium phenotype. Genomic annotation and the coculture comparison do not isolate cross-feeding as the
+ cause of that improvement.
+ retained_edge_decisions:
+ - source: Metabolic division of labor in polyethylene degradation
+ target: Synergistic enhancement of PE degradation in the dual-strain consortium
+ rationale: HYPOTHESIZED - complementary transformation capacities could contribute to the stronger YF2/Y2 consortium
+ phenotype. Genomic annotation and the coculture comparison do not isolate cross-feeding as the cause of that
+ improvement.
+ removed_edge_decisions:
+ - source: Synergistic enhancement of PE degradation in the dual-strain consortium
+ target: Polyethylene Oxidation and Surface Erosion
+ rationale: The surface phenotype is part of the reported performance, not an independently established downstream
+ effect.
+ references:
+ - PMID:41996795
+ issues:
+ - 1438
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium/2026-10-06T090852Z-codex-d2e3d0.yaml
+ source_review:
+ PMID:41996795:
+ url: https://www.sciencedirect.com/science/article/pii/S014765132600480X
+ scope: Complete cached primary abstract only. Publisher indexed text labels Open access / Creative Commons
+ and PubMed Free article; page retrieval returned403 and public publisher XML API retrieval failed. ResearchGate
+ request-only. No full Methods/Results, visual figures, supplements or raw data acquired.
+- path: kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml
+ id: CommunityMech:000237
+ original_sha256: 7f431b7ff46107d7d3a2fadd7dd99741e135627368f85ae917265810ccb716c9
+ record_sha256: 365db2424aa243d7f2727a5bb344aae80293574cc6a1d2db7e5780ccb475eb09
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
+ scope: Whole record and every existing node/arrow assessed at recorded primary access scope; non-graph fields
+ preserved, not certified.
+ summary: Retain the eight-site genomic framework without colonization facilitation or a defined-culture claim.;
+ Retain site differences without a selectively established niche mechanism.; Retain size-fraction attachment
+ proxies with modeled count and identification limits.; Retain reported physical attachment with uncertain cell
+ identities and a hypothesized CPR consequence.; Retain CPR-only population replication-state association without
+ causal or host-neutrality claims.
+ renamed_nodes: {}
+ node_decisions:
+ - node: Groundwater CPR/DPANN-Host Coexistence
+ rationale: Retain the eight-site genomic framework without colonization facilitation or a defined-culture claim.
+ - node: Site-Specific CPR/DPANN Differentiation
+ rationale: Retain site differences without a selectively established niche mechanism.
+ - node: Size-Fraction CPR/DPANN Host-Attachment Signal
+ rationale: Retain size-fraction attachment proxies with modeled count and identification limits.
+ - node: CPR/DPANN Episymbiotic Attachment to Hosts
+ rationale: Retain reported physical attachment with uncertain cell identities and a hypothesized CPR consequence.
+ - node: Host-Attached CPR Replication Stimulation
+ rationale: Retain CPR-only population replication-state association without causal or host-neutrality claims.
+ removed_node_decisions: []
+ edges_before:
+ - source: CPR/DPANN Episymbiotic Attachment to Hosts
+ target: Host-Attached CPR Replication Stimulation
+ description: 'Host-cell surface attachment is inferred to stimulate CPR bacterial replication because attached
+ CPR cells in larger size fractions showed higher instantaneous replication rates than unattached CPR cells
+ from the same groundwater community.
+
+ '
+ edges_after:
+ - source: CPR/DPANN Episymbiotic Attachment to Hosts
+ target: Host-Attached CPR Replication Stimulation
+ description: HYPOTHESIZED - access to host-associated resources could stimulate CPR replication. Attached-cell
+ images and higher CPR iRep in larger fractions support this interpretation, but attachment was not selectively
+ perturbed and the putative resource transfer was not measured. The replication comparison does not include
+ DPANN archaea.
+ retained_edge_decisions:
+ - source: CPR/DPANN Episymbiotic Attachment to Hosts
+ target: Host-Attached CPR Replication Stimulation
+ rationale: HYPOTHESIZED - access to host-associated resources could stimulate CPR replication. Attached-cell
+ images and higher CPR iRep in larger fractions support this interpretation, but attachment was not selectively
+ perturbed and the putative resource transfer was not measured. The replication comparison does not include
+ DPANN archaea.
+ removed_edge_decisions: []
+ references:
+ - PMID:33495623
+ - PMID:32252814
+ issues:
+ - 1439
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/Episymbiotic_CPR_DPANN_Groundwater_Community/2026-10-06T090852Z-codex-64a1b6.yaml
+ source_review:
+ PMID:33495623:
+ url: https://pmc.ncbi.nlm.nih.gov/articles/PMC7906910/
+ scope: Cached primary abstract plus full OA main body through all Methods and reporting-summary/supplement
+ listing, including figure captions. No visual figures, separate supplements or raw data. Cached .md front
+ matter says abstract_only but actual body includes full text; bytes preserved.
+ PMID:32252814:
+ url: https://doi.org/10.1186/s40168-020-00825-w
+ scope: Cached abstract, Introduction and early Results read to establish separate Oak Ridge sampling scope.
+ Remaining main body and separate supplements not reviewed; used only to flag non-graph provenance, not to
+ support new graph mechanisms.
+- path: kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml
+ id: CommunityMech:000325
+ original_sha256: 83f811771cf8658d473066c8bc48b9cf2c75f792926fba1655e38930b15ab476
+ record_sha256: 4d5cdc403a12e77b46efdff937eebb29fd0e3b71418a497ea69287ac0a8d0bfc
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml
+ scope: Whole record and every existing node/arrow assessed at recorded primary access scope; non-graph fields
+ preserved, not certified.
+ summary: Retain the Euglena-associated profile as intrinsic without a specific tocopherol donor claim or summary
+ arrow.; Retain the Chlorella-associated profile as intrinsic without proven transfer or a summary arrow.; Retain
+ proposed complementarity and only a hypothesized contribution to aggregate output.; Retain total production
+ gains without reciprocal organism fitness or supplementation conflation.
+ renamed_nodes: {}
+ node_decisions:
+ - node: Euglena Light Harvesting and Antioxidative Secretion
+ rationale: Retain the Euglena-associated profile as intrinsic without a specific tocopherol donor claim or summary
+ arrow.
+ - node: Chlorella Electron Transport and Lipid Metabolite Release
+ rationale: Retain the Chlorella-associated profile as intrinsic without proven transfer or a summary arrow.
+ - node: Complementary Microalgal Metabolic Division of Labor
+ rationale: Retain proposed complementarity and only a hypothesized contribution to aggregate output.
+ - node: Synergistic Biorefinery Production
+ rationale: Retain total production gains without reciprocal organism fitness or supplementation conflation.
+ removed_node_decisions: []
+ edges_before:
+ - source: Euglena Light Harvesting and Antioxidative Secretion
+ target: Complementary Microalgal Metabolic Division of Labor
+ description: Euglena light harvesting and antioxidative secretion form one side of the coculture division of
+ labor
+ - source: Chlorella Electron Transport and Lipid Metabolite Release
+ target: Complementary Microalgal Metabolic Division of Labor
+ description: Chlorella carbon fixation and lipid-associated metabolite release form the other side of the coculture
+ division of labor
+ - source: Complementary Microalgal Metabolic Division of Labor
+ target: Synergistic Biorefinery Production
+ description: 'Complementary light-harvesting, antioxidative secretion, electron transport, carbon-fixation,
+ and lipid-metabolite roles jointly drive the coculture biomass, lipid, and alpha-tocopherol production gains.
+
+ '
+ edges_after:
+ - source: Complementary Microalgal Metabolic Division of Labor
+ target: Synergistic Biorefinery Production
+ description: HYPOTHESIZED - complementary photosynthetic and metabolic capacities could contribute to the aggregate
+ production gains. The abstract links profiles and output, but does not resolve their selective mediation or
+ demonstrate reciprocal species fitness.
+ retained_edge_decisions:
+ - source: Complementary Microalgal Metabolic Division of Labor
+ target: Synergistic Biorefinery Production
+ rationale: HYPOTHESIZED - complementary photosynthetic and metabolic capacities could contribute to the aggregate
+ production gains. The abstract links profiles and output, but does not resolve their selective mediation or
+ demonstrate reciprocal species fitness.
+ removed_edge_decisions:
+ - source: Euglena Light Harvesting and Antioxidative Secretion
+ target: Complementary Microalgal Metabolic Division of Labor
+ rationale: The organism profile composes the complementarity summary; part/whole narration is not a biological
+ causal effect.
+ - source: Chlorella Electron Transport and Lipid Metabolite Release
+ target: Complementary Microalgal Metabolic Division of Labor
+ rationale: The organism profile composes the complementarity summary; part/whole narration is not a biological
+ causal effect.
+ references:
+ - PMID:42248260
+ issues:
+ - 1440
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/Euglena_Chlorella_Microalgal_Biorefinery_Coculture/2026-10-06T090853Z-codex-5f6b10.yaml
+ source_review:
+ PMID:42248260:
+ url: https://pubmed.ncbi.nlm.nih.gov/42248260/
+ scope: Complete cached primary MEDLINE abstract. Publisher page returned403 and public XML API retrieval failed;
+ ResearchGate request-only. No full Methods/Results, visual figures, supplements or raw data acquired.
diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv
index a60003a1c..e5e7f31c9 100644
--- a/reports/causal_graph_review/inventory.tsv
+++ b/reports/causal_graph_review/inventory.tsv
@@ -164,10 +164,10 @@ kb/communities/Electrostimulated_Toluene_Methanogenic_Microbiota.yaml CommunityM
kb/communities/Electrosynthetic_Consortia_Shewanella_Clostridium_Acetobacterium_Acetate.yaml CommunityMech:000298 d225c991b8b826dc63bb56b8094e9bc5420e5c9da7f6c2e6be693fc7dc56e9e2 3 2 100.0 pending
kb/communities/Emiliania_Phaeobacter_Dynamic_Interaction.yaml CommunityMech:000143 e0a94fe128d5babfb6c76a3f161d32dd8a1f1ed58a5204d55a632c28283c702b 3 2 100.0 pending
kb/communities/Engineered_Gut_Amino_Acid_CrossFeeding_Consortium.yaml CommunityMech:000151 b29aa03e39e670a5d61b55306119f11c3459c7fb5c6cf5e8fb58a92d040a8cf0 3 2 100.0 pending
-kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml CommunityMech:000299 5b40f0230b5889ca76a5a0780186ed46a92e9f3b7ef96477ae493d2b8101d5d6 3 2 100.0 pending
-kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml CommunityMech:000237 7f431b7ff46107d7d3a2fadd7dd99741e135627368f85ae917265810ccb716c9 5 1 90.0 pending
+kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml CommunityMech:000299 57ac6be6ce479d6e721e7c7a81a54ede921eee8620e3b466d061750d7d24d60c 3 1 75.0 reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml reviewed
+kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml CommunityMech:000237 365db2424aa243d7f2727a5bb344aae80293574cc6a1d2db7e5780ccb475eb09 5 1 76.0 reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml reviewed
kb/communities/Eucalyptus_Nursery_FiveStrain_Inoculant_SynCom.yaml CommunityMech:000316 57c4e57ef2f110cdd11f6fd91d55af1f43ac613b6a12e0e59e96fb855762f638 3 0 75.0 pending
-kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml CommunityMech:000325 83f811771cf8658d473066c8bc48b9cf2c75f792926fba1655e38930b15ab476 4 3 100.0 pending
+kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml CommunityMech:000325 4d5cdc403a12e77b46efdff937eebb29fd0e3b71418a497ea69287ac0a8d0bfc 4 1 78.8 reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml reviewed
kb/communities/Ewaste_Bioleaching_Consortium.yaml CommunityMech:000026 97fa72a9222421bd40e3ba7bdf14ccaabaeeda0ac5114fd5dda987dc6bda6a7f 3 3 100.0 pending
kb/communities/FOS_Lactobacillus_MinimalCore_GutLiver_SynCom.yaml CommunityMech:000466 6a7169713b35a9a4e57ecf540aa7679052fc01b4f43a05a998be1beb5e40acb1 3 0 65.0 pending
kb/communities/Ferroplasma_Leptospirillum_Syntrophy.yaml CommunityMech:000027 f357e3ec553f3c8ff1448687f6bf1ab557d2aa72e9e011162ce4b583bdb9a7e7 4 2 100.0 pending
diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json
index 36ef54e2c..9e064149b 100644
--- a/reports/causal_graph_review/summary.json
+++ b/reports/causal_graph_review/summary.json
@@ -3,13 +3,13 @@
"semantic_review_rule": "Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.",
"records": 460,
"nodes": 1469,
- "edges": 692,
+ "edges": 689,
"records_without_nodes": 8,
"records_without_edges": 146,
"review_status_counts": {
"needs_research": 8,
- "pending": 300,
- "reviewed": 152
+ "pending": 297,
+ "reviewed": 155
},
"structural_defects": [],
"network_audit": [
diff --git a/reports/causal_graph_review/validation-20261006-batch38.json b/reports/causal_graph_review/validation-20261006-batch38.json
new file mode 100644
index 000000000..9197af7e1
--- /dev/null
+++ b/reports/causal_graph_review/validation-20261006-batch38.json
@@ -0,0 +1,750 @@
+{
+ "base_commit": "a22f0f871bdfe84762b2dfcf2e38cb2c2d17949f",
+ "scope": [
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml",
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml",
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml"
+ ],
+ "reference_validator_version": "0.1.7",
+ "results": [
+ {
+ "check": "Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-schema",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-schema.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-strict",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/private/tmp/communitymech-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-strict.tsv",
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-strict.log",
+ "log_sha256": "fb1aa790059572626ffe33d0f83f8fcc1c21b41dfb688dc8f2ecf4656c324ad2",
+ "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch38/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-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-strict.tsv\n"
+ },
+ {
+ "check": "Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-terms",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator",
+ "validate-data",
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-terms.log",
+ "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018",
+ "output_tail": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-references",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-references.log",
+ "log_sha256": "c40c80a348b194bf3b1c46147016a79649e0797901094e3ffbf6deb082ff987e",
+ "output_tail": "Validating kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.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/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.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": "Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-snippets",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-snippets.log",
+ "log_sha256": "c701a14a68be45219232ec1037f210e46fb14d49e54b85702ad029b20c3f0666",
+ "output_tail": "# 6 evidence snippets scanned across 1 files\n MATCH 6\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": "Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-rank",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-rank.log",
+ "log_sha256": "4e9195e81c3df08ce8f22c3092e55c932b64ff87e9bfcf5c250ee63a157d5101",
+ "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000299\",\n \"name\": \"Ensifer YF2 + Sphingobacterium Y2 Polyethylene-degrading Consortium\",\n \"score\": 75.0,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 1,\n \"interaction_evidence\": 3,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"additional_downstream\",\n \"metabolites_or_biological_processes\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-history-0",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium/2026-10-06T090852Z-codex-d2e3d0.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium-history-0.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Episymbiotic_CPR_DPANN_Groundwater_Community-schema",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-schema.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Episymbiotic_CPR_DPANN_Groundwater_Community-strict",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/private/tmp/communitymech-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-strict.tsv",
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-strict.log",
+ "log_sha256": "9d9ff043e53b25ccbfcac6dfb05ab3a8d71f821ac61752f72c5ce9d3e035608e",
+ "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch38/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-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-strict.tsv\n"
+ },
+ {
+ "check": "Episymbiotic_CPR_DPANN_Groundwater_Community-terms",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator",
+ "validate-data",
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-terms.log",
+ "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018",
+ "output_tail": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Episymbiotic_CPR_DPANN_Groundwater_Community-references",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-references.log",
+ "log_sha256": "12b5c6e2cf3bbe490af5d042fa6b357955625ece229d8c472a2283ba3ccd0d0b",
+ "output_tail": "Validating kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.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/Episymbiotic_CPR_DPANN_Groundwater_Community.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": "Episymbiotic_CPR_DPANN_Groundwater_Community-snippets",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-snippets.log",
+ "log_sha256": "8084678f5cf248d78dd90bd74538a6320ef0dcc9940ae3e5b5f759e13588ade6",
+ "output_tail": "# 19 evidence snippets scanned across 1 files\n MATCH 19\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": "Episymbiotic_CPR_DPANN_Groundwater_Community-rank",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-rank.log",
+ "log_sha256": "d6eac5e20970dda45469f6b41b4da5bb2daf78e42eda9dbd81910ab22cce6d0c",
+ "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000237\",\n \"name\": \"Episymbiotic CPR Bacteria and DPANN Archaea Groundwater Community\",\n \"score\": 76.0,\n \"taxonomy\": 3,\n \"connected_taxa\": 3,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 5,\n \"downstream_edges\": 1,\n \"interaction_evidence\": 11,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"additional_downstream\",\n \"metabolites_or_biological_processes\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Episymbiotic_CPR_DPANN_Groundwater_Community-history-0",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/Episymbiotic_CPR_DPANN_Groundwater_Community/2026-10-06T090852Z-codex-64a1b6.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Episymbiotic_CPR_DPANN_Groundwater_Community-history-0.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Euglena_Chlorella_Microalgal_Biorefinery_Coculture-schema",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-schema.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Euglena_Chlorella_Microalgal_Biorefinery_Coculture-strict",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/private/tmp/communitymech-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-strict.tsv",
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-strict.log",
+ "log_sha256": "42add30ed03c425e5ab11a5627fa7fa689bc1a4281957e28cf7c0aea7a8ab839",
+ "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch38/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-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-strict.tsv\n"
+ },
+ {
+ "check": "Euglena_Chlorella_Microalgal_Biorefinery_Coculture-terms",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator",
+ "validate-data",
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-terms.log",
+ "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018",
+ "output_tail": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Euglena_Chlorella_Microalgal_Biorefinery_Coculture-references",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-references.log",
+ "log_sha256": "a5fb8863d2503d271a003c47e4ceb4838bba7b287a5626a31961c8b5e933ee9d",
+ "output_tail": "Validating kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n",
+ "explained_output_tail": "Validating kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n"
+ },
+ {
+ "check": "Euglena_Chlorella_Microalgal_Biorefinery_Coculture-snippets",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-snippets.log",
+ "log_sha256": "f77044cea09a90a006f3fc48666f62a208521829981c6819a3a36631506c4ec1",
+ "output_tail": "# 16 evidence snippets scanned across 1 files\n MATCH 16\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": "Euglena_Chlorella_Microalgal_Biorefinery_Coculture-rank",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-rank.log",
+ "log_sha256": "98871500d706e1608dbd2de48ffb55018d2cb079f2696cc987d6e5b926e24b93",
+ "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000325\",\n \"name\": \"Euglena-Chlorella Microalgal Biorefinery Coculture\",\n \"score\": 78.8,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 4,\n \"downstream_edges\": 1,\n \"interaction_evidence\": 6,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"additional_downstream\",\n \"metabolites_or_biological_processes\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Euglena_Chlorella_Microalgal_Biorefinery_Coculture-history-0",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/Euglena_Chlorella_Microalgal_Biorefinery_Coculture/2026-10-06T090853Z-codex-5f6b10.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/Euglena_Chlorella_Microalgal_Biorefinery_Coculture-history-0.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "inventory",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "reports/causal_graph_review/build_inventory.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/inventory.log",
+ "log_sha256": "d1ac05dbdf9f36a0a17db07b5bae00057cb47fd5b0664e9afef0f205f722fccc",
+ "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\": 1469,\n \"edges\": 689,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 146,\n \"review_status_counts\": {\n \"needs_research\": 8,\n \"pending\": 297,\n \"reviewed\": 155\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-batch38/network.log",
+ "log_sha256": "c035fe6ed0bbf90371ab58d6557716c51eea79ac628e204173d70075f9efaa26",
+ "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-batch38/rank-all.log",
+ "log_sha256": "4deb9a7503ea2a7afac848ad5fc9117a2a68f5d50c35e314d5f7e412a9f8da57",
+ "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-batch38/render.log",
+ "log_sha256": "fff7f8b51b53baa6dc28d8b3dbd570244b07a9cd475298a73ad2382595f45fda",
+ "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch38/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch38/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch38/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-batch38/render-repeat.log",
+ "log_sha256": "fff7f8b51b53baa6dc28d8b3dbd570244b07a9cd475298a73ad2382595f45fda",
+ "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch38/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch38/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch38/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch38/docs/index.html\n"
+ },
+ {
+ "check": "connectivity-survey",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-c",
+ "import json,runpy; print(json.dumps(runpy.run_path(\"tests/test_community_level_connectivity_credit.py\")[\"_survey\"](),sort_keys=True))"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/connectivity-survey.log",
+ "log_sha256": "fb47676e0ec6945737e5aeeba11192e7b8ff073a9e93ce8809972a4316c7c565",
+ "output_tail": "{\"community_level_only\": 263, \"credited_solely_by_the_rule\": 1219, \"mixed\": 124, \"records\": 460, \"taxa\": 1494, \"with_community_level\": 387}\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_batch5.py",
+ "tests/test_causal_review_batch6.py",
+ "tests/test_causal_review_batch7.py",
+ "tests/test_causal_review_batch8.py",
+ "tests/test_causal_review_batch9.py",
+ "tests/test_site_audit_fixes.py",
+ "tests/test_causal_review_inventory.py",
+ "tests/test_rank_causal_graph_readiness.py",
+ "tests/test_network_auditor.py",
+ "tests/test_participating_taxa.py",
+ "tests/test_causal_descriptions_are_published.py",
+ "tests/test_published_pages_name_real_records.py",
+ "tests/test_reference_validator_actually_validates.py",
+ "tests/test_snippet_audit_artefact_classes.py",
+ "tests/test_reference_error_annotation.py",
+ "tests/test_community_level_connectivity_credit.py",
+ "tests/test_no_paywalled_text_in_repo.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/regressions.log",
+ "log_sha256": "7b293d0ca9f2822e666cd0f6b65224eded327f9badaa0813eb3f68b383d4f268",
+ "output_tail": "........................................................................ [ 17%]\n........................................................................ [ 35%]\n........................................................................ [ 53%]\n........................................................................ [ 70%]\n........................................................................ [ 88%]\n............................................... [100%]\n407 passed in 203.34s (0:03:23)\n"
+ },
+ {
+ "check": "black",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/3Q_kifQtLB624D5bBWGIf/bin/black",
+ "--check",
+ "tests/test_causal_review_batch38.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/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_batch38.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch38/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-batch38/diff-check.log",
+ "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "output_tail": ""
+ }
+ ],
+ "limitations": [
+ "Twelve existing nodes retained; three part/whole arrows removed; one explicitly hypothesized mechanism link retained in each record. No added connectivity.",
+ "Primary full main body for CPR/DPANN, abstract-only access for Ensifer and Euglena. Separate Oak Ridge source read only through early Results to resolve provenance. No visual figures, separate supplements or raw data reviewed.",
+ "Canonical taxonomy and non-graph raw blocks preserved, not certified; #1441-1443 remain open. Access failure is not proof of a paywall.",
+ "Single-organism microalgal profiles become intrinsic source-only PAIRWISE, not self-edges. Higher aggregate output does not establish reciprocal organism fitness.",
+ "Self-adversarial review is not independent approval, protected main merge or full-corpus completion. Textual snippet matching is not scientific validation.",
+ "HTML descriptions checked by exact parser and repeat renders, not browser screenshots. Post-commit docs-current is a separate publication gate.",
+ "All three reference-validator commands exit 0 with Total checks: 0. This is a no-op, not evidence validation. Independent snippet counts and primary-source review are separate."
+ ],
+ "snippet_counts_by_record": {
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml": {
+ "MATCH": 6,
+ "RENDERING": 0,
+ "ASSEMBLED": 0,
+ "WEAK": 0,
+ "MISMATCH": 0,
+ "NOCONTENT": 0
+ },
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml": {
+ "MATCH": 19,
+ "RENDERING": 0,
+ "ASSEMBLED": 0,
+ "WEAK": 0,
+ "MISMATCH": 0,
+ "NOCONTENT": 0
+ },
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml": {
+ "MATCH": 16,
+ "RENDERING": 0,
+ "ASSEMBLED": 0,
+ "WEAK": 0,
+ "MISMATCH": 0,
+ "NOCONTENT": 0
+ }
+ },
+ "unchanged_raw_blocks": 40,
+ "unchanged_record_files": 457,
+ "unchanged_cache_files": 920,
+ "network_delta": {
+ "existing_findings_preserved": 33,
+ "new_disconnected": 0,
+ "added_findings": {},
+ "rationale": "All baseline warnings exactly preserved; no invented graph links to suppress warnings."
+ },
+ "render_determinism": true,
+ "published_description_coverage": {
+ "pages": 456,
+ "nodes": 1455,
+ "arrows": 681
+ },
+ "participant_census": {
+ "connectivity_before": {
+ "community_level_only": 264,
+ "credited_solely_by_the_rule": 1221,
+ "mixed": 123,
+ "records": 460,
+ "taxa": 1494,
+ "with_community_level": 387
+ },
+ "connectivity_after": {
+ "community_level_only": 263,
+ "credited_solely_by_the_rule": 1219,
+ "mixed": 124,
+ "records": 460,
+ "taxa": 1494,
+ "with_community_level": 387
+ },
+ "exact_change": "All three records already registered; 184-user roster unchanged. Two intrinsic microalgal profiles make Euglena/Chlorella mixed-scope (123 to 124) and lower sole broad credit by two (1221 to 1219). No taxonomy or numeric-bound changes.",
+ "numeric_bounds_changed": false
+ },
+ "corpus": {
+ "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.",
+ "records": 460,
+ "nodes": 1469,
+ "edges": 689,
+ "records_without_nodes": 8,
+ "records_without_edges": 146,
+ "review_status_counts": {
+ "needs_research": 8,
+ "pending": 297,
+ "reviewed": 155
+ },
+ "structural_defects": []
+ },
+ "tested_file_sha256": {
+ "reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml": "788d30c2bbcf8de2a515f5a32349e09db6f4ac476aab03479e1b8e06674d6d56",
+ "tests/test_causal_review_batch38.py": "1f8a7711a2a13a56a3a6519cdc11c995e350a7aa88e94246d6178a44b8467429",
+ "kb/communities/Ensifer_YF2_Sphingobacterium_Y2_Polyethylene_Degrading_Consortium.yaml": "57ac6be6ce479d6e721e7c7a81a54ede921eee8620e3b466d061750d7d24d60c",
+ "kb/communities/Episymbiotic_CPR_DPANN_Groundwater_Community.yaml": "365db2424aa243d7f2727a5bb344aae80293574cc6a1d2db7e5780ccb475eb09",
+ "kb/communities/Euglena_Chlorella_Microalgal_Biorefinery_Coculture.yaml": "4d5cdc403a12e77b46efdff937eebb29fd0e3b71418a497ea69287ac0a8d0bfc"
+ },
+ "status": "verified_three_completed_existing_graph_reviews",
+ "reference_validator_effective_checks": 0,
+ "reference_validator_caveat": "All three reference-validator commands exit 0 with Total checks: 0. This is a no-op, not evidence validation. Independent snippet counts and primary-source review are separate.",
+ "pre_research_baseline": {
+ "base_commit": "a22f0f871bdfe84762b2dfcf2e38cb2c2d17949f",
+ "base_tree": "53fbd8501df23432e22ae64785408cff1c614027",
+ "research_worktree": "/private/tmp/communitymech-causal-batch37",
+ "checks": [
+ {
+ "name": "rank",
+ "command": [
+ "just",
+ "rank-causal-graphs"
+ ],
+ "exit_code": 0,
+ "expected_exit_code": 0,
+ "log": "/private/tmp/communitymech-batch38/baseline-rank.log",
+ "sha256": "a4d0530632319f6557098fa585b9b29649e5230108fe69721246d8017742b83e",
+ "output_tail": "nol_Anaerobic_Bioremediation_SynCom.yaml\tCommunityMech:000112\tTribromophenol Anaerobic Bioremediation SynCom\t3\t3\t0\t4\t3\t5\t\t0\t0\n444\t100.0\tkb/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml\tCommunityMech:000188\tTrichococcus-Syntrophomonas-Methanospirillum Butyrate Coculture\t3\t3\t0\t3\t2\t6\t\t0\t0\n445\t100.0\tkb/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml\tCommunityMech:000205\tTrichoderma-E. coli Cellulosic Isobutanol Coculture\t2\t2\t0\t3\t2\t5\t\t0\t0\n446\t100.0\tkb/communities/Trichoderma_Lactate_Platform.yaml\tCommunityMech:000075\tTrichoderma Lactate Platform for SCFA Production\t3\t3\t0\t3\t2\t3\t\t0\t0\n447\t100.0\tkb/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml\tCommunityMech:000270\tTrichoderma-Streptomyces Filamentous Cellulose Coculture\t2\t2\t0\t3\t2\t7\t\t0\t0\n448\t100.0\tkb/communities/Trichodesmium_Alteromonas_Marine_Consortium.yaml\tCommunityMech:000147\tTrichodesmium-Alteromonas Marine Consortium\t3\t3\t0\t3\t2\t5\t\t0\t0\n449\t100.0\tkb/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml\tCommunityMech:000337\tTropidoatractus magnetotacticus Magnetotactic Ciliate Tripartite Syntrophy\t3\t3\t0\t4\t2\t9\t\t0\t0\n450\t100.0\tkb/communities/Urine_Nitrification_SynCom.yaml\tCommunityMech:000117\tUrine Nitrification Synthetic Microbial Community\t5\t5\t0\t3\t2\t5\t\t0\t0\n451\t100.0\tkb/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml\tCommunityMech:000213\tVariovorax-Cryptococcus Vitamin Cross-Feeding Microcosm\t2\t2\t0\t3\t2\t4\t\t0\t0\n452\t100.0\tkb/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml\tCommunityMech:000328\tWaste-Sludge Electro-Fermentation Biofilm-Suspension Community\t5\t5\t0\t4\t2\t6\t\t0\t0\n453\t100.0\tkb/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.yaml\tCommunityMech:000098\tWatermelon Rhizosphere Fusarium-Protective SynCom8\t2\t2\t0\t3\t2\t7\t\t0\t0\n454\t100.0\tkb/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml\tCommunityMech:000255\tWetland Oxygen-Sulfate Greenhouse Gas Microcosm Community\t3\t3\t0\t3\t2\t6\t\t0\t0\n455\t100.0\tkb/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.yaml\tCommunityMech:000118\tWheat Straw Biogas Pretreatment SynCom\t4\t4\t0\t3\t2\t4\t\t0\t0\n456\t100.0\tkb/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml\tCommunityMech:000354\tYarrowia lipolytica Division-of-Labor Lipid Consortium\t2\t2\t0\t3\t2\t3\t\t0\t0\n457\t100.0\tkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml\tCommunityMech:000164\tYogurt Two-Species Starter Culture\t2\t2\t0\t4\t2\t9\t\t0\t0\n458\t100.0\tkb/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml\tCommunityMech:000210\tZymomonas-E. coli Exometabolomics-Designed Obligate Mutualism\t2\t2\t0\t3\t2\t6\t\t0\t0\n459\t100.0\tkb/communities/hCom2_Complex_Gut_Microbiome.yaml\tCommunityMech:000123\thCom2 Complex Gut Microbiome\t1\t1\t0\t3\t2\t3\t\t0\t0\n460\t100.0\tkb/communities/mCAFEs_Brachypodium_RCC.yaml\tCommunityMech:000078\tm-CAFEs Brachypodium Reduced Complexity Consortia\t10\t10\t0\t6\t2\t11\t\t0\t0\nPYTHONPATH=src uv run python scripts/rank_causal_graph_readiness.py \n"
+ },
+ {
+ "name": "just-network",
+ "command": [
+ "just",
+ "audit-network-json"
+ ],
+ "exit_code": 2,
+ "expected_exit_code": 2,
+ "log": "/private/tmp/communitymech-batch38/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-batch38/baseline-network.log",
+ "sha256": "c035fe6ed0bbf90371ab58d6557716c51eea79ac628e204173d70075f9efaa26",
+ "output_tail": " DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pseudomonas antarctica CMS 35T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Staphylococcus capitis K1-2-2-23\",\n \"taxon_id\": \"NCBITaxon:29388\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Staphylococcus capitis K1-2-2-23\",\n \"term\": {\n \"id\": \"NCBITaxon:29388\",\n \"label\": \"Staphylococcus capitis\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from ISS V2A steel; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"K1-2-2-23\",\n \"genome_accession\": \"GCA_025272695\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"111179\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Staphylococcus capitis | K1-2-2-23 | ISS, V2A Steel | DSM 111179 | Sobisch et al., 2019 | GCA_025272695 | TSYB/TSYA | 37 \\u00b0C | 16\\u201324 h\",\n \"explanation\": \"Identifies S. capitis K1-2-2-23 as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Staphylococcus capitis K1-2-2-23' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Streptococcus halotolerans HTS9T\",\n \"taxon_id\": \"NCBITaxon:1814128\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Streptococcus halotolerans HTS9T\",\n \"term\": {\n \"id\": \"NCBITaxon:1814128\",\n \"label\": \"Streptococcus halotolerans\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the S. halotolerans type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"HTS9T\",\n \"genome_accession\": \"GCA_001598035\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"101996\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Streptococcus halotolerans | HTS9 T | Respiratory Tract of Marmota himalayana | DSM 101996 T | Niu et al., 2016 | GCA_001598035 | 2xLB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies S. halotolerans HTS9T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Streptococcus halotolerans HTS9T' has no interactions\"\n }\n ]\n}\n"
+ },
+ {
+ "name": "downstream",
+ "command": [
+ "rg",
+ "--no-ignore",
+ "--hidden",
+ "-n",
+ "downstream:",
+ "kb/communities",
+ "data/isolates",
+ "--glob",
+ "*.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_code": 0,
+ "log": "/private/tmp/communitymech-batch38/baseline-downstream.log",
+ "sha256": "9e97d686dbe8e6d4d8cc7ea67f62c636c2bfbaa429962d80ed1a09fb22075f25",
+ "output_tail": "/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/At_RSPHERE_SynCom.yaml:207: downstream:\nkb/communities/At_RSPHERE_SynCom.yaml:249: downstream:\nkb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml:247: downstream:\nkb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml:344: downstream:\nkb/communities/BioModels_MODEL2204300001_Kefir_Community_Model.yaml:203: downstream:\nkb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml:285: downstream:\nkb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml:324: downstream:\nkb/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml:223: downstream:\nkb/communities/Phylogenetically_Diverse_Denitrifying_SynCom.yaml:76: downstream:\nkb/communities/Phylogenetically_Diverse_Denitrifying_SynCom.yaml:95: downstream:\nkb/communities/Phylogenetically_Diverse_Denitrifying_SynCom.yaml:122: downstream:\nkb/communities/Methylotuvimicrobium_Synechococcus_Gas_Feedstock_Coculture.yaml:157: downstream:\nkb/communities/Methylotuvimicrobium_Synechococcus_Gas_Feedstock_Coculture.yaml:203: downstream:\nkb/communities/Clostridium_Thermocellum_Saccharoperbutylacetonicum_Cellulosic_Butanol_Coculture.yaml:147: downstream:\nkb/communities/Clostridium_Thermocellum_Saccharoperbutylacetonicum_Cellulosic_Butanol_Coculture.yaml:222: downstream:\nkb/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml:135: downstream:\nkb/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml:177: downstream:\nkb/communities/Salar_Atacama_Lithium_Brine_Community.yaml:295: downstream:\nkb/communities/Salar_Atacama_Lithium_Brine_Community.yaml:339: downstream:\nkb/communities/PMI_Variovorax_Thermotolerance_Collection.yaml:330: downstream:\nkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml:199: downstream:\nkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml:267: downstream:\nkb/communities/Lake_Washington_Methane_Oxygen_Methylotroph_Community.yaml:336: downstream:\nkb/communities/Polaromonas_Vanadium_Reduction_Community.yaml:281: downstream:\nkb/communities/Polaromonas_Vanadium_Reduction_Community.yaml:401: downstream:\nkb/communities/Synechococcus_Bacillus_SPC.yaml:120: downstream:\nkb/communities/Synechococcus_Bacillus_SPC.yaml:152: downstream:\nkb/communities/Populus_Salt_Tolerant_SynComs.yaml:65: downstream:\nkb/communities/Populus_Salt_Tolerant_SynComs.yaml:98: downstream:\nkb/communities/Populus_Salt_Tolerant_SynComs.yaml:131: downstream:\nkb/communities/Populus_Salt_Tolerant_SynComs.yaml:155: downstream:\nkb/communities/Methylacidiphilum_Galdieria_Thermoacidophilic_Coculture.yaml:268: downstream:\nkb/communities/Methylacidiphilum_Galdieria_Thermoacidophilic_Coculture.yaml:315: downstream:\n"
+ }
+ ]
+ }
+}
diff --git a/tests/test_causal_review_batch38.py b/tests/test_causal_review_batch38.py
new file mode 100644
index 000000000..181c01b1b
--- /dev/null
+++ b/tests/test_causal_review_batch38.py
@@ -0,0 +1,187 @@
+"""Keep genomic models, attachment proxies and aggregate outcomes distinct."""
+
+import hashlib
+from collections import Counter
+from pathlib import Path
+
+import yaml
+
+ROOT = Path(__file__).resolve().parents[1]
+LEDGER = ROOT / "reports/causal_graph_review/decisions/20261006-three-records-batch38.yaml"
+
+
+def records():
+ ledger = yaml.safe_load(LEDGER.read_text())
+ return ledger, [yaml.safe_load((ROOT / r["path"]).read_text()) for r in ledger["records"]]
+
+
+def test_ensifer_keeps_a_genomic_hypothesis_not_measured_exchange():
+ _, docs = records()
+ model, performance, surface = docs[0]["ecological_interactions"]
+ assert model["scope"] == "PAIRWISE"
+ assert model["source_taxon"]["preferred_term"] == "Ensifer sp. YF2"
+ assert model["target_taxon"]["preferred_term"] == "Sphingobacterium sp. Y2"
+ assert model["description"].startswith("HYPOTHESIZED -")
+ assert model["evidence"][0]["supports"] == "PARTIAL"
+ assert model["evidence"][0]["evidence_source"] == "COMPUTATIONAL"
+ assert [e["target"] for e in model["downstream"]] == [performance["name"]]
+ assert model["downstream"][0]["description"].startswith("HYPOTHESIZED -")
+ assert "not measured donor export" in model["description"]
+ for node in [performance, surface]:
+ assert node["scope"] == "COMMUNITY_LEVEL"
+ assert len(node["participating_taxa"]) == 2
+ assert "downstream" not in node
+ assert all(
+ not {"interaction_type", "biological_processes"} & n.keys()
+ for n in [model, performance, surface]
+ )
+ assert "MF1 is a comparator" in performance["description"]
+ assert "not demonstrated reciprocal fitness" in performance["description"]
+ assert "do not by themselves establish complete mineralization" in surface["description"]
+
+
+def test_cpr_records_a_multisite_framework_and_imperfect_attachment_proxy():
+ _, docs = records()
+ coexist, sites, fractions, attachment, replication = docs[1]["ecological_interactions"]
+ assert "eight Northern California" in coexist["description"]
+ assert "not one defined three-member culture" in coexist["description"]
+ assert "founder effects" in sites["description"]
+ assert "not direct taxonomic identification" in fractions["description"]
+ assert "DNA yield and genome-size corrections" in fractions["description"]
+ assert fractions["evidence"][0]["supports"] == "PARTIAL"
+ assert fractions["evidence"][0]["evidence_source"] == "COMPUTATIONAL"
+ for node in [coexist, sites, fractions, attachment]:
+ assert len(node["participating_taxa"]) == 3
+ assert len(replication["participating_taxa"]) == 2
+ assert all("interaction_type" not in n for n in docs[1]["ecological_interactions"])
+ assert all("downstream" not in n for n in [coexist, sites, fractions, replication])
+ assert "2026-10-02" in docs[1]["discussions"][-1]["rationale"]
+ assert "separate Oak Ridge groundwater" in docs[1]["discussions"][-1]["rationale"]
+
+
+def test_cpr_replication_does_not_include_archaea_or_prove_host_neutrality():
+ _, docs = records()
+ *_, attachment, replication = docs[1]["ecological_interactions"]
+ assert [e["target"] for e in attachment["downstream"]] == [replication["name"]]
+ assert attachment["downstream"][0]["description"].startswith("HYPOTHESIZED -")
+ assert "not selectively perturbed" in attachment["downstream"][0]["description"]
+ assert "inferred from size" in attachment["description"]
+ assert [p["term"]["id"] for p in attachment["biological_processes"]] == ["GO:0007155"]
+ assert "three of four" in replication["description"]
+ assert "average genome-replication state" in replication["description"]
+ assert "not a single-cell growth rate or doubling time" in replication["description"]
+ assert "Archaea were excluded" in replication["description"]
+ assert "host fitness was not measured" in replication["description"]
+ assert "biological_processes" not in replication
+ assert all(e["evidence_source"] == "COMPUTATIONAL" for e in replication["evidence"])
+ assert all(e["supports"] == "PARTIAL" for e in replication["evidence"][:2])
+
+
+def test_euglena_profiles_are_intrinsic_without_specific_tocopherol_export():
+ _, docs = records()
+ eg, cp, complement, output = docs[2]["ecological_interactions"]
+ for node in [eg, cp]:
+ assert node["scope"] == "PAIRWISE"
+ assert (
+ not {"interaction_type", "target_taxon", "participating_taxa", "downstream"}
+ & node.keys()
+ )
+ assert node["description"].startswith("PARTIAL -")
+ assert all(e["supports"] == "PARTIAL" for e in node["evidence"])
+ assert all(e["evidence_source"] == "COMPUTATIONAL" for e in node["evidence"])
+ assert eg["source_taxon"]["preferred_term"] == "Euglena gracilis"
+ assert cp["source_taxon"]["preferred_term"] == "Chlorella pyrenoidosa"
+ assert cp["source_taxon"]["term"] == {
+ "id": "NCBITaxon:3078",
+ "label": "Auxenochlorella pyrenoidosa",
+ }
+ assert "metabolites" not in eg
+ assert "alpha-tocopherol was exported" in eg["description"]
+ assert output["metabolites"][0]["term"]["id"] == "CHEBI:22470"
+ assert complement["description"].startswith("HYPOTHESIZED -")
+
+
+def test_microalgal_total_output_does_not_establish_reciprocal_fitness():
+ _, docs = records()
+ _, _, complement, output = docs[2]["ecological_interactions"]
+ assert [e["target"] for e in complement["downstream"]] == [output["name"]]
+ assert complement["downstream"][0]["description"].startswith("HYPOTHESIZED -")
+ assert all(e["supports"] == "PARTIAL" for e in complement["evidence"])
+ assert "downstream" not in output
+ for node in [complement, output]:
+ assert node["scope"] == "COMMUNITY_LEVEL"
+ assert len(node["participating_taxa"]) == 2
+ assert "interaction_type" not in node
+ assert "3:7 coculture in TAP" in output["description"]
+ assert "do not establish that both species benefit" in output["description"]
+ assert "exogenous alpha-lipoic acid" in output["description"]
+ assert "not proof of endogenous cross-feeding" in output["description"]
+
+
+def test_batch38_canonical_participants_anchors_history_and_hashes():
+ ledger, docs = records()
+ for row, doc in zip(ledger["records"], docs, strict=True):
+ canonical = {
+ (t["taxon_term"]["term"]["id"], t["taxon_term"]["preferred_term"]): t["taxon_term"]
+ for t in doc["taxonomy"]
+ }
+ names = {n["name"] for n in doc["ecological_interactions"]}
+ for node in doc["ecological_interactions"]:
+ terms = node.get("participating_taxa", []) + [
+ node[k] for k in ["source_taxon", "target_taxon"] if k in node
+ ]
+ for term in terms:
+ assert (
+ term["term"] == canonical[(term["term"]["id"], term["preferred_term"])]["term"]
+ )
+ assert all(
+ e["target"] in names and e["target"] != node["name"]
+ for e in node.get("downstream", [])
+ )
+ assert len(doc["discussions"]) == 1
+ gap = doc["discussions"][0]
+ assert gap["kind"] == "KNOWLEDGE_GAP" and gap["status"] == "OPEN"
+ assert set(gap["attaches_to"]) == {"ecological_interactions#" + n for n in names}
+ assert row["curation_events_added"] == 1 and len(row["history_files"]) == 1
+ assert doc["curation_history"][-1]["llm_assisted"] is True
+ assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"]
+
+
+def test_batch38_all_nodes_and_arrows_have_explicit_dispositions():
+ ledger, docs = records()
+ assert ledger["independent_approval"] is False and ledger["issues"] == [1438, 1439, 1440]
+ assert sum(len(r["node_decisions"]) for r in ledger["records"]) == 12
+ assert all(
+ not r["removed_node_decisions"] and not r["renamed_nodes"] for r in ledger["records"]
+ )
+ assert sum(len(r["retained_edge_decisions"]) for r in ledger["records"]) == 3
+ assert sum(len(r["removed_edge_decisions"]) for r in ledger["records"]) == 3
+ for row, doc in zip(ledger["records"], docs, strict=True):
+ assert row["status"] == "reviewed"
+ assert Counter(d["node"] for d in row["node_decisions"]) == Counter(
+ n["name"] for n in doc["ecological_interactions"]
+ )
+ assert {(e["source"], e["target"]) for e in row["edges_before"]} == {
+ (e["source"], e["target"]) for e in row["edges_after"] + row["removed_edge_decisions"]
+ }
+ assert len(row["edges_after"]) == 1
+ assert row["edges_after"][0]["description"].startswith("HYPOTHESIZED -")
+ for path, digest in ledger["reference_cache_original_hashes"].items():
+ assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == digest
+
+
+def test_batch38_does_not_certify_nongraph_fields_or_unread_sources():
+ ledger, docs = records()
+ assert ledger["open_nongraph_followups"] == [1441, 1442, 1443]
+ assert ledger["open_graph_research"] == []
+ assert "no_provider_job_or_charge" in ledger["edison"]["status"]
+ assert docs[0]["taxonomy"][0]["taxon_term"]["gtdb_grounding_status"] == "AMBIGUOUS"
+ assert len(docs[0]["taxonomy"]) == 2
+ assert "paywalled" in docs[0]["growth_media"][0]["preparation_notes"]
+ source = ledger["records"][0]["source_review"]["PMID:41996795"]["scope"]
+ assert "Open access" in source and "retrieval returned403" in source
+ assert "Remaining main body" in ledger["records"][1]["source_review"]["PMID:32252814"]["scope"]
+ cache = (ROOT / "references_cache/PMID_33495623.md").read_text()
+ assert "content_type: abstract_only" in cache and "OPEN-ACCESS FULL TEXT" in cache
+ assert ledger["issue_deduplication"]["ignored_hidden_local_files_included"] is True
+ assert ledger["issue_deduplication"]["comments_exhaustive"] is False