From d080a43935e14fd680da6271a65b3398fcd99f52 Mon Sep 17 00:00:00 2001
From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com>
Date: Tue, 6 Oct 2026 15:33:09 -0700
Subject: [PATCH] Bound regolith, lupin and MAMC causal claims
---
...phate_Solubilizing_Bacteria_Nicotiana.html | 224 +++--
.../Lupinus_SC7_Rhizosphere_SynCom.html | 209 ++++-
docs/communities/MAMC_M48_Lignocellulose.html | 279 +-----
.../2026-10-06T222317Z-codex-545fd8.yaml | 25 +
.../2026-10-06T222317Z-codex-eeec4c.yaml | 25 +
.../2026-10-06T222317Z-codex-086b3f.yaml | 24 +
...phate_Solubilizing_Bacteria_Nicotiana.yaml | 183 ++--
.../Lupinus_SC7_Rhizosphere_SynCom.yaml | 270 +++++-
kb/communities/MAMC_M48_Lignocellulose.yaml | 166 ++--
reports/causal_graph_review/README.md | 23 +
.../adversarial-review-20261006-batch64.yaml | 190 ++++
.../20261006-assay-boundaries-batch64.yaml | 217 +++++
reports/causal_graph_review/inventory.tsv | 6 +-
reports/causal_graph_review/summary.json | 10 +-
.../validation-20261006-batch64.json | 832 ++++++++++++++++++
tests/test_causal_review_batch64.py | 142 +++
tests/test_participating_taxa.py | 2 +
17 files changed, 2241 insertions(+), 586 deletions(-)
create mode 100644 history/records/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana/2026-10-06T222317Z-codex-545fd8.yaml
create mode 100644 history/records/Lupinus_SC7_Rhizosphere_SynCom/2026-10-06T222317Z-codex-eeec4c.yaml
create mode 100644 history/records/MAMC_M48_Lignocellulose/2026-10-06T222317Z-codex-086b3f.yaml
create mode 100644 reports/causal_graph_review/adversarial-review-20261006-batch64.yaml
create mode 100644 reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
create mode 100644 reports/causal_graph_review/validation-20261006-batch64.json
create mode 100644 tests/test_causal_review_batch64.py
diff --git a/docs/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.html b/docs/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.html
index bd929570f..c0beb8fbc 100644
--- a/docs/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.html
+++ b/docs/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.html
@@ -703,7 +703,7 @@
"attachment of PSBs to the regolith simulant particles was also an important factor in the dissociation of insoluble inorganic phosphorus"
-
-
-
-
-
-
The Stenotrophomonas, Paenibacillus, Microbacterium, Chryseobacterium, and Brevundimonas MAMC-M48 consortium was selected as the strongest five-member degrader, while the specific partner interaction routes remain unresolved by this screen.
-
-
-
-
-
-
-
Metabolites:
cellulose
@@ -867,29 +743,6 @@
MAMC-M48 Lignocellulose Degradation
-
Biological Processes:
-
-
- -
- cellulose catabolic process
- (GO:0030245)
-
-
- -
- xylan catabolic process
- (GO:0045493)
-
-
- -
- interspecies interaction between organisms
- (GO:0044419)
-
-
-
-
@@ -932,6 +785,25 @@
Evidence
+
+ Knowledge gaps & discussions (1)
+
+
+
+ KNOWLEDGE_GAP
+ OPEN
+ Which M48 partner activities account for the observed fraction changes?
+
+
Retain the M48 endpoint and zero arrows; remove two procedure nodes without restoring previously removed workflow arrows. Metabolic functional groups and isolate secretome assays guide selection but do not prove division of labor in M48. The50.6% value is a mean of three FTIR-derived fraction-change estimates, not50.6% each or gravimetric carbon loss. Table2 identification strings are 16S-based labels; exact isolate-to-culture/genome identity needs reconciliation. Main text and Tables2/3 read, not image-only Table1 cells, original figure pixels, supplementary files or raw measurements. #1564 separately tracks canonical labels, inoculum metadata and non-graph endpoint wording; approximately3e4 cells/mL per strain refers to the eighteen-strain control, not all five-member consortia.
+
+
Attaches to: ecological_interactions#MAMC-M48 Lignocellulose Degradation
+
+
+
+
+
+
+
@@ -1366,7 +1238,7 @@
Evidence
(function() {
var intId = "interaction:0";
- var intType = "NICHE_PARTITIONING";
+ var intType = "UNKNOWN";
var metabolites = [];
@@ -1379,51 +1251,11 @@
Evidence
var processes = [];
-
- processes.push("cellulose catabolic process");
-
- processes.push("xylan catabolic process");
-
-
- var evidenceCount = 1;
-
- nodes.push({
- id: intId,
- label: "Sugarcane Lignocellulose Enrichment",
- type: "interaction",
- interactionType: intType,
- metabolites: metabolites,
- processes: processes,
- evidenceCount: evidenceCount
- });
-
-
-
-
- })();
-
- (function() {
- var intId = "interaction:1";
- var intType = "NICHE_PARTITIONING";
- var metabolites = [];
-
-
- metabolites.push("lignocellulose");
-
-
- var processes = [];
-
-
- processes.push("cellulose catabolic process");
-
- processes.push("interspecies interaction between organisms");
-
-
- var evidenceCount = 1;
+ var evidenceCount = 2;
nodes.push({
id: intId,
- label: "Functional-Group Reductive MAMC Screening",
+ label: "MAMC-M48 Lignocellulose Degradation",
type: "interaction",
interactionType: intType,
metabolites: metabolites,
@@ -1434,46 +1266,25 @@
Evidence
- })();
+ var participantKeys = [
- (function() {
- var intId = "interaction:2";
- var intType = "NICHE_PARTITIONING";
- var metabolites = [];
+ "Stenotrophomonas maltophilia JN40",
+ "Paenibacillus sp. PALXIL05",
- metabolites.push("cellulose");
+ "Microbacterium sp. UYFA68",
- metabolites.push("xylan");
+ "Chryseobacterium taiwanense DUCC3723",
- metabolites.push("lignin");
+ "Brevundimonas sp. R3"
-
- var processes = [];
-
-
- processes.push("cellulose catabolic process");
-
- processes.push("xylan catabolic process");
-
- processes.push("interspecies interaction between organisms");
-
-
- var evidenceCount = 2;
-
- nodes.push({
- id: intId,
- label: "MAMC-M48 Lignocellulose Degradation",
- type: "interaction",
- interactionType: intType,
- metabolites: metabolites,
- processes: processes,
- evidenceCount: evidenceCount
+ ];
+ participantKeys.forEach(function(key) {
+ if (taxonNodeIds[key]) {
+ links.push({ source: taxonNodeIds[key], target: intId });
+ }
});
-
-
-
})();
@@ -1495,7 +1306,7 @@
Evidence
var svg = d3.select("#network-svg");
var width = container.clientWidth - 32;
// Dynamic height based on node count: minimum 500px, add 40px per node
- var nodeCount = 8;
+ var nodeCount = 6;
var height = Math.max(500, 400 + nodeCount * 20);
svg.attr("width", width).attr("height", height);
diff --git a/history/records/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana/2026-10-06T222317Z-codex-545fd8.yaml b/history/records/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana/2026-10-06T222317Z-codex-545fd8.yaml
new file mode 100644
index 000000000..50723b282
--- /dev/null
+++ b/history/records/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana/2026-10-06T222317Z-codex-545fd8.yaml
@@ -0,0 +1,25 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml
+ slug: Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana
+session:
+ id: 2026-10-06T222317Z-codex-545fd8
+ timestamp: '2026-10-06T22:23:17Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1561
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Separate regolith attachment, phosphorus and living-host outcomes from proposed
+ mediation.
+ details: Source-based self-adversarial review. reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
diff --git a/history/records/Lupinus_SC7_Rhizosphere_SynCom/2026-10-06T222317Z-codex-eeec4c.yaml b/history/records/Lupinus_SC7_Rhizosphere_SynCom/2026-10-06T222317Z-codex-eeec4c.yaml
new file mode 100644
index 000000000..70337f634
--- /dev/null
+++ b/history/records/Lupinus_SC7_Rhizosphere_SynCom/2026-10-06T222317Z-codex-eeec4c.yaml
@@ -0,0 +1,25 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml
+ slug: Lupinus_SC7_Rhizosphere_SynCom
+session:
+ id: 2026-10-06T222317Z-codex-eeec4c
+ timestamp: '2026-10-06T22:23:17Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1562
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Scope SC-7 growth, transcription and assembly observations to the tested assays
+ and input roster.
+ details: Source-based self-adversarial review. reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
diff --git a/history/records/MAMC_M48_Lignocellulose/2026-10-06T222317Z-codex-086b3f.yaml b/history/records/MAMC_M48_Lignocellulose/2026-10-06T222317Z-codex-086b3f.yaml
new file mode 100644
index 000000000..7807fd085
--- /dev/null
+++ b/history/records/MAMC_M48_Lignocellulose/2026-10-06T222317Z-codex-086b3f.yaml
@@ -0,0 +1,24 @@
+history_version: 1
+target:
+ kind: record
+ path: kb/communities/MAMC_M48_Lignocellulose.yaml
+ slug: MAMC_M48_Lignocellulose
+session:
+ id: 2026-10-06T222317Z-codex-086b3f
+ timestamp: '2026-10-06T22:23:17Z'
+ actors:
+ - type: ai_agent
+ name: codex
+ model: unspecified
+ agent_tool: codex
+links:
+ issues:
+ - https://github.com/CultureBotAI/CommunityMech/issues/1563
+events:
+- type: EDIT
+ outcome: changed
+ sections:
+ - interactions
+ - discussions
+ summary: Remove MAMC procedure nodes and bound the retained M48 FTIR endpoint.
+ details: Source-based self-adversarial review. reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
diff --git a/kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml b/kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml
index 11fd5eed6..b52471e39 100644
--- a/kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml
+++ b/kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml
@@ -254,15 +254,13 @@ taxonomy:
snippet: B. megaterium (AS1.217), B. subtilis (CMCC 63501), P. fluorescens (ATCC 13525), B. licheniformis (ATCC 11946), and B. mucilaginosus (AS1.232)
explanation: Names Bacillus licheniformis (ATCC 11946) as one of the five tested PSB strains.
ecological_interactions:
-- name: PSB attachment to regolith particles concentrates phosphate dissolution
- description: >
- The effective PSBs attached to lunar regolith simulant particles after the
- early planktonic-growth phase, creating a particle-associated microbial pool
- that tracked dissociation of insoluble inorganic phosphorus. The attachment
- trait complements organic-acid secretion by binding the cells to mineral
- particles and creating extracellular microenvironments where protons and
- organic acids can decompose phosphate minerals.
- interaction_type: COLONIZATION_FACILITATION
+- name: PSB Particle-Associated Biomass Phosphorus
+ description: In five separate individual-strain flask treatments, attached microbial biomass phosphorus tracked
+ inferred insoluble-phosphorus dissociation. The attached pool increased after day 4 for B. mucilaginosus, B.
+ megaterium and P. fluorescens, while most microbial biomass phosphorus remained suspended. This is an operational
+ biomass-P and regression observation, not direct biofilm imaging or a selective attachment perturbation. HYPOTHESIZED
+ - particle-associated biofilms could concentrate proton or organic-acid action, but the proposed bacteria-mineral
+ microenvironment was not demonstrated. The five participants identify the tested panel, not a five-strain coculture.
scope: COMMUNITY_LEVEL
participating_taxa:
- preferred_term: Bacillus mucilaginosus (AS1.232)
@@ -277,90 +275,105 @@ ecological_interactions:
term:
id: NCBITaxon:294
label: Pseudomonas fluorescens
- biological_processes:
- - preferred_term: biofilm formation
+ - preferred_term: Bacillus subtilis (CMCC 63501)
+ term:
+ id: NCBITaxon:1423
+ label: Bacillus subtilis
+ - preferred_term: Bacillus licheniformis (ATCC 11946)
term:
- id: GO:0042710
- label: biofilm formation
- downstream:
- - target: Phosphorus solubilization from lunar regolith simulant via organic-acid secretion
- description: Particle attachment forms a stable bacteria-mineral interface
- that supports local proton and organic-acid attack on insoluble phosphate
- minerals in the regolith simulant.
+ id: NCBITaxon:1402
+ label: Bacillus licheniformis
evidence:
- reference: PMID:37945659
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: attachment of PSBs to the regolith simulant particles was also an important factor in the dissociation of insoluble inorganic phosphorus
- explanation: Links PSB attachment to regolith particles with insoluble-phosphorus dissociation.
- - reference: PMID:37945659
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: developing biofilms to tightly bind with mineral particles, forming a stable bacteria-mineral complex
- explanation: Supports biofilm-like particle binding as an inferred mechanism concentrating mineral dissolution.
-- name: Phosphorus solubilization from lunar regolith simulant via organic-acid secretion
- description: >
- The phosphorus-solubilizing bacteria synthesize organic acids from carbon
- sources in the medium, lowering the pH and chelating metal ions in insoluble
- phosphate minerals (Ca3(PO4)2, FePO4, AlPO4), thereby dissociating insoluble
- inorganic phosphorus and increasing the soluble/available phosphorus available
- to plants. This microbe-mineral process, driven by the whole PSB treatment, is
- the core mechanism improving the fertility of the lunar regolith simulant.
- interaction_type: CROSS_FEEDING
+ snippet: Suspended microbial biomass phosphorus was always much higher than attached microbial biomass phosphorus
+ among all five PSB treatments
+ explanation: Supports the measured operational phosphorus pools in separate-strain flasks, not demonstrated
+ biofilm formation or attachment-mediated dissolution.
+- name: PSB Phosphorus Mobilization In Regolith Simulant
+ description: Individual-strain flasks with terrestrial CAS-1-type regolith simulant and glucose broth showed increased
+ total available phosphorus for B. mucilaginosus, B. megaterium and P. fluorescens; B. subtilis and B. licheniformis
+ had little dissociation activity. Total available phosphorus includes dissolved, biomass and adsorbed pools
+ and is not identical to freely dissolved inorganic phosphate. Low pH and attached biomass phosphorus correlated
+ with inferred dissociation. HYPOTHESIZED - acidification and organic-acid chelation may contribute, but specific
+ secreted oxalate or citrate, mediator necessity and interspecies nutrient transfer were not measured. The five
+ canonical participants are separate tested strains, not an experimentally demonstrated cross-feeding community.
scope: COMMUNITY_LEVEL
metabolites:
- preferred_term: phosphate
term:
id: CHEBI:18367
label: phosphate(3-)
- - preferred_term: oxalic acid
- term:
- id: CHEBI:16995
- label: oxalic acid
- - preferred_term: citrate
- term:
- id: CHEBI:16947
- label: citrate(3-)
- downstream:
- - target: Phosphorus-enabled promotion of Nicotiana benthamiana growth
- description: Organic-acid phosphate solubilization raises the available
- phosphorus pool in the regolith simulant that drives the downstream
- Nicotiana growth response.
+ notes: Phosphorus context; measured total available phosphorus pools are not equivalent to freely dissolved
+ phosphate or demonstrated interspecies transfer.
evidence:
- reference: PMID:37945659
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: PSBs to synthesize organic acids by using carbon sources in the medium to reduce regolith pH, thus activating insoluble inorganic phosphorus in lunar regolith simulant
- explanation: States the organic-acid / pH-reduction mechanism of phosphorus mobilization from the simulant.
- - reference: PMID:37945659
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: organic acid ions also facilitate the dissolution of phosphate minerals through chelating with the metal ions in Ca3(PO4)2, FePO4, AlPO4
- explanation: Documents metal-ion chelation of insoluble phosphate minerals by secreted organic acids.
-- name: Phosphorus-enabled promotion of Nicotiana benthamiana growth
- description: >
- By raising the available phosphorus content of the lunar regolith simulant,
- the PSB treatment promotes the growth of the higher plant Nicotiana benthamiana,
- a plant-beneficial outcome that is strongest when the simulant is pre-cultured
- with PSBs 18 days before sowing.
- interaction_type: COLONIZATION_FACILITATION
+ snippet: the total available phosphorus capacity could be significantly increased by B. mucilaginosus, B. megaterium,
+ and P. fluorescens
+ explanation: Supports the positive treatment-associated phosphorus endpoint; regressions and background literature
+ do not identify the secreted acid or selectively establish mediation.
+ participating_taxa:
+ - preferred_term: Bacillus mucilaginosus (AS1.232)
+ term:
+ id: NCBITaxon:61624
+ label: Paenibacillus mucilaginosus
+ - preferred_term: Bacillus megaterium (AS1.217)
+ term:
+ id: NCBITaxon:1404
+ label: Priestia megaterium
+ - preferred_term: Pseudomonas fluorescens (ATCC 13525)
+ term:
+ id: NCBITaxon:294
+ label: Pseudomonas fluorescens
+ - preferred_term: Bacillus subtilis (CMCC 63501)
+ term:
+ id: NCBITaxon:1423
+ label: Bacillus subtilis
+ - preferred_term: Bacillus licheniformis (ATCC 11946)
+ term:
+ id: NCBITaxon:1402
+ label: Bacillus licheniformis
+- name: Nicotiana Response To PSB-Conditioned Regolith Simulant
+ description: Living Nicotiana benthamiana plants grew better on simulant conditioned with the three effective
+ PSBs, with the strongest measured response after 18 days of pretreatment. At 24 days after sowing, fresh weight
+ and chlorophyll were 315.92% and 204.08% of the sterilized control, respectively; these are percentages of control,
+ not percentage increases. Without pretreatment, seedling length at day 6 was only 53.28% of control. The three
+ strains were mixed 1:1:1 by volume; blank and steam-killed controls were not pre-cultured. MS nutrient supplementation
+ from day 6 contributed phosphorus. These results support a conditioning-treatment effect, not exclusive phosphorus
+ mediation, universal early benefit or actual lunar-environment performance. The listed participants are inoculants,
+ not the missing canonical plant host.
scope: COMMUNITY_LEVEL
metabolites:
- preferred_term: phosphate
term:
id: CHEBI:18367
label: phosphate(3-)
+ notes: Proposed nutrient contributor; the plant experiment does not selectively establish exclusive phosphorus
+ mediation.
evidence:
- reference: PMID:37945659
supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: The phosphorus-solubilizing bacteria treatment improves the available phosphorus content of the regolith simulant, promoting the growth of Nicotiana benthamiana
- explanation: Links PSB-driven available-phosphorus increase to promotion of Nicotiana benthamiana growth.
- - reference: PMID:37945659
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: the growth of Nicotiana benthamiana could be most improved by treating the regolith simulant with PSBs 18 days before sowing
- explanation: Documents the strongest plant-growth improvement from an 18-day pre-culture treatment.
+ evidence_source: IN_VIVO
+ snippet: the growth of Nicotiana benthamiana could be most improved by treating the regolith simulant with PSBs
+ 18 days before sowing
+ explanation: Supports the living-host conditioning result; Table 3, Methods and MS supplementation qualify the
+ outcome and causal interpretation.
+ participating_taxa:
+ - preferred_term: Bacillus mucilaginosus (AS1.232)
+ term:
+ id: NCBITaxon:61624
+ label: Paenibacillus mucilaginosus
+ - preferred_term: Bacillus megaterium (AS1.217)
+ term:
+ id: NCBITaxon:1404
+ label: Priestia megaterium
+ - preferred_term: Pseudomonas fluorescens (ATCC 13525)
+ term:
+ id: NCBITaxon:294
+ label: Pseudomonas fluorescens
environmental_factors:
- name: Lunar regolith simulant substrate
value: CAS-1 lunar soil simulant
@@ -520,7 +533,31 @@ curation_history:
curator: codex
action: REPAIR_OBSOLETE_GO_PROCESS
llm_assisted: true
- changes: Removed the optional obsolete GO:0016053 descriptor. Its only explicit GO replacement is GO:0008152
- (metabolic process), which the existing no-vacuous-annotations policy rejects. Retained the specific
- biological meaning in the unchanged interaction prose, metabolites, downstream links, and evidence
- without inventing a narrower ontology mapping.
+ changes: Removed the optional obsolete GO:0016053 descriptor. Its only explicit GO replacement is GO:0008152 (metabolic
+ process), which the existing no-vacuous-annotations policy rejects. Retained the specific biological meaning
+ in the unchanged interaction prose, metabolites, downstream links, and evidence without inventing a narrower
+ ontology mapping.
+- timestamp: '2026-10-06T22:23:15Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Separate regolith attachment, phosphorus and living-host outcomes from proposed mediation. Issue #1561;
+ reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml'
+ llm_assisted: true
+discussions:
+- discussion_id: nicotiana_assay_identity_and_mediation
+ prompt: Which processes mediate regolith phosphorus mobilization and the time-dependent plant response?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#PSB Particle-Associated Biomass Phosphorus
+ - ecological_interactions#PSB Phosphorus Mobilization In Regolith Simulant
+ - ecological_interactions#Nicotiana Response To PSB-Conditioned Regolith Simulant
+ rationale: 'Retain measured attachment pools, phosphorus mobilization and plant outcomes without the two untested
+ mediation arrows. Separate five individual-strain flask treatments from three-strain plant inoculation. Biofilms
+ and named organic acids are hypotheses; correlated phosphorus pools are not a selective mediator test. MS supplementation
+ after day6, unconditioned controls and the adverse early unconditioned-treatment response limit exclusive-P
+ attribution. Full primary body and embedded tables were read. The complete 2026 correction PMID:42304108 changes
+ Fig1 particle-size labels, not the biology; no original figure pixels or separate supplementary measurement
+ methods were audited. Non-graph mechanism, host, medium and assay metadata remain under #1564.'
+ posed_by: codex
+ posed_date: '2026-10-06'
diff --git a/kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml b/kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml
index 02e716c18..09728cc42 100644
--- a/kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml
+++ b/kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml
@@ -302,61 +302,215 @@ taxonomy:
explanation: Identifies Variovorax sp. LARHSF232 as an SC-7 member.
ecological_interactions:
- name: SC-7 high-complexity lupin response
- description: >
- The most complex consortium, SC-7, was the SynCom associated with the
- highest lupin growth increase and broad host transcriptional responses, but
- the assay varied richness and membership simultaneously and therefore does
- not separate a pure diversity effect from the effect of particular strains.
+ description: The twelve-strain SC-7 inoculum produced the strongest reported lupin growth response in both gnotobiotic
+ FlowPot and non-sterile CAS-soil experiments. The panel varied richness and strain composition together, so
+ a pure diversity effect is not isolated. The twelve listed canonical participants match the inoculated strain
+ codes in main Table 1, including both Streptomyces strains; they do not represent the missing host or all background
+ soil taxa. Input membership does not establish dominance or equal abundance at harvest.
scope: COMMUNITY_LEVEL
evidence:
- reference: PMID:42602126
supports: SUPPORT
evidence_source: IN_VIVO
- snippet: >
- Given that SC-7 was the most complex SynCom and led to the highest
- increase in plant growth
+ snippet: 'Given that SC-7 was the most complex SynCom and led to the highest increase in plant growth
+
+ '
explanation: Identifies SC-7 as the most growth-promoting SynCom in the series.
- reference: PMID:42602126
supports: SUPPORT
evidence_source: IN_VIVO
- snippet: >
- Because community complexity and strain composition varied simultaneously
- among SynComs, the individual contributions of these factors cannot be
- disentangled under the conditions tested.
- explanation: >
- Preserves the paper's caution that the SC-7 response is not evidence for
- a richness-only causal effect.
+ snippet: 'Because community complexity and strain composition varied simultaneously among SynComs, the individual
+ contributions of these factors cannot be disentangled under the conditions tested.
+
+ '
+ explanation: 'Preserves the paper''s caution that the SC-7 response is not evidence for a richness-only causal
+ effect.
+
+ '
+ participating_taxa:
+ - preferred_term: Bradyrhizobium sp. CAR08
+ term:
+ id: NCBITaxon:374
+ label: Bradyrhizobium
+ - preferred_term: Micromonospora sp. Lupac 08
+ term:
+ id: NCBITaxon:1873
+ label: Micromonospora
+ - preferred_term: Caulobacter sp. LARHSG274
+ term:
+ id: NCBITaxon:75
+ label: Caulobacter
+ - preferred_term: Kribbella sp. LARHCF250
+ term:
+ id: NCBITaxon:182639
+ label: Kribbella
+ - preferred_term: Pseudomonas sp. LARHCG127
+ term:
+ id: NCBITaxon:286
+ label: Pseudomonas
+ - preferred_term: Pseudoxanthomonas sp. LARHCG66
+ term:
+ id: NCBITaxon:83618
+ label: Pseudoxanthomonas
+ - preferred_term: Rhizobium sp. LARHSG275
+ term:
+ id: NCBITaxon:379
+ label: Rhizobium
+ - preferred_term: Sphingopyxis sp. LARHCG72
+ term:
+ id: NCBITaxon:165697
+ label: Sphingopyxis
+ - preferred_term: Stenotrophomonas sp. LARHCG68
+ term:
+ id: NCBITaxon:40323
+ label: Stenotrophomonas
+ - preferred_term: Streptomyces sp. LARHCF249
+ term:
+ id: NCBITaxon:1883
+ label: Streptomyces
+ - preferred_term: Streptomyces sp. LARHCF252
+ term:
+ id: NCBITaxon:1883
+ label: Streptomyces
+ - preferred_term: Variovorax sp. LARHSF232
+ term:
+ id: NCBITaxon:34072
+ label: Variovorax
- name: SC-7-associated host transcriptional reprogramming
- description: >
- SC-7 inoculation was associated with up-regulated lupin root pathways for
- signaling, hormone perception, primary and secondary metabolism, defense
- responses, and growth regulation.
+ description: RNA-seq of living lupin roots from the FlowPot experiment associated SC-7 with changes in signaling,
+ hormone perception, defense, and primary and secondary metabolic gene sets. Some pathways were upregulated and
+ others downregulated; this is differential expression and enrichment, not direct hormone production, nitrogen-fixation
+ rate or a demonstrated mediator of growth. Leghemoglobin expression and genomic plant-growth annotations do
+ not independently establish functional flux. The inoculated twelve-strain roster does not resolve each strain
+ contribution.
scope: COMMUNITY_LEVEL
evidence:
- reference: PMID:42602126
supports: SUPPORT
evidence_source: IN_VIVO
- snippet: >
- Upon addition of SC-7, several key pathways related to signalling, hormone
- perception, and primary and secondary metabolism were significantly
- upregulated
- explanation: Supports the host transcriptional response observed after SC-7 inoculation.
+ snippet: 'Upon addition of SC-7, several key pathways related to signalling, hormone perception, and primary
+ and secondary metabolism were significantly upregulated
+
+ '
+ explanation: Supports SC-7-associated root transcriptional changes in the FlowPot experiment; expression is
+ not biochemical activity or selective growth mediation.
+ participating_taxa:
+ - preferred_term: Bradyrhizobium sp. CAR08
+ term:
+ id: NCBITaxon:374
+ label: Bradyrhizobium
+ - preferred_term: Micromonospora sp. Lupac 08
+ term:
+ id: NCBITaxon:1873
+ label: Micromonospora
+ - preferred_term: Caulobacter sp. LARHSG274
+ term:
+ id: NCBITaxon:75
+ label: Caulobacter
+ - preferred_term: Kribbella sp. LARHCF250
+ term:
+ id: NCBITaxon:182639
+ label: Kribbella
+ - preferred_term: Pseudomonas sp. LARHCG127
+ term:
+ id: NCBITaxon:286
+ label: Pseudomonas
+ - preferred_term: Pseudoxanthomonas sp. LARHCG66
+ term:
+ id: NCBITaxon:83618
+ label: Pseudoxanthomonas
+ - preferred_term: Rhizobium sp. LARHSG275
+ term:
+ id: NCBITaxon:379
+ label: Rhizobium
+ - preferred_term: Sphingopyxis sp. LARHCG72
+ term:
+ id: NCBITaxon:165697
+ label: Sphingopyxis
+ - preferred_term: Stenotrophomonas sp. LARHCG68
+ term:
+ id: NCBITaxon:40323
+ label: Stenotrophomonas
+ - preferred_term: Streptomyces sp. LARHCF249
+ term:
+ id: NCBITaxon:1883
+ label: Streptomyces
+ - preferred_term: Streptomyces sp. LARHCF252
+ term:
+ id: NCBITaxon:1883
+ label: Streptomyces
+ - preferred_term: Variovorax sp. LARHSF232
+ term:
+ id: NCBITaxon:34072
+ label: Variovorax
- name: Complex SynCom root and rhizosphere reshaping
- description: >
- More complex Lupinus SynCom inocula, including SC-7, were associated with
- root-associated microbiome shifts, moderate rhizosphere effects, and limited
- bulk-soil effects across sterile and non-sterile tests.
+ description: In non-sterile CAS soil, the SynCom panel including SC-7 was associated with compartment-specific
+ relative microbiome profiles, with the largest reported changes in roots and limited bulk-soil changes. SC-7
+ had lower root Shannon diversity than uninoculated controls. These results must remain separate from gnotobiotic
+ colonization and FlowPot RNA-seq. Genus-level relative profiles are not absolute exclusion or unambiguous persistence
+ of each inoculated strain; changes after computational removal of inoculant-associated ASVs are not a biological
+ knockout. The Results sentence reporting no significant compartment treatment effects conflicts with its reported
+ PERMANOVA p=0.001, so no blanket significance claim is certified here.
scope: COMMUNITY_LEVEL
evidence:
- reference: PMID:42602126
supports: SUPPORT
evidence_source: IN_VIVO
- snippet: >
- SynCom inoculation reshaped root-associated microbiota, moderately
- influenced the rhizosphere, and had limited impact on bulk soil communities.
- explanation: >
- Supports the root, rhizosphere, and soil microbiome shifts associated with
- the Lupinus SynCom inoculation series.
+ snippet: 'SynCom inoculation reshaped root-associated microbiota, moderately influenced the rhizosphere, and
+ had limited impact on bulk soil communities.
+
+ '
+ explanation: Supports the panel-level compartment pattern, not identical effects for every SC-7 taxon, absolute
+ abundance changes or a proven assembly-to-growth pathway.
+ participating_taxa:
+ - preferred_term: Bradyrhizobium sp. CAR08
+ term:
+ id: NCBITaxon:374
+ label: Bradyrhizobium
+ - preferred_term: Micromonospora sp. Lupac 08
+ term:
+ id: NCBITaxon:1873
+ label: Micromonospora
+ - preferred_term: Caulobacter sp. LARHSG274
+ term:
+ id: NCBITaxon:75
+ label: Caulobacter
+ - preferred_term: Kribbella sp. LARHCF250
+ term:
+ id: NCBITaxon:182639
+ label: Kribbella
+ - preferred_term: Pseudomonas sp. LARHCG127
+ term:
+ id: NCBITaxon:286
+ label: Pseudomonas
+ - preferred_term: Pseudoxanthomonas sp. LARHCG66
+ term:
+ id: NCBITaxon:83618
+ label: Pseudoxanthomonas
+ - preferred_term: Rhizobium sp. LARHSG275
+ term:
+ id: NCBITaxon:379
+ label: Rhizobium
+ - preferred_term: Sphingopyxis sp. LARHCG72
+ term:
+ id: NCBITaxon:165697
+ label: Sphingopyxis
+ - preferred_term: Stenotrophomonas sp. LARHCG68
+ term:
+ id: NCBITaxon:40323
+ label: Stenotrophomonas
+ - preferred_term: Streptomyces sp. LARHCF249
+ term:
+ id: NCBITaxon:1883
+ label: Streptomyces
+ - preferred_term: Streptomyces sp. LARHCF252
+ term:
+ id: NCBITaxon:1883
+ label: Streptomyces
+ - preferred_term: Variovorax sp. LARHSF232
+ term:
+ id: NCBITaxon:34072
+ label: Variovorax
environmental_factors:
- name: SC-7 equal-ratio inoculum
value: OD600 1 individual cultures diluted as a 12-member mixture to OD600 0.02
@@ -483,20 +637,38 @@ external_resources:
explanation: Lists the exact primary SC-7 Lupinus SynCom publication.
discussions:
- discussion_id: sc7_richness_vs_membership
- prompt: >
- Which SC-7 phenotypes are caused by increased member richness and which are
- caused by the presence of Bradyrhizobium, Micromonospora, or other specific
- strains in the 12-member mixture?
+ prompt: 'Which SC-7 phenotypes are caused by increased member richness and which are caused by the presence of
+ Bradyrhizobium, Micromonospora, or other specific strains in the 12-member mixture?
+
+ '
kind: KNOWLEDGE_GAP
status: OPEN
attaches_to:
- ecological_interactions#SC-7 high-complexity lupin response
- rationale: >
- The study's SynCom series changes strain richness and strain composition at
- the same time, and the authors state that those contributions cannot be
- disentangled under the tested conditions.
+ rationale: 'The study''s SynCom series changes strain richness and strain composition at the same time, and the
+ authors state that those contributions cannot be disentangled under the tested conditions.
+
+ '
posed_by: codex
posed_date: '2026-09-22'
+- discussion_id: sc7_assay_separation_and_function
+ prompt: Which SC-7 functions mediate host growth and compartment-specific community changes?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#SC-7 high-complexity lupin response
+ - ecological_interactions#SC-7-associated host transcriptional reprogramming
+ - ecological_interactions#Complex SynCom root and rhizosphere reshaping
+ rationale: 'Preserve all three observations and zero arrows. FlowPot root transcriptomics, gnotobiotic strain
+ profiles and non-sterile CAS-soil relative microbiota are different endpoints. Co-occurrence hubs, no agar inhibition
+ zones and gene annotations do not demonstrate facilitation, coexistence, nitrogen-fixation flux or a growth
+ mediator. Main Table1 verifies twelve input strain codes, not dominance or genome/culture identity; two Streptomyces
+ strains share a genus CURIE and must retain distinct preferred names. The existing richness-versus-membership
+ gap stays open. Main text has conflicting PERMANOVA wording/p-value and six-week incubation/eight-week harvest
+ wording; no reanalysis or supplement/raw-data audit was performed. #1564 tracks these and missing-host/role
+ metadata.'
+ posed_by: codex
+ posed_date: '2026-10-06'
metals_present: []
rare_earth_elements_present: []
metal_relevance: NOT_APPLICABLE
@@ -508,9 +680,15 @@ curation_history:
- timestamp: '2026-09-22T23:10:24Z'
curator: codex
action: ADD_COMMUNITY_RECORD
- changes: >
- Added CommunityMech:000427 for the twelve-strain Lupinus SC-7 rhizosphere
- SynCom from PMID:42602126 / doi:10.3389/fpls.2026.1891479, including
- genus-level member curation, FlowPot and non-sterile soil inoculation
+ changes: 'Added CommunityMech:000427 for the twelve-strain Lupinus SC-7 rhizosphere SynCom from PMID:42602126
+ / doi:10.3389/fpls.2026.1891479, including genus-level member curation, FlowPot and non-sterile soil inoculation
conditions, NCBI BioProject links, and scoped plant-response interactions.
+
+ '
+ llm_assisted: true
+- timestamp: '2026-10-06T22:23:16Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Scope SC-7 growth, transcription and assembly observations to the tested assays and input roster. Issue
+ #1562; reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml'
llm_assisted: true
diff --git a/kb/communities/MAMC_M48_Lignocellulose.yaml b/kb/communities/MAMC_M48_Lignocellulose.yaml
index 81f55ca19..c1f6e7ae7 100644
--- a/kb/communities/MAMC_M48_Lignocellulose.yaml
+++ b/kb/communities/MAMC_M48_Lignocellulose.yaml
@@ -135,127 +135,71 @@ taxonomy:
Chryseobacterium taiwanense, and Brevundimonas sp. was found to be the most effective degrading
synthetic community.
ecological_interactions:
-- name: Sugarcane Lignocellulose Enrichment
- description: >
- Soil bacteria were enriched on sugarcane lignocellulose, dereplicated and phenotyped to yield
- 18 degraders spanning four metabolic functional groups for downstream MAMC construction.
+- name: MAMC-M48 Lignocellulose Degradation
+ description: MAMC-M48, containing study isolate IDs 13, 18, 25, 29 and 68, was the best-performing five-member
+ mixture in the tested 65-mixture screen. At 96 hours, calibrated FTIR estimates were 43.01% lignin, 39.65% cellulose
+ and 69.18% hemicellulose change, averaging 50.6%, rather than 50.6% for each fraction. These are fraction-composition
+ estimates, not direct gravimetric mass loss, carbon mineralization or partner-resolved catalytic flux. HYPOTHESIZED
+ - complementary substrate use could contribute, but niche partitioning and directed exchanges were not established.
+ Canonical participants retain source-reported 16S identification labels; their strain-like suffixes are not
+ independently verified culture-strain identities. Enrichment and reductive screening describe selection procedures,
+ not ecological interactions.
scope: COMMUNITY_LEVEL
- interaction_type: NICHE_PARTITIONING
metabolites:
- preferred_term: cellulose
term:
id: CHEBI:18246
label: (1->4)-beta-D-glucan
+ notes: Lignocellulosic substrate context; calibrated FTIR fraction estimates do not identify the individual
+ partner or enzyme responsible.
- preferred_term: xylan
term:
id: CHEBI:37166
label: xylan
+ notes: Lignocellulosic substrate context; calibrated FTIR fraction estimates do not identify the individual
+ partner or enzyme responsible.
- preferred_term: lignin
term:
id: CHEBI:6457
label: lignin
- biological_processes:
- - preferred_term: cellulose catabolic process
- term:
- id: GO:0030245
- label: cellulose catabolic process
- - preferred_term: xylan catabolic process
- term:
- id: GO:0045493
- label: xylan catabolic process
+ notes: Lignocellulosic substrate context; calibrated FTIR fraction estimates do not identify the individual
+ partner or enzyme responsible.
evidence:
- reference: PMID:29392382
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: Following an enrichment of soil bacteria capable of degrading lignocellulose material
- from sugarcane origin, we applied a reductive-screening approach based on molecular
- phenotyping, identification, and metabolic characterization to obtain a selection
- of 18 lignocellulose-degrading strains representing four metabolic functional groups.
- explanation: >
- Defines the enriched strain pool and metabolic grouping that preceded five-member MAMC
- assembly.
-- name: Functional-Group Reductive MAMC Screening
- description: >
- Sixty-five five-species synthetic communities were assembled from the 18 enriched strains while
- varying the number of metabolic functional groups, metabolic potential, and degradation
- capacity.
- scope: COMMUNITY_LEVEL
- interaction_type: NICHE_PARTITIONING
- metabolites:
- - preferred_term: lignocellulose
- term:
- id: CHEBI:180683
- label: lignocellulose
- biological_processes:
- - preferred_term: cellulose catabolic process
- term:
- id: GO:0030245
- label: cellulose catabolic process
- - preferred_term: interspecies interaction between organisms
- term:
- id: GO:0044419
- label: biological process involved in interspecies interaction between organisms
- evidence:
+ snippet: A consortium containing Stenotrophomonas maltophilia, Paenibacillus sp., Microbacterium sp., Chryseobacterium
+ taiwanense, and Brevundimonas sp. was found to be the most effective degrading synthetic community.
+ explanation: Supports the selected five-member mixture and its performance; primary Table3 provides FTIR-based
+ fraction estimates, not a partner mechanism or direct dry-mass loss.
- reference: PMID:29392382
supports: SUPPORT
evidence_source: IN_VITRO
- snippet: We then generated 65 compositional replicates of MAMC containing five species each,
- which vary in the number of functional groups, metabolic potential, and degradation
- capacity.
- explanation: >
- Shows that the five-member consortia were systematically assembled and screened across
- functional-group combinations.
-- name: MAMC-M48 Lignocellulose Degradation
- description: >
- The Stenotrophomonas, Paenibacillus, Microbacterium, Chryseobacterium, and Brevundimonas
- MAMC-M48 consortium was selected as the strongest five-member degrader, while the specific
- partner interaction routes remain unresolved by this screen.
- scope: COMMUNITY_LEVEL
- interaction_type: NICHE_PARTITIONING
- metabolites:
- - preferred_term: cellulose
- term:
- id: CHEBI:18246
- label: (1->4)-beta-D-glucan
- - preferred_term: xylan
+ snippet: Further work would be needed to understand the interactive relationship and metabolic pathways of these
+ consortium partners.
+ explanation: Explicitly leaves partner interaction routes and metabolic pathways unresolved; no niche-partitioning
+ type or directed transfer is inferred.
+ participating_taxa:
+ - preferred_term: Stenotrophomonas maltophilia JN40
term:
- id: CHEBI:37166
- label: xylan
- - preferred_term: lignin
+ id: NCBITaxon:40324
+ label: Stenotrophomonas maltophilia
+ - preferred_term: Paenibacillus sp. PALXIL05
term:
- id: CHEBI:6457
- label: lignin
- biological_processes:
- - preferred_term: cellulose catabolic process
+ id: NCBITaxon:375486
+ label: Paenibacillus sp. PALXIL05
+ - preferred_term: Microbacterium sp. UYFA68
term:
- id: GO:0030245
- label: cellulose catabolic process
- - preferred_term: xylan catabolic process
+ id: NCBITaxon:1605331
+ label: Microbacterium sp. UYFA68
+ - preferred_term: Chryseobacterium taiwanense DUCC3723
term:
- id: GO:0045493
- label: xylan catabolic process
- - preferred_term: interspecies interaction between organisms
+ id: NCBITaxon:363331
+ label: Chryseobacterium taiwanense
+ - preferred_term: Brevundimonas sp. R3
term:
- id: GO:0044419
- label: biological process involved in interspecies interaction between organisms
- evidence:
- - reference: PMID:29392382
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: A consortium containing Stenotrophomonas maltophilia, Paenibacillus sp., Microbacterium sp.,
- Chryseobacterium taiwanense, and Brevundimonas sp. was found to be the most effective degrading
- synthetic community.
- explanation: >
- Names the five genera in MAMC-M48 and reports that this composition was the most effective
- degrading synthetic community in the reductive screen.
- - reference: PMID:29392382
- supports: SUPPORT
- evidence_source: IN_VITRO
- snippet: Further work would be needed to understand the interactive relationship and metabolic
- pathways of these consortium partners.
- explanation: >
- Keeps the graph at community level because the source identifies the winning consortium but
- does not resolve pairwise cross-feeding or syntrophic routes among its members.
+ id: NCBITaxon:1501972
+ label: Brevundimonas sp. R3
environmental_factors:
- name: Substrate
value: sugarcane waste
@@ -487,9 +431,31 @@ curation_history:
- timestamp: '2026-10-02T05:57:41Z'
curator: codex
action: PRUNE_CAUSAL_GRAPH_WORKFLOW_EDGES
- changes: >
- Removed two downstream edges that linked sugarcane-degrader enrichment to
- reductive five-member MAMC screening and linked that screen to the curated
- MAMC-M48 degradation phenotype as study workflow rather than community
- causal structure.
+ changes: 'Removed two downstream edges that linked sugarcane-degrader enrichment to reductive five-member MAMC
+ screening and linked that screen to the curated MAMC-M48 degradation phenotype as study workflow rather than
+ community causal structure.
+
+ '
+ llm_assisted: true
+- timestamp: '2026-10-06T22:23:17Z'
+ curator: codex
+ action: REVIEW_CAUSAL_GRAPH
+ changes: 'Remove MAMC procedure nodes and bound the retained M48 FTIR endpoint. Issue #1563; reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml'
llm_assisted: true
+discussions:
+- discussion_id: mamc_m48_fraction_endpoints_and_partner_roles
+ prompt: Which M48 partner activities account for the observed fraction changes?
+ kind: KNOWLEDGE_GAP
+ status: OPEN
+ attaches_to:
+ - ecological_interactions#MAMC-M48 Lignocellulose Degradation
+ rationale: 'Retain the M48 endpoint and zero arrows; remove two procedure nodes without restoring previously removed
+ workflow arrows. Metabolic functional groups and isolate secretome assays guide selection but do not prove division
+ of labor in M48. The50.6% value is a mean of three FTIR-derived fraction-change estimates, not50.6% each or
+ gravimetric carbon loss. Table2 identification strings are 16S-based labels; exact isolate-to-culture/genome
+ identity needs reconciliation. Main text and Tables2/3 read, not image-only Table1 cells, original figure pixels,
+ supplementary files or raw measurements. #1564 separately tracks canonical labels, inoculum metadata and non-graph
+ endpoint wording; approximately3e4 cells/mL per strain refers to the eighteen-strain control, not all five-member
+ consortia.'
+ posed_by: codex
+ posed_date: '2026-10-06'
diff --git a/reports/causal_graph_review/README.md b/reports/causal_graph_review/README.md
index 500867fab..107a72442 100644
--- a/reports/causal_graph_review/README.md
+++ b/reports/causal_graph_review/README.md
@@ -5,6 +5,29 @@ source-based self-adversarial review. These records are not independent approval
or proof that every graph is complete. The current inventory and summary distinguish
`reviewed`, `pending` and `needs_research`.
+## Batch64: Regolith, Lupin And MAMC Assay Boundaries
+
+[Decisions](decisions/20261006-assay-boundaries-batch64.yaml),
+[validation](validation-20261006-batch64.json) and
+[self-adversarial review](adversarial-review-20261006-batch64.yaml) account for
+all nine original nodes and two arrows. Seven observations remain; two MAMC
+procedure nodes and two Nicotiana mediation arrows are removed.
+
+Nicotiana retains phosphorus mobilization and time-dependent plant responses,
+including the adverse early response without pretreatment. Biofilms, named acids
+and exclusive phosphorus mediation remain untested. Lupin growth, FlowPot RNA-seq
+and CAS-soil relative profiles are kept distinct. MAMC's 50.6% mean of three
+FTIR-derived fraction estimates is not loss of 50.6% of each fraction or dry mass.
+
+Three complete fresh primary bodies, embedded tables and the complete 2026
+Nicotiana figure-label correction were read. MAMC's image-only Table 1 cells,
+original figure pixels, separate supplements and raw data were not audited.
+All 920 caches remain unchanged; nine graph excerpts match fresh primary text.
+Canonical taxonomy and non-graph blocks remain unchanged, not recertified.
+Metadata, missing hosts, strain identities and source inconsistencies stay open
+under #1564. Repairs #1561-#1563 await protected-main merge. No new causal
+structure or Edison submission; this is self-review, not independent approval.
+
## Batch63: Coculture And Living-Host Assay Boundaries
[Decisions](decisions/20261006-coculture-hosts-batch63.yaml),
diff --git a/reports/causal_graph_review/adversarial-review-20261006-batch64.yaml b/reports/causal_graph_review/adversarial-review-20261006-batch64.yaml
new file mode 100644
index 000000000..7e68f019c
--- /dev/null
+++ b/reports/causal_graph_review/adversarial-review-20261006-batch64.yaml
@@ -0,0 +1,190 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: ba082c3e8c3f34f78e3f9dc32b35f57cc303bc7f
+scope:
+- kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml
+- kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml
+- kb/communities/MAMC_M48_Lignocellulose.yaml
+decision_ledger: reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
+validation_report: reports/causal_graph_review/validation-20261006-batch64.json
+findings:
+- issue: 1561
+ severity: P2
+ status: addressed_in_this_change
+ finding: Nicotiana assay identity and unsupported attachment/phosphorus mediation.
+ disposition: Close only after protected-main merge.
+- issue: 1562
+ severity: P2
+ status: addressed_in_this_change
+ finding: Lupinus assay, expression and relative-profile scope with explicit input roster.
+ disposition: Close only after protected-main merge.
+- issue: 1563
+ severity: P2
+ status: addressed_in_this_change
+ finding: MAMC procedure nodes, mechanism labels and unbounded fraction endpoint.
+ disposition: Close only after protected-main merge.
+- issue: 1564
+ severity: P2
+ status: unresolved_non_graph
+ finding: Host/strain/role metadata, inoculum and medium phases, non-graph mechanisms and primary-source
+ reporting inconsistencies.
+ disposition: Keep OPEN after graph repair merge.
+adversarial_checks:
+- Read all three whole records and account for9 original nodes and2 arrows. Three complete fresh primary
+ main bodies and complete Nicotiana2026 correction read; embedded text tables inspected. MAMC image-only
+ Table1 cells, original figure pixels, separate supplements and raw data were not audited. Numerical
+ endpoints are author-reported, not independently recomputed.
+- 'Nicotiana: separate five individual-strain flask treatments from the three-strain1:1:1 plant inoculum.
+ Attached microbial biomass phosphorus is an operational pool, not direct biofilm imaging. Its regression
+ with inferred dissociation and pH correlation do not selectively prove attachment or named-acid mediation.
+ Retain these hypotheses in prose, not asserted arrows or GO biofilm activity.'
+- 'Nicotiana: preserve increased phosphorus endpoints for three effective strains and limited activity
+ of two comparators. Total available phosphorus pools include dissolved, biomass and adsorbed fractions
+ and are not all freely dissolved inorganic phosphate. Remove unmeasured oxalate/citrate and CROSS_FEEDING
+ assertions while retaining phosphate context.'
+- 'Nicotiana: retain the18-day conditioning benefit, percentages of control rather than percent increases,
+ and adverse day6 seedling response without pretreatment. Controls were not pre-cultured and MS supplied
+ phosphorus from day6. Correct living-host evidence; these outcomes do not isolate exclusive phosphorus
+ mediation or lunar-environment performance. The2026 correction only fixes particle-size labels.'
+- 'Lupin: preserve positive SC7 growth in both systems and existing richness-versus-membership confounding.
+ Main Table1 confirms twelve input strain codes; keep both Streptomyces strain names despite their shared
+ genus CURIE. Input membership is not dominance, equal harvest abundance, complete host/background membership
+ or independently verified genome identity.'
+- 'Lupin: distinguish FlowPot root RNA-seq from non-sterile CAS-soil microbiome measurements. Expression/enrichment,
+ leghemoglobin and genomic annotations are not hormone secretion, nitrogen-fixation rate or a demonstrated
+ growth mediator. No transcription-to-growth or assembly-to-growth arrow is introduced.'
+- 'Lupin: relative genus profiles are not absolute exclusion or exact inoculant persistence. In-silico
+ ASV removal is not a biological knockout. Disclose conflicting PERMANOVA wording/p=.001 and preserve
+ observational conclusions without certifying blanket significance. Source timing contradiction and missing-host/dominance
+ metadata remain under1564.'
+- 'MAMC: remove enrichment and reductive screening nodes as procedures; preserve earlier workflow-arrow
+ deletion. Retain M48 study isolate IDs13/18/25/29/68 and its positive performance. FTIR estimates43.01/39.65/69.18%
+ average50.6%, not50.6% each, gravimetric mass loss, mineralization or partner-resolved flux.'
+- 'MAMC: metabolic functional groups and isolate secretome assays do not establish niche partitioning,
+ directed exchange or division of labor in M48. Keep source-reported16S identification labels with identity
+ caveats; canonical labels are not independently certified culture-strain equivalents. Approximately3e4
+ cells/mL per strain is stated for the18-strain control; separate non-graph metadata repair stays open.'
+- Review full biological diff and eight focused tests.457 other records,920 caches and raw non-graph blocks
+ unchanged. Canonical taxonomy preserved, not recertified.46 baseline network warnings retained exactly
+ with zero structural defects or auditor-rule changes. Coarse roster/scope census unchanged and does
+ not resolve missing hosts or strain identity.
+- Actual schema, strict, terms, references, snippets, histories, corpus audit, deterministic render and
+ regression outputs captured. Exact descriptions parsed across456 pages, not browser screenshots. Post-commit
+ docs-current remains a separate publication gate.
+- Deduplication covered857 all-state issue titles/bodies with no exact matches and21 scoped ignored/hidden
+ local files. Existing Lupinus review and MAMC workflow history read, not every PR/comment/local match.1561-1563
+ addressed but OPEN until protected-main merge;1564 remains OPEN afterward. Exact-head self-review is
+ COMMENT, not independent approval. No new graph structure or paid Edison submission.
+verification:
+ combined_regressions: 587 passed in 201.44s (0:03:21)
+ new_regression_tests: 8
+ schema_strict_terms_history: Passed with actual outputs/digests
+ references: CLI Total checks counts reported issues, not executed checks. MATCH is not scientific entailment
+ or certification of historical provenance. All920 caches unchanged;9 graph excerpts independently
+ match fresh primary text.1564 and existing476/1091/1095 limitations remain unresolved; graph repairs
+ do not recertify non-graph blocks.
+ snippet_counts_by_record:
+ kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml:
+ MATCH: 22
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml:
+ MATCH: 28
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ kb/communities/MAMC_M48_Lignocellulose.yaml:
+ MATCH: 17
+ RENDERING: 0
+ ASSEMBLED: 0
+ WEAK: 0
+ MISMATCH: 0
+ NOCONTENT: 0
+ primary_graph_snippet_proof:
+ primary_matched_graph_snippets: 9
+ primary_main_bodies: 3
+ complete_correction_texts: 1
+ paid_submissions: 0
+ new_nodes_or_arrows: 0
+ separate_supplements_inspected: false
+ mamc_image_only_table1_cells_inspected: false
+ network:
+ existing_findings_preserved: 46
+ added_findings: {}
+ removed_findings: {}
+ interpretation: All46 baseline network findings preserved exactly; no auditor-rule changes or invented
+ links. Explicit participant lists identify tested panels/inoculants, not missing hosts or background
+ communities.
+ black_ruff_diff: passed
+ tested_file_sha256:
+ reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml: c1ee5014ea7d83ad47d2a03e7392fb2e5f86722f7d29f90b1b132f41804982b4
+ tests/test_causal_review_batch64.py: 4a864fd15d4cb6988952b8f1a31364989276e99280b2225a06c88e051f847b70
+ tests/test_participating_taxa.py: 01e176fc992824021f3e48108ee225f94a5e3c2cf56e97d4468fa3cced4adbd0
+ kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml: 880e7a2f3269d73be3a9cdd38f7433934afbdf47ad3a04cc6820982256b3ce89
+ kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml: 59a83e4d0b1defdc5f3bae63bccb38caa87fa9fd90a6c115e5be6f518998f6ff
+ kb/communities/MAMC_M48_Lignocellulose.yaml: d877e443187162745cbfa2adba246854e6b2667793da22f8837fd64d08925176
+ reports/causal_graph_review/README.md: a61930eb6b303a69168837c7cf82a476707ffc92d9748429fdbfbe8ce3163e7a
+ unchanged_caches: 920
+ edison:
+ required_for_this_repair: false
+ provider_submissions: 0
+ credits_spent: 0
+ reason: Existing-node/arrow repairs only; no new causal structure.
+ post_commit_docs_current: Separate publication gate, not asserted before commit.
+participant_census:
+ measurements:
+ baseline:
+ records: 460
+ with_community_level: 391
+ mixed: 124
+ community_level_only: 267
+ taxa: 1507
+ credited_solely_by_the_rule: 1238
+ current:
+ records: 460
+ with_community_level: 391
+ mixed: 124
+ community_level_only: 267
+ taxa: 1507
+ credited_solely_by_the_rule: 1238
+ interpretation: Canonical roster/scope census unchanged. Explicit participants separate the five-strain
+ Nicotiana test panel from its three-strain plant inoculum and preserve two distinct Lupinus Streptomyces
+ strain names. This coarse census does not resolve missing hosts, strain identity or background community
+ membership.
+corpus:
+ records: 460
+ nodes: 1452
+ edges: 639
+ review_status_counts:
+ needs_research: 21
+ pending: 233
+ reviewed: 206
+limitations:
+- All9 original nodes and2 arrows reviewed;7 outcome/observation nodes retained,2 procedure nodes and2
+ unsupported mediation arrows removed. No new causal structure or Edison submission.
+- 'Three complete fresh primary main bodies and complete Nicotiana2026 correction read, with embedded
+ tables. MAMC Table1 is an image: only its caption read. No original figure pixels, separate supplements
+ or raw data audited; numerical summaries are author-reported, not independently recomputed.'
+- Nicotiana correction PMID:42304108 fixes Fig1 particle-size labels only. Five individual-strain flasks,
+ three-strain plant mixture, time-dependent benefits/adverse early response, unconditioned controls and
+ later MS phosphorus supplementation remain distinct. Biofilm/acid/exclusive-P mediators remain hypotheses.
+- Lupin input roster follows main Table1, preserving two distinct Streptomyces strains. FlowPot RNA-seq
+ is not CAS-soil transcriptomics or biochemical flux. Richness/composition confounding and statistical/timing
+ wording inconsistencies remain unresolved.
+- MAMC FTIR fraction estimates and their mean are not dry-mass loss, individual partner flux or measured
+ division of labor. Source-reported strain-like16S labels are preserved, not recertified culture/genome
+ identities.
+- Canonical taxonomy and raw non-graph blocks preserved, not recertified. Issue1564 remains OPEN for metadata,
+ host/role/strain identities and source inconsistencies.
+- All920 caches unchanged. Retained graph excerpts match fresh primary text without certifying historical
+ full-cache or non-graph provenance. Public OA XML was used without bypassing publisher access restrictions.
+- Deduplication covered857 all-state issue titles/bodies with no exact matches and21 scoped ignored/hidden
+ local files. Existing Lupinus review and MAMC workflow history read, not every PR/comment/local match.
+ Self-adversarial review is not independent approval; repair issues remain OPEN until protected-main
+ merge.
diff --git a/reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml b/reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
new file mode 100644
index 000000000..1c20c5fd2
--- /dev/null
+++ b/reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
@@ -0,0 +1,217 @@
+reviewer: codex
+review_mode: source_based_self_adversarial_review
+independent_approval: false
+base_commit: ba082c3e8c3f34f78e3f9dc32b35f57cc303bc7f
+baseline_commit: ba082c3e8c3f34f78e3f9dc32b35f57cc303bc7f
+base_tree: dd17ec3ede912a585403b33770ce6384ec2bb295
+pre_source_baseline_sha256: f431bba44c0751b74884be1f75895b81ef84d434af48839db008c39b2c9b7d45
+issues:
+- 1561
+- 1562
+- 1563
+unresolved_non_graph_issues:
+- 1564
+unresolved_research_issues: []
+issue_deduplication:
+ all_state_issue_titles_and_bodies: 857
+ ignored_hidden_local_search: true
+ matching_local_files: 21
+ matching_issues: []
+reference_cache_original_hashes:
+ references_cache/PMID_37945659.md: 9dbe89e88959cc16f71502d869dd3b8b750f72939009500167fa724c334b608e
+ references_cache/PMID_42602126.txt: c37d35419d8479f813eeefd9539b3774999064492d90ea152126a7224a9ade70
+ references_cache/PMID_29392382.txt: 8736c0e90379f8107894af1188a6899af6f994b8a16dce65569917d7fc20c6e5
+primary_artifacts:
+ /private/tmp/communitymech-batch64/nicotiana-primary.xml: b0e29caab42b70eafcea35174b987581223d6592195fb209a311d6002cf6d120
+ /private/tmp/communitymech-batch64/nicotiana-primary.txt: 3aea6870c9fca9b5021b2ba885ba899559289611f50c362ea74daa4439fe7b5b
+ /private/tmp/communitymech-batch64/nicotiana-tables.txt: c2f3d53ce320679ab571bc2770a09cdc2e0aa5dd1d5f8a358ca0fee4a9a826c1
+ /private/tmp/communitymech-batch64/lupin-primary.xml: b3de8ac7353f008d8a6c255be0a50c993896e2e666a9607d1bc69b2130681a20
+ /private/tmp/communitymech-batch64/lupin-primary.txt: f2b8d661573ce3b2a9e88c48ad88181199ccff7a5a952d2a8bcaac535826236f
+ /private/tmp/communitymech-batch64/lupin-tables.txt: 881e10b07a321a12ef30b406af1fe25d70f2bcef33e29d6dc613d4497f9591cc
+ /private/tmp/communitymech-batch64/mamc-primary.xml: c3924a1a9c2d6e516f24530c97c11f8298ddb83953bdd95774e7cd6ccb79c982
+ /private/tmp/communitymech-batch64/mamc-primary.txt: 4824e382532cab0a329ed32489d3a7f75959c6e133ea7566b106115db7125a9f
+ /private/tmp/communitymech-batch64/mamc-tables.txt: 9e0d2b7f7c8b132c0dc141728a0f767bf6bcd8a5b12f4143d5ff81f4315758c1
+ /private/tmp/communitymech-batch64/nicotiana-correction-primary.xml: 61d37d0dfcb7b6db8a8324be80d062b69a81a66fe19f074d3e451e29bc80e0ed
+ /private/tmp/communitymech-batch64/nicotiana-correction-primary.txt: ff255ecfd9a827224a3dd8e16b17a4692197731117382f0f4905b8a9f91e90c9
+ /private/tmp/communitymech-batch64/nicotiana-correction-tables.txt: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b
+primary_urls:
+- https://www.ebi.ac.uk/europepmc/webservices/rest/PMC10636133/fullTextXML
+- https://www.ebi.ac.uk/europepmc/webservices/rest/PMC13473416/fullTextXML
+- https://www.ebi.ac.uk/europepmc/webservices/rest/PMC6061470/fullTextXML
+- https://www.ebi.ac.uk/europepmc/webservices/rest/PMC13273066/fullTextXML
+primary_graph_snippet_count: 9
+edison:
+ required_for_this_repair: false
+ provider_submissions: 0
+ credits_spent: 0
+ reason: Existing-node/arrow repairs only; no new causal structure.
+limitations:
+- All9 original nodes and2 arrows reviewed;7 outcome/observation nodes retained,2 procedure nodes and2 unsupported
+ mediation arrows removed. No new causal structure or Edison submission.
+- 'Three complete fresh primary main bodies and complete Nicotiana2026 correction read, with embedded tables. MAMC
+ Table1 is an image: only its caption read. No original figure pixels, separate supplements or raw data audited;
+ numerical summaries are author-reported, not independently recomputed.'
+- Nicotiana correction PMID:42304108 fixes Fig1 particle-size labels only. Five individual-strain flasks, three-strain
+ plant mixture, time-dependent benefits/adverse early response, unconditioned controls and later MS phosphorus
+ supplementation remain distinct. Biofilm/acid/exclusive-P mediators remain hypotheses.
+- Lupin input roster follows main Table1, preserving two distinct Streptomyces strains. FlowPot RNA-seq is not CAS-soil
+ transcriptomics or biochemical flux. Richness/composition confounding and statistical/timing wording inconsistencies
+ remain unresolved.
+- MAMC FTIR fraction estimates and their mean are not dry-mass loss, individual partner flux or measured division
+ of labor. Source-reported strain-like16S labels are preserved, not recertified culture/genome identities.
+- Canonical taxonomy and raw non-graph blocks preserved, not recertified. Issue1564 remains OPEN for metadata, host/role/strain
+ identities and source inconsistencies.
+- All920 caches unchanged. Retained graph excerpts match fresh primary text without certifying historical full-cache
+ or non-graph provenance. Public OA XML was used without bypassing publisher access restrictions.
+- Deduplication covered857 all-state issue titles/bodies with no exact matches and21 scoped ignored/hidden local
+ files. Existing Lupinus review and MAMC workflow history read, not every PR/comment/local match. Self-adversarial
+ review is not independent approval; repair issues remain OPEN until protected-main merge.
+records:
+- path: kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml
+ id: CommunityMech:000306
+ original_sha256: 358a9e93ceefb177f75d8058dd96407eacd401acfe89ecc2b1e640b5f9438d42
+ record_sha256: 880e7a2f3269d73be3a9cdd38f7433934afbdf47ad3a04cc6820982256b3ce89
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
+ scope: Whole record and every original node/arrow.
+ summary: Separate regolith attachment, phosphorus and living-host outcomes from proposed mediation.
+ renamed_nodes:
+ PSB attachment to regolith particles concentrates phosphate dissolution: PSB Particle-Associated Biomass Phosphorus
+ Phosphorus solubilization from lunar regolith simulant via organic-acid secretion: PSB Phosphorus Mobilization
+ In Regolith Simulant
+ Phosphorus-enabled promotion of Nicotiana benthamiana growth: Nicotiana Response To PSB-Conditioned Regolith
+ Simulant
+ node_decisions:
+ - node: PSB Particle-Associated Biomass Phosphorus
+ rationale: Retain measured attachment-associated phosphorus pools without demonstrated biofilm mediation.
+ - node: PSB Phosphorus Mobilization In Regolith Simulant
+ rationale: Retain phosphorus mobilization while separating individual-strain evidence from cross-feeding and
+ named-acid claims.
+ - node: Nicotiana Response To PSB-Conditioned Regolith Simulant
+ rationale: Retain time-dependent living-host benefits and adverse early outcome without exclusive phosphorus
+ mediation.
+ removed_node_decisions: []
+ edges_before:
+ - source: PSB attachment to regolith particles concentrates phosphate dissolution
+ target: Phosphorus solubilization from lunar regolith simulant via organic-acid secretion
+ description: Particle attachment forms a stable bacteria-mineral interface that supports local proton and organic-acid
+ attack on insoluble phosphate minerals in the regolith simulant.
+ - source: Phosphorus solubilization from lunar regolith simulant via organic-acid secretion
+ target: Phosphorus-enabled promotion of Nicotiana benthamiana growth
+ description: Organic-acid phosphate solubilization raises the available phosphorus pool in the regolith simulant
+ that drives the downstream Nicotiana growth response.
+ edges_after: []
+ retained_edge_decisions: []
+ removed_edge_decisions:
+ - source: PSB attachment to regolith particles concentrates phosphate dissolution
+ target: Phosphorus solubilization from lunar regolith simulant via organic-acid secretion
+ rationale: Regression or co-measured phosphorus and plant outcomes do not selectively establish attachment or
+ phosphorus mediation.
+ - source: Phosphorus solubilization from lunar regolith simulant via organic-acid secretion
+ target: Phosphorus-enabled promotion of Nicotiana benthamiana growth
+ rationale: Regression or co-measured phosphorus and plant outcomes do not selectively establish attachment or
+ phosphorus mediation.
+ references:
+ - PMID:37945659
+ issues:
+ - 1561
+ - 1564
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana/2026-10-06T222317Z-codex-545fd8.yaml
+ source_review:
+ PMID:37945659:
+ url: https://www.ebi.ac.uk/europepmc/webservices/rest/PMC10636133/fullTextXML
+ scope: Complete primary XML main body, abstract, embedded table text and captions; original figure pixels,
+ separate supplements and raw data require separate inspection.
+ all_retained_graph_snippets_primary_matched: true
+ cache_provenance_certified: false
+- path: kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml
+ id: CommunityMech:000427
+ original_sha256: fc766f0e946fdb45923e41b662ea83f385c6f6f2f6e1b65048c7b3bbd75dc25d
+ record_sha256: 59a83e4d0b1defdc5f3bae63bccb38caa87fa9fd90a6c115e5be6f518998f6ff
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
+ scope: Whole record and every original node/arrow.
+ summary: Scope SC-7 growth, transcription and assembly observations to the tested assays and input roster.
+ renamed_nodes: {}
+ node_decisions:
+ - node: SC-7 high-complexity lupin response
+ rationale: Retain positive growth with richness/composition confounding and input-roster limits.
+ - node: SC-7-associated host transcriptional reprogramming
+ rationale: Retain FlowPot transcriptional responses without measured biochemical activity or mediation.
+ - node: Complex SynCom root and rhizosphere reshaping
+ rationale: Scope microbiome reshaping to CAS-soil relative profiles and disclose inconsistent statistical wording.
+ removed_node_decisions: []
+ edges_before: []
+ edges_after: []
+ retained_edge_decisions: []
+ removed_edge_decisions: []
+ references:
+ - PMID:42602126
+ issues:
+ - 1562
+ - 1564
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/Lupinus_SC7_Rhizosphere_SynCom/2026-10-06T222317Z-codex-eeec4c.yaml
+ source_review:
+ PMID:42602126:
+ url: https://www.ebi.ac.uk/europepmc/webservices/rest/PMC13473416/fullTextXML
+ scope: Complete primary XML main body, abstract, embedded table text and captions; original figure pixels,
+ separate supplements and raw data require separate inspection.
+ all_retained_graph_snippets_primary_matched: true
+ cache_provenance_certified: false
+- path: kb/communities/MAMC_M48_Lignocellulose.yaml
+ id: CommunityMech:000041
+ original_sha256: 735478651e62d2c25435aecbb15f2a78a11eb11669452fd35a1203ee3264cfc0
+ record_sha256: d877e443187162745cbfa2adba246854e6b2667793da22f8837fd64d08925176
+ status: reviewed
+ outcome: changed
+ review_file: reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml
+ scope: Whole record and every original node/arrow.
+ summary: Remove MAMC procedure nodes and bound the retained M48 FTIR endpoint.
+ renamed_nodes: {}
+ node_decisions:
+ - node: MAMC-M48 Lignocellulose Degradation
+ rationale: Retain measured mixture performance with FTIR, mean-value and unresolved-partner limits.
+ removed_node_decisions:
+ - node: Sugarcane Lignocellulose Enrichment
+ rationale: Laboratory enrichment or mixture-construction/screening procedure, not a biological niche-partitioning
+ interaction.
+ - node: Functional-Group Reductive MAMC Screening
+ rationale: Laboratory enrichment or mixture-construction/screening procedure, not a biological niche-partitioning
+ interaction.
+ edges_before: []
+ edges_after: []
+ retained_edge_decisions: []
+ removed_edge_decisions: []
+ references:
+ - PMID:29392382
+ issues:
+ - 1563
+ - 1564
+ allowed_changed_fields:
+ - curation_history
+ - discussions
+ - ecological_interactions
+ curation_events_added: 1
+ history_files:
+ - history/records/MAMC_M48_Lignocellulose/2026-10-06T222317Z-codex-086b3f.yaml
+ source_review:
+ PMID:29392382:
+ url: https://www.ebi.ac.uk/europepmc/webservices/rest/PMC6061470/fullTextXML
+ scope: Complete primary XML main body, abstract, embedded table text and captions; original figure pixels,
+ separate supplements and raw data require separate inspection.
+ all_retained_graph_snippets_primary_matched: true
+ cache_provenance_certified: false
diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv
index 85622dfa0..e6cbf029d 100644
--- a/reports/causal_graph_review/inventory.tsv
+++ b/reports/causal_graph_review/inventory.tsv
@@ -223,9 +223,9 @@ kb/communities/Legume_Rhizobia_Mars_Simulant_Symbiosis.yaml CommunityMech:000311
kb/communities/Leptolyngbya_Pseudomonas_Mangrove_Coculture.yaml CommunityMech:000452 de38e85b39857ca2d12ebc0bd2e00381497e2237a05bc3b57c054308b37551a7 2 0 57.5 reports/causal_graph_review/decisions/20261006-coculture-hosts-batch63.yaml reviewed
kb/communities/Lotus_LjSC3.yaml CommunityMech:000040 317b96ee5acec4d086af63b9862dc613ca0d2ccfc325eae037b14eea0db5d011 3 0 60.5 reports/causal_graph_review/decisions/20261006-coculture-hosts-batch63.yaml reviewed
kb/communities/Lunar_Martian_Simulant_PGPB_Lettuce_SynCom.yaml CommunityMech:000304 f15a9d74bf4cdf521541790fed47c158980424e9a616152545370ccb93ca7000 3 0 65.0 reports/causal_graph_review/decisions/20261006-coculture-hosts-batch63.yaml reviewed
-kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml CommunityMech:000306 358a9e93ceefb177f75d8058dd96407eacd401acfe89ecc2b1e640b5f9438d42 3 2 100.0 pending
-kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml CommunityMech:000427 fc766f0e946fdb45923e41b662ea83f385c6f6f2f6e1b65048c7b3bbd75dc25d 3 0 60.0 pending
-kb/communities/MAMC_M48_Lignocellulose.yaml CommunityMech:000041 735478651e62d2c25435aecbb15f2a78a11eb11669452fd35a1203ee3264cfc0 3 0 75.0 pending
+kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml CommunityMech:000306 880e7a2f3269d73be3a9cdd38f7433934afbdf47ad3a04cc6820982256b3ce89 3 0 63.3 reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml reviewed
+kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml CommunityMech:000427 59a83e4d0b1defdc5f3bae63bccb38caa87fa9fd90a6c115e5be6f518998f6ff 3 0 60.0 reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml reviewed
+kb/communities/MAMC_M48_Lignocellulose.yaml CommunityMech:000041 d877e443187162745cbfa2adba246854e6b2667793da22f8837fd64d08925176 1 0 55.0 reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml reviewed
kb/communities/MSC1_Dominant_Core.yaml CommunityMech:000042 2bbdd3d11235534673733b5a35aac95a3b723e0495e20b91b8e6709dac2c0590 3 0 75.0 pending
kb/communities/MSC2_Model_Soil_Consortium.yaml CommunityMech:000086 b0db48390b7ed1517baf0ebf3bad414629e283dbb43406dd730223c619cb5a9a 3 2 100.0 pending
kb/communities/MUC2_Human_Gut_Commensal_Defined_Consortium.yaml CommunityMech:000351 733a7112c11721d7004858c4a3ccbc986b31bda36bfc7e2714e3691c8222c6e0 2 1 85.0 pending
diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json
index 78ae7e0c5..a3ff85906 100644
--- a/reports/causal_graph_review/summary.json
+++ b/reports/causal_graph_review/summary.json
@@ -2,14 +2,14 @@
"scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.",
"semantic_review_rule": "Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.",
"records": 460,
- "nodes": 1454,
- "edges": 641,
+ "nodes": 1452,
+ "edges": 639,
"records_without_nodes": 8,
- "records_without_edges": 160,
+ "records_without_edges": 161,
"review_status_counts": {
"needs_research": 21,
- "pending": 236,
- "reviewed": 203
+ "pending": 233,
+ "reviewed": 206
},
"structural_defects": [],
"network_audit": [
diff --git a/reports/causal_graph_review/validation-20261006-batch64.json b/reports/causal_graph_review/validation-20261006-batch64.json
new file mode 100644
index 000000000..2b6363a06
--- /dev/null
+++ b/reports/causal_graph_review/validation-20261006-batch64.json
@@ -0,0 +1,832 @@
+{
+ "base_commit": "ba082c3e8c3f34f78e3f9dc32b35f57cc303bc7f",
+ "scope": [
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml",
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml",
+ "kb/communities/MAMC_M48_Lignocellulose.yaml"
+ ],
+ "reference_validator_version": "0.1.7",
+ "results": [
+ {
+ "check": "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-schema",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-schema.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-strict",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/private/tmp/communitymech-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-strict.tsv",
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-strict.log",
+ "log_sha256": "5f77c5faae14baf65752d137bd06a6f311088915f0f21b3800420ca568f0243c",
+ "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch64/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-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-strict.tsv\n"
+ },
+ {
+ "check": "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-terms",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator",
+ "validate-data",
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-terms.log",
+ "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018",
+ "output_tail": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-references",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-references.log",
+ "log_sha256": "5b593c0962add4e8a5c887d7ad2eab791ed6c8cb82ea8c4b50fc4ae3b7564568",
+ "output_tail": "Validating kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.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/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.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": "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-snippets",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-snippets.log",
+ "log_sha256": "96a23c88588d68e990af5d62f9c27df12879566b4125e7703a275c3bfa7adcd7",
+ "output_tail": "# 22 evidence snippets scanned across 1 files\n MATCH 22\n RENDERING 0\n ASSEMBLED 0\n WEAK 0\n MISMATCH 0\n NOCONTENT 0\n\n# Files with MISMATCH/WEAK (content present but snippet absent) \u2014 fabrication suspects\n\n# MISMATCH/WEAK detail\n\n# Files by RENDERING (faithful quote; differs from cache only by\n# punctuation/whitespace/Greek \u2014 this is what validate-references flags)\n\n# Top files by NOCONTENT (unverifiable; cache stub/missing)\n\n# ASSEMBLED (every part is in the source; the join is not \u2014\n# a table flattened into prose, or a quote welded from two places)\n"
+ },
+ {
+ "check": "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-rank",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-rank.log",
+ "log_sha256": "b4cdc41ac742625e7f1fc62f3b6dd602cb4423600342e69566e1fe3cd80ece21",
+ "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000306\",\n \"name\": \"Lunar Regolith Simulant Phosphorus-Solubilizing Bacteria for Nicotiana benthamiana\",\n \"score\": 63.3,\n \"taxonomy\": 5,\n \"connected_taxa\": 5,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 0,\n \"interaction_evidence\": 3,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"downstream\",\n \"metabolites_or_biological_processes\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-history-0",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana/2026-10-06T222317Z-codex-545fd8.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana-history-0.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Lupinus_SC7_Rhizosphere_SynCom-schema",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lupinus_SC7_Rhizosphere_SynCom-schema.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "Lupinus_SC7_Rhizosphere_SynCom-strict",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/private/tmp/communitymech-batch64/Lupinus_SC7_Rhizosphere_SynCom-strict.tsv",
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lupinus_SC7_Rhizosphere_SynCom-strict.log",
+ "log_sha256": "ba2945d23bf49282c13b821d8dca8b1140d46fede340552f95727163192fbac2",
+ "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch64/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-batch64/Lupinus_SC7_Rhizosphere_SynCom-strict.tsv\n"
+ },
+ {
+ "check": "Lupinus_SC7_Rhizosphere_SynCom-terms",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator",
+ "validate-data",
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lupinus_SC7_Rhizosphere_SynCom-terms.log",
+ "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018",
+ "output_tail": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "Lupinus_SC7_Rhizosphere_SynCom-references",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lupinus_SC7_Rhizosphere_SynCom-references.log",
+ "log_sha256": "d286a78988ab8bc0752823a1d56350b58d8401315e3bec7394f53cb684566544",
+ "output_tail": "Validating kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n",
+ "explained_output_tail": "Validating kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n"
+ },
+ {
+ "check": "Lupinus_SC7_Rhizosphere_SynCom-snippets",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lupinus_SC7_Rhizosphere_SynCom-snippets.log",
+ "log_sha256": "d353a2e438e49543043d94dbd2d275ccc825dad7bb23be8ad43bf853927d2fe3",
+ "output_tail": "# 28 evidence snippets scanned across 1 files\n MATCH 28\n RENDERING 0\n ASSEMBLED 0\n WEAK 0\n MISMATCH 0\n NOCONTENT 0\n\n# Files with MISMATCH/WEAK (content present but snippet absent) \u2014 fabrication suspects\n\n# MISMATCH/WEAK detail\n\n# Files by RENDERING (faithful quote; differs from cache only by\n# punctuation/whitespace/Greek \u2014 this is what validate-references flags)\n\n# Top files by NOCONTENT (unverifiable; cache stub/missing)\n\n# ASSEMBLED (every part is in the source; the join is not \u2014\n# a table flattened into prose, or a quote welded from two places)\n"
+ },
+ {
+ "check": "Lupinus_SC7_Rhizosphere_SynCom-rank",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lupinus_SC7_Rhizosphere_SynCom-rank.log",
+ "log_sha256": "aa9039d4272f623cced16a9f52ea89763d7ed05e118335f7b6833b57c0930722",
+ "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000427\",\n \"name\": \"Lupinus SC-7 Rhizosphere SynCom\",\n \"score\": 60.0,\n \"taxonomy\": 12,\n \"connected_taxa\": 12,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 0,\n \"interaction_evidence\": 4,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"downstream\",\n \"metabolites_or_biological_processes\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "Lupinus_SC7_Rhizosphere_SynCom-history-0",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/Lupinus_SC7_Rhizosphere_SynCom/2026-10-06T222317Z-codex-eeec4c.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/Lupinus_SC7_Rhizosphere_SynCom-history-0.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "MAMC_M48_Lignocellulose-schema",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "kb/communities/MAMC_M48_Lignocellulose.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/MAMC_M48_Lignocellulose-schema.log",
+ "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de",
+ "output_tail": "No issues found\n"
+ },
+ {
+ "check": "MAMC_M48_Lignocellulose-strict",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3",
+ "scripts/validate_strict.py",
+ "--workers",
+ "1",
+ "--out",
+ "/private/tmp/communitymech-batch64/MAMC_M48_Lignocellulose-strict.tsv",
+ "kb/communities/MAMC_M48_Lignocellulose.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/MAMC_M48_Lignocellulose-strict.log",
+ "log_sha256": "4bc02ddabb060300d4f7f3699aed465b2f3d00501a63bee80f744fe02cbe8ffa",
+ "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch64/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-batch64/MAMC_M48_Lignocellulose-strict.tsv\n"
+ },
+ {
+ "check": "MAMC_M48_Lignocellulose-terms",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator",
+ "validate-data",
+ "kb/communities/MAMC_M48_Lignocellulose.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--labels"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/MAMC_M48_Lignocellulose-terms.log",
+ "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018",
+ "output_tail": "\u2705 Validation passed\n"
+ },
+ {
+ "check": "MAMC_M48_Lignocellulose-references",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator",
+ "validate",
+ "data",
+ "kb/communities/MAMC_M48_Lignocellulose.yaml",
+ "-s",
+ "src/communitymech/schema/communitymech.yaml",
+ "--config",
+ "conf/reference_validator.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/MAMC_M48_Lignocellulose-references.log",
+ "log_sha256": "a3896064c5f913e782611abaa13ecadb1081c6600cdb65676c3e97b5877db5fe",
+ "output_tail": "Validating kb/communities/MAMC_M48_Lignocellulose.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/MAMC_M48_Lignocellulose.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": "MAMC_M48_Lignocellulose-snippets",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/evidence_snippet_audit.py",
+ "kb/communities/MAMC_M48_Lignocellulose.yaml",
+ "--list-mismatch",
+ "--list-nocontent",
+ "--list-rendering",
+ "--list-assembled"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/MAMC_M48_Lignocellulose-snippets.log",
+ "log_sha256": "5f0e8a5be45b94195ee5599498c60e06ff8db089c85d0bf23969aa37351ca96e",
+ "output_tail": "# 17 evidence snippets scanned across 1 files\n MATCH 17\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": "MAMC_M48_Lignocellulose-rank",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "scripts/rank_causal_graph_readiness.py",
+ "kb/communities/MAMC_M48_Lignocellulose.yaml",
+ "--format",
+ "json"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/MAMC_M48_Lignocellulose-rank.log",
+ "log_sha256": "c391d60e5482e5a974862dcb0c213ed70f2a72ab74587e5fe5de896aa08f27e2",
+ "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000041\",\n \"name\": \"MAMC-M48 Lignocellulose-Degrading Consortium\",\n \"score\": 55.0,\n \"taxonomy\": 5,\n \"connected_taxa\": 5,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 1,\n \"downstream_edges\": 0,\n \"interaction_evidence\": 2,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"additional_interactions\",\n \"downstream\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/MAMC_M48_Lignocellulose.yaml\"\n }\n]\n"
+ },
+ {
+ "check": "MAMC_M48_Lignocellulose-history-0",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate",
+ "-s",
+ "src/communitymech/schema/history.yaml",
+ "--target-class",
+ "HistoryRecord",
+ "history/records/MAMC_M48_Lignocellulose/2026-10-06T222317Z-codex-086b3f.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/MAMC_M48_Lignocellulose-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-batch64/inventory.log",
+ "log_sha256": "b4d3059af2f3b565f2a18b7887ce140fc64ba2d8970a0373313a061e48767c04",
+ "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\": 1452,\n \"edges\": 639,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 161,\n \"review_status_counts\": {\n \"needs_research\": 21,\n \"pending\": 233,\n \"reviewed\": 206\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-batch64/network.log",
+ "log_sha256": "3a156d88a5b27b6a726e91303cf9249745ee46d4e53a0ac73d58779dc1041a7d",
+ "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-batch64/rank-all.log",
+ "log_sha256": "0a90127cb011de8db6ed2c44df99d1a66c0ca6642e37d071fa1654d866cc91ee",
+ "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-batch64/render.log",
+ "log_sha256": "82fd031f5e6459df0bfc4597138685bd984405b777019cc9ffbfabaa83f24356",
+ "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch64/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch64/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch64/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-batch64/render-repeat.log",
+ "log_sha256": "82fd031f5e6459df0bfc4597138685bd984405b777019cc9ffbfabaa83f24356",
+ "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch64/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch64/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch64/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch64/docs/index.html\n"
+ },
+ {
+ "check": "connectivity-survey",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-c",
+ "import json,pathlib,runpy\nfn=runpy.run_path('tests/test_community_level_connectivity_credit.py')['_survey']\nresult={}\nfor name,root in [('baseline',pathlib.Path('/private/tmp/communitymech-causal-batch63')),('current',pathlib.Path.cwd())]:\n paths=sorted(p for r in ['kb/communities','data/isolates'] for p in (root/r).rglob('*.yaml'))\n assert len(paths)==460\n fn.__globals__['record_files']=lambda:paths\n result[name]=fn()\nprint(json.dumps(result))\n"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/connectivity-survey.log",
+ "log_sha256": "2dcbda64d4b5530059ac8ad2c76a801bffcf051d557341927f6c204fb4d3f7e5",
+ "output_tail": "{\"baseline\": {\"records\": 460, \"with_community_level\": 391, \"mixed\": 124, \"community_level_only\": 267, \"taxa\": 1507, \"credited_solely_by_the_rule\": 1238}, \"current\": {\"records\": 460, \"with_community_level\": 391, \"mixed\": 124, \"community_level_only\": 267, \"taxa\": 1507, \"credited_solely_by_the_rule\": 1238}}\n"
+ },
+ {
+ "check": "regressions",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-m",
+ "pytest",
+ "-q",
+ "tests/test_causal_review_batch10.py",
+ "tests/test_causal_review_batch11.py",
+ "tests/test_causal_review_batch12.py",
+ "tests/test_causal_review_batch13.py",
+ "tests/test_causal_review_batch14.py",
+ "tests/test_causal_review_batch15.py",
+ "tests/test_causal_review_batch16.py",
+ "tests/test_causal_review_batch17.py",
+ "tests/test_causal_review_batch18.py",
+ "tests/test_causal_review_batch19.py",
+ "tests/test_causal_review_batch20.py",
+ "tests/test_causal_review_batch21.py",
+ "tests/test_causal_review_batch22.py",
+ "tests/test_causal_review_batch23.py",
+ "tests/test_causal_review_batch24.py",
+ "tests/test_causal_review_batch25.py",
+ "tests/test_causal_review_batch27.py",
+ "tests/test_causal_review_batch28.py",
+ "tests/test_causal_review_batch29.py",
+ "tests/test_causal_review_batch30.py",
+ "tests/test_causal_review_batch31.py",
+ "tests/test_causal_review_batch32.py",
+ "tests/test_causal_review_batch33.py",
+ "tests/test_causal_review_batch34.py",
+ "tests/test_causal_review_batch35.py",
+ "tests/test_causal_review_batch36.py",
+ "tests/test_causal_review_batch37.py",
+ "tests/test_causal_review_batch38.py",
+ "tests/test_causal_review_batch39.py",
+ "tests/test_causal_review_batch40.py",
+ "tests/test_causal_review_batch41.py",
+ "tests/test_causal_review_batch42.py",
+ "tests/test_causal_review_batch43.py",
+ "tests/test_causal_review_batch44.py",
+ "tests/test_causal_review_batch45.py",
+ "tests/test_causal_review_batch46.py",
+ "tests/test_causal_review_batch47.py",
+ "tests/test_causal_review_batch48.py",
+ "tests/test_causal_review_batch49.py",
+ "tests/test_causal_review_batch5.py",
+ "tests/test_causal_review_batch50.py",
+ "tests/test_causal_review_batch51.py",
+ "tests/test_causal_review_batch52.py",
+ "tests/test_causal_review_batch53.py",
+ "tests/test_causal_review_batch54.py",
+ "tests/test_causal_review_batch55.py",
+ "tests/test_causal_review_batch56.py",
+ "tests/test_causal_review_batch57.py",
+ "tests/test_causal_review_batch58.py",
+ "tests/test_causal_review_batch59.py",
+ "tests/test_causal_review_batch6.py",
+ "tests/test_causal_review_batch60.py",
+ "tests/test_causal_review_batch61.py",
+ "tests/test_causal_review_batch62.py",
+ "tests/test_causal_review_batch63.py",
+ "tests/test_causal_review_batch64.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-batch64/regressions.log",
+ "log_sha256": "548db4bf270442d0c6b769ff23a9f97549738242bfd5288bd844f35549fe697a",
+ "output_tail": "........................................................................ [ 12%]\n........................................................................ [ 24%]\n........................................................................ [ 36%]\n........................................................................ [ 49%]\n........................................................................ [ 61%]\n........................................................................ [ 73%]\n........................................................................ [ 85%]\n........................................................................ [ 98%]\n........... [100%]\n587 passed in 201.44s (0:03:21)\n"
+ },
+ {
+ "check": "black",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/3Q_kifQtLB624D5bBWGIf/bin/black",
+ "--check",
+ "tests/test_causal_review_batch64.py",
+ "tests/test_participating_taxa.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/black.log",
+ "log_sha256": "b9cf511501d306d2bd8355ccb165c8ddc0a6fdd62d7c72c4a7b1795cf8934c8c",
+ "output_tail": "All done! \u2728 \ud83c\udf70 \u2728\n2 files would be left unchanged.\n"
+ },
+ {
+ "check": "ruff",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/wCcxEYRM4HeHgwYPZemHX/bin/ruff",
+ "check",
+ "tests/test_causal_review_batch64.py",
+ "tests/test_participating_taxa.py"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/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-batch64/diff-check.log",
+ "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "output_tail": ""
+ },
+ {
+ "check": "primary-graph-proof",
+ "command": [
+ "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3",
+ "-c",
+ "import hashlib,json,pathlib,yaml\nP=pathlib.Path\nledger=yaml.safe_load(P('reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml').read_text())\nmanifest=json.loads(P('/private/tmp/communitymech-batch64/primary-manifest.json').read_text())\nprimary={'PMID:'+v['pmid']:''.join(P(v['extracted_body']).read_text().split()) for v in manifest.values()}\nfor path,digest in ledger['primary_artifacts'].items():\n assert hashlib.sha256(P(path).read_bytes()).hexdigest()==digest\ncount=0\nfor row in ledger['records']:\n doc=yaml.safe_load(P(row['path']).read_text())\n for node in doc['ecological_interactions']:\n for ev in node['evidence']:\n assert ''.join(ev['snippet'].split()) in primary[ev['reference']]\n count+=1\nassert count==ledger['primary_graph_snippet_count']==9\nassert ledger['edison']['provider_submissions']==ledger['edison']['credits_spent']==0\ncorrection=P(manifest['nicotiana-correction']['extracted_body']).read_text()\nassert 'labeling errors in Fig. 1a' in correction and 'now reading top-down' in correction\nprint(json.dumps({'primary_matched_graph_snippets':count,'primary_main_bodies':3,'complete_correction_texts':1,'paid_submissions':0,'new_nodes_or_arrows':0,'separate_supplements_inspected':False,'mamc_image_only_table1_cells_inspected':False}))\n"
+ ],
+ "exit_code": 0,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/primary-graph-proof.log",
+ "log_sha256": "19222e3d55df466a09a7a88bfd7f2bb181ff4c19926089af7fb1b9d296e3107a",
+ "output_tail": "{\"primary_matched_graph_snippets\": 9, \"primary_main_bodies\": 3, \"complete_correction_texts\": 1, \"paid_submissions\": 0, \"new_nodes_or_arrows\": 0, \"separate_supplements_inspected\": false, \"mamc_image_only_table1_cells_inspected\": false}\n"
+ }
+ ],
+ "limitations": [
+ "All9 original nodes and2 arrows reviewed;7 outcome/observation nodes retained,2 procedure nodes and2 unsupported mediation arrows removed. No new causal structure or Edison submission.",
+ "Three complete fresh primary main bodies and complete Nicotiana2026 correction read, with embedded tables. MAMC Table1 is an image: only its caption read. No original figure pixels, separate supplements or raw data audited; numerical summaries are author-reported, not independently recomputed.",
+ "Nicotiana correction PMID:42304108 fixes Fig1 particle-size labels only. Five individual-strain flasks, three-strain plant mixture, time-dependent benefits/adverse early response, unconditioned controls and later MS phosphorus supplementation remain distinct. Biofilm/acid/exclusive-P mediators remain hypotheses.",
+ "Lupin input roster follows main Table1, preserving two distinct Streptomyces strains. FlowPot RNA-seq is not CAS-soil transcriptomics or biochemical flux. Richness/composition confounding and statistical/timing wording inconsistencies remain unresolved.",
+ "MAMC FTIR fraction estimates and their mean are not dry-mass loss, individual partner flux or measured division of labor. Source-reported strain-like16S labels are preserved, not recertified culture/genome identities.",
+ "Canonical taxonomy and raw non-graph blocks preserved, not recertified. Issue1564 remains OPEN for metadata, host/role/strain identities and source inconsistencies.",
+ "All920 caches unchanged. Retained graph excerpts match fresh primary text without certifying historical full-cache or non-graph provenance. Public OA XML was used without bypassing publisher access restrictions.",
+ "Deduplication covered857 all-state issue titles/bodies with no exact matches and21 scoped ignored/hidden local files. Existing Lupinus review and MAMC workflow history read, not every PR/comment/local match. Self-adversarial review is not independent approval; repair issues remain OPEN until protected-main merge.",
+ "Exact HTML-description parser and repeat-render checks, not browser screenshots. Post-commit docs-current is separate."
+ ],
+ "snippet_counts_by_record": {
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml": {
+ "MATCH": 22,
+ "RENDERING": 0,
+ "ASSEMBLED": 0,
+ "WEAK": 0,
+ "MISMATCH": 0,
+ "NOCONTENT": 0
+ },
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml": {
+ "MATCH": 28,
+ "RENDERING": 0,
+ "ASSEMBLED": 0,
+ "WEAK": 0,
+ "MISMATCH": 0,
+ "NOCONTENT": 0
+ },
+ "kb/communities/MAMC_M48_Lignocellulose.yaml": {
+ "MATCH": 17,
+ "RENDERING": 0,
+ "ASSEMBLED": 0,
+ "WEAK": 0,
+ "MISMATCH": 0,
+ "NOCONTENT": 0
+ }
+ },
+ "unchanged_raw_blocks": 53,
+ "unchanged_record_files": 457,
+ "unchanged_cache_files": 920,
+ "edison": {
+ "required_for_this_repair": false,
+ "provider_submissions": 0,
+ "credits_spent": 0,
+ "reason": "Existing-node/arrow repairs only; no new causal structure."
+ },
+ "primary_artifacts": {
+ "/private/tmp/communitymech-batch64/nicotiana-primary.xml": "b0e29caab42b70eafcea35174b987581223d6592195fb209a311d6002cf6d120",
+ "/private/tmp/communitymech-batch64/nicotiana-primary.txt": "3aea6870c9fca9b5021b2ba885ba899559289611f50c362ea74daa4439fe7b5b",
+ "/private/tmp/communitymech-batch64/nicotiana-tables.txt": "c2f3d53ce320679ab571bc2770a09cdc2e0aa5dd1d5f8a358ca0fee4a9a826c1",
+ "/private/tmp/communitymech-batch64/lupin-primary.xml": "b3de8ac7353f008d8a6c255be0a50c993896e2e666a9607d1bc69b2130681a20",
+ "/private/tmp/communitymech-batch64/lupin-primary.txt": "f2b8d661573ce3b2a9e88c48ad88181199ccff7a5a952d2a8bcaac535826236f",
+ "/private/tmp/communitymech-batch64/lupin-tables.txt": "881e10b07a321a12ef30b406af1fe25d70f2bcef33e29d6dc613d4497f9591cc",
+ "/private/tmp/communitymech-batch64/mamc-primary.xml": "c3924a1a9c2d6e516f24530c97c11f8298ddb83953bdd95774e7cd6ccb79c982",
+ "/private/tmp/communitymech-batch64/mamc-primary.txt": "4824e382532cab0a329ed32489d3a7f75959c6e133ea7566b106115db7125a9f",
+ "/private/tmp/communitymech-batch64/mamc-tables.txt": "9e0d2b7f7c8b132c0dc141728a0f767bf6bcd8a5b12f4143d5ff81f4315758c1",
+ "/private/tmp/communitymech-batch64/nicotiana-correction-primary.xml": "61d37d0dfcb7b6db8a8324be80d062b69a81a66fe19f074d3e451e29bc80e0ed",
+ "/private/tmp/communitymech-batch64/nicotiana-correction-primary.txt": "ff255ecfd9a827224a3dd8e16b17a4692197731117382f0f4905b8a9f91e90c9",
+ "/private/tmp/communitymech-batch64/nicotiana-correction-tables.txt": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b"
+ },
+ "network_delta": {
+ "existing_findings_preserved": 46,
+ "added_findings": {},
+ "removed_findings": {},
+ "interpretation": "All46 baseline network findings preserved exactly; no auditor-rule changes or invented links. Explicit participant lists identify tested panels/inoculants, not missing hosts or background communities."
+ },
+ "render_determinism": true,
+ "published_description_coverage": {
+ "pages": 456,
+ "nodes": 1438,
+ "arrows": 631
+ },
+ "participant_census": {
+ "measurements": {
+ "baseline": {
+ "records": 460,
+ "with_community_level": 391,
+ "mixed": 124,
+ "community_level_only": 267,
+ "taxa": 1507,
+ "credited_solely_by_the_rule": 1238
+ },
+ "current": {
+ "records": 460,
+ "with_community_level": 391,
+ "mixed": 124,
+ "community_level_only": 267,
+ "taxa": 1507,
+ "credited_solely_by_the_rule": 1238
+ }
+ },
+ "interpretation": "Canonical roster/scope census unchanged. Explicit participants separate the five-strain Nicotiana test panel from its three-strain plant inoculum and preserve two distinct Lupinus Streptomyces strain names. This coarse census does not resolve missing hosts, strain identity or background community membership."
+ },
+ "network_warning_count": 46,
+ "corpus": {
+ "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.",
+ "records": 460,
+ "nodes": 1452,
+ "edges": 639,
+ "records_without_nodes": 8,
+ "records_without_edges": 161,
+ "review_status_counts": {
+ "needs_research": 21,
+ "pending": 233,
+ "reviewed": 206
+ },
+ "structural_defects": []
+ },
+ "tested_file_sha256": {
+ "reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml": "c1ee5014ea7d83ad47d2a03e7392fb2e5f86722f7d29f90b1b132f41804982b4",
+ "tests/test_causal_review_batch64.py": "4a864fd15d4cb6988952b8f1a31364989276e99280b2225a06c88e051f847b70",
+ "tests/test_participating_taxa.py": "01e176fc992824021f3e48108ee225f94a5e3c2cf56e97d4468fa3cced4adbd0",
+ "kb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml": "880e7a2f3269d73be3a9cdd38f7433934afbdf47ad3a04cc6820982256b3ce89",
+ "kb/communities/Lupinus_SC7_Rhizosphere_SynCom.yaml": "59a83e4d0b1defdc5f3bae63bccb38caa87fa9fd90a6c115e5be6f518998f6ff",
+ "kb/communities/MAMC_M48_Lignocellulose.yaml": "d877e443187162745cbfa2adba246854e6b2667793da22f8837fd64d08925176",
+ "reports/causal_graph_review/README.md": "a61930eb6b303a69168837c7cf82a476707ffc92d9748429fdbfbe8ce3163e7a"
+ },
+ "status": "verified_assay_boundary_graph_review",
+ "superseded_checks": [
+ {
+ "check": "primary-graph-proof-initial",
+ "exit_code": 1,
+ "expected_exit_codes": [
+ 0
+ ],
+ "log": "/private/tmp/communitymech-batch64/primary-graph-proof-initial.log",
+ "log_sha256": "85151831cc085556c2cec2560862da7a718b42af899dba3c5637e1ff5e841201",
+ "output_tail": "Traceback (most recent call last):\n File \"
\", line 17, in \n assert 'particle' in P(manifest['nicotiana-correction']['extracted_body']).read_text()\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nAssertionError\n",
+ "disposition": "Audit-helper canary incorrectly expected the word particle; the correction says sizes of simulants. Replaced by checks for its actual figure-label correction wording. No record, source or regression inputs changed."
+ }
+ ],
+ "pre_research_baseline": {
+ "base_commit": "ba082c3e8c3f34f78e3f9dc32b35f57cc303bc7f",
+ "base_tree": "dd17ec3ede912a585403b33770ce6384ec2bb295",
+ "research_worktree": "/private/tmp/communitymech-causal-batch63",
+ "checks": [
+ {
+ "name": "rank",
+ "command": [
+ "just",
+ "rank-causal-graphs"
+ ],
+ "exit_code": 0,
+ "expected_exit_code": 0,
+ "log": "/private/tmp/communitymech-batch64/baseline-rank.log",
+ "sha256": "78534391fe19f49767a27da87bc7383b273d458b64a3537873c0090f000dffbb",
+ "output_tail": "/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml\tCommunityMech:000337\tTropidoatractus magnetotacticus Magnetotactic Ciliate Tripartite Syntrophy\t3\t3\t0\t4\t2\t9\t\t0\t0\n450\t100.0\tkb/communities/Urine_Nitrification_SynCom.yaml\tCommunityMech:000117\tUrine Nitrification Synthetic Microbial Community\t5\t5\t0\t3\t2\t5\t\t0\t0\n451\t100.0\tkb/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml\tCommunityMech:000213\tVariovorax-Cryptococcus Vitamin Cross-Feeding Microcosm\t2\t2\t0\t3\t2\t4\t\t0\t0\n452\t100.0\tkb/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml\tCommunityMech:000328\tWaste-Sludge Electro-Fermentation Biofilm-Suspension Community\t5\t5\t0\t4\t2\t6\t\t0\t0\n453\t100.0\tkb/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.yaml\tCommunityMech:000098\tWatermelon Rhizosphere Fusarium-Protective SynCom8\t2\t2\t0\t3\t2\t7\t\t0\t0\n454\t100.0\tkb/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml\tCommunityMech:000255\tWetland Oxygen-Sulfate Greenhouse Gas Microcosm Community\t3\t3\t0\t3\t2\t6\t\t0\t0\n455\t100.0\tkb/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.yaml\tCommunityMech:000118\tWheat Straw Biogas Pretreatment SynCom\t4\t4\t0\t3\t2\t4\t\t0\t0\n456\t100.0\tkb/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml\tCommunityMech:000354\tYarrowia lipolytica Division-of-Labor Lipid Consortium\t2\t2\t0\t3\t2\t3\t\t0\t0\n457\t100.0\tkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml\tCommunityMech:000164\tYogurt Two-Species Starter Culture\t2\t2\t0\t4\t2\t9\t\t0\t0\n458\t100.0\tkb/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml\tCommunityMech:000210\tZymomonas-E. coli Exometabolomics-Designed Obligate Mutualism\t2\t2\t0\t3\t2\t6\t\t0\t0\n459\t100.0\tkb/communities/hCom2_Complex_Gut_Microbiome.yaml\tCommunityMech:000123\thCom2 Complex Gut Microbiome\t1\t1\t0\t3\t2\t3\t\t0\t0\n460\t100.0\tkb/communities/mCAFEs_Brachypodium_RCC.yaml\tCommunityMech:000078\tm-CAFEs Brachypodium Reduced Complexity Consortia\t10\t10\t0\t6\t2\t11\t\t0\t0\nPYTHONPATH=src uv run python scripts/rank_causal_graph_readiness.py \n"
+ },
+ {
+ "name": "just-network",
+ "command": [
+ "just",
+ "audit-network-json"
+ ],
+ "exit_code": 2,
+ "expected_exit_code": 2,
+ "log": "/private/tmp/communitymech-batch64/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-batch64/baseline-network.log",
+ "sha256": "3a156d88a5b27b6a726e91303cf9249745ee46d4e53a0ac73d58779dc1041a7d",
+ "output_tail": " \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Staphylococcus capitis | K1-2-2-23 | ISS, V2A Steel | DSM 111179 | Sobisch et al., 2019 | GCA_025272695 | TSYB/TSYA | 37 \\u00b0C | 16\\u201324 h\",\n \"explanation\": \"Identifies S. capitis K1-2-2-23 as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Staphylococcus capitis K1-2-2-23' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Streptococcus halotolerans HTS9T\",\n \"taxon_id\": \"NCBITaxon:1814128\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Streptococcus halotolerans HTS9T\",\n \"term\": {\n \"id\": \"NCBITaxon:1814128\",\n \"label\": \"Streptococcus halotolerans\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the S. halotolerans type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"HTS9T\",\n \"genome_accession\": \"GCA_001598035\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"101996\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Streptococcus halotolerans | HTS9 T | Respiratory Tract of Marmota himalayana | DSM 101996 T | Niu et al., 2016 | GCA_001598035 | 2xLB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies S. halotolerans HTS9T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Streptococcus halotolerans HTS9T' has no interactions\"\n }\n ]\n}\n"
+ },
+ {
+ "name": "downstream",
+ "command": [
+ "rg",
+ "--no-ignore",
+ "--hidden",
+ "-n",
+ "downstream:",
+ "kb/communities",
+ "data/isolates",
+ "--glob",
+ "*.yaml"
+ ],
+ "exit_code": 0,
+ "expected_exit_code": 0,
+ "log": "/private/tmp/communitymech-batch64/baseline-downstream.log",
+ "sha256": "cd4b8863430cac214817daeda6aea3a656ccbeb533b7eb7d6646cfd6fb1ce6b6",
+ "output_tail": "ies/Yogurt_TwoSpecies_Starter_Culture.yaml:267: downstream:\nkb/communities/Synechococcus_Bacillus_SPC.yaml:120: downstream:\nkb/communities/Synechococcus_Bacillus_SPC.yaml:152: downstream:\nkb/communities/SMutans_VParvula_ASC_Biofilm.yaml:131: downstream:\nkb/communities/SMutans_VParvula_ASC_Biofilm.yaml:179: downstream:\nkb/communities/Methylacidiphilum_Galdieria_Thermoacidophilic_Coculture.yaml:268: downstream:\nkb/communities/Methylacidiphilum_Galdieria_Thermoacidophilic_Coculture.yaml:315: downstream:\nkb/communities/PMI_Variovorax_Thermotolerance_Collection.yaml:330: downstream:\nkb/communities/Polaromonas_Vanadium_Reduction_Community.yaml:281: downstream:\nkb/communities/Polaromonas_Vanadium_Reduction_Community.yaml:401: downstream:\nkb/communities/BioModels_MODEL2204300001_Kefir_Community_Model.yaml:203: downstream:\nkb/communities/Asgard_Wetland_Soil_Methanogenesis_Substrate_Community.yaml:157: downstream:\nkb/communities/Asgard_Wetland_Soil_Methanogenesis_Substrate_Community.yaml:196: downstream:\nkb/communities/Acetobacterium_Clostridium_CO2_Electrolysis_Coculture.yaml:149: downstream:\nkb/communities/Acetobacterium_Clostridium_CO2_Electrolysis_Coculture.yaml:218: downstream:\nkb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml:147: downstream:\nkb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml:247: downstream:\nkb/communities/Sclerotinia_Sclerotia_12Strain_Biocontrol_SynCom.yaml:332: downstream:\nkb/communities/Salar_Atacama_Lithium_Brine_Community.yaml:295: downstream:\nkb/communities/Salar_Atacama_Lithium_Brine_Community.yaml:339: downstream:\nkb/communities/Human_Gut_FourMember_Proteome_Complementarity_Consortium.yaml:153: downstream:\nkb/communities/Human_Gut_FourMember_Proteome_Complementarity_Consortium.yaml:218: downstream:\nkb/communities/Shewanella_Streptococcus_Starch_Microbial_Fuel_Cell.yaml:140: downstream:\nkb/communities/Shewanella_Streptococcus_Starch_Microbial_Fuel_Cell.yaml:221: downstream:\n"
+ }
+ ],
+ "baseline_sha256": "f431bba44c0751b74884be1f75895b81ef84d434af48839db008c39b2c9b7d45"
+ },
+ "reference_validator_caveat": "CLI Total checks counts reported issues, not executed checks. MATCH is not scientific entailment or certification of historical provenance. All920 caches unchanged;9 graph excerpts independently match fresh primary text.1564 and existing476/1091/1095 limitations remain unresolved; graph repairs do not recertify non-graph blocks."
+}
diff --git a/tests/test_causal_review_batch64.py b/tests/test_causal_review_batch64.py
new file mode 100644
index 000000000..1791003dd
--- /dev/null
+++ b/tests/test_causal_review_batch64.py
@@ -0,0 +1,142 @@
+"""Separate measured outcomes from procedures and proposed causal mediators."""
+
+import hashlib
+from pathlib import Path
+
+import yaml
+
+ROOT = Path(__file__).resolve().parents[1]
+LEDGER = ROOT / "reports/causal_graph_review/decisions/20261006-assay-boundaries-batch64.yaml"
+N = "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana"
+L = "Lupinus_SC7_Rhizosphere_SynCom"
+M = "MAMC_M48_Lignocellulose"
+
+
+def records():
+ ledger = yaml.safe_load(LEDGER.read_text())
+ rows = {Path(r["path"]).stem: r for r in ledger["records"]}
+ docs = {name: yaml.safe_load((ROOT / r["path"]).read_text()) for name, r in rows.items()}
+ return ledger, rows, docs
+
+
+def test_nicotiana_attachment_and_acids_remain_hypotheses():
+ _, _, docs = records()
+ attachment, phosphorus, _ = docs[N]["ecological_interactions"]
+ assert "not direct biofilm imaging" in attachment["description"]
+ assert "separate individual-strain" in attachment["description"]
+ assert "HYPOTHESIZED" in attachment["description"]
+ assert "specific secreted oxalate or citrate" in phosphorus["description"]
+ assert "were not measured" in phosphorus["description"]
+ assert len(phosphorus["metabolites"]) == 1
+ for node in [attachment, phosphorus]:
+ assert len(node["participating_taxa"]) == 5
+ assert "biological_processes" not in node
+ assert all(e["evidence_source"] == "IN_VITRO" for e in node["evidence"])
+
+
+def test_nicotiana_plant_response_preserves_time_controls_and_supplementation():
+ _, rows, docs = records()
+ plant = docs[N]["ecological_interactions"][2]
+ text = plant["description"]
+ for phrase in [
+ "315.92%",
+ "204.08%",
+ "percentages of control",
+ "53.28%",
+ "not pre-cultured",
+ "MS nutrient supplementation",
+ "missing canonical plant host",
+ ]:
+ assert phrase in text
+ assert len(plant["participating_taxa"]) == 3
+ assert all(e["evidence_source"] == "IN_VIVO" for e in plant["evidence"])
+ assert len(rows[N]["removed_edge_decisions"]) == 2
+ assert "PMID:42304108" in docs[N]["discussions"][-1]["rationale"]
+
+
+def test_lupin_input_roster_keeps_two_distinct_streptomyces_strains():
+ _, _, docs = records()
+ for node in docs[L]["ecological_interactions"]:
+ taxa = node["participating_taxa"]
+ assert len(taxa) == 12
+ strains = [t for t in taxa if t["term"]["id"] == "NCBITaxon:1883"]
+ assert len(strains) == 2
+ assert len({t["preferred_term"] for t in strains}) == 2
+ assert "does not establish dominance" in docs[L]["ecological_interactions"][0]["description"]
+
+
+def test_lupin_expression_and_composition_are_not_functional_flux():
+ _, _, docs = records()
+ _, expression, assembly = docs[L]["ecological_interactions"]
+ assert "FlowPot experiment" in expression["description"]
+ assert "not direct hormone production, nitrogen-fixation rate" in expression["description"]
+ assert "non-sterile CAS soil" in assembly["description"]
+ assert "not absolute exclusion" in assembly["description"]
+ assert "conflicts with its reported PERMANOVA p=0.001" in assembly["description"]
+ assert docs[L]["discussions"][0]["discussion_id"] == "sc7_richness_vs_membership"
+ assert docs[L]["discussions"][0]["status"] == "OPEN"
+
+
+def test_mamc_procedures_are_not_ecological_nodes():
+ _, rows, docs = records()
+ assert len(docs[M]["ecological_interactions"]) == 1
+ assert {n["node"] for n in rows[M]["removed_node_decisions"]} == {
+ "Sugarcane Lignocellulose Enrichment",
+ "Functional-Group Reductive MAMC Screening",
+ }
+ assert rows[M]["edges_before"] == rows[M]["edges_after"] == []
+
+
+def test_mamc_fraction_mean_is_not_each_fraction_or_gravimetric_loss():
+ _, _, docs = records()
+ output = docs[M]["ecological_interactions"][0]
+ for phrase in [
+ "43.01%",
+ "39.65%",
+ "69.18%",
+ "averaging 50.6%",
+ "rather than 50.6% for each",
+ "not direct gravimetric mass loss",
+ "16S identification labels",
+ "HYPOTHESIZED",
+ ]:
+ assert phrase in output["description"]
+ assert len(output["participating_taxa"]) == 5
+ assert "biological_processes" not in output
+
+
+def test_batch64_caches_and_canonical_participants_are_not_rewritten():
+ ledger, _, docs = records()
+ for path, digest in ledger["reference_cache_original_hashes"].items():
+ assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == digest
+ for doc in docs.values():
+ canonical = {
+ t["taxon_term"]["preferred_term"]: t["taxon_term"]["term"] for t in doc["taxonomy"]
+ }
+ for node in doc["ecological_interactions"]:
+ assert "interaction_type" not in node and "downstream" not in node
+ for taxon in node["participating_taxa"]:
+ assert canonical[taxon["preferred_term"]] == taxon["term"]
+ assert "#1564" in doc["discussions"][-1]["rationale"]
+ assert ledger["unresolved_non_graph_issues"] == [1564]
+ assert ledger["primary_graph_snippet_count"] == 9
+
+
+def test_batch64_all_nodes_arrows_histories_and_source_limits_recorded():
+ ledger, rows, docs = records()
+ assert ledger["independent_approval"] is False
+ assert ledger["issues"] == [1561, 1562, 1563]
+ assert ledger["edison"]["provider_submissions"] == ledger["edison"]["credits_spent"] == 0
+ assert sum(len(r["node_decisions"]) for r in rows.values()) == 7
+ assert sum(len(r["removed_node_decisions"]) for r in rows.values()) == 2
+ assert sum(len(r["edges_before"]) for r in rows.values()) == 2
+ assert sum(len(r["edges_after"]) for r in rows.values()) == 0
+ for name, row in rows.items():
+ doc = docs[name]
+ assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"]
+ assert doc["curation_history"][-1]["llm_assisted"] is True
+ assert len(row["history_files"]) == 1 and row["status"] == "reviewed"
+ names = {n["name"] for n in doc["ecological_interactions"]}
+ assert {d["node"] for d in row["node_decisions"]} == names
+ assert {a.split("#", 1)[1] for a in doc["discussions"][-1]["attaches_to"]} == names
+ assert doc["discussions"][-1]["status"] == "OPEN"
diff --git a/tests/test_participating_taxa.py b/tests/test_participating_taxa.py
index 0929db9ba..454f4fb8b 100644
--- a/tests/test_participating_taxa.py
+++ b/tests/test_participating_taxa.py
@@ -316,6 +316,8 @@ def test_a_curie_is_ambiguous_where_members_share_an_id(example):
"Lotus_LjSC3.yaml",
"Lunar_Martian_Simulant_PGPB_Lettuce_SynCom.yaml",
"Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml",
+ "Lupinus_SC7_Rhizosphere_SynCom.yaml",
+ "MAMC_M48_Lignocellulose.yaml",
"MSC1_Dominant_Core.yaml",
"MSC2_Model_Soil_Consortium.yaml",
"Magnetite_Sulfate_Stress_Anaerobic_Microbiome.yaml",