From 0bdaecccda3f6e0823c852c3fd445896e8a7714c Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Tue, 6 Oct 2026 06:44:19 -0700 Subject: [PATCH] Bound CL95 biocontrol and S11 nitrogen-removal causal claims --- ...CL95_Rusty_Root_Rot_Biocontrol_SynCom.html | 46 +- ...1_Aquaculture_Nitrogen_Removal_SynCom.html | 51 +- .../2026-10-06T133304Z-codex-ad2e45.yaml | 25 + .../2026-10-06T133304Z-codex-93714d.yaml | 25 + ...CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml | 153 ++-- ...1_Aquaculture_Nitrogen_Removal_SynCom.yaml | 71 +- reports/causal_graph_review/README.md | 11 + .../adversarial-review-20261006-batch48.yaml | 139 ++++ .../20261006-ginseng-s11-batch48.yaml | 137 ++++ reports/causal_graph_review/inventory.tsv | 4 +- reports/causal_graph_review/summary.json | 8 +- .../validation-20261006-batch48.json | 731 ++++++++++++++++++ tests/test_causal_review_batch48.py | 114 +++ 13 files changed, 1346 insertions(+), 169 deletions(-) create mode 100644 history/records/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom/2026-10-06T133304Z-codex-ad2e45.yaml create mode 100644 history/records/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom/2026-10-06T133304Z-codex-93714d.yaml create mode 100644 reports/causal_graph_review/adversarial-review-20261006-batch48.yaml create mode 100644 reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml create mode 100644 reports/causal_graph_review/validation-20261006-batch48.json create mode 100644 tests/test_causal_review_batch48.py diff --git a/docs/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.html b/docs/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.html index ddfb8b96f..e3f4923d6 100644 --- a/docs/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.html +++ b/docs/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.html @@ -769,7 +769,7 @@

Ecological Interactions

Ecological interaction network for Ginseng CL95 Rusty Root Rot Biocontrol SynCom - Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction (mutualism, competition). + Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction.
@@ -777,13 +777,8 @@

Ecological Interactions

Mutualism -
-
- Competition + aria-hidden="true" data-symbol="symbolTriangle2" + data-color="#929caa"> Other
@@ -792,9 +787,8 @@

Ecological Interactions

CL95 Ilyonectria robusta suppression

- COMPETITION
-

CL95 suppressed Ilyonectria robusta in mycelial-growth and wounded-ginseng assays and was the strongest field-performing biocontrol consortium, with 66.67% control efficacy against ginseng rusty root rot.

+

CL95 inhibited Ilyonectria robusta in plate and wounded-ginseng-root assays and had the highest reported field rusty-root-rot control efficacy among the tested treatments, 66.67%. Plate colony-growth inhibition was 73%; that endpoint is distinct from disease control. These experiments support whole-consortium antagonistic capacity and field disease suppression, not a selectively established resource-competition mechanism or a causal attribution to any one member. Fungal qPCR measures DNA abundance, not necessarily viable pathogen numbers. Plant growth improved under the same field treatment, but suppression was not selectively manipulated to establish it as the mediator of growth.

@@ -832,16 +826,6 @@

CL95 Ilyonectria robusta suppression

-
- Downstream Effects: - -
- → CL95 plant growth promotion -

Rusty-root-rot suppression in the field accompanied enhanced ginseng root length, fresh root weight, root diameter, and chlorophyll content under CL95 and five other high-performing consortia.

-
- -
-

Evidence

@@ -880,9 +864,8 @@

Evidence

CL95 plant growth promotion

- MUTUALISM
-

Field-tested CL95 belonged to the subset of six consortia that both suppressed rusty root rot and promoted ginseng growth, and its plate assays showed nitrogen fixation, phosphate solubilization, and potassium-release zones.

+

CL95 was among six selected field treatments that reduced disease and increased ginseng growth. Separate plate screens reported nitrogen-fixation, phosphate-solubilization and potassium-release zone phenotypes; Table S5 lists CL95 zones of 13.00, 15.50 and 19.00 mm, respectively. Those screens are functional proxies, not measurements of nutrient flux into the plant or proof that any one plate phenotype mediates the field response. Improved host growth and higher consortium performance do not by themselves establish reciprocal fitness benefits for the host and all five bacterial strains.

@@ -962,9 +945,8 @@

Evidence

CL95 colonization and rhizosphere enzyme response

- MUTUALISM
-

Antibiotic-labeled CL95 strains colonized ginseng tissues and rhizosphere soil more efficiently than single strains and the CL95 field treatment increased phosphatase, sucrase, catalase, and urease activities during the ginseng root expansion period.

+

Antibiotic-selection colony counts support recovery of labeled bacteria from ginseng tissues and rhizosphere soil after CL95 treatment over the 63-day experiment, with higher recovery than single-strain treatments. The Methods name labeled NJ13, NT35 and FG14 strains mixed with unlabeled partners; these counts do not independently track all five CL95 members or show that every member benefits. Tissue-specific time courses motivate the authors' proposed upward-migration trajectory but do not directly track individual cells moving between tissues. Separately, CL95 treatment increased measured rhizosphere phosphatase, sucrase, catalase and urease activities during root expansion. These soil activities do not identify their producing organism or establish a colonization-to-enzyme-to-growth causal chain, reciprocal mutualism or a specific biofilm mechanism.

@@ -993,9 +975,9 @@

CL95 colonization and rhizosphere enzyme response

  • - symbiotic process - (GO:0044403) + biological process involved in interspecies interaction between organisms + (GO:0044419)
@@ -1051,7 +1033,7 @@

OPEN Which CL95 member strains and secreted metabolites directly suppress Ilyonectria robusta or drive the measured ginseng growth-promotion and rhizosphere enzyme phenotypes?

-

Tian et al. 2026 connected CL95 to strong pathogen suppression, plant growth promotion, tissue/rhizosphere colonization, and soil-enzyme responses, but did not assign the community phenotypes to a specific member or molecule.

+

Tian et al. 2026 connected CL95 to strong pathogen suppression, plant growth promotion, tissue/rhizosphere colonization, and soil-enzyme responses, but did not assign the community phenotypes to a specific member or molecule. Plate antagonism does not isolate resource competition, and improved host growth does not measure reciprocal bacterial fitness. Selective-CFU recovery, plate nutrient-screen zones, soil enzyme activities, defense-gene expression and amplicon correlations were measured in distinct assays; they do not selectively establish a colonization, nutrient-flux, induced-systemic-resistance or microbiome-recruitment mediation chain. In particular, defense transcription is positive host-response evidence, not a pathway-blockade test of necessity. The suppression-to-growth arrow is removed because it encodes joint treatment outcomes rather than isolated mediation. Resolve strain-specific marker readout, relevant perturbations and the abstract/main-text soil-enzyme percentage discrepancy before assigning exact member effects or new causal branches.

Attaches to: ecological_interactions#CL95 Ilyonectria robusta suppression, ecological_interactions#CL95 plant growth promotion, ecological_interactions#CL95 colonization and rhizosphere enzyme response

@@ -1343,7 +1325,7 @@

Evidence

(function() { var intId = "interaction:0"; - var intType = "COMPETITION"; + var intType = "UNKNOWN"; var metabolites = []; var processes = []; @@ -1392,7 +1374,7 @@

Evidence

(function() { var intId = "interaction:1"; - var intType = "MUTUALISM"; + var intType = "UNKNOWN"; var metabolites = []; var processes = []; @@ -1441,13 +1423,13 @@

Evidence

(function() { var intId = "interaction:2"; - var intType = "MUTUALISM"; + var intType = "UNKNOWN"; var metabolites = []; var processes = []; - processes.push("symbiotic process"); + processes.push("biological process involved in interspecies interaction between organisms"); var evidenceCount = 2; diff --git a/docs/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.html b/docs/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.html index bdb9e074e..3d4ff06ec 100644 --- a/docs/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.html +++ b/docs/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.html @@ -561,7 +561,7 @@

Ecological Interactions

Ecological interaction network for Glutamicibacter S11 Aquaculture Nitrogen Removal SynCom - Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction (mutualism). + Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction.
@@ -569,8 +569,8 @@

Ecological Interactions

Mutualism + aria-hidden="true" data-symbol="symbolTriangle2" + data-color="#929caa"> Other
@@ -579,9 +579,8 @@

Ecological Interactions

Synergistic S11 ammonium and nitrite removal

- MUTUALISM
-

The two-strain S11 consortium removed ammonium and nitrite nitrogen more efficiently than the corresponding single-strain cultures under the reported pH and C/N ranges.

+

The two-strain S11 consortium removed ammonium and nitrite more efficiently than the corresponding single-strain cultures. The primary abstract reports 95% ammonium-N and 97% nitrite-N removal within 24 h at initial concentrations of 30 mg/L each, pH 6-9 and C/N at least 15, described as a 15%-25% improvement over monocultures. This positive whole-consortium removal phenotype does not by itself establish reciprocal microbial fitness, exchanged intermediates or a formal interaction mechanism. The authors characterize the isolates as heterotrophic nitrification-aerobic denitrification strains, but the accessible abstract does not partition consortium removal among oxidation, denitrification, assimilation and other sinks or provide a nitrogen mass balance. Sponge-immobilized recirculation and industrial trials are separate assay contexts, not steps in a demonstrated causal chain; reported industrial residual nitrite fractions are not removal percentages.

@@ -610,23 +609,6 @@

Synergistic S11 ammonium and nitrite removal

-

Biological Processes:

- - @@ -670,7 +652,7 @@

Evidence

-

Knowledge gaps & discussions (1)

+

Knowledge gaps & discussions (2)

@@ -685,6 +667,21 @@

+

+ +
+

+ KNOWLEDGE_GAP + OPEN + Which nitrogen routes and partner effects explain S11 removal performance? +

+

The accessible primary abstract identifies both strains as HNAD organisms and reports a positive consortium removal contrast, but does not resolve partner-specific viable growth, isotope flux, nitrogen mass balance, exchanged intermediates or pathway perturbations. Retain that positive HNAD characterization without assigning resolved graph-level ammonia-oxidation or denitrification flux. Full Methods and controls are unavailable for this review. Separate batch, sponge and industrial endpoints and do not equate residual concentration percentages with removal. Resolve these gaps before adding a reciprocal-benefit, route-specific or cross-feeding edge.

+ +

Attaches to: ecological_interactions#Synergistic S11 ammonium and nitrite removal

+ + + +
@@ -971,7 +968,7 @@

Evidence

(function() { var intId = "interaction:0"; - var intType = "MUTUALISM"; + var intType = "UNKNOWN"; var metabolites = []; @@ -982,12 +979,6 @@

Evidence

var processes = []; - - processes.push("ammonia oxidation"); - - processes.push("denitrification"); - - var evidenceCount = 2; nodes.push({ diff --git a/history/records/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom/2026-10-06T133304Z-codex-ad2e45.yaml b/history/records/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom/2026-10-06T133304Z-codex-ad2e45.yaml new file mode 100644 index 000000000..a4778080a --- /dev/null +++ b/history/records/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom/2026-10-06T133304Z-codex-ad2e45.yaml @@ -0,0 +1,25 @@ +history_version: 1 +target: + kind: record + path: kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml + slug: Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom +session: + id: 2026-10-06T133304Z-codex-ad2e45 + timestamp: '2026-10-06T13:33:04Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1487 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Bound CL95 antagonism, host growth and marker recovery; remove unproven ecological + labels and the suppression-to-growth correlation arrow. + details: Source-based self-adversarial graph repair. reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml diff --git a/history/records/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom/2026-10-06T133304Z-codex-93714d.yaml b/history/records/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom/2026-10-06T133304Z-codex-93714d.yaml new file mode 100644 index 000000000..19f83a0f4 --- /dev/null +++ b/history/records/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom/2026-10-06T133304Z-codex-93714d.yaml @@ -0,0 +1,25 @@ +history_version: 1 +target: + kind: record + path: kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml + slug: Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom +session: + id: 2026-10-06T133304Z-codex-93714d + timestamp: '2026-10-06T13:33:04Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1488 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Retain S11 nitrogen-removal performance without unmeasured mutualism or resolved + consortium flux routes. + details: Source-based self-adversarial graph repair. reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml diff --git a/kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml b/kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml index c495457b2..f368de756 100644 --- a/kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml +++ b/kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml @@ -256,11 +256,13 @@ taxonomy: explanation: Supplementary Table S3 includes JI6 in the CL95 consortium. ecological_interactions: - name: CL95 Ilyonectria robusta suppression - description: >- - CL95 suppressed Ilyonectria robusta in mycelial-growth and wounded-ginseng - assays and was the strongest field-performing biocontrol consortium, with - 66.67% control efficacy against ginseng rusty root rot. - interaction_type: COMPETITION + description: CL95 inhibited Ilyonectria robusta in plate and wounded-ginseng-root assays and had the highest reported + field rusty-root-rot control efficacy among the tested treatments, 66.67%. Plate colony-growth inhibition was + 73%; that endpoint is distinct from disease control. These experiments support whole-consortium antagonistic + capacity and field disease suppression, not a selectively established resource-competition mechanism or a causal + attribution to any one member. Fungal qPCR measures DNA abundance, not necessarily viable pathogen numbers. + Plant growth improved under the same field treatment, but suppression was not selectively manipulated to establish + it as the mediator of growth. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Bacillus velezensis NJ13 @@ -292,33 +294,27 @@ ecological_interactions: term: id: GO:0044419 label: biological process involved in interspecies interaction between organisms - downstream: - - target: CL95 plant growth promotion - description: >- - Rusty-root-rot suppression in the field accompanied enhanced ginseng root - length, fresh root weight, root diameter, and chlorophyll content under - CL95 and five other high-performing consortia. evidence: - reference: PMID:42305112 supports: SUPPORT evidence_source: IN_VITRO snippet: the five-strain consortia CL95 and CL94 showed substantial inhibition rates of 73% - explanation: Supports CL95 suppression of Ilyonectria robusta mycelial growth. + explanation: Supports 73% colony-growth inhibition in the plate assay, not a resource-competition mechanism + or field efficacy value. - reference: PMID:42305112 supports: SUPPORT evidence_source: IN_VIVO - snippet: >- - Six consortia exhibited control efficacy exceeding 50%, with CL95 showing - the highest efficacy at 66.67%, followed closely by CL92 at 62.96%. - explanation: >- - Supports the field rusty-root-rot control efficacy of the CL95 consortium. + snippet: Six consortia exhibited control efficacy exceeding 50%, with CL95 showing the highest efficacy at 66.67%, + followed closely by CL92 at 62.96%. + explanation: Supports the reported 66.67% field disease-control phenotype, not direct proof of its molecular + mediator or of pathogen-suppression-caused plant growth. - name: CL95 plant growth promotion - description: >- - Field-tested CL95 belonged to the subset of six consortia that both - suppressed rusty root rot and promoted ginseng growth, and its plate assays - showed nitrogen fixation, phosphate solubilization, and potassium-release - zones. - interaction_type: MUTUALISM + description: CL95 was among six selected field treatments that reduced disease and increased ginseng growth. Separate + plate screens reported nitrogen-fixation, phosphate-solubilization and potassium-release zone phenotypes; Table + S5 lists CL95 zones of 13.00, 15.50 and 19.00 mm, respectively. Those screens are functional proxies, not measurements + of nutrient flux into the plant or proof that any one plate phenotype mediates the field response. Improved + host growth and higher consortium performance do not by themselves establish reciprocal fitness benefits for + the host and all five bacterial strains. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Bacillus velezensis NJ13 @@ -354,31 +350,33 @@ ecological_interactions: - reference: PMID:42305112 supports: SUPPORT evidence_source: IN_VIVO - snippet: >- - These selected consortia demonstrated dual functionality, effectively - suppressing rusty root rot while simultaneously promoting ginseng growth - explanation: >- - Identifies CL95 as one of six field-tested consortia with the combined - disease-suppression and growth-promotion phenotype. + snippet: These selected consortia demonstrated dual functionality, effectively suppressing rusty root rot while + simultaneously promoting ginseng growth + explanation: Supports the joint field phenotypes in the selected group including CL95, not causal mediation + between disease suppression and growth or reciprocal mutualism. - reference: PMID:42305112 supports: SUPPORT evidence_source: IN_VITRO - snippet: |- - NJ13+NT35+FG14+TU26+JI6 + snippet: 'NJ13+NT35+FG14+TU26+JI6 + CL95 + 13.00±0.253e + 15.50±0.133c - 19.00±0.431d - explanation: >- - Reports the Supplementary Table S5 nitrogen-fixation, - phosphate-solubilization, and potassium-release zone diameters for CL95. + + 19.00±0.431d' + explanation: Cached Supplementary Table S5 reports these CL95 zone diameters. They are plate-screen endpoints, + not isotope-measured nitrogen fixation, nutrient transfer to ginseng, or field flux. - name: CL95 colonization and rhizosphere enzyme response - description: >- - Antibiotic-labeled CL95 strains colonized ginseng tissues and rhizosphere - soil more efficiently than single strains and the CL95 field treatment - increased phosphatase, sucrase, catalase, and urease activities during the - ginseng root expansion period. - interaction_type: MUTUALISM + description: Antibiotic-selection colony counts support recovery of labeled bacteria from ginseng tissues and + rhizosphere soil after CL95 treatment over the 63-day experiment, with higher recovery than single-strain treatments. + The Methods name labeled NJ13, NT35 and FG14 strains mixed with unlabeled partners; these counts do not independently + track all five CL95 members or show that every member benefits. Tissue-specific time courses motivate the authors' + proposed upward-migration trajectory but do not directly track individual cells moving between tissues. Separately, + CL95 treatment increased measured rhizosphere phosphatase, sucrase, catalase and urease activities during root + expansion. These soil activities do not identify their producing organism or establish a colonization-to-enzyme-to-growth + causal chain, reciprocal mutualism or a specific biofilm mechanism. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Bacillus velezensis NJ13 @@ -406,31 +404,27 @@ ecological_interactions: id: NCBITaxon:4054 label: Panax ginseng biological_processes: - - preferred_term: symbiotic process + - preferred_term: biological process involved in interspecies interaction between organisms term: - id: GO:0044403 - label: biological process involved in symbiotic interaction + id: GO:0044419 + label: biological process involved in interspecies interaction between organisms evidence: - reference: PMID:42305112 supports: SUPPORT evidence_source: IN_VIVO - snippet: >- - the biocontrol bacteria CL95 showed excellent colonization efficiency, - which was significantly better than single strain treatment - explanation: >- - Supports CL95 colonization of ginseng plant tissues and rhizosphere soil - over the 63-day monitoring period. + snippet: the biocontrol bacteria CL95 showed excellent colonization efficiency, which was significantly better + than single strain treatment + explanation: Supports the reported selective-CFU recovery contrast. The Methods use labeled Bacillus strains + with unlabeled partners; this is not independent tracking or measured fitness of all five members. - reference: PMID:42305112 supports: SUPPORT evidence_source: IN_VIVO - snippet: >- - Compared with the single strain CL1, the soil phosphatase activity of CL95 - treatment increased by 100%, the sucrase activity increased by 140%, the - catalase activity increased by 180%, and the urease activity increased by - 150%. - explanation: >- - Supports enhanced soil-enzyme activities after CL95 treatment relative to - the best single-strain treatment. + snippet: Compared with the single strain CL1, the soil phosphatase activity of CL95 treatment increased by 100%, + the sucrase activity increased by 140%, the catalase activity increased by 180%, and the urease activity increased + by 150%. + explanation: The primary Results report these four soil-activity increases versus CL1 at root expansion, not + bacterial enzyme production or causal mediation. The 180% catalase value exceeds the abstract's summarized + 100%-150% range; no independently verified figure values are claimed. environmental_factors: - name: Baixi ginseng rusty-root-rot field plots value: 2031.64 @@ -532,20 +526,24 @@ external_resources: explanation: The PMID-linked primary publication reports the CL95 field phenotype. discussions: - discussion_id: ginseng_cl95_member_level_mechanisms - prompt: >- - Which CL95 member strains and secreted metabolites directly suppress - Ilyonectria robusta or drive the measured ginseng growth-promotion and - rhizosphere enzyme phenotypes? + prompt: Which CL95 member strains and secreted metabolites directly suppress Ilyonectria robusta or drive the + measured ginseng growth-promotion and rhizosphere enzyme phenotypes? kind: KNOWLEDGE_GAP status: OPEN attaches_to: - ecological_interactions#CL95 Ilyonectria robusta suppression - ecological_interactions#CL95 plant growth promotion - ecological_interactions#CL95 colonization and rhizosphere enzyme response - rationale: >- - Tian et al. 2026 connected CL95 to strong pathogen suppression, plant growth - promotion, tissue/rhizosphere colonization, and soil-enzyme responses, but - did not assign the community phenotypes to a specific member or molecule. + rationale: Tian et al. 2026 connected CL95 to strong pathogen suppression, plant growth promotion, tissue/rhizosphere + colonization, and soil-enzyme responses, but did not assign the community phenotypes to a specific member or + molecule. Plate antagonism does not isolate resource competition, and improved host growth does not measure + reciprocal bacterial fitness. Selective-CFU recovery, plate nutrient-screen zones, soil enzyme activities, defense-gene + expression and amplicon correlations were measured in distinct assays; they do not selectively establish a colonization, + nutrient-flux, induced-systemic-resistance or microbiome-recruitment mediation chain. In particular, defense + transcription is positive host-response evidence, not a pathway-blockade test of necessity. The suppression-to-growth + arrow is removed because it encodes joint treatment outcomes rather than isolated mediation. Resolve strain-specific + marker readout, relevant perturbations and the abstract/main-text soil-enzyme percentage discrepancy before + assigning exact member effects or new causal branches. posed_by: codex posed_date: '2026-09-14' metals_present: [] @@ -559,19 +557,20 @@ curation_history: - timestamp: '2026-09-14T20:34:12Z' curator: codex action: CURATE_GINSENG_CL95_RUSTY_ROOT_ROT_BIOCONTROL_SYNCOM - changes: >- - Added the five-member CL95 ginseng rusty-root-rot biocontrol SynCom from - PMID:42305112 with exact NJ13/NT35/FG14/TU26/JI6 membership, current NCBI - species grounding, Ilyonectria robusta suppression, ginseng growth - promotion, colonization, rhizosphere enzyme, growth-media, and unresolved - member-level mechanism context. + changes: Added the five-member CL95 ginseng rusty-root-rot biocontrol SynCom from PMID:42305112 with exact NJ13/NT35/FG14/TU26/JI6 + membership, current NCBI species grounding, Ilyonectria robusta suppression, ginseng growth promotion, colonization, + rhizosphere enzyme, growth-media, and unresolved member-level mechanism context. llm_assisted: true - timestamp: '2026-09-14T20:41:22Z' curator: codex action: ADDRESS_GINSENG_CL95_PR_REVIEW - changes: >- - Addressed PR #891 adversarial review by replacing the CL95 pathogen edge's - host-defense GO term with GO:0044419, removing phosphate as a direct - plant-growth interaction metabolite, and removing a local NCBITaxon cache - file from version control. + changes: 'Addressed PR #891 adversarial review by replacing the CL95 pathogen edge''s host-defense GO term with + GO:0044419, removing phosphate as a direct plant-growth interaction metabolite, and removing a local NCBITaxon + cache file from version control.' + llm_assisted: true +- timestamp: '2026-10-06T13:33:03Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Bound CL95 antagonism, host growth and marker recovery; remove unproven ecological labels and the suppression-to-growth + correlation arrow. Issue #1487; reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml' llm_assisted: true diff --git a/kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml b/kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml index 882f255f9..f177fe050 100644 --- a/kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml +++ b/kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml @@ -76,9 +76,15 @@ taxonomy: - *strain_evidence ecological_interactions: - name: Synergistic S11 ammonium and nitrite removal - description: The two-strain S11 consortium removed ammonium and nitrite nitrogen more efficiently than the corresponding - single-strain cultures under the reported pH and C/N ranges. - interaction_type: MUTUALISM + description: The two-strain S11 consortium removed ammonium and nitrite more efficiently than the corresponding + single-strain cultures. The primary abstract reports 95% ammonium-N and 97% nitrite-N removal within 24 h at + initial concentrations of 30 mg/L each, pH 6-9 and C/N at least 15, described as a 15%-25% improvement over + monocultures. This positive whole-consortium removal phenotype does not by itself establish reciprocal microbial + fitness, exchanged intermediates or a formal interaction mechanism. The authors characterize the isolates as + heterotrophic nitrification-aerobic denitrification strains, but the accessible abstract does not partition + consortium removal among oxidation, denitrification, assimilation and other sinks or provide a nitrogen mass + balance. Sponge-immobilized recirculation and industrial trials are separate assay contexts, not steps in a + demonstrated causal chain; reported industrial residual nitrite fractions are not removal percentages. scope: COMMUNITY_LEVEL participating_taxa: - preferred_term: Glutamicibacter arilaitensis NFB2-4 @@ -98,22 +104,19 @@ ecological_interactions: term: id: CHEBI:16301 label: nitrite - biological_processes: - - preferred_term: ammonia oxidation - term: - id: GO:0019329 - label: ammonia oxidation - - preferred_term: denitrification - term: - id: GO:0019333 - label: denitrification pathway evidence: - - *s11_synergy_evidence + - reference: PMID:41260371 + supports: SUPPORT + evidence_source: IN_VITRO + snippet: A synthetic consortium S11, composed of these two strains, exhibited marked synergistic nitrogen removal + explanation: Supports the authors' reported consortium-level nitrogen-removal synergy, not reciprocal fitness + or a resolved cross-feeding mechanism. The engineering-design evidence is preserved separately. - reference: PMID:41260371 supports: SUPPORT evidence_source: IN_VITRO snippet: This represents a 15 %-25 % improvement over single-strain cultures. - explanation: Quantifies the S11 consortium's ammonium/nitrite nitrogen-removal improvement over monocultures. + explanation: Supports the reported 15%-25% improvement relative to single-strain cultures; the abstract does + not define it here as percentage points or establish mutualism. environmental_factors: - name: S11 assay pH and C/N range value: pH 6-9 and C/N >= 15 @@ -204,30 +207,50 @@ external_resources: explanation: PubMed metadata gives the DOI for the article. discussions: - discussion_id: glutamicibacter_s11_methods_details - prompt: Resolve S11 inoculation ratios, full wastewater or medium chemistry, sponge immobilization protocol, reactor geometry, - operating temperature, and field-trial deployment details from the full article. + prompt: Resolve S11 inoculation ratios, full wastewater or medium chemistry, sponge immobilization protocol, reactor + geometry, operating temperature, and field-trial deployment details from the full article. kind: KNOWLEDGE_GAP status: OPEN attaches_to: - engineering_design - growth_media - cultivation_setup - rationale: The accessible PubMed abstract identifies the two member strains, S11 consortium identity, inorganic nitrogen - endpoints, pH/C:N assay envelope, and headline sponge and industrial recirculating-aquaculture results, but Europe PMC - reports the full article as subscription-only and not in PMC. Exact method details should be filled only after inspecting - the version of record or author-accepted text. + rationale: The accessible PubMed abstract identifies the two member strains, S11 consortium identity, inorganic + nitrogen endpoints, pH/C:N assay envelope, and headline sponge and industrial recirculating-aquaculture results, + but Europe PMC reports the full article as subscription-only and not in PMC. Exact method details should be + filled only after inspecting the version of record or author-accepted text. posed_by: codex posed_date: '2026-09-21' +- discussion_id: glutamicibacter_s11_flux_and_reciprocity + prompt: Which nitrogen routes and partner effects explain S11 removal performance? + kind: KNOWLEDGE_GAP + status: OPEN + attaches_to: + - ecological_interactions#Synergistic S11 ammonium and nitrite removal + rationale: The accessible primary abstract identifies both strains as HNAD organisms and reports a positive consortium + removal contrast, but does not resolve partner-specific viable growth, isotope flux, nitrogen mass balance, + exchanged intermediates or pathway perturbations. Retain that positive HNAD characterization without assigning + resolved graph-level ammonia-oxidation or denitrification flux. Full Methods and controls are unavailable for + this review. Separate batch, sponge and industrial endpoints and do not equate residual concentration percentages + with removal. Resolve these gaps before adding a reciprocal-benefit, route-specific or cross-feeding edge. + posed_by: codex + posed_date: '2026-10-06' curation_history: - timestamp: '2026-09-21T19:14:24Z' curator: codex action: CREATE_COMMUNITY_RECORD - changes: Created CommunityMech:000411 for the two-member Glutamicibacter arilaitensis NFB2-4 / Glutamicibacter nicotianae - CYN-C5 S11 ammonium- and nitrite-removal SynCom from PMID:41260371. + changes: Created CommunityMech:000411 for the two-member Glutamicibacter arilaitensis NFB2-4 / Glutamicibacter + nicotianae CYN-C5 S11 ammonium- and nitrite-removal SynCom from PMID:41260371. llm_assisted: true - timestamp: '2026-09-21T19:26:54Z' curator: codex action: ADD_MODELED_ENVIRONMENT - changes: 'Added an aquaculture wastewater modeled_environment to address adversarial-review issue #1027 while preserving - ENVO:01001405 laboratory environment as the controlled-assay setting.' + changes: 'Added an aquaculture wastewater modeled_environment to address adversarial-review issue #1027 while + preserving ENVO:01001405 laboratory environment as the controlled-assay setting.' + llm_assisted: true +- timestamp: '2026-10-06T13:33:04Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Retain S11 nitrogen-removal performance without unmeasured mutualism or resolved consortium flux routes. + Issue #1488; reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml' llm_assisted: true diff --git a/reports/causal_graph_review/README.md b/reports/causal_graph_review/README.md index 66023d2cc..0dfac6f9a 100644 --- a/reports/causal_graph_review/README.md +++ b/reports/causal_graph_review/README.md @@ -5,6 +5,17 @@ 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`. +## Batch48: Ginseng CL95 And Glutamicibacter S11 + +[Decisions](decisions/20261006-ginseng-s11-batch48.yaml), +[validation](validation-20261006-batch48.json) and +[self-adversarial review](adversarial-review-20261006-batch48.yaml) preserve +measured consortium outcomes without asserting reciprocal mutualism or resolved +causal mediation. All four nodes remain; the CL95 correlation-only growth arrow +is removed. Marker recovery does not track every CL95 member independently. +S11 is reviewed at primary-abstract scope; its nitrogen routes remain unresolved. +Canonical participants, shared non-graph evidence and previous fixes are preserved. + ## Batch47: Geobacter-Pseudomonas [Decisions](decisions/20261006-geobacter-pseudomonas-batch47.yaml), diff --git a/reports/causal_graph_review/adversarial-review-20261006-batch48.yaml b/reports/causal_graph_review/adversarial-review-20261006-batch48.yaml new file mode 100644 index 000000000..1afc3ebff --- /dev/null +++ b/reports/causal_graph_review/adversarial-review-20261006-batch48.yaml @@ -0,0 +1,139 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: 9174d5c1ce9c92966a4d270b4109071d81aa25f5 +scope: +- kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml +- kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml +decision_ledger: reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml +validation_report: reports/causal_graph_review/validation-20261006-batch48.json +findings: +- issue: 1487 + severity: P2 + status: addressed_in_this_change + finding: Bound CL95 antagonism, host growth and marker recovery; remove unproven ecological labels and + the suppression-to-growth correlation arrow. + disposition: Close only after protected main merge. +- issue: 1488 + severity: P2 + status: addressed_in_this_change + finding: Retain S11 nitrogen-removal performance without unmeasured mutualism or resolved consortium + flux routes. + disposition: Close only after protected main merge. +adversarial_checks: +- Whole CL95 and S11 records and every original node/arrow read. CL95 complete cached primary body, Methods, + Tables1-2 and captions; selected cached S3/S5/S6/S7 text. S11 primary abstract only; full article unavailable. + No original supplemental DOCX, figure images, raw data or code inspected. +- Positive CL95 73% plate inhibition, 66.67% field control and growth phenotypes remain. No resource-competition + mechanism, reciprocal fitness or causal suppression-to-growth mediation is inferred from those measurements. + The sole correlation-only arrow is removed rather than converted into a demonstrated link. +- Both Bacillus velezensis strains remain distinct by canonical strain labels despite sharing a species + CURIE. All five CL95 members and the external pathogen or host are unchanged. No generic helper drops + the host/pathogen or collapses the strain identities. +- 'Table S5 plate zones remain exact CL95 proxy endpoints, not nutrient transfer to ginseng. Preserve + earlier phosphate-removal and broad-process fixes #892/#893 and the prior cache fix #894.' +- Labeled NJ13/NT35/FG14 recovery does not independently track every CL95 member or demonstrate directed + movement of individual cells. Separate soil enzyme activity from its organism of origin and causal mediation; + broaden symbiosis GO to the existing interspecies process. Preserve the abstract/main-text catalase + percentage discrepancy rather than silently choosing a new value. +- Defense-gene transcription and microbiome associations are positive observations but not pathway-blockade, + recruitment or nutrient-flux proof. Their unresolved mediation remains in the existing anchored knowledge + gap, with no unsupported new causal structure or paid Edison run. +- S11 improved bulk removal remains positive. Retain authors HNAD isolate characterization while removing + resolved graph-level oxidation/denitrification assignments and unmeasured MUTUALISM. Do not infer percentage-point + improvement or confuse residual industrial nitrite with removal efficiency. +- 'Graph evidence aliases were deep-copied before changing explanations. Engineering-design and taxonomy + aliases, non-graph raw blocks, prior history values and #1027 modeled_environment are unchanged. Six + focused tests cover these risks and exact all-node/arrow ledger coverage.' +- Inspected record/test diff. All four nodes retained; one arrow removed. Two guarded records, two append-only + histories and two regenerated pages. All 458 other records and 920 caches preserved, not certified. + All participant scopes and measured connectivity census unchanged; no registry, range-bound or production + matching changes. +- Initial472-regression pass and Ruff B905 failure retained with output digests. Corrected the new ledger + test to zip(..., strict=True), then reran the regression suite, Black and Ruff. No scientific record, + source cache or history was changed by this test-only correction. +- Actual schema, strict, labels, references, snippets, rank and history gates passed; network equals baseline + with34 pre-existing findings and zero structural defects. Repeat HTML renders and all descriptions parser-checked + without claiming browser screenshots. Actual post-commit docs-current remains a separate gate. +- Dedup includes799 all-state issue titles/bodies and ignored/hidden local files. Closed issues892/893/894/1027 + concern distinct earlier fixes; no duplicate found in inspected scope. Not every comment or PR review + inspected. Source-based self-adversarial review is not independent approval. +verification: + combined_regressions: 472 passed in 181.86s (0:03:01) + new_regression_tests: 6 + schema_strict_terms_history: Passed with actual output digests + references: CLI Total checks counts reported issues, not executed checks. Exit0 is no reported issues, + not source verification. SupportingReference coverage (#476), Linux DOI-cache lookup (#1091) and selected-cache + provenance (#1362) remain limitations. + snippet_counts_by_record: + kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml: + MATCH: 23 + RENDERING: 0 + ASSEMBLED: 0 + WEAK: 0 + MISMATCH: 0 + NOCONTENT: 0 + kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml: + MATCH: 13 + RENDERING: 0 + ASSEMBLED: 0 + WEAK: 0 + MISMATCH: 0 + NOCONTENT: 0 + network: + existing_findings_preserved: 34 + added_findings: {} + removed_findings: {} + black_ruff_diff: passed + tested_file_sha256: + reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml: c36d6bc71789c7f48d2e2c93d66e5f587aea15dd5c2c7bc9665092074befae33 + tests/test_causal_review_batch48.py: 94c3f6cf818fe5b1bb4883a65b2a94bd837860a2c627e01b531651f513311661 + kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml: e228c2b46ce20acca93762d68d61fe0945620902a42deb516e65fb5f87eee720 + kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml: 8348a96a90c28a1f575a7badf3c05194fdbbe1c69e23d5d4469468542c849bd4 + reports/causal_graph_review/README.md: dfa8f5694682274872cb15b5615f2ac3e8241d2576b27590d659da33dd5def3e + post_commit_docs_current: Separate publication gate; not asserted before commit. +participant_census: + measurements: + baseline: + records: 460 + with_community_level: 389 + mixed: 126 + community_level_only: 263 + taxa: 1498 + credited_solely_by_the_rule: 1223 + current: + records: 460 + with_community_level: 389 + mixed: 126 + community_level_only: 263 + taxa: 1498 + credited_solely_by_the_rule: 1223 + interpretation: All participants and scopes preserved; no census, registry or production matching changes. +corpus: + records: 460 + nodes: 1465 + edges: 679 + review_status_counts: + needs_research: 14 + pending: 275 + reviewed: 171 +limitations: +- Whole 577-line CL95 and 233-line S11 records and all four original nodes/one arrow read. CL95 complete + cached main body, Methods, Tables 1-2 and captions; selected cached supplemental S3/S5/S6/S7 text only. + S11 complete primary abstract only; full text unavailable. No figure images, original supplementary + DOCX, raw data or analysis code audited. +- Existing-structure repair, not complete mechanistic reconstruction. Direct phenotypes retained; reciprocal + fitness and route/host mediation remain focused knowledge gaps. No selectively demonstrated missing + causal chain is added, no Edison paid job or new provider spend occurred. +- CL95 marker CFUs do not independently track all five members; preserve both same-species Bacillus strain + names and the external host/pathogen participants. Soil-enzyme abstract/main-text percentage discrepancy + remains explicit. Cached supplemental text is not independent inspection of the original DOCX. +- S11 authors HNAD characterization is retained, but primary abstract access does not resolve consortium + flux partition or mass balance. Shared engineering/taxonomy evidence aliases are preserved and not edited + through graph aliases. +- All 920 caches and non-graph raw blocks preserved, not certified. Reference CLI Total checks counts + reported issues, not executed checks; SupportingReference coverage (#476), Linux DOI-cache lookup (#1091) + and selected-cache provenance (#1362) remain limitations. +- Baseline48 precedes external primary-source inspection; some whole-record reading began earlier, covered + by batch47 baseline. Self-adversarial review is not independent approval. Protected-main merge and full-corpus + completion remain pending. diff --git a/reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml b/reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml new file mode 100644 index 000000000..7a3a76703 --- /dev/null +++ b/reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml @@ -0,0 +1,137 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: 9174d5c1ce9c92966a4d270b4109071d81aa25f5 +baseline_commit: 9174d5c1ce9c92966a4d270b4109071d81aa25f5 +base_tree: a74ac965aa5a120b2f5c585c6ba42d1a452e5cef +pre_source_baseline_sha256: cabfdf23dd37801a863422ccab868fad480dc05bbd255cf69bbc1c6528371dba +issues: +- 1487 +- 1488 +issue_deduplication: + all_state_issue_titles_and_bodies: 799 + ignored_hidden_local_search: true + matching_issues: + - 892 + - 893 + - 894 + - 1027 + matching_local_files: 16 + disposition: Prior closed issues are distinct; no duplicate causal-label/arrow finding in inspected scope. + limitations: Not all issue comments or PR reviews inspected. +reference_cache_original_hashes: + references_cache/PMID_42305112.txt: c6e6e9b34234a6d58c0a632592a9ab866670ec676395028808509f439c4d02f6 + references_cache/PMID_41260371.txt: f02bee68164047db1468ebdb70fb8eb64c38c2ca341227008d8003c9e638dcdf + references_cache/PMID_42305112.supplement.md: 7a67c97aa2aead8294100ba895a393e1259010c9d14553273d2fc46facba197b +limitations: +- Whole 577-line CL95 and 233-line S11 records and all four original nodes/one arrow read. CL95 complete cached + main body, Methods, Tables 1-2 and captions; selected cached supplemental S3/S5/S6/S7 text only. S11 complete + primary abstract only; full text unavailable. No figure images, original supplementary DOCX, raw data or analysis + code audited. +- Existing-structure repair, not complete mechanistic reconstruction. Direct phenotypes retained; reciprocal fitness + and route/host mediation remain focused knowledge gaps. No selectively demonstrated missing causal chain is added, + no Edison paid job or new provider spend occurred. +- CL95 marker CFUs do not independently track all five members; preserve both same-species Bacillus strain names + and the external host/pathogen participants. Soil-enzyme abstract/main-text percentage discrepancy remains explicit. + Cached supplemental text is not independent inspection of the original DOCX. +- S11 authors HNAD characterization is retained, but primary abstract access does not resolve consortium flux partition + or mass balance. Shared engineering/taxonomy evidence aliases are preserved and not edited through graph aliases. +- All 920 caches and non-graph raw blocks preserved, not certified. Reference CLI Total checks counts reported issues, + not executed checks; SupportingReference coverage (#476), Linux DOI-cache lookup (#1091) and selected-cache provenance + (#1362) remain limitations. +- Baseline48 precedes external primary-source inspection; some whole-record reading began earlier, covered by batch47 + baseline. Self-adversarial review is not independent approval. Protected-main merge and full-corpus completion + remain pending. +records: +- path: kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml + id: CommunityMech:000376 + original_sha256: 358bc325cdc09b37c2cb283713c5db68fd01c3bb70575abf798b0bd9b184e5f7 + record_sha256: e228c2b46ce20acca93762d68d61fe0945620902a42deb516e65fb5f87eee720 + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml + scope: Whole record and every original node/arrow; bounded current structure, not all possible mechanisms. + summary: Bound CL95 antagonism, host growth and marker recovery; remove unproven ecological labels and the suppression-to-growth + correlation arrow. + renamed_nodes: {} + node_decisions: + - node: CL95 Ilyonectria robusta suppression + rationale: Retain direct plate/root antagonism and field suppression with pathogen and all five strain participants; + remove unisolated COMPETITION and the correlation-only growth arrow. + - node: CL95 plant growth promotion + rationale: Retain measured field growth and exact CL95 plate-screen endpoints; distinguish functional proxies + from nutrient flux and reciprocal MUTUALISM. + - node: CL95 colonization and rhizosphere enzyme response + rationale: Retain selective-CFU recovery and soil enzyme responses as separate observations; do not claim all-five-member + tracking, reciprocal fitness, direct migration or enzyme mediation. Use the established general interspecies + process term. + removed_node_decisions: [] + edges_before: + - source: CL95 Ilyonectria robusta suppression + target: CL95 plant growth promotion + description: Rusty-root-rot suppression in the field accompanied enhanced ginseng root length, fresh root weight, + root diameter, and chlorophyll content under CL95 and five other high-performing consortia. + edges_after: [] + retained_edge_decisions: [] + removed_edge_decisions: + - source: CL95 Ilyonectria robusta suppression + target: CL95 plant growth promotion + description: Rusty-root-rot suppression in the field accompanied enhanced ginseng root length, fresh root weight, + root diameter, and chlorophyll content under CL95 and five other high-performing consortia. + rationale: Joint field-treatment outcomes do not selectively establish suppression as the cause of improved + growth. + references: + - PMID:42305112 + issues: + - 1487 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + history_files: + - history/records/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom/2026-10-06T133304Z-codex-ad2e45.yaml + source_review: + PMID:42305112: + cache: references_cache/PMID_42305112.txt + url: https://pubmed.ncbi.nlm.nih.gov/42305112/ + scope: Complete cached main body, Methods, Tables 1-2 and embedded captions; selected cached supplementary + S3/S5/S6/S7 text. No original DOCX or figure-image audit. + sha256: c6e6e9b34234a6d58c0a632592a9ab866670ec676395028808509f439c4d02f6 +- path: kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml + id: CommunityMech:000411 + original_sha256: c7f789620656b6c7973c5f27bff6b6fd11f024a978c803e45bdb17ea65c731e0 + record_sha256: 8348a96a90c28a1f575a7badf3c05194fdbbe1c69e23d5d4469468542c849bd4 + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml + scope: Whole record and every original node/arrow; bounded current structure, not all possible mechanisms. + summary: Retain S11 nitrogen-removal performance without unmeasured mutualism or resolved consortium flux routes. + renamed_nodes: {} + node_decisions: + - node: Synergistic S11 ammonium and nitrite removal + rationale: Retain the exact two-strain removal outcome and ammonium/nitrite targets; separate authors' HNAD + characterization from resolved consortium flux and unmeasured MUTUALISM. Keep zero arrows between distinct + assay contexts. + removed_node_decisions: [] + edges_before: [] + edges_after: [] + retained_edge_decisions: [] + removed_edge_decisions: [] + references: + - PMID:41260371 + issues: + - 1488 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + history_files: + - history/records/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom/2026-10-06T133304Z-codex-93714d.yaml + source_review: + PMID:41260371: + cache: references_cache/PMID_41260371.txt + url: https://pubmed.ncbi.nlm.nih.gov/41260371/ + scope: Complete primary abstract only, corroborated by PubMed and publisher preview; full article unavailable. + sha256: f02bee68164047db1468ebdb70fb8eb64c38c2ca341227008d8003c9e638dcdf diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv index ae3e997bb..cae529c39 100644 --- a/reports/causal_graph_review/inventory.tsv +++ b/reports/causal_graph_review/inventory.tsv @@ -184,8 +184,8 @@ kb/communities/Geobacter_Clostridium_Interspecies_Electron_Transfer_Coculture.ya kb/communities/Geobacter_Methanosaeta_DIET.yaml CommunityMech:000032 8e194a9177b013c6db3e2dd9b4ed9744f06ca0379116f41a0f4ed62cf1d4fde1 3 2 93.3 reports/causal_graph_review/decisions/20261006-methanogens-batch46.yaml needs_research kb/communities/Geobacter_Methanosarcina_DIET.yaml CommunityMech:000033 b6b5f1714e6692936ca408e74dba44df4cbb9518a258c7c7203425998c2979e0 3 2 91.7 reports/causal_graph_review/decisions/20261006-methanogens-batch46.yaml needs_research kb/communities/Geobacter_Pseudomonas_Formate_Fumarate_Electroactive_Coculture.yaml CommunityMech:000201 23bc65dd7bc600d926ad4f080c7f5af377da12558d2602e08f8c77324bab6fe1 4 1 81.2 reports/causal_graph_review/decisions/20261006-geobacter-pseudomonas-batch47.yaml reviewed -kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml CommunityMech:000376 358bc325cdc09b37c2cb283713c5db68fd01c3bb70575abf798b0bd9b184e5f7 3 1 90.0 pending -kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml CommunityMech:000411 c7f789620656b6c7973c5f27bff6b6fd11f024a978c803e45bdb17ea65c731e0 1 0 65.0 pending +kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml CommunityMech:000376 e228c2b46ce20acca93762d68d61fe0945620902a42deb516e65fb5f87eee720 3 0 65.0 reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml reviewed +kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml CommunityMech:000411 8348a96a90c28a1f575a7badf3c05194fdbbe1c69e23d5d4469468542c849bd4 1 0 55.0 reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml reviewed kb/communities/Grassland_Soil_WetUp_Virus_Host_Community.yaml CommunityMech:000224 8e64d4781390ec08a6fd3be1e1327c9a839e595ccbf94a774546b4b7bd639a52 3 2 100.0 pending kb/communities/Groundwater_Elusimicrobia_Diverse_Metabolisms.yaml CommunityMech:000242 dd15456140df648778bf038e65ee93969dd4181a45aa85337c02d46af40d4748 4 3 98.8 pending kb/communities/HAMBI_Carbon_Gradient_SynCom16.yaml CommunityMech:000423 1d702bfc31295364092b1aa83379e518f643e6b297b0a9d982d51544b937dca4 1 0 65.0 pending diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json index 9edd8b2a2..37b4073de 100644 --- a/reports/causal_graph_review/summary.json +++ b/reports/causal_graph_review/summary.json @@ -3,13 +3,13 @@ "semantic_review_rule": "Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.", "records": 460, "nodes": 1465, - "edges": 680, + "edges": 679, "records_without_nodes": 8, - "records_without_edges": 148, + "records_without_edges": 149, "review_status_counts": { "needs_research": 14, - "pending": 277, - "reviewed": 169 + "pending": 275, + "reviewed": 171 }, "structural_defects": [], "network_audit": [ diff --git a/reports/causal_graph_review/validation-20261006-batch48.json b/reports/causal_graph_review/validation-20261006-batch48.json new file mode 100644 index 000000000..ce0c86660 --- /dev/null +++ b/reports/causal_graph_review/validation-20261006-batch48.json @@ -0,0 +1,731 @@ +{ + "base_commit": "9174d5c1ce9c92966a4d270b4109071d81aa25f5", + "scope": [ + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml", + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml" + ], + "reference_validator_version": "0.1.7", + "results": [ + { + "check": "Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-schema", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-schema.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-strict", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/private/tmp/communitymech-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-strict.tsv", + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-strict.log", + "log_sha256": "c4652121b72b1afec4167b1d1abd0afaf9a89065052c2312d6dca0b5a505394f", + "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch48/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-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-strict.tsv\n" + }, + { + "check": "Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-terms", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator", + "validate-data", + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-terms.log", + "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018", + "output_tail": "\u2705 Validation passed\n" + }, + { + "check": "Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-references", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator", + "validate", + "data", + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-references.log", + "log_sha256": "d56bb6e7b48a550d20eec4037836184235927239cd0b7a1427ea1ecfa2079492", + "output_tail": "Validating kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_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/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_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": "Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-snippets", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-snippets.log", + "log_sha256": "06a536479395cd60c7eab504952fd1ebaea7cd4609924c29d687dbc4183c3686", + "output_tail": "# 23 evidence snippets scanned across 1 files\n MATCH 23\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": "Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-rank", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml", + "--format", + "json" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-rank.log", + "log_sha256": "542a94c6785a940282abc4e0fda34209587273136048158fb7ecd3b62d5e2dae", + "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000376\",\n \"name\": \"Ginseng CL95 Rusty Root Rot Biocontrol SynCom\",\n \"score\": 65.0,\n \"taxonomy\": 5,\n \"connected_taxa\": 5,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 0,\n \"interaction_evidence\": 6,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"downstream\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml\"\n }\n]\n" + }, + { + "check": "Ginseng_CL95_Rusty_Root_Rot_Biocontrol_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/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom/2026-10-06T133304Z-codex-ad2e45.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom-history-0.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-schema", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-schema.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-strict", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/private/tmp/communitymech-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-strict.tsv", + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-strict.log", + "log_sha256": "082f30605623feb982fd4183276434e4dc6c436f4090d5b06260edd8a7c572d1", + "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch48/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-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-strict.tsv\n" + }, + { + "check": "Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-terms", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator", + "validate-data", + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-terms.log", + "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018", + "output_tail": "\u2705 Validation passed\n" + }, + { + "check": "Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-references", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator", + "validate", + "data", + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-references.log", + "log_sha256": "e9589e7db610e65f4e44f3990a158bf4bfa0455cf456a5d6908070b8ee52143c", + "output_tail": "Validating kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_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/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_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": "Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-snippets", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-snippets.log", + "log_sha256": "6fd22c7b42f139e3b66a27210ad3d8968c80af940879c7074184305812838cca", + "output_tail": "# 13 evidence snippets scanned across 1 files\n MATCH 13\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": "Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-rank", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml", + "--format", + "json" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-rank.log", + "log_sha256": "27c5742ad8857f8f0989f999e5214074a0b5e270731a4a8379778dd3c0ffc216", + "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000411\",\n \"name\": \"Glutamicibacter S11 Aquaculture Nitrogen Removal SynCom\",\n \"score\": 55.0,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\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/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml\"\n }\n]\n" + }, + { + "check": "Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_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/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom/2026-10-06T133304Z-codex-93714d.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom-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-batch48/inventory.log", + "log_sha256": "06c6a1f6462f6aae766b2223d5e6ddfef1845b69f347f4a0f5f58e6f1f849b0a", + "output_tail": "{\n \"scope\": \"Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.\",\n \"semantic_review_rule\": \"Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.\",\n \"records\": 460,\n \"nodes\": 1465,\n \"edges\": 679,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 149,\n \"review_status_counts\": {\n \"needs_research\": 14,\n \"pending\": 275,\n \"reviewed\": 171\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-batch48/network.log", + "log_sha256": "71a1e46fdd5d7c44e1766fabc85efb996c70258e3e64018891cfa94bb22fb13e", + "output_tail": "{\n \"preferred_term\": \"Legionella MAGs\",\n \"term\": {\n \"id\": \"NCBITaxon:445\",\n \"label\": \"Legionella\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The study detected Legionella-affiliated MAGs and used them in a virulence-gene risk assessment; the source did not assert pathogenicity for a cultured Legionella isolate.\\n\"\n },\n \"abundance_value\": \"Lower-abundance Legionella-affiliated MAGs detected during metagenomic risk assessment.\\n\",\n \"evidence\": [\n {\n \"reference\": \"PMID:41457319\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"COMPUTATIONAL\",\n \"snippet\": \"detection of waterborne pathogens from the Legionella genus\",\n \"explanation\": \"Supports Legionella-affiliated lower-abundance bins as monitored biosafety-relevant members of the consortium.\\n\"\n }\n ]\n },\n \"message\": \"Taxon 'Legionella MAGs' has no interactions\"\n }\n ],\n \"Sclerotinia_Sclerotia_12Strain_Biocontrol_SynCom\": [\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Twelve-Strain SynCom Suppression of Sclerotinia Sclerotia\",\n \"interaction_index\": 0,\n \"taxon\": \"Sclerotinia sclerotiorum\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Sclerotinia sclerotiorum' not found in taxonomy section (community-level scope)\"\n },\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Trinickia MC Key Contribution to Sclerotia Mortality\",\n \"interaction_index\": 1,\n \"taxon\": \"Sclerotinia sclerotiorum\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Sclerotinia sclerotiorum' not found in taxonomy section (community-level scope)\"\n }\n ],\n \"Space_Habitat_SevenMember_Stress_Tolerance_SynCom\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Acinetobacter radioresistens 50V1\",\n \"taxon_id\": \"NCBITaxon:40216\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Acinetobacter radioresistens 50V1\",\n \"term\": {\n \"id\": \"NCBITaxon:40216\",\n \"label\": \"Acinetobacter radioresistens\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate came from the preflight Mars Odyssey Orbiter; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"50V1\",\n \"genome_accession\": \"GCA_002834555.1\"\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Acinetobacter radioresistens | 50V1 | Preflight Mars Odyssey Orbiter | \\u2013 | Mccoy et al., 2012 | GCA_002834555.1 | TSYB/TSYA | 37 \\u00b0C | 16\\u201318 h\",\n \"explanation\": \"Identifies A. radioresistens 50V1 as a consortium member and gives its spacecraft-associated source, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Acinetobacter radioresistens 50V1' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Micrococcus luteus W4-Al-K1\",\n \"taxon_id\": \"NCBITaxon:1270\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Micrococcus luteus W4-Al-K1\",\n \"term\": {\n \"id\": \"NCBITaxon:1270\",\n \"label\": \"Micrococcus luteus\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from an ISS aluminum-case touch array; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"W4-Al-K1\",\n \"genome_accession\": \"GCA_057816565.1\"\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Micrococcus luteus | W4-Al-K1 | ISS, Touch Array Aluminum Case | - | Kr\\u00e4mer et al., 2025 | GCA_057816565.1 | NB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies M. luteus W4-Al-K1 as a consortium member and gives its ISS source, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Micrococcus luteus W4-Al-K1' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Propionibacterium cyclohexanicum TA-12T\",\n \"taxon_id\": \"NCBITaxon:64702\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Propionibacterium cyclohexanicum TA-12T\",\n \"term\": {\n \"id\": \"NCBITaxon:64702\",\n \"label\": \"Propionibacterium cyclohexanicum\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the P. cyclohexanicum type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"TA-12T\",\n \"genome_accession\": \"GCA_900111365\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"16859\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Propionibacterium cyclohexanicum | TA-12 T | Spoilt Orange Juice | DSM 16859 T | Kusano et al., 1997 | GCA_900111365 | BHI, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies P. cyclohexanicum TA-12T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Propionibacterium cyclohexanicum TA-12T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Pseudomonas antarctica CMS 35T\",\n \"taxon_id\": \"NCBITaxon:219572\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Pseudomonas antarctica CMS 35T\",\n \"term\": {\n \"id\": \"NCBITaxon:219572\",\n \"label\": \"Pseudomonas antarctica\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the P. antarctica type strain as a biosafety-level-1 Pseudomonas surrogate.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"CMS 35T\",\n \"genome_accession\": \"GCA_010634845\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"15318\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Pseudomonas antarctica | CMS 35 T | Antarctica | DSM 15318 T | Reddy et al., 2004 | GCA_010634845 | TSYB/TSYA | Ambient | 12\\u201316 h\",\n \"explanation\": \"Identifies P. antarctica CMS 35T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pseudomonas antarctica CMS 35T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Staphylococcus capitis K1-2-2-23\",\n \"taxon_id\": \"NCBITaxon:29388\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Staphylococcus capitis K1-2-2-23\",\n \"term\": {\n \"id\": \"NCBITaxon:29388\",\n \"label\": \"Staphylococcus capitis\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from ISS V2A steel; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"K1-2-2-23\",\n \"genome_accession\": \"GCA_025272695\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"111179\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Staphylococcus capitis | K1-2-2-23 | ISS, V2A Steel | DSM 111179 | Sobisch et al., 2019 | GCA_025272695 | TSYB/TSYA | 37 \\u00b0C | 16\\u201324 h\",\n \"explanation\": \"Identifies S. capitis K1-2-2-23 as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Staphylococcus capitis K1-2-2-23' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Streptococcus halotolerans HTS9T\",\n \"taxon_id\": \"NCBITaxon:1814128\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Streptococcus halotolerans HTS9T\",\n \"term\": {\n \"id\": \"NCBITaxon:1814128\",\n \"label\": \"Streptococcus halotolerans\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the S. halotolerans type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"HTS9T\",\n \"genome_accession\": \"GCA_001598035\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"101996\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Streptococcus halotolerans | HTS9 T | Respiratory Tract of Marmota himalayana | DSM 101996 T | Niu et al., 2016 | GCA_001598035 | 2xLB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies S. halotolerans HTS9T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Streptococcus halotolerans HTS9T' has no interactions\"\n }\n ]\n}\n" + }, + { + "check": "rank-all", + "command": [ + "just", + "rank-causal-graphs" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/rank-all.log", + "log_sha256": "4032f7f5734a6eb895737b4d4f11e27d62a96696fb0b6d86de28c78a1a322f6d", + "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-batch48/render.log", + "log_sha256": "51a9f6760713d4d6329f354417924cec2d7b6371fc25e55454799f8332cb0d72", + "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch48/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch48/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch48/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-batch48/render-repeat.log", + "log_sha256": "51a9f6760713d4d6329f354417924cec2d7b6371fc25e55454799f8332cb0d72", + "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch48/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch48/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch48/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch48/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-batch47')), ('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-batch48/connectivity-survey.log", + "log_sha256": "8fbf3e1d0bfdf09d37d8f57d4f6bc395f4f5c47d79167947b82bd0fea986f847", + "output_tail": "{\"baseline\": {\"records\": 460, \"with_community_level\": 389, \"mixed\": 126, \"community_level_only\": 263, \"taxa\": 1498, \"credited_solely_by_the_rule\": 1223}, \"current\": {\"records\": 460, \"with_community_level\": 389, \"mixed\": 126, \"community_level_only\": 263, \"taxa\": 1498, \"credited_solely_by_the_rule\": 1223}}\n" + }, + { + "check": "regressions", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "-m", + "pytest", + "-q", + "tests/test_causal_review_batch10.py", + "tests/test_causal_review_batch11.py", + "tests/test_causal_review_batch12.py", + "tests/test_causal_review_batch13.py", + "tests/test_causal_review_batch14.py", + "tests/test_causal_review_batch15.py", + "tests/test_causal_review_batch16.py", + "tests/test_causal_review_batch17.py", + "tests/test_causal_review_batch18.py", + "tests/test_causal_review_batch19.py", + "tests/test_causal_review_batch20.py", + "tests/test_causal_review_batch21.py", + "tests/test_causal_review_batch22.py", + "tests/test_causal_review_batch23.py", + "tests/test_causal_review_batch24.py", + "tests/test_causal_review_batch25.py", + "tests/test_causal_review_batch27.py", + "tests/test_causal_review_batch28.py", + "tests/test_causal_review_batch29.py", + "tests/test_causal_review_batch30.py", + "tests/test_causal_review_batch31.py", + "tests/test_causal_review_batch32.py", + "tests/test_causal_review_batch33.py", + "tests/test_causal_review_batch34.py", + "tests/test_causal_review_batch35.py", + "tests/test_causal_review_batch36.py", + "tests/test_causal_review_batch37.py", + "tests/test_causal_review_batch38.py", + "tests/test_causal_review_batch39.py", + "tests/test_causal_review_batch40.py", + "tests/test_causal_review_batch41.py", + "tests/test_causal_review_batch42.py", + "tests/test_causal_review_batch43.py", + "tests/test_causal_review_batch44.py", + "tests/test_causal_review_batch45.py", + "tests/test_causal_review_batch46.py", + "tests/test_causal_review_batch47.py", + "tests/test_causal_review_batch48.py", + "tests/test_causal_review_batch5.py", + "tests/test_causal_review_batch6.py", + "tests/test_causal_review_batch7.py", + "tests/test_causal_review_batch8.py", + "tests/test_causal_review_batch9.py", + "tests/test_site_audit_fixes.py", + "tests/test_causal_review_inventory.py", + "tests/test_rank_causal_graph_readiness.py", + "tests/test_network_auditor.py", + "tests/test_participating_taxa.py", + "tests/test_causal_descriptions_are_published.py", + "tests/test_published_pages_name_real_records.py", + "tests/test_reference_validator_actually_validates.py", + "tests/test_snippet_audit_artefact_classes.py", + "tests/test_reference_error_annotation.py", + "tests/test_community_level_connectivity_credit.py", + "tests/test_no_paywalled_text_in_repo.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/regressions.log", + "log_sha256": "c61cf0c83b14d894301101358676045831ef958d8fd9d9357b4f76ab13c879a3", + "output_tail": "........................................................................ [ 15%]\n........................................................................ [ 30%]\n........................................................................ [ 45%]\n........................................................................ [ 61%]\n........................................................................ [ 76%]\n........................................................................ [ 91%]\n........................................ [100%]\n472 passed in 181.86s (0:03:01)\n" + }, + { + "check": "black", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/3Q_kifQtLB624D5bBWGIf/bin/black", + "--check", + "tests/test_causal_review_batch48.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/black.log", + "log_sha256": "1a56c7cd8457fd05d978cfbd139d7bfd86e86acaa9b57668e718ef8bccc0cf48", + "output_tail": "All done! \u2728 \ud83c\udf70 \u2728\n1 file would be left unchanged.\n" + }, + { + "check": "ruff", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/wCcxEYRM4HeHgwYPZemHX/bin/ruff", + "check", + "tests/test_causal_review_batch48.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/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-batch48/diff-check.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "output_tail": "" + } + ], + "limitations": [ + "Whole 577-line CL95 and 233-line S11 records and all four original nodes/one arrow read. CL95 complete cached main body, Methods, Tables 1-2 and captions; selected cached supplemental S3/S5/S6/S7 text only. S11 complete primary abstract only; full text unavailable. No figure images, original supplementary DOCX, raw data or analysis code audited.", + "Existing-structure repair, not complete mechanistic reconstruction. Direct phenotypes retained; reciprocal fitness and route/host mediation remain focused knowledge gaps. No selectively demonstrated missing causal chain is added, no Edison paid job or new provider spend occurred.", + "CL95 marker CFUs do not independently track all five members; preserve both same-species Bacillus strain names and the external host/pathogen participants. Soil-enzyme abstract/main-text percentage discrepancy remains explicit. Cached supplemental text is not independent inspection of the original DOCX.", + "S11 authors HNAD characterization is retained, but primary abstract access does not resolve consortium flux partition or mass balance. Shared engineering/taxonomy evidence aliases are preserved and not edited through graph aliases.", + "All 920 caches and non-graph raw blocks preserved, not certified. Reference CLI Total checks counts reported issues, not executed checks; SupportingReference coverage (#476), Linux DOI-cache lookup (#1091) and selected-cache provenance (#1362) remain limitations.", + "Baseline48 precedes external primary-source inspection; some whole-record reading began earlier, covered by batch47 baseline. Self-adversarial review is not independent approval. Protected-main merge and full-corpus completion remain pending.", + "HTML descriptions checked by exact parser and repeat renders, not browser screenshots. Post-commit docs-current is a separate publication gate.", + "CLI Total checks counts reported issues, not executed checks. Exit0 is no reported issues, not source verification. SupportingReference coverage (#476), Linux DOI-cache lookup (#1091) and selected-cache provenance (#1362) remain limitations." + ], + "superseded_checks": [ + { + "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_batch5.py", + "tests/test_causal_review_batch6.py", + "tests/test_causal_review_batch7.py", + "tests/test_causal_review_batch8.py", + "tests/test_causal_review_batch9.py", + "tests/test_site_audit_fixes.py", + "tests/test_causal_review_inventory.py", + "tests/test_rank_causal_graph_readiness.py", + "tests/test_network_auditor.py", + "tests/test_participating_taxa.py", + "tests/test_causal_descriptions_are_published.py", + "tests/test_published_pages_name_real_records.py", + "tests/test_reference_validator_actually_validates.py", + "tests/test_snippet_audit_artefact_classes.py", + "tests/test_reference_error_annotation.py", + "tests/test_community_level_connectivity_credit.py", + "tests/test_no_paywalled_text_in_repo.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/regressions-attempt1.log", + "log_sha256": "2a9a0416629b18bc5108a73d9a6ae6b5f37460641c125a0f6810a1934108032e", + "output_tail": "........................................................................ [ 15%]\n........................................................................ [ 30%]\n........................................................................ [ 45%]\n........................................................................ [ 61%]\n........................................................................ [ 76%]\n........................................................................ [ 91%]\n........................................ [100%]\n472 passed in 175.62s (0:02:55)\n", + "reason": "Test-only B905 correction adds strict=True to paired ledger/doc iteration. Rerun regressions and formatting/lint; all record, cache and render checks unchanged." + }, + { + "check": "black", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/3Q_kifQtLB624D5bBWGIf/bin/black", + "--check", + "tests/test_causal_review_batch48.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/black-attempt1.log", + "log_sha256": "1a56c7cd8457fd05d978cfbd139d7bfd86e86acaa9b57668e718ef8bccc0cf48", + "output_tail": "All done! \u2728 \ud83c\udf70 \u2728\n1 file would be left unchanged.\n", + "reason": "Test-only B905 correction adds strict=True to paired ledger/doc iteration. Rerun regressions and formatting/lint; all record, cache and render checks unchanged." + }, + { + "check": "ruff", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/wCcxEYRM4HeHgwYPZemHX/bin/ruff", + "check", + "tests/test_causal_review_batch48.py" + ], + "exit_code": 1, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch48/ruff-attempt1.log", + "log_sha256": "7b794f386d000635fb2960bd7c3b47f8cd5d46b9d01eeb2a1c5bdf6625565c45", + "output_tail": "B905 `zip()` without an explicit `strict=` parameter\n --> tests/test_causal_review_batch48.py:93:21\n |\n91 | assert ledger[\"independent_approval\"] is False and ledger[\"issues\"] == [1487, 1488]\n92 | assert ledger[\"issue_deduplication\"][\"ignored_hidden_local_search\"] is True\n93 | for row, doc in zip(ledger[\"records\"], docs):\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n94 | assert row[\"status\"] == \"reviewed\"\n95 | assert [n[\"node\"] for n in row[\"node_decisions\"]] == [\n |\nhelp: Add explicit value for parameter `strict=`\n\nFound 1 error.\nNo fixes available (1 hidden fix can be enabled with the `--unsafe-fixes` option).\n", + "reason": "Test-only B905 correction adds strict=True to paired ledger/doc iteration. Rerun regressions and formatting/lint; all record, cache and render checks unchanged." + } + ], + "resume_note": "Existing command receipts reused only after command identity, exit status, log hash, record hashes and unchanged source-cache checks. Any interrupted verification retains its original receipts; no unexecuted check is counted as passed.", + "snippet_counts_by_record": { + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml": { + "MATCH": 23, + "RENDERING": 0, + "ASSEMBLED": 0, + "WEAK": 0, + "MISMATCH": 0, + "NOCONTENT": 0 + }, + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml": { + "MATCH": 13, + "RENDERING": 0, + "ASSEMBLED": 0, + "WEAK": 0, + "MISMATCH": 0, + "NOCONTENT": 0 + } + }, + "unchanged_raw_blocks": 33, + "unchanged_record_files": 458, + "unchanged_cache_files": 920, + "network_delta": { + "existing_findings_preserved": 34, + "added_findings": {}, + "removed_findings": {} + }, + "render_determinism": true, + "published_description_coverage": { + "pages": 456, + "nodes": 1451, + "arrows": 671 + }, + "participant_census": { + "measurements": { + "baseline": { + "records": 460, + "with_community_level": 389, + "mixed": 126, + "community_level_only": 263, + "taxa": 1498, + "credited_solely_by_the_rule": 1223 + }, + "current": { + "records": 460, + "with_community_level": 389, + "mixed": 126, + "community_level_only": 263, + "taxa": 1498, + "credited_solely_by_the_rule": 1223 + } + }, + "interpretation": "All participants and scopes preserved; no census, registry or production matching changes." + }, + "corpus": { + "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.", + "records": 460, + "nodes": 1465, + "edges": 679, + "records_without_nodes": 8, + "records_without_edges": 149, + "review_status_counts": { + "needs_research": 14, + "pending": 275, + "reviewed": 171 + }, + "structural_defects": [] + }, + "tested_file_sha256": { + "reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml": "c36d6bc71789c7f48d2e2c93d66e5f587aea15dd5c2c7bc9665092074befae33", + "tests/test_causal_review_batch48.py": "94c3f6cf818fe5b1bb4883a65b2a94bd837860a2c627e01b531651f513311661", + "kb/communities/Ginseng_CL95_Rusty_Root_Rot_Biocontrol_SynCom.yaml": "e228c2b46ce20acca93762d68d61fe0945620902a42deb516e65fb5f87eee720", + "kb/communities/Glutamicibacter_S11_Aquaculture_Nitrogen_Removal_SynCom.yaml": "8348a96a90c28a1f575a7badf3c05194fdbbe1c69e23d5d4469468542c849bd4", + "reports/causal_graph_review/README.md": "dfa8f5694682274872cb15b5615f2ac3e8241d2576b27590d659da33dd5def3e" + }, + "status": "verified_ginseng_s11_graph_repair", + "reference_validator_caveat": "CLI Total checks counts reported issues, not executed checks. Exit0 is no reported issues, not source verification. SupportingReference coverage (#476), Linux DOI-cache lookup (#1091) and selected-cache provenance (#1362) remain limitations.", + "pre_research_baseline": { + "base_commit": "9174d5c1ce9c92966a4d270b4109071d81aa25f5", + "base_tree": "a74ac965aa5a120b2f5c585c6ba42d1a452e5cef", + "research_worktree": "/private/tmp/communitymech-causal-batch47", + "checks": [ + { + "name": "rank", + "command": [ + "just", + "rank-causal-graphs" + ], + "exit_code": 0, + "expected_exit_code": 0, + "log": "/private/tmp/communitymech-batch48/baseline-rank.log", + "sha256": "8a0f5fed4036f8e935572ec6a142fda5e2760e8b4730963d3c49a680ba780e8a", + "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-batch48/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-batch48/baseline-network.log", + "sha256": "71a1e46fdd5d7c44e1766fabc85efb996c70258e3e64018891cfa94bb22fb13e", + "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-batch48/baseline-downstream.log", + "sha256": "f3f18d59d4ca2d3a4bc6dba5a969d9f8a42b9affa5a0a1c9e969c309e41cd41d", + "output_tail": "monas_Vanadium_Reduction_Community.yaml:281: downstream:\nkb/communities/Polaromonas_Vanadium_Reduction_Community.yaml:401: downstream:\nkb/communities/Deepwater_Horizon_Deep_Sea_Oil_Plume_Succession.yaml:197: downstream:\nkb/communities/Deepwater_Horizon_Deep_Sea_Oil_Plume_Succession.yaml:241: downstream:\nkb/communities/Rumen_Substrate_Adapted_Lignocellulose_Enrichment_Consortia.yaml:328: downstream:\nkb/communities/Geobacter_Pseudomonas_Formate_Fumarate_Electroactive_Coculture.yaml:191: downstream:\nkb/communities/Cable_Bacteria_Photosynthetic_Biofilm_Sediment.yaml:80: downstream:\nkb/communities/Cable_Bacteria_Photosynthetic_Biofilm_Sediment.yaml:117: downstream:\nkb/communities/Moss_Microbe_Complex_Regolith_Biofertilizer.yaml:169: downstream:\nkb/communities/Moss_Microbe_Complex_Regolith_Biofertilizer.yaml:199: downstream:\nkb/communities/Chlamydomonas_Bacterial_H2_Consortium.yaml:311: downstream:\nkb/communities/Chlamydomonas_Bacterial_H2_Consortium.yaml:365: downstream:\nkb/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml:223: downstream:\nkb/communities/Ferroplasma_Leptospirillum_Syntrophy.yaml:125: downstream:\nkb/communities/Infant_Gut_DNA_Phage_Succession_Community.yaml:89: downstream:\nkb/communities/Infant_Gut_DNA_Phage_Succession_Community.yaml:112: downstream:\nkb/communities/Infant_Gut_DNA_Phage_Succession_Community.yaml:139: downstream:\nkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml:199: downstream:\nkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml:267: downstream:\nkb/communities/Dual_Bacillus_coagulans_Pseudomonas_putida_Lactic_Acid_Coculture.yaml:134: downstream:\nkb/communities/Dual_Bacillus_coagulans_Pseudomonas_putida_Lactic_Acid_Coculture.yaml:189: downstream:\nkb/communities/Lake_Washington_Methane_Oxygen_Methylotroph_Community.yaml:336: downstream:\nkb/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml:342: downstream:\nkb/communities/SynCom_Sesame_Flavor_Baijiu_Fuqu_13Genus.yaml:381: downstream:\n" + } + ], + "baseline_sha256": "cabfdf23dd37801a863422ccab868fad480dc05bbd255cf69bbc1c6528371dba" + } +} diff --git a/tests/test_causal_review_batch48.py b/tests/test_causal_review_batch48.py new file mode 100644 index 000000000..f49222d64 --- /dev/null +++ b/tests/test_causal_review_batch48.py @@ -0,0 +1,114 @@ +"""Keep positive consortium outcomes distinct from unmeasured mechanisms.""" + +import hashlib +from pathlib import Path + +import yaml + +ROOT = Path(__file__).resolve().parents[1] +LEDGER = ROOT / "reports/causal_graph_review/decisions/20261006-ginseng-s11-batch48.yaml" + + +def records(): + ledger = yaml.safe_load(LEDGER.read_text()) + return ledger, [yaml.safe_load((ROOT / r["path"]).read_text()) for r in ledger["records"]] + + +def test_cl95_retains_distinct_strains_and_external_participants(): + _, (doc, _) = records() + for index, node in enumerate(doc["ecological_interactions"]): + assert node["scope"] == "COMMUNITY_LEVEL" + assert not {"interaction_type", "source_taxon", "target_taxon", "downstream"} & node.keys() + assert len(node["participating_taxa"]) == 6 + members = node["participating_taxa"][:5] + assert [p["term"] for p in members] == [t["taxon_term"]["term"] for t in doc["taxonomy"]] + assert members[0]["term"] == members[1]["term"] + assert members[0]["preferred_term"] != members[1]["preferred_term"] + expected = "NCBITaxon:1079257" if index == 0 else "NCBITaxon:4054" + assert node["participating_taxa"][-1]["term"]["id"] == expected + + +def test_cl95_positive_phenotypes_do_not_prove_mediation_or_nutrient_flux(): + _, (doc, _) = records() + suppression, growth, _ = doc["ecological_interactions"] + assert "66.67%" in suppression["description"] and "73%" in suppression["description"] + assert "not necessarily viable pathogen" in suppression["description"] + assert "not selectively manipulated" in suppression["description"] + assert "13.00, 15.50 and 19.00 mm" in growth["description"] + assert "not measurements of nutrient flux" in growth["description"] + assert "metabolites" not in growth + assert suppression["biological_processes"][0]["term"]["id"] == "GO:0044419" + assert growth["biological_processes"][0]["term"]["id"] == "GO:0040007" + + +def test_cl95_marker_recovery_and_enzyme_response_keep_their_assay_limits(): + _, (doc, _) = records() + node = doc["ecological_interactions"][2] + assert "NJ13, NT35 and FG14" in node["description"] + assert "do not independently track all five" in node["description"] + assert "do not directly track individual cells" in node["description"] + assert "do not identify their producing organism" in node["description"] + assert node["biological_processes"][0]["term"]["id"] == "GO:0044419" + assert "180% catalase" in node["evidence"][1]["explanation"] + gap = doc["discussions"][0] + assert "defense transcription is positive host-response evidence" in gap["rationale"] + assert gap["status"] == "OPEN" + + +def test_s11_removal_is_not_reciprocal_fitness_or_resolved_flux(): + _, (_, doc) = records() + (node,) = doc["ecological_interactions"] + assert node["scope"] == "COMMUNITY_LEVEL" + assert not {"interaction_type", "biological_processes", "downstream"} & node.keys() + assert [p["term"] for p in node["participating_taxa"]] == [ + t["taxon_term"]["term"] for t in doc["taxonomy"] + ] + assert {m["term"]["id"] for m in node["metabolites"]} == {"CHEBI:28938", "CHEBI:16301"} + assert "95% ammonium-N and 97% nitrite-N" in node["description"] + assert "heterotrophic nitrification-aerobic denitrification" in node["description"] + assert "does not partition consortium removal" in node["description"] + assert "residual nitrite fractions are not removal percentages" in node["description"] + assert doc["discussions"][-1]["status"] == "OPEN" + + +def test_s11_shared_evidence_and_prior_environment_fix_survive(): + _, (_, doc) = records() + strain = doc["engineering_design"]["evidence"][0] + assert strain is doc["taxonomy"][0]["evidence"][0] + assert strain is doc["taxonomy"][1]["evidence"][0] + design = doc["engineering_design"]["evidence"][1] + graph = doc["ecological_interactions"][0]["evidence"][0] + assert design is not graph + assert design["explanation"].endswith("synergistic nitrogen-removal phenotype.") + assert graph["snippet"] == design["snippet"] + assert "not reciprocal fitness" in graph["explanation"] + assert doc["modeled_environment"][0]["term"]["id"] == "ENVO:00002001" + + +def test_every_original_node_and_arrow_has_a_hash_bound_decision(): + ledger, docs = records() + assert ledger["review_mode"] == "source_based_self_adversarial_review" + assert ledger["independent_approval"] is False and ledger["issues"] == [1487, 1488] + assert ledger["issue_deduplication"]["ignored_hidden_local_search"] is True + for row, doc in zip(ledger["records"], docs, strict=True): + assert row["status"] == "reviewed" + assert [n["node"] for n in row["node_decisions"]] == [ + n["name"] for n in doc["ecological_interactions"] + ] + assert ( + row["removed_node_decisions"] + == row["edges_after"] + == row["retained_edge_decisions"] + == [] + ) + assert len(row["removed_edge_decisions"]) == len(row["edges_before"]) + assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"] + assert len(row["history_files"]) == 1 and (ROOT / row["history_files"][0]).is_file() + assert doc["curation_history"][-1]["llm_assisted"] is True + names = {n["name"] for n in doc["ecological_interactions"]} + for gap in doc["discussions"]: + assert all(a.split("#", 1)[1] in names for a in gap["attaches_to"] if "#" in a) + assert sum(len(r["edges_before"]) for r in ledger["records"]) == 1 + for path, digest in ledger["reference_cache_original_hashes"].items(): + assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == digest + assert "abstract only" in ledger["records"][1]["source_review"]["PMID:41260371"]["scope"]