From f89ced919014bf0ab6ca9df10e5ccbcdee6741ea Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Mon, 5 Oct 2026 21:38:03 -0700 Subject: [PATCH] Bound CPR lipid hypotheses and record unresolved DCPP source review --- ...eyser_CO2_Aquifer_CPR_Lipid_Community.html | 141 ++-- .../2026-10-06T041950Z-codex-5086e8.yaml | 29 + ...eyser_CO2_Aquifer_CPR_Lipid_Community.yaml | 155 ++-- .../adversarial-review-20261006-batch27.yaml | 216 ++++++ .../20261006-three-records-batch27.yaml | 211 ++++++ reports/causal_graph_review/inventory.tsv | 6 +- reports/causal_graph_review/summary.json | 6 +- .../validation-20261006-batch27.json | 696 ++++++++++++++++++ tests/test_causal_review_batch27.py | 131 ++++ tests/test_participating_taxa.py | 1 + 10 files changed, 1485 insertions(+), 107 deletions(-) create mode 100644 history/records/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community/2026-10-06T041950Z-codex-5086e8.yaml create mode 100644 reports/causal_graph_review/adversarial-review-20261006-batch27.yaml create mode 100644 reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml create mode 100644 reports/causal_graph_review/validation-20261006-batch27.json create mode 100644 tests/test_causal_review_batch27.py diff --git a/docs/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.html b/docs/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.html index 5c064bfc7..ccbd3650a 100644 --- a/docs/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.html +++ b/docs/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.html @@ -559,7 +559,7 @@

Ecological Interactions

Ecological interaction network for Crystal Geyser CO2-Rich Aquifer Autotrophic CPR Lysolipid Community - 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 (cross-feeding, syntrophy, commensalism). + 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 (cross-feeding).
@@ -572,13 +572,8 @@

Ecological Interactions

Syntrophy -
-
- Commensalism + aria-hidden="true" data-symbol="symbolTriangle2" + data-color="#929caa"> Other
@@ -586,14 +581,19 @@

Ecological Interactions

-

Autotrophy-Based Deep Biosphere

- CROSS_FEEDING +

Predominantly Autotrophic Carbon Supply

-

Microbial lipid stable-carbon-isotope compositions show that bacterial and archaeal CO2 fixation in the deep subsurface provides the organic carbon for the complex communities residing there.

+

Stable carbon isotope compositions, community metagenomes and geological constraints support a predominantly autotrophic origin of biomass across the sampled aquifers. Bacterial and archaeal carbon fixation supplies the community organic-carbon pool; isotope mass-balance estimates depend on fractionation assumptions and allow heterotrophic reuse. This does not trace a particular producer-to-CPR carbon or lipid transfer.

+

Participating Taxa: + + deep-aquifer CO2-fixing bacteria and archaea + +

+

Metabolites: @@ -623,9 +623,8 @@

Autotrophy-Based Deep Biosphere

Downstream Effects:
- → Lipid Redistribution to CPR Symbionts -

Autotrophic bacterial and archaeal production supplies deep-subsurface organic carbon to the complex community that includes lipid-limited CPR putative symbionts. -

+ → Putative CPR Lipid Acquisition +

HYPOTHESIZED - autotrophically fixed carbon can supply bacterial lipid production and the community material available for CPR acquisition. The isotope, lipid and genomic observations support this proposed carbon route but do not trace transfer from a particular producer to CPR cells.

@@ -654,17 +653,21 @@

Evidence

-

Lipid Redistribution to CPR Symbionts

- SYNTROPHY +

Putative CPR Lipid Acquisition

+ CROSS_FEEDING
-

CPR bacteria possess regular lipid membranes despite lacking complete lipid biosynthesis pathways; lipids likely originate from other community members, with the partner bacteria/archaea also adapting to high in situ pressure via increased fatty acid unsaturation.

+

HYPOTHESIZED - CPR-associated membrane lipids together with missing known complete lipid-biosynthesis pathways support acquisition of lipids or precursors from coexisting bacteria. Scavenging degraded biomass and direct host-derived acquisition remain alternatives; neither a donor nor uptake flux was resolved. The broad producer participant represents community context, not proof of archaeal-to-CPR donation. Some Nealsonbacteria retain near-complete pathways, so unknown ACP-independent biosynthesis cannot be excluded. Product-removal syntrophy was not demonstrated.

-

Source Taxon: deep-aquifer CO2-fixing bacteria and archaea

+

Participating Taxa: -

Target Taxon: deep-aquifer CPR bacteria

+ deep-aquifer CPR bacteria, + + deep-aquifer CO2-fixing bacteria and archaea + +

@@ -699,9 +702,8 @@

Lipid Redistribution to CPR Symbionts

Downstream Effects:
- → CPR Lysolipid Enrichment as Curvature Adaptation -

Imported or redistributed community lipids form CPR bacterial membranes, whose lysolipid enrichment is a candidate response to high curvature. -

+ → CPR-Associated Lysolipids and Proposed Curvature Adaptation +

HYPOTHESIZED - acquired community lipids or precursors could provide material for CPR-associated lysolipid membranes and their proposed curvature adaptation. Lipid correlations and mixed-fraction spectroscopy do not demonstrate that acquisition causes lysolipid enrichment or that enrichment improves curvature tolerance.

@@ -717,7 +719,7 @@

Evidence

PMID:32203118 - - SUPPORT (IN_VIVO) + - PARTIAL (IN_VIVO)
"CPR bacteria lack complete lipid biosynthesis pathways but still possess regular lipid membranes"
@@ -730,10 +732,10 @@

Evidence

PMID:32203118 - - SUPPORT (IN_VIVO) + - PARTIAL (IN_VIVO) -
"adapt to high in situ pressure by increasing fatty acid unsaturation"
+
"the redistribution of lipids into putative symbionts within this community"
@@ -743,10 +745,10 @@

Evidence

PMID:32203118 - - SUPPORT (IN_VIVO) + - PARTIAL (OTHER) -
"the redistribution of lipids into putative symbionts within this community"
+
"Thus, we suggest that most CPR bacteria derive their membrane lipids, including lysolipids, from coexisting bacteria."
@@ -756,14 +758,19 @@

Evidence

-

CPR Lysolipid Enrichment as Curvature Adaptation

- COMMENSALISM +

CPR-Associated Lysolipids and Proposed Curvature Adaptation

-

Unusually high abundance of lysolipids attributed to CPR bacteria may represent an adaptation to membrane curvature stress induced by their small cell sizes.

+

Lipidomics, organism-lipid correlations and FTIR of CPR-enriched size fractions support lysolipid-rich membranes in some CPR bacteria. These fractions are mixed communities, not purified CPR isolates; the initial fraction also contained abundant Sulfurimonas. Reduced curvature stress in small cells is a proposed adaptive explanation, not a tested membrane-mechanical or fitness effect. No unaffected-donor relationship is established.

+

Participating Taxa: + + deep-aquifer CPR bacteria + +

+

Metabolites: @@ -800,7 +807,7 @@

Evidence

PMID:32203118 - - SUPPORT (IN_VIVO) + - PARTIAL (IN_VIVO)
"An unusually high abundance of lysolipids attributed to CPR bacteria may represent an adaptation to membrane curvature stress induced by their small cell sizes"
@@ -816,6 +823,25 @@

Evidence

+
+

Knowledge gaps & discussions (1)

+ +
+

+ KNOWLEDGE_GAP + OPEN + Which sources and uptake routes supply CPR lipids, and do lysolipids causally relieve membrane curvature stress? +

+

The complete primary main body supports mostly autotrophic community carbon, missing known biosynthesis pathways and CPR-associated lysolipids. Correlated relative abundances, mixed size fractions and FTIR do not resolve donors or transfer rates. Degraded-biomass scavenging, direct host acquisition and unknown biosynthetic routes remain distinguishable hypotheses. Selective uptake/biosynthesis perturbations, tracing and membrane-mechanical measurements would test the proposed chain. The separate archaeal lipid discussion must not establish archaeal donation to CPR. No figure images or supplementary files were inspected. Non-graph taxon-role and pressure-adaptation overstatements remain in #1366.

+ +

Attaches to: ecological_interactions#Predominantly Autotrophic Carbon Supply, ecological_interactions#Putative CPR Lipid Acquisition, ecological_interactions#CPR-Associated Lysolipids and Proposed Curvature Adaptation

+ + + + +
+ +
@@ -1051,7 +1077,7 @@

Environmental Factors

(function() { var intId = "interaction:0"; - var intType = "CROSS_FEEDING"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1068,7 +1094,7 @@

Environmental Factors

nodes.push({ id: intId, - label: "Autotrophy-Based Deep Biosphere", + label: "Predominantly Autotrophic Carbon Supply", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1079,11 +1105,22 @@

Environmental Factors

+ var participantKeys = [ + + "deep-aquifer CO2-fixing bacteria and archaea" + + ]; + participantKeys.forEach(function(key) { + if (taxonNodeIds[key]) { + links.push({ source: taxonNodeIds[key], target: intId }); + } + }); + })(); (function() { var intId = "interaction:1"; - var intType = "SYNTROPHY"; + var intType = "CROSS_FEEDING"; var metabolites = []; @@ -1102,7 +1139,7 @@

Environmental Factors

nodes.push({ id: intId, - label: "Lipid Redistribution to CPR Symbionts", + label: "Putative CPR Lipid Acquisition", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1111,23 +1148,26 @@

Environmental Factors

}); - var srcKey = "deep-aquifer CO2-fixing bacteria and archaea"; - if (taxonNodeIds[srcKey]) { - links.push({ source: taxonNodeIds[srcKey], target: intId }); - } + var participantKeys = [ - var tgtKey = "deep-aquifer CPR bacteria"; - if (taxonNodeIds[tgtKey]) { - links.push({ source: intId, target: taxonNodeIds[tgtKey] }); - } + "deep-aquifer CPR bacteria", + + "deep-aquifer CO2-fixing bacteria and archaea" + + ]; + participantKeys.forEach(function(key) { + if (taxonNodeIds[key]) { + links.push({ source: taxonNodeIds[key], target: intId }); + } + }); })(); (function() { var intId = "interaction:2"; - var intType = "COMMENSALISM"; + var intType = "UNKNOWN"; var metabolites = []; @@ -1144,7 +1184,7 @@

Environmental Factors

nodes.push({ id: intId, - label: "CPR Lysolipid Enrichment as Curvature Adaptation", + label: "CPR-Associated Lysolipids and Proposed Curvature Adaptation", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1155,6 +1195,17 @@

Environmental Factors

+ var participantKeys = [ + + "deep-aquifer CPR bacteria" + + ]; + participantKeys.forEach(function(key) { + if (taxonNodeIds[key]) { + links.push({ source: taxonNodeIds[key], target: intId }); + } + }); + })(); diff --git a/history/records/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community/2026-10-06T041950Z-codex-5086e8.yaml b/history/records/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community/2026-10-06T041950Z-codex-5086e8.yaml new file mode 100644 index 000000000..2a025610f --- /dev/null +++ b/history/records/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community/2026-10-06T041950Z-codex-5086e8.yaml @@ -0,0 +1,29 @@ +history_version: 1 +target: + kind: record + path: kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml + slug: Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community +session: + id: 2026-10-06T041950Z-codex-5086e8 + timestamp: '2026-10-06T04:19:50Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1365 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Retain the positive isotope/genomic carbon-source evidence with its fractionation + and recipient-resolution limits; no arbitrary exchange type on primary production.; Retain + source-proposed bacterial lipid acquisition as partial cross-feeding, not measured donor + flux, obligatory lipid dependence or product-removal syntrophy.; Retain CPR-associated + lysolipid measurements and a qualified curvature hypothesis without pure-isolate attribution + or a commensal fitness sign. + details: Source-based self-adversarial graph qualification; no new nodes/arrows. reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml diff --git a/kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml b/kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml index da39e22c2..e0e4f6403 100644 --- a/kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml +++ b/kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml @@ -59,11 +59,11 @@ taxonomy: provides organic carbon explanation: Supports the CO2-fixing autotrophic members. ecological_interactions: -- name: Autotrophy-Based Deep Biosphere - description: Microbial lipid stable-carbon-isotope compositions show that - bacterial and archaeal CO2 fixation in the deep subsurface provides the - organic carbon for the complex communities residing there. - interaction_type: CROSS_FEEDING +- name: Predominantly Autotrophic Carbon Supply + description: Stable carbon isotope compositions, community metagenomes and geological constraints support a predominantly + autotrophic origin of biomass across the sampled aquifers. Bacterial and archaeal carbon fixation supplies the + community organic-carbon pool; isotope mass-balance estimates depend on fractionation assumptions and allow + heterotrophic reuse. This does not trace a particular producer-to-CPR carbon or lipid transfer. scope: COMMUNITY_LEVEL metabolites: - preferred_term: carbon dioxide @@ -76,36 +76,32 @@ ecological_interactions: id: GO:0015977 label: carbon fixation downstream: - - target: Lipid Redistribution to CPR Symbionts - description: > - Autotrophic bacterial and archaeal production supplies deep-subsurface - organic carbon to the complex community that includes lipid-limited CPR - putative symbionts. + - target: Putative CPR Lipid Acquisition + description: HYPOTHESIZED - autotrophically fixed carbon can supply bacterial lipid production and the community + material available for CPR acquisition. The isotope, lipid and genomic observations support this proposed + carbon route but do not trace transfer from a particular producer to CPR cells. evidence: - reference: PMID:32203118 supports: SUPPORT evidence_source: IN_VIVO - snippet: bacterial and archaeal CO2 fixation ongoing in the deep - subsurface provides organic carbon for the complex communities that - reside there - explanation: Supports the curated autotrophy-driven carbon source. -- name: Lipid Redistribution to CPR Symbionts - description: CPR bacteria possess regular lipid membranes despite lacking - complete lipid biosynthesis pathways; lipids likely originate from other - community members, with the partner bacteria/archaea also adapting to - high in situ pressure via increased fatty acid unsaturation. - interaction_type: SYNTROPHY - scope: COMMUNITY_LEVEL - source_taxon: - preferred_term: deep-aquifer CO2-fixing bacteria and archaea + snippet: bacterial and archaeal CO2 fixation ongoing in the deep subsurface provides organic carbon for the + complex communities that reside there + explanation: Supports the predominantly autotrophic community carbon source from isotope and genomic evidence, + not a resolved producer-recipient flux. The broad producer participant is a functional pool, not one experimentally + paired donor. + participating_taxa: + - preferred_term: deep-aquifer CO2-fixing bacteria and archaea term: id: NCBITaxon:131567 label: cellular organisms - target_taxon: - preferred_term: deep-aquifer CPR bacteria - term: - id: NCBITaxon:1783273 - label: Patescibacteria group +- name: Putative CPR Lipid Acquisition + description: HYPOTHESIZED - CPR-associated membrane lipids together with missing known complete lipid-biosynthesis + pathways support acquisition of lipids or precursors from coexisting bacteria. Scavenging degraded biomass and + direct host-derived acquisition remain alternatives; neither a donor nor uptake flux was resolved. The broad + producer participant represents community context, not proof of archaeal-to-CPR donation. Some Nealsonbacteria + retain near-complete pathways, so unknown ACP-independent biosynthesis cannot be excluded. Product-removal syntrophy + was not demonstrated. + scope: COMMUNITY_LEVEL metabolites: - preferred_term: lipid term: @@ -121,35 +117,48 @@ ecological_interactions: id: GO:0006629 label: lipid metabolic process downstream: - - target: CPR Lysolipid Enrichment as Curvature Adaptation - description: > - Imported or redistributed community lipids form CPR bacterial membranes, - whose lysolipid enrichment is a candidate response to high curvature. + - target: CPR-Associated Lysolipids and Proposed Curvature Adaptation + description: HYPOTHESIZED - acquired community lipids or precursors could provide material for CPR-associated + lysolipid membranes and their proposed curvature adaptation. Lipid correlations and mixed-fraction spectroscopy + do not demonstrate that acquisition causes lysolipid enrichment or that enrichment improves curvature tolerance. evidence: - reference: PMID:32203118 - supports: SUPPORT - evidence_source: IN_VIVO - snippet: CPR bacteria lack complete lipid biosynthesis pathways but still - possess regular lipid membranes - explanation: Supports the curated CPR lipid sourcing. - - reference: PMID:32203118 - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VIVO - snippet: adapt to high in situ pressure by increasing fatty acid - unsaturation - explanation: Supports the pressure-adaptive unsaturation of partner lipids. + snippet: CPR bacteria lack complete lipid biosynthesis pathways but still possess regular lipid membranes + explanation: Combined field lipid and genome observations support an acquisition hypothesis. They do not identify + the donor, exclude unknown biosynthesis, or demonstrate product-removal cooperation. Depth-associated unsaturation + is not evidence for this transfer. - reference: PMID:32203118 - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VIVO snippet: the redistribution of lipids into putative symbionts within this community - explanation: > - Supports lipid redistribution from other deep-aquifer community members - into CPR putative symbionts. -- name: CPR Lysolipid Enrichment as Curvature Adaptation - description: Unusually high abundance of lysolipids attributed to CPR - bacteria may represent an adaptation to membrane curvature stress induced - by their small cell sizes. - interaction_type: COMMENSALISM + explanation: Combined field lipid and genome observations support an acquisition hypothesis. They do not identify + the donor, exclude unknown biosynthesis, or demonstrate product-removal cooperation. Depth-associated unsaturation + is not evidence for this transfer. + - reference: PMID:32203118 + supports: PARTIAL + evidence_source: OTHER + snippet: Thus, we suggest that most CPR bacteria derive their membrane lipids, including lysolipids, from coexisting + bacteria. + explanation: The primary Results/Discussion explicitly proposes bacterial lipid acquisition after considering + missing ACP machinery and possible alternative pathways. This is an author interpretation, not a traced exchange + experiment. + participating_taxa: + - preferred_term: deep-aquifer CPR bacteria + term: + id: NCBITaxon:1783273 + label: Patescibacteria group + - preferred_term: deep-aquifer CO2-fixing bacteria and archaea + term: + id: NCBITaxon:131567 + label: cellular organisms + interaction_type: CROSS_FEEDING +- name: CPR-Associated Lysolipids and Proposed Curvature Adaptation + description: Lipidomics, organism-lipid correlations and FTIR of CPR-enriched size fractions support lysolipid-rich + membranes in some CPR bacteria. These fractions are mixed communities, not purified CPR isolates; the initial + fraction also contained abundant Sulfurimonas. Reduced curvature stress in small cells is a proposed adaptive + explanation, not a tested membrane-mechanical or fitness effect. No unaffected-donor relationship is established. scope: COMMUNITY_LEVEL metabolites: - preferred_term: lipid @@ -163,12 +172,17 @@ ecological_interactions: label: lipid metabolic process evidence: - reference: PMID:32203118 - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VIVO - snippet: An unusually high abundance of lysolipids attributed to CPR - bacteria may represent an adaptation to membrane curvature stress - induced by their small cell sizes - explanation: Supports the curated lysolipid-curvature-adaptation hypothesis. + snippet: An unusually high abundance of lysolipids attributed to CPR bacteria may represent an adaptation to + membrane curvature stress induced by their small cell sizes + explanation: Supports the authors' proposed curvature adaptation. The primary study adds mixed-fraction lipidomic + and FTIR observations, not purified-cell transfer, curvature perturbation or a donor fitness measurement. + participating_taxa: + - preferred_term: deep-aquifer CPR bacteria + term: + id: NCBITaxon:1783273 + label: Patescibacteria group related_ingredients: - preferred_term: carbon dioxide chebi_term: @@ -259,3 +273,32 @@ rare_earth_elements_present: [] metal_relevance: NOT_APPLICABLE metal_notes: No metal or rare earth element processing role is curated for this deep-biosphere CPR community. +discussions: +- discussion_id: crystal_geyser_lipid_donor_and_adaptation + prompt: Which sources and uptake routes supply CPR lipids, and do lysolipids causally relieve membrane curvature + stress? + kind: KNOWLEDGE_GAP + status: OPEN + attaches_to: + - ecological_interactions#Predominantly Autotrophic Carbon Supply + - ecological_interactions#Putative CPR Lipid Acquisition + - ecological_interactions#CPR-Associated Lysolipids and Proposed Curvature Adaptation + rationale: 'The complete primary main body supports mostly autotrophic community carbon, missing known biosynthesis + pathways and CPR-associated lysolipids. Correlated relative abundances, mixed size fractions and FTIR do not + resolve donors or transfer rates. Degraded-biomass scavenging, direct host acquisition and unknown biosynthetic + routes remain distinguishable hypotheses. Selective uptake/biosynthesis perturbations, tracing and membrane-mechanical + measurements would test the proposed chain. The separate archaeal lipid discussion must not establish archaeal + donation to CPR. No figure images or supplementary files were inspected. Non-graph taxon-role and pressure-adaptation + overstatements remain in #1366.' + posed_by: codex + posed_date: '2026-10-06' +curation_history: +- timestamp: '2026-10-06T04:19:48Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Retain the positive isotope/genomic carbon-source evidence with its fractionation and recipient-resolution + limits; no arbitrary exchange type on primary production.; Retain source-proposed bacterial lipid acquisition + as partial cross-feeding, not measured donor flux, obligatory lipid dependence or product-removal syntrophy.; + Retain CPR-associated lysolipid measurements and a qualified curvature hypothesis without pure-isolate attribution + or a commensal fitness sign. Issue #1365; reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml' + llm_assisted: true diff --git a/reports/causal_graph_review/adversarial-review-20261006-batch27.yaml b/reports/causal_graph_review/adversarial-review-20261006-batch27.yaml new file mode 100644 index 000000000..ae95ff132 --- /dev/null +++ b/reports/causal_graph_review/adversarial-review-20261006-batch27.yaml @@ -0,0 +1,216 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: d35e526e30385056f3b99c9a93c85a0d791b309b +scope: +- kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml +- kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml +- kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml +decision_ledger: reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml +validation_report: reports/causal_graph_review/validation-20261006-batch27.json +findings: +- issue: 1365 + severity: P2 + status: addressed_in_this_change + finding: The Crystal Geyser graph overstates lipid transfer and assigns syntrophy/commensalism without + resolved exchange or fitness evidence. + disposition: Keep the positive carbon-source and mixed-fraction lipid observations; qualify acquisition + and both existing arrows, remove unsupported relationship types, preserve canonical participants, + and add an anchored research gap. +- issue: 1365 + severity: P2 + status: caught_by_regressions_and_corrected + finding: 'The first candidate omitted Crystal Geyser from the exact participating_taxa USERS registry: + one failed and 329 passed.' + disposition: Added exactly that record to the registry (167 to 168). Connectivity surveys remain identical, + including 124 mixed-scope records; no numeric bound or production logic is loosened. Full verification + rerun is retained. +- issue: 1366 + severity: P2 + status: open_nongraph_followup + finding: Crystal Geyser non-graph metadata retains stronger lipid-dependence and pressure-adaptation + wording. + disposition: Tracked separately; all non-graph record blocks are preserved, not certified by this graph + review. +- issue: 596 + severity: P2 + status: open_source_access_followup + finding: DCPP has 19 snippets absent from independently retrieved abstract text and no reviewed complete + primary body. + disposition: Leave the record unchanged and mark needs_research; selected excerpts and a diagnostic + exit zero do not certify its body-specific graph claims. +adversarial_checks: +- All seven original nodes and two original arrows have explicit decisions; three node renames propagate + to exact edge targets and new discussion anchors. +- Carbon-source support is retained rather than discarded for lack of organism-resolved flux; fractionation + assumptions and heterotrophic reuse remain explicit. +- The separate archaeal lipid proposal is not evidence for archaeal-to-CPR donation. The broad producer + participant is contextual, not a resolved donor. +- Lack of known pathways does not exclude unknown ACP-independent synthesis. Scavenged biomass and direct + host acquisition remain alternatives. +- Mixed size fractions, abundant Sulfurimonas in the initial fraction, and the separate CPR-rich FTIR + sample do not establish purified-cell uptake, curvature benefit, or commensal fitness. +- Nitrifier abstract-level sequential conversion, selected organic-nitrogen conditions, nitrate and endpoint-nitrite + limits are retained; relative-abundance associations do not justify extra arrows. +- DCPP exact strain comparisons, partner-specific detoxification and LC-MS details remain unresolved. + Metabolite detection is not organism-resolved exchange flux. +- One guarded record edit has one llm-assisted curation event and one append-only history. Unchanged records + receive no invented edit events or histories. +- Non-graph blocks, the other 459 records, and all 920 caches are byte-preserved. No primary full body, + PDF, new graph structure or Edison output is introduced. +- Both corpus roots are inventoried. Issue deduplication includes ignored and hidden local files plus + 698 all-state issue titles/bodies, not every issue comment. +- All 456 community pages have node and arrow descriptions compared to source YAML by HTML parser, with + deterministic repeat rendering. Browser screenshots were not performed. +verification: + combined_regressions: 330 passed in 225.67s (0:03:45) + new_regression_tests: 6 + schema_strict_terms_history: passed for applicable reviewed targets; complete commands and raw results + are in the validation report + snippet_counts_by_record: + kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml: + MATCH: 13 + RENDERING: 0 + ASSEMBLED: 0 + WEAK: 0 + MISMATCH: 0 + NOCONTENT: 0 + kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml: + MATCH: 18 + RENDERING: 0 + ASSEMBLED: 0 + WEAK: 0 + MISMATCH: 0 + NOCONTENT: 0 + kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml: + MATCH: 2 + RENDERING: 0 + ASSEMBLED: 0 + WEAK: 0 + MISMATCH: 19 + NOCONTENT: 0 + network: Zero structural errors; the same 25 warnings, with raw warning exits retained. + black_ruff_diff: passed + tested_file_sha256: + reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml: 90e6a0ad3e095a1301744958f706782510d03bdf40852999837d12401019ded0 + tests/test_causal_review_batch27.py: 7b4ecaa048f32fadab20aa56306b761281689995dc285e2a4f20ce840b31c75f + tests/test_participating_taxa.py: 4cda8cb7b7aeb1928ebd1c208a090377345ca3843bcbba3a21b493d298dbafa6 + kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml: b219156340ab8170a318ed82b9bf47e7a5a5b67e490870d42fabb2c9a8e25051 + kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml: b3843b5e2f64d179b4bc11a1558b7f977c025252fa6fe16d8ab82e0dfb292ec1 + kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml: f9b1a67fb3fcd903a1adcb16f0eb5279a3738ff6807ddc4cc9203553be36bc3a + post_commit_docs_current: Separate publication gate; not yet claimed by this pre-commit artifact. + protected_ci_and_merge: Require live exact-head status and protected main queue; not asserted here. +corpus: + records: 460 + nodes: 1474 + edges: 710 + review_status_counts: + needs_research: 4 + pending: 331 + reviewed: 125 +self_review_remediation: + issue: 1365 + finding: Crystal Geyser explicit participants require one addition to the exact USERS census; the first + full regression run exposed the omitted registry entry. + initial_failure: + 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_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: 1 + expected_exit_codes: + - 0 + log: /private/tmp/communitymech-batch27/regressions.log + log_sha256: 9f89aef0388829f653066bef7f68bf00bc17015d279ef41dddc9f4a8f4ed5625 + output_tail: "........................................................................ [ 21%]\n........................................................................\ + \ [ 43%]\n........................................................................ [ 65%]\n.................................F......................................\ + \ [ 87%]\n.......................................... [100%]\n===================================\ + \ FAILURES ===================================\n_________________ test_the_corpus_is_unchanged_by_this_feature\ + \ _________________\n\n def test_the_corpus_is_unchanged_by_this_feature():\n \"\"\"Only\ + \ the records that mean to use the slot do.\n \n Asserted on the corpus rather than trusted\ + \ from the schema: an\n `ifabsent` or a default that quietly populated the slot would change\ + \ 312\n records' connectivity without anyone editing a record. That is still the\n \ + \ failure this catches \u2014 a silent default would put every record in `users`,\n not\ + \ just the three named below.\n \"\"\"\n users = {\n path.name\n \ + \ for path in record_files()\n for interaction in (yaml.safe_load(path.read_text())\ + \ or {}).get(\"ecological_interactions\")\n or []\n if isinstance(interaction,\ + \ dict) and interaction.get(\"participating_taxa\")\n }\n> assert users == USERS, (\n\ + \ f\"{len(users)} records use participating_taxa, expected {len(USERS)}. \"\n \ + \ f\"Adding a user is fine \u2014 but the connectivity numbers in \"\n f\"tests/test_community_level_connectivity_credit.py\ + \ were measured \"\n f\"before the slot was used, so re-check them and then update USERS.\ + \ \"\n f\"Added: {sorted(users - USERS)}. Removed: {sorted(USERS - users)}\"\n \ + \ )\nE AssertionError: 168 records use participating_taxa, expected 167. Adding a user is\ + \ fine \u2014 but the connectivity numbers in tests/test_community_level_connectivity_credit.py\ + \ were measured before the slot was used, so re-check them and then update USERS. Added: ['Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml'].\ + \ Removed: []\nE assert {'AMD_Acidoph...re.yaml', ...} == {'AMD_Acidoph...re.yaml', ...}\n\ + E \nE Extra items in the left set:\nE 'Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml'\n\ + E Use -v to get more diff\n\ntests/test_participating_taxa.py:345: AssertionError\n===========================\ + \ short test summary info ============================\nFAILED tests/test_participating_taxa.py::test_the_corpus_is_unchanged_by_this_feature\n\ + 1 failed, 329 passed in 210.35s (0:03:30)\n" + initial_report: /private/tmp/communitymech-batch27/participant-census-remediation/initial-failed-validation.json + initial_report_sha256: b71a138a4323f2913e729fabcf7e6766eb0f1b6ece2dbbd13e650b39acc5e392 + correction: Add only Crystal Geyser to USERS. Recheck both connectivity surveys and retain every numeric + bound and production algorithm. + status: corrected_and_full_verification_rerun + connectivity_before: + community_level_only: 265 + credited_solely_by_the_rule: 1217 + mixed: 124 + records: 460 + taxa: 1499 + with_community_level: 389 + connectivity_after: + community_level_only: 265 + credited_solely_by_the_rule: 1217 + mixed: 124 + records: 460 + taxa: 1499 + with_community_level: 389 + exact_census_change: 167 -> 168 users; only Crystal Geyser added +limitations: +- 'Three records assessed: Crystal Geyser changed/reviewed, nitrifier unchanged/reviewed, DCPP unchanged/needs_research. + Only two completed reviews are added.' +- Seven existing nodes and two arrows preserved across the three records; no new graph structure or Edison + spend. +- One complete primary main body and two complete abstracts reviewed. No figure images or supplementary + files inspected; no new full body or PDF committed. +- Non-graph metadata preserved, not certified; Crystal Geyser metadata follow-up remains open. +- 'DCPP selected cache fragments are not primary-body verification. Nineteen retrieval gaps remain under + #596 and no body-specific graph certification is claimed.' +- Self-adversarial review is not independent approval, protected CI success or full-corpus completion. diff --git a/reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml b/reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml new file mode 100644 index 000000000..869303cc8 --- /dev/null +++ b/reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml @@ -0,0 +1,211 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: d35e526e30385056f3b99c9a93c85a0d791b309b +issues: +- 1365 +open_nongraph_followups: +- 1366 +open_source_followups: +- 596 +issue_deduplication: + all_state_issue_titles_bodies: 698 + ignored_hidden_local_files_included: true + comments_exhaustive: false + relevant_issues_read: + - 977 + - 978 + - 596 + - 1362 + finding: 'No exact new Crystal Geyser graph duplicate in the searched scope; nitrifier prior fixes remain intact. + DCPP source gap is attached to existing #596.' +reference_cache_original_hashes: + references_cache/PMID_32203118.md: ed47b1021b5307304a7ac65b99353942f4db7873cf2bf8cec3ccd52e573872b6 + references_cache/PMID_32203118.txt: 5d873129a219c729435a36dfe6c9c59a29be4befe7dde10294a8db6025d452f3 + references_cache/PMID_42613016.txt: a5b89d867b4d0264fe7cbce7ff2e0abdf55a50e00d93ef3ee63a23511895b398 + references_cache/PMID_42668143.txt: 534023632f8dd66866ee7d231899d31656d90877316f87f60448b2a3e2adc4c6 +limitations: +- 'Three records assessed: Crystal Geyser changed/reviewed, nitrifier unchanged/reviewed, DCPP unchanged/needs_research. + Only two completed reviews are added.' +- Seven existing nodes and two arrows preserved across the three records; no new graph structure or Edison spend. +- One complete primary main body and two complete abstracts reviewed. No figure images or supplementary files inspected; + no new full body or PDF committed. +- Non-graph metadata preserved, not certified; Crystal Geyser metadata follow-up remains open. +- 'DCPP selected cache fragments are not primary-body verification. Nineteen retrieval gaps remain under #596 and + no body-specific graph certification is claimed.' +- Self-adversarial review is not independent approval, protected CI success or full-corpus completion. +records: +- path: kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml + id: CommunityMech:000252 + original_sha256: 57f51f8d2b027fa5a47e9cb28eac879906288e696892879c71a63c2db1091662 + record_sha256: b219156340ab8170a318ed82b9bf47e7a5a5b67e490870d42fabb2c9a8e25051 + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml + scope: Whole record and every original node/arrow inspected; source access and completion limitations below. Non-graph + metadata is not certified. + summary: Retain the positive isotope/genomic carbon-source evidence with its fractionation and recipient-resolution + limits; no arbitrary exchange type on primary production.; Retain source-proposed bacterial lipid acquisition + as partial cross-feeding, not measured donor flux, obligatory lipid dependence or product-removal syntrophy.; + Retain CPR-associated lysolipid measurements and a qualified curvature hypothesis without pure-isolate attribution + or a commensal fitness sign. + renamed_nodes: + Autotrophy-Based Deep Biosphere: Predominantly Autotrophic Carbon Supply + Lipid Redistribution to CPR Symbionts: Putative CPR Lipid Acquisition + CPR Lysolipid Enrichment as Curvature Adaptation: CPR-Associated Lysolipids and Proposed Curvature Adaptation + node_decisions: + - node: Predominantly Autotrophic Carbon Supply + rationale: Retain the positive isotope/genomic carbon-source evidence with its fractionation and recipient-resolution + limits; no arbitrary exchange type on primary production. + - node: Putative CPR Lipid Acquisition + rationale: Retain source-proposed bacterial lipid acquisition as partial cross-feeding, not measured donor flux, + obligatory lipid dependence or product-removal syntrophy. + - node: CPR-Associated Lysolipids and Proposed Curvature Adaptation + rationale: Retain CPR-associated lysolipid measurements and a qualified curvature hypothesis without pure-isolate + attribution or a commensal fitness sign. + edges_before: + - source: Autotrophy-Based Deep Biosphere + target: Lipid Redistribution to CPR Symbionts + description: 'Autotrophic bacterial and archaeal production supplies deep-subsurface organic carbon to the complex + community that includes lipid-limited CPR putative symbionts. + + ' + - source: Lipid Redistribution to CPR Symbionts + target: CPR Lysolipid Enrichment as Curvature Adaptation + description: 'Imported or redistributed community lipids form CPR bacterial membranes, whose lysolipid enrichment + is a candidate response to high curvature. + + ' + edges_after: + - source: Predominantly Autotrophic Carbon Supply + target: Putative CPR Lipid Acquisition + description: HYPOTHESIZED - autotrophically fixed carbon can supply bacterial lipid production and the community + material available for CPR acquisition. The isotope, lipid and genomic observations support this proposed + carbon route but do not trace transfer from a particular producer to CPR cells. + - source: Putative CPR Lipid Acquisition + target: CPR-Associated Lysolipids and Proposed Curvature Adaptation + description: HYPOTHESIZED - acquired community lipids or precursors could provide material for CPR-associated + lysolipid membranes and their proposed curvature adaptation. Lipid correlations and mixed-fraction spectroscopy + do not demonstrate that acquisition causes lysolipid enrichment or that enrichment improves curvature tolerance. + retained_edge_decisions: + - source: Predominantly Autotrophic Carbon Supply + target: Putative CPR Lipid Acquisition + rationale: HYPOTHESIZED - autotrophically fixed carbon can supply bacterial lipid production and the community + material available for CPR acquisition. The isotope, lipid and genomic observations support this proposed + carbon route but do not trace transfer from a particular producer to CPR cells. + - source: Putative CPR Lipid Acquisition + target: CPR-Associated Lysolipids and Proposed Curvature Adaptation + rationale: HYPOTHESIZED - acquired community lipids or precursors could provide material for CPR-associated + lysolipid membranes and their proposed curvature adaptation. Lipid correlations and mixed-fraction spectroscopy + do not demonstrate that acquisition causes lysolipid enrichment or that enrichment improves curvature tolerance. + removed_edge_decisions: [] + references: + - PMID:32203118 + issues: + - 1365 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + history_files: + - history/records/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community/2026-10-06T041950Z-codex-5086e8.yaml + source_review: + PMID:32203118: + url: https://www.nature.com/articles/s41396-020-0624-4 + cache_path: references_cache/PMID_32203118.md + cache_sha256: ed47b1021b5307304a7ac65b99353942f4db7873cf2bf8cec3ccd52e573872b6 + license: CC BY 4.0 + reviewed_scope: 'Complete independently retrieved main body after the Europe PMC full-text marker: Introduction, + Methods, Results/Discussion, main table and captions, and Conclusion. No figure images or supplementary + files inspected. Fresh publisher text confirmed source identity, abstract and Methods; a subsequent web + request failed.' +- path: kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml + id: CommunityMech:000397 + original_sha256: b3843b5e2f64d179b4bc11a1558b7f977c025252fa6fe16d8ab82e0dfb292ec1 + record_sha256: b3843b5e2f64d179b4bc11a1558b7f977c025252fa6fe16d8ab82e0dfb292ec1 + status: reviewed + outcome: unchanged + review_file: reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml + scope: Whole record and every original node/arrow inspected; source access and completion limitations below. Non-graph + metadata is not certified. + summary: Retain the directly abstract-supported aggregate sequential ammonification/nitrification outcome for + the three named NBRC strains. Selected organic-nitrogen conditions, approximately 56 mg-N/L nitrate and no endpoint + nitrite do not assign donor-resolved flux, necessity or universal substrate coverage. Relative-abundance associations + are not causal arrows. A single bounded community node needs no artificial downstream target. + renamed_nodes: {} + node_decisions: + - node: Sequential organic-nitrogen conversion + rationale: Retain the directly abstract-supported aggregate sequential ammonification/nitrification outcome + for the three named NBRC strains. Selected organic-nitrogen conditions, approximately 56 mg-N/L nitrate and + no endpoint nitrite do not assign donor-resolved flux, necessity or universal substrate coverage. Relative-abundance + associations are not causal arrows. A single bounded community node needs no artificial downstream target. + edges_before: [] + edges_after: [] + retained_edge_decisions: [] + removed_edge_decisions: [] + references: + - PMID:42668143 + issues: [] + allowed_changed_fields: [] + curation_events_added: 0 + history_files: [] + source_review: + PMID:42668143: + url: https://pubmed.ncbi.nlm.nih.gov/42668143/ + publisher_url: https://academic.oup.com/bbb/advance-article-abstract/doi/10.1093/bbb/zbag131/8776124 + reviewed_scope: Entire cached primary abstract plus full abstract returned by official PubMed/OUP search. + Direct web open failed; publisher shows Get access. No Methods, Results, figure or supplement review. Existing + cultivation-details knowledge gap remains open. +- path: kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml + id: CommunityMech:000410 + original_sha256: f9b1a67fb3fcd903a1adcb16f0eb5279a3738ff6807ddc4cc9203553be36bc3a + record_sha256: f9b1a67fb3fcd903a1adcb16f0eb5279a3738ff6807ddc4cc9203553be36bc3a + status: needs_research + outcome: unchanged + review_file: reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml + scope: Whole record and every original node/arrow inspected; source access and completion limitations below. Non-graph + metadata is not certified. + summary: Record remains unchanged and explicitly needs research; do not certify body-specific strain, assay or + exchange claims from selected excerpts. + renamed_nodes: {} + node_decisions: + - node: Model-selected DCPP degradation + rationale: 'Unresolved: abstract supports the modelling/simplification framework, but the exact three-strain + optimum and its four/five-strain comparisons require the primary body. Selected cache excerpts do not certify + those claims.' + - node: DBS4 to DCP-11d 2,4-DCP detoxification + rationale: 'Unresolved: abstract supports helper-mediated intermediate detoxification generally; exact DBS4/DCP-11d + attribution, perturbations and direction need the primary body. The previously removed dangling arrow is not + restored.' + - node: Predicted exchanged metabolite validation + rationale: 'Unresolved: the abstract supports model-predicted nutrient exchanges but does not establish the + six-of-seven LC-MS result or organism-resolved exchange flux. Detection must not be treated as direct flux + validation.' + edges_before: [] + edges_after: [] + retained_edge_decisions: [] + removed_edge_decisions: [] + references: + - PMID:42613016 + issues: + - 596 + allowed_changed_fields: [] + curation_events_added: 0 + history_files: [] + source_review: + PMID:42613016: + url: https://europepmc.org/articles/PMC13485441 + doi: 10.1111/1462-2920.70404 + metadata_path: /private/tmp/communitymech-batch27/DCPP-europepmc-metadata.json + metadata_sha256: 1862375621c5f0e024dff9ac572df48ad6ae72e72af69020022ee3c3bc50d233 + reviewed_scope: Complete independently retrieved cached abstract and current Europe PMC metadata; no complete + primary Methods/Results/Discussion body read. Metadata lists a free HTML copy but isOpenAccess=N; that HTML + request returned HTTP 403. Earlier PMC web requests hit reCAPTCHA, not bypassed. No full body copied to + git. + local_source_search: Ignored/hidden-inclusive filenames and relevant text/XML/HTML/JSON contents in main references_cache + and research; main files/ PDF names inspected. Temporary filenames searched. No identified complete primary + body found in this scope; not an exhaustive PDF-content or whole-disk search. + snippet_status: 'The repaired snippet auditor exposes 19 missing-from-retrieved-text items and two matches. + This is a source-coverage gap, not proof that all 19 biological claims are false. Existing #596 remains + open.' diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv index c60d18cc4..c33baff81 100644 --- a/reports/causal_graph_review/inventory.tsv +++ b/reports/causal_graph_review/inventory.tsv @@ -125,18 +125,18 @@ kb/communities/Cordyceps_Malbranchea_Antimicrobial_Coculture.yaml CommunityMech: kb/communities/Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml CommunityMech:000294 1522534e0e993cff111c4fcde85182868aeae81389cb47120d97a3882b88250d 3 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml reviewed kb/communities/Coscinodiscus_Synthetic_Community.yaml CommunityMech:000020 96bf155c9e47de5f8934bbf367f392bfcee5073098125c841db171fd0b9dda1a 5 2 90.0 reports/causal_graph_review/decisions/20261005-two-records-batch25.yaml reviewed kb/communities/Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml CommunityMech:000293 5dc07af806fbaa10b2eb522c2e5221c404aabc6ff58ea1f9cec7062ba079f09e 3 2 90.0 reports/causal_graph_review/decisions/20261005-three-records-batch24.yaml reviewed -kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml CommunityMech:000252 57f51f8d2b027fa5a47e9cb28eac879906288e696892879c71a63c2db1091662 3 2 100.0 pending +kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml CommunityMech:000252 b219156340ab8170a318ed82b9bf47e7a5a5b67e490870d42fabb2c9a8e25051 3 2 93.3 reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml reviewed kb/communities/Cultivated_Meat_Contaminant_SynCom.yaml CommunityMech:000366 432da24bbdadb8fb88ea3c7aec46d75743748ef94449b645a1a199bd651d047e 2 0 70.0 pending kb/communities/Cyantraniliprole_Fahmy_Consortium_T4.yaml CommunityMech:000369 90f6ac24afc01d7d5b3d732f4c6d54a9cef8ed1df11e6fe63b8e9ebc8018e003 2 0 70.0 pending kb/communities/Cyprus_Copper_Sulphide_Bioleaching_Consortium.yaml CommunityMech:000217 391aec875e774e78467f82dd8455b315ee3e2f0bacce673aa4e7b91665fec8a2 3 2 100.0 pending -kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml CommunityMech:000410 f9b1a67fb3fcd903a1adcb16f0eb5279a3738ff6807ddc4cc9203553be36bc3a 3 0 73.3 pending +kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml CommunityMech:000410 f9b1a67fb3fcd903a1adcb16f0eb5279a3738ff6807ddc4cc9203553be36bc3a 3 0 73.3 reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml needs_research kb/communities/DIETsimp_Lignocellulose_to_Methane_DIET_Consortia.yaml CommunityMech:000297 50097ae1bdfd2b9d167b4997b15241b1ad1d3158586a05a38ad7d911100f94f7 3 2 100.0 pending kb/communities/DVM_Triculture.yaml CommunityMech:000021 f266bb55b26a98251d9302e6a411526e3908eb775203bd87b4fa8b47fcb07743 4 2 100.0 pending kb/communities/Dairy_Wastewater_Algal_Cyanobacterial_Cultivation_Panel.yaml CommunityMech:000384 1eee347250881287de8d9d9be43dd5bba641e69001b46ea19e8048aeb1214bf6 0 0 0.0 pending kb/communities/Dangl_SynComm_35.yaml CommunityMech:000022 1308bd7106e991df960bd18afdc8bad9df6da33c9dd124cfb0f1e1a1e60e398b 7 2 100.0 pending kb/communities/Deepwater_Horizon_Deep_Sea_Oil_Plume_Succession.yaml CommunityMech:000166 de4e7abef8320819a7fb648bef5b6b77bf9c7e9addc1d47eb8b7221fd9f97e94 4 3 100.0 pending kb/communities/Defined_Multispecies_Enamel_Caries_Model.yaml CommunityMech:000082 44c660bcd4b7ee0cc6b7dc9f6512a6215ebdf6e96251826169a5124441166009 3 2 100.0 pending -kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml CommunityMech:000397 b3843b5e2f64d179b4bc11a1558b7f977c025252fa6fe16d8ab82e0dfb292ec1 1 0 65.0 pending +kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml CommunityMech:000397 b3843b5e2f64d179b4bc11a1558b7f977c025252fa6fe16d8ab82e0dfb292ec1 1 0 65.0 reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml reviewed kb/communities/Dehalococcoides_Desulfovibrio_Lactate_TCE_Syntrophy.yaml CommunityMech:000199 e177715e13530b307c714b59268dc295e35935d12b5d73a0ee7137ba68a927d0 3 2 100.0 pending kb/communities/Dehalococcoides_Desulfovibrio_Pelosinus_Corrinoid_Triculture.yaml CommunityMech:000200 9e9caf7e8dfeeca85868d3bc7509eacd27686582f0090bfbd88af2675248d8bf 4 3 100.0 pending kb/communities/Dehalococcoides_Methanosarcina_DMB_Cobalamin_Coculture.yaml CommunityMech:000209 07af295ed9a7d53238b5bbcd466fa2d9478b4bb7f896958ea4f1a65d101c4b46 3 2 100.0 pending diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json index 83847f943..8e31837b6 100644 --- a/reports/causal_graph_review/summary.json +++ b/reports/causal_graph_review/summary.json @@ -7,9 +7,9 @@ "records_without_nodes": 8, "records_without_edges": 141, "review_status_counts": { - "needs_research": 3, - "pending": 334, - "reviewed": 123 + "needs_research": 4, + "pending": 331, + "reviewed": 125 }, "structural_defects": [], "network_audit": [ diff --git a/reports/causal_graph_review/validation-20261006-batch27.json b/reports/causal_graph_review/validation-20261006-batch27.json new file mode 100644 index 000000000..96519d784 --- /dev/null +++ b/reports/causal_graph_review/validation-20261006-batch27.json @@ -0,0 +1,696 @@ +{ + "base_commit": "d35e526e30385056f3b99c9a93c85a0d791b309b", + "scope": [ + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml", + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml", + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml" + ], + "reference_validator_version": "0.1.7", + "results": [ + { + "check": "Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-schema", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-schema.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-strict", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/private/tmp/communitymech-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-strict.tsv", + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-strict.log", + "log_sha256": "90834bd313b7a903ff69c3be2026dd186115b6886114c9c010c38fcd91608558", + "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch27/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-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-strict.tsv\n" + }, + { + "check": "Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-terms", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator", + "validate-data", + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-terms.log", + "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018", + "output_tail": "\u2705 Validation passed\n" + }, + { + "check": "Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-references", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator", + "validate", + "data", + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-references.log", + "log_sha256": "d1766927bc91a5268317db1a432e6f66019331830e1ea2821dd2f0498310257b", + "output_tail": "Validating kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n", + "explained_output_tail": "Validating kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n" + }, + { + "check": "Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-snippets", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-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": "Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-rank", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml", + "--format", + "json" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-rank.log", + "log_sha256": "86e0c720c8d71e810eea966a152b3232f7aad43563e825ed376690c0bedbb1b2", + "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000252\",\n \"name\": \"Crystal Geyser CO2-Rich Aquifer Autotrophic CPR Lysolipid Community\",\n \"score\": 93.3,\n \"taxonomy\": 2,\n \"connected_taxa\": 2,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 3,\n \"downstream_edges\": 2,\n \"interaction_evidence\": 5,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml\"\n }\n]\n" + }, + { + "check": "Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-history-0", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate", + "-s", + "src/communitymech/schema/history.yaml", + "--target-class", + "HistoryRecord", + "history/records/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community/2026-10-06T041950Z-codex-5086e8.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community-history-0.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-schema", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-schema.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-strict", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/private/tmp/communitymech-batch27/participant-census-remediation/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-strict.tsv", + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-strict.log", + "log_sha256": "e58a257842a31ef8c591c158a59e081142e144c234a2f8bff8f4e2330eb66092", + "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch27/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-batch27/participant-census-remediation/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-strict.tsv\n" + }, + { + "check": "Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-terms", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator", + "validate-data", + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-terms.log", + "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018", + "output_tail": "\u2705 Validation passed\n" + }, + { + "check": "Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-references", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator", + "validate", + "data", + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-references.log", + "log_sha256": "9e0f7d01630f97352f53580821a62f827e76405ff85f517b0540929d162f714d", + "output_tail": "Validating kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n", + "explained_output_tail": "Validating kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml against schema src/communitymech/schema/communitymech.yaml\nCache directory: references_cache\n\nValidation Summary:\n Total checks: 0\n All validations passed!\n" + }, + { + "check": "Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-snippets", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-snippets.log", + "log_sha256": "d6441c5dcfaf6a072d70e8708d5fe1bbd2c2a2d31da61b3014fb014108c34cef", + "output_tail": "# 18 evidence snippets scanned across 1 files\n MATCH 18\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": "Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-rank", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml", + "--format", + "json" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community-rank.log", + "log_sha256": "90edf0ecbde2e4dfe333eeb6e521fb21dd7a0bcf8dce3060304c19ba28a5b5c0", + "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000397\",\n \"name\": \"Defined Three-Strain Organic-Nitrogen Nitrifying Community\",\n \"score\": 65.0,\n \"taxonomy\": 3,\n \"connected_taxa\": 3,\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 ],\n \"path\": \"kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml\"\n }\n]\n" + }, + { + "check": "DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-schema", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-schema.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-strict", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/private/tmp/communitymech-batch27/participant-census-remediation/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-strict.tsv", + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-strict.log", + "log_sha256": "569cb2a1d4c5132a5ea73913f5dd31dfbe937cd4a7d3a8f01c64d3819afe64d2", + "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch27/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-batch27/participant-census-remediation/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-strict.tsv\n" + }, + { + "check": "DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-terms", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator", + "validate-data", + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-terms.log", + "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018", + "output_tail": "\u2705 Validation passed\n" + }, + { + "check": "DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-references", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator", + "validate", + "data", + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0, + 1 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-references.log", + "log_sha256": "145e3126561bc34d427c34eff3c2debc6c74d33491cba62921fe8330462ba29d", + "output_tail": "Validating kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_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/DCPP_DBS4_DCP4_DCP11d_Degradation_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": "DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-snippets", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-snippets.log", + "log_sha256": "cdbea292539ec2fd0b589e3fbf93fd4e93f645eb78c0279c5b684d9bc41a929c", + "output_tail": "# 21 evidence snippets scanned across 1 files\n MATCH 2\n RENDERING 0\n ASSEMBLED 0\n WEAK 0\n MISMATCH 19\n NOCONTENT 0\n\n# Files with MISMATCH/WEAK (content present but snippet absent) \u2014 fabrication suspects\n 19 (19 hard) kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml\n\n# MISMATCH/WEAK detail\n [MISMATCH cov=0.01] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n the combination of DBS4, DCP\u20104 and DCP\u201011d (DBS4&DCP\u20104&DCP\u201011d) showed...\n [MISMATCH cov=0.01] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n optimal three\u2010strain SynCom DBS4&DCP\u20104&DCP\u201011d was comparable to that ...\n [MISMATCH cov=0.02] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n The initial inoculation ratio was set to 1:1 in model simulations...\n [MISMATCH cov=0.02] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n same 1:1 inoculation ratio was applied in experimental validation...\n [MISMATCH cov=0.02] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n Five strains, including Sphingopyxis sp. DBS4, Sphingopyxis sp. DCP\u20104...\n [MISMATCH cov=0.02] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n Five strains, including Sphingopyxis sp. DBS4, Sphingopyxis sp. DCP\u20104...\n [MISMATCH cov=0.03] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n Achromobacter sp. DCP\u201011d were used in this study....\n [MISMATCH cov=0.02] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n DCP\u201011d were all able to degrade 2,4\u2010DCP, an intermediate metabolite o...\n [MISMATCH cov=0.01] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n the combination of DBS4, DCP\u20104 and DCP\u201011d (DBS4&DCP\u20104&DCP\u201011d) showed...\n [MISMATCH cov=0.01] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n optimal three\u2010strain SynCom DBS4&DCP\u20104&DCP\u201011d was comparable to that ...\n [MISMATCH cov=0.01] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n the model predicted the metabolic flow of the intermediate 2,4\u2010DCP fro...\n [MISMATCH cov=0.01] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n 2,4\u2010DCP inhibits the degradation activity of DBS4, while DCP\u201011d allev...\n [MISMATCH cov=0.01] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n the optimal consortium (DBS4&DCP\u20104&DCP\u201011d) was used to detect the sec...\n [MISMATCH cov=0.01] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n Except for D\u2010glucosamine, the other six substances were successfully d...\n [MISMATCH cov=0.04] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n 30\u2009mg/L of DCPP as the sole carbon and nitrogen source at 30\u00b0C and 180...\n [MISMATCH cov=0.03] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n Soil samples containing 5\u2009mg/kg of DCPP...\n [MISMATCH cov=0.03] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n 1.0\u2009g NH4Cl, 0.5\u2009g KH2PO4, 1.5\u2009g K2HPO4, 1.0\u2009g NaCl, and 0.2\u2009g MgSO4\u00b77...\n [MISMATCH cov=0.5] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n pH\u2009=\u20097.0...\n [MISMATCH cov=0.03] kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml PMID:42613016\n 30\u2009mg/L of DCPP as the sole carbon and nitrogen source at 30\u00b0C and 180...\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": "DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-rank", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml", + "--format", + "json" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom-rank.log", + "log_sha256": "5780fb8514fe516462732d3b4eec9a202cf231ad0030c37375e01d8c61b366fc", + "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000410\",\n \"name\": \"DCPP DBS4-DCP-4-DCP-11d Degradation SynCom\",\n \"score\": 73.3,\n \"taxonomy\": 3,\n \"connected_taxa\": 3,\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 \"metabolites_or_biological_processes\"\n ],\n \"path\": \"kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml\"\n }\n]\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-batch27/participant-census-remediation/inventory.log", + "log_sha256": "1470dc03a7399600a8ceed3f1c204b51cede6807f7bf97e411660d79a8b83564", + "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\": 1474,\n \"edges\": 710,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 141,\n \"review_status_counts\": {\n \"needs_research\": 4,\n \"pending\": 331,\n \"reviewed\": 125\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-batch27/participant-census-remediation/network.log", + "log_sha256": "1809e26154a0786ff23aa4219ed22e9f04aa23924f0308440d0df46ffcf7623a", + "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-batch27/participant-census-remediation/rank-all.log", + "log_sha256": "517ddf97fe59818fc9207af577ecd64ef7775f57ddf3f486c1ac33d6e55cd7cf", + "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-batch27/participant-census-remediation/render.log", + "log_sha256": "d72d5af12a8812472022375cb32bbfe5e879c5d0e32603657d5098dc73310a17", + "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch27/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch27/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch27/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-batch27/participant-census-remediation/render-repeat.log", + "log_sha256": "d72d5af12a8812472022375cb32bbfe5e879c5d0e32603657d5098dc73310a17", + "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch27/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch27/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch27/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch27/docs/index.html\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_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-batch27/participant-census-remediation/regressions.log", + "log_sha256": "06cd7c5817ae69ce9eed5b02395537f790a1e8190626808b65b998f01504e660", + "output_tail": "........................................................................ [ 21%]\n........................................................................ [ 43%]\n........................................................................ [ 65%]\n........................................................................ [ 87%]\n.......................................... [100%]\n330 passed in 225.67s (0:03:45)\n" + }, + { + "check": "black", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/3Q_kifQtLB624D5bBWGIf/bin/black", + "--check", + "tests/test_causal_review_batch27.py", + "tests/test_participating_taxa.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/black.log", + "log_sha256": "b9cf511501d306d2bd8355ccb165c8ddc0a6fdd62d7c72c4a7b1795cf8934c8c", + "output_tail": "All done! \u2728 \ud83c\udf70 \u2728\n2 files would be left unchanged.\n" + }, + { + "check": "ruff", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/wCcxEYRM4HeHgwYPZemHX/bin/ruff", + "check", + "tests/test_causal_review_batch27.py", + "tests/test_participating_taxa.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/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-batch27/participant-census-remediation/diff-check.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "output_tail": "" + }, + { + "check": "connectivity-survey", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "-c", + "import json,runpy; print(json.dumps(runpy.run_path(\"tests/test_community_level_connectivity_credit.py\")[\"_survey\"](),sort_keys=True))" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/participant-census-remediation/connectivity-survey.log", + "log_sha256": "7746c3bce72e165df3c3f369d55f71bdba7465b8ebe85b64b194d18f5eab4d27", + "output_tail": "{\"community_level_only\": 265, \"credited_solely_by_the_rule\": 1217, \"mixed\": 124, \"records\": 460, \"taxa\": 1499, \"with_community_level\": 389}\n" + } + ], + "limitations": [ + "Three records assessed: Crystal Geyser changed/reviewed, nitrifier unchanged/reviewed, DCPP unchanged/needs_research. Only two completed reviews are added.", + "Seven existing nodes and two arrows preserved across the three records; no new graph structure or Edison spend.", + "One complete primary main body and two complete abstracts reviewed. No figure images or supplementary files inspected; no new full body or PDF committed.", + "Non-graph metadata preserved, not certified; Crystal Geyser metadata follow-up remains open.", + "DCPP selected cache fragments are not primary-body verification. Nineteen retrieval gaps remain under #596 and no body-specific graph certification is claimed.", + "Self-adversarial review is not independent approval, protected CI success or full-corpus completion.", + "HTML descriptions checked by exact parser and repeat renders, not browser screenshots. Post-commit docs-current is a separate publication gate." + ], + "self_review_remediation": { + "issue": 1365, + "finding": "Crystal Geyser explicit participants require one addition to the exact USERS census; the first full regression run exposed the omitted registry entry.", + "initial_failure": { + "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_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": 1, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch27/regressions.log", + "log_sha256": "9f89aef0388829f653066bef7f68bf00bc17015d279ef41dddc9f4a8f4ed5625", + "output_tail": "........................................................................ [ 21%]\n........................................................................ [ 43%]\n........................................................................ [ 65%]\n.................................F...................................... [ 87%]\n.......................................... [100%]\n=================================== FAILURES ===================================\n_________________ test_the_corpus_is_unchanged_by_this_feature _________________\n\n def test_the_corpus_is_unchanged_by_this_feature():\n \"\"\"Only the records that mean to use the slot do.\n \n Asserted on the corpus rather than trusted from the schema: an\n `ifabsent` or a default that quietly populated the slot would change 312\n records' connectivity without anyone editing a record. That is still the\n failure this catches \u2014 a silent default would put every record in `users`,\n not just the three named below.\n \"\"\"\n users = {\n path.name\n for path in record_files()\n for interaction in (yaml.safe_load(path.read_text()) or {}).get(\"ecological_interactions\")\n or []\n if isinstance(interaction, dict) and interaction.get(\"participating_taxa\")\n }\n> assert users == USERS, (\n f\"{len(users)} records use participating_taxa, expected {len(USERS)}. \"\n f\"Adding a user is fine \u2014 but the connectivity numbers in \"\n f\"tests/test_community_level_connectivity_credit.py were measured \"\n f\"before the slot was used, so re-check them and then update USERS. \"\n f\"Added: {sorted(users - USERS)}. Removed: {sorted(USERS - users)}\"\n )\nE AssertionError: 168 records use participating_taxa, expected 167. Adding a user is fine \u2014 but the connectivity numbers in tests/test_community_level_connectivity_credit.py were measured before the slot was used, so re-check them and then update USERS. Added: ['Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml']. Removed: []\nE assert {'AMD_Acidoph...re.yaml', ...} == {'AMD_Acidoph...re.yaml', ...}\nE \nE Extra items in the left set:\nE 'Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml'\nE Use -v to get more diff\n\ntests/test_participating_taxa.py:345: AssertionError\n=========================== short test summary info ============================\nFAILED tests/test_participating_taxa.py::test_the_corpus_is_unchanged_by_this_feature\n1 failed, 329 passed in 210.35s (0:03:30)\n" + }, + "initial_report": "/private/tmp/communitymech-batch27/participant-census-remediation/initial-failed-validation.json", + "initial_report_sha256": "b71a138a4323f2913e729fabcf7e6766eb0f1b6ece2dbbd13e650b39acc5e392", + "correction": "Add only Crystal Geyser to USERS. Recheck both connectivity surveys and retain every numeric bound and production algorithm.", + "status": "corrected_and_full_verification_rerun", + "connectivity_before": { + "community_level_only": 265, + "credited_solely_by_the_rule": 1217, + "mixed": 124, + "records": 460, + "taxa": 1499, + "with_community_level": 389 + }, + "connectivity_after": { + "community_level_only": 265, + "credited_solely_by_the_rule": 1217, + "mixed": 124, + "records": 460, + "taxa": 1499, + "with_community_level": 389 + }, + "exact_census_change": "167 -> 168 users; only Crystal Geyser added" + }, + "snippet_counts_by_record": { + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml": { + "MATCH": 13, + "RENDERING": 0, + "ASSEMBLED": 0, + "WEAK": 0, + "MISMATCH": 0, + "NOCONTENT": 0 + }, + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml": { + "MATCH": 18, + "RENDERING": 0, + "ASSEMBLED": 0, + "WEAK": 0, + "MISMATCH": 0, + "NOCONTENT": 0 + }, + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml": { + "MATCH": 2, + "RENDERING": 0, + "ASSEMBLED": 0, + "WEAK": 0, + "MISMATCH": 19, + "NOCONTENT": 0 + } + }, + "unchanged_raw_blocks": 50, + "unchanged_record_files": 459, + "unchanged_cache_files": 920, + "network_findings_unchanged": true, + "render_determinism": true, + "published_description_coverage": { + "pages": 456, + "nodes": 1460, + "arrows": 702 + }, + "corpus": { + "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.", + "records": 460, + "nodes": 1474, + "edges": 710, + "records_without_nodes": 8, + "records_without_edges": 141, + "review_status_counts": { + "needs_research": 4, + "pending": 331, + "reviewed": 125 + }, + "structural_defects": [] + }, + "tested_file_sha256": { + "reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml": "90e6a0ad3e095a1301744958f706782510d03bdf40852999837d12401019ded0", + "tests/test_causal_review_batch27.py": "7b4ecaa048f32fadab20aa56306b761281689995dc285e2a4f20ce840b31c75f", + "tests/test_participating_taxa.py": "4cda8cb7b7aeb1928ebd1c208a090377345ca3843bcbba3a21b493d298dbafa6", + "kb/communities/Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml": "b219156340ab8170a318ed82b9bf47e7a5a5b67e490870d42fabb2c9a8e25051", + "kb/communities/Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml": "b3843b5e2f64d179b4bc11a1558b7f977c025252fa6fe16d8ab82e0dfb292ec1", + "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml": "f9b1a67fb3fcd903a1adcb16f0eb5279a3738ff6807ddc4cc9203553be36bc3a" + }, + "status": "verified_two_completed_reviews_one_unresolved_source_review", + "unresolved_source_review": { + "record": "kb/communities/DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml", + "issue": 596, + "mismatches": 19, + "disposition": "Not certified; needs_research. Diagnostic exit zero is not evidence that these snippets match." + } +} diff --git a/tests/test_causal_review_batch27.py b/tests/test_causal_review_batch27.py new file mode 100644 index 000000000..5fa2d36bd --- /dev/null +++ b/tests/test_causal_review_batch27.py @@ -0,0 +1,131 @@ +"""Bound CPR lipid inference and distinguish completed from unresolved reviews.""" + +import hashlib +from collections import Counter +from pathlib import Path + +import yaml + +ROOT = Path(__file__).resolve().parents[1] +LEDGER = ROOT / "reports/causal_graph_review/decisions/20261006-three-records-batch27.yaml" + + +def records(): + ledger = yaml.safe_load(LEDGER.read_text()) + return ledger, [yaml.safe_load((ROOT / row["path"]).read_text()) for row in ledger["records"]] + + +def test_crystal_geyser_participants_are_scoped_without_resolved_donor_pairs(): + _, docs = records() + carbon, acquisition, adaptation = docs[0]["ecological_interactions"] + for node, ids in zip( + [carbon, acquisition, adaptation], + [["NCBITaxon:131567"], ["NCBITaxon:1783273", "NCBITaxon:131567"], ["NCBITaxon:1783273"]], + strict=True, + ): + assert node["scope"] == "COMMUNITY_LEVEL" + assert [p["term"]["id"] for p in node["participating_taxa"]] == ids + assert not {"source_taxon", "target_taxon"} & node.keys() + assert "interaction_type" not in carbon and "interaction_type" not in adaptation + assert acquisition["interaction_type"] == "CROSS_FEEDING" + + +def test_crystal_geyser_retains_positive_measurements_and_alternative_explanations(): + _, docs = records() + carbon, acquisition, adaptation = docs[0]["ecological_interactions"] + assert "predominantly autotrophic origin" in carbon["description"] + assert "fractionation assumptions" in carbon["description"] + assert "allow heterotrophic reuse" in carbon["description"] + for phrase in [ + "HYPOTHESIZED", + "Scavenging degraded biomass and direct host-derived acquisition", + "unknown ACP-independent biosynthesis cannot be excluded", + "not proof of archaeal-to-CPR donation", + "Product-removal syntrophy was not demonstrated", + ]: + assert phrase in acquisition["description"] + assert all(e["supports"] == "PARTIAL" for e in acquisition["evidence"]) + assert acquisition["evidence"][-1]["evidence_source"] == "OTHER" + assert "FTIR" in adaptation["description"] + assert "not purified CPR isolates" in adaptation["description"] + assert "Sulfurimonas" in adaptation["description"] + assert "not a tested membrane-mechanical or fitness effect" in adaptation["description"] + + +def test_crystal_geyser_arrows_remain_explicitly_hypothetical(): + _, docs = records() + carbon, acquisition, adaptation = docs[0]["ecological_interactions"] + assert carbon["downstream"][0]["target"] == acquisition["name"] + assert acquisition["downstream"][0]["target"] == adaptation["name"] + arrows = [e for n in [carbon, acquisition, adaptation] for e in n.get("downstream", [])] + assert len(arrows) == 2 + assert all(e["description"].startswith("HYPOTHESIZED -") for e in arrows) + assert "do not trace transfer" in arrows[0]["description"] + assert "do not demonstrate that acquisition causes" in arrows[1]["description"] + + +def test_nitrifier_retains_bounded_aggregate_conversion_without_new_arrows(): + ledger, docs = records() + row, doc = ledger["records"][1], docs[1] + assert row["status"] == "reviewed" and row["outcome"] == "unchanged" + assert row["original_sha256"] == row["record_sha256"] + (node,) = doc["ecological_interactions"] + assert "selected organic" in node["description"] + assert "no residual nitrite" in node["description"] + assert len(node["participating_taxa"]) == 3 and not node.get("downstream") + assert doc["discussions"][0]["status"] == "OPEN" + assert row["history_files"] == [] and row["curation_events_added"] == 0 + + +def test_dcpp_access_gap_is_not_certified_as_completed_review(): + ledger, docs = records() + row, doc = ledger["records"][2], docs[2] + assert row["status"] == "needs_research" and row["outcome"] == "unchanged" + assert row["original_sha256"] == row["record_sha256"] + assert row["history_files"] == [] and row["curation_events_added"] == 0 + assert row["allowed_changed_fields"] == [] and row["issues"] == [596] + assert len(doc["ecological_interactions"]) == 3 + assert not any(n.get("downstream") for n in doc["ecological_interactions"]) + source = row["source_review"]["PMID:42613016"] + assert "HTTP 403" in source["reviewed_scope"] + assert "not proof that all 19 biological claims are false" in source["snippet_status"] + assert all(d["rationale"].startswith("Unresolved:") for d in row["node_decisions"]) + + +def test_batch27_accounts_for_every_node_arrow_history_and_source_limit(): + ledger, docs = records() + rows = ledger["records"] + assert ledger["independent_approval"] is False + assert Counter(r["status"] for r in rows) == {"reviewed": 2, "needs_research": 1} + assert sum(len(r["node_decisions"]) for r in rows) == 7 + assert sum(len(r["retained_edge_decisions"]) for r in rows) == 2 + assert sum(len(r["renamed_nodes"]) for r in rows) == 3 + assert not any(r["removed_edge_decisions"] for r in rows) + assert sum(len(r["history_files"]) for r in rows) == 1 + for row, doc in zip(rows, docs, strict=True): + assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"] + names = {n["name"] for n in doc["ecological_interactions"]} + assert Counter(d["node"] for d in row["node_decisions"]) == Counter(names) + arrows = [ + {"source": n["name"], **edge} + for n in doc["ecological_interactions"] + for edge in n.get("downstream", []) + ] + assert arrows == row["edges_after"] + rename = row["renamed_nodes"] + assert {(e["source"], e["target"]) for e in arrows} == { + (rename.get(e["source"], e["source"]), rename.get(e["target"], e["target"])) + for e in row["edges_before"] + } + assert all( + a.split("#", 1)[1] in names + for d in doc.get("discussions", []) + for a in d.get("attaches_to", []) + if a.startswith("ecological_interactions#") + ) + source = rows[0]["source_review"]["PMID:32203118"] + assert "Complete independently retrieved main body" in source["reviewed_scope"] + assert "No figure images or supplementary files inspected" in source["reviewed_scope"] + assert len(ledger["reference_cache_original_hashes"]) == 4 + for path, expected in ledger["reference_cache_original_hashes"].items(): + assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == expected diff --git a/tests/test_participating_taxa.py b/tests/test_participating_taxa.py index e44d0b71d..442032c97 100644 --- a/tests/test_participating_taxa.py +++ b/tests/test_participating_taxa.py @@ -227,6 +227,7 @@ def test_a_curie_is_ambiguous_where_members_share_an_id(example): "Corynebacterium_glutamicum_Shewanella_oneidensis_Succinic_Acid_Coculture.yaml", "Coscinodiscus_Synthetic_Community.yaml", "Crucian_Carp_Gut_Disease_Resistance_SynCom.yaml", + "Crystal_Geyser_CO2_Aquifer_CPR_Lipid_Community.yaml", "DCPP_DBS4_DCP4_DCP11d_Degradation_SynCom.yaml", "DVM_Triculture.yaml", "Defined_ThreeStrain_Organic_Nitrogen_Nitrifying_Community.yaml",