From 92649d534afe864cfd9c307d59915ea000a94f97 Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Tue, 6 Oct 2026 12:39:31 -0700 Subject: [PATCH] Repair R2A model attribution and antagonism claims --- ...ase_Synthetic_Bacterial_Community_R2A.html | 203 ++---- .../2026-10-06T192703Z-codex-a73153.yaml | 24 + ...ase_Synthetic_Bacterial_Community_R2A.yaml | 156 ++--- reports/causal_graph_review/README.md | 18 + .../adversarial-review-20261006-batch58.yaml | 126 ++++ .../decisions/20261006-r2a-batch58.yaml | 122 ++++ reports/causal_graph_review/inventory.tsv | 2 +- reports/causal_graph_review/summary.json | 10 +- .../validation-20261006-batch58.json | 617 ++++++++++++++++++ tests/test_causal_review_batch58.py | 104 +++ tests/test_participating_taxa.py | 1 + 11 files changed, 1147 insertions(+), 236 deletions(-) create mode 100644 history/records/KBase_Synthetic_Bacterial_Community_R2A/2026-10-06T192703Z-codex-a73153.yaml create mode 100644 reports/causal_graph_review/adversarial-review-20261006-batch58.yaml create mode 100644 reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml create mode 100644 reports/causal_graph_review/validation-20261006-batch58.json create mode 100644 tests/test_causal_review_batch58.py diff --git a/docs/communities/KBase_Synthetic_Bacterial_Community_R2A.html b/docs/communities/KBase_Synthetic_Bacterial_Community_R2A.html index c836e2c46..1581acc69 100644 --- a/docs/communities/KBase_Synthetic_Bacterial_Community_R2A.html +++ b/docs/communities/KBase_Synthetic_Bacterial_Community_R2A.html @@ -543,7 +543,7 @@

Ecological Interactions

Ecological interaction network for KBase Synthetic Bacterial Community in R2A Medium - 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, competition). + Bipartite graph where circle nodes represent taxa and each ecological interaction is drawn as a distinct non-circular symbol, with colour repeating the same distinction (competition).
@@ -551,13 +551,13 @@

Ecological Interactions

Cross-feeding + aria-hidden="true" data-symbol="symbolTimes" + data-color="#a91919"> Competition
Competition + aria-hidden="true" data-symbol="symbolTriangle2" + data-color="#929caa"> Other
@@ -565,15 +565,20 @@

Ecological Interactions

-

Pantoea Metabolite Cross-Feeding to Community

- CROSS_FEEDING +

Predicted R2A Community Metabolite Exchange

-

Pantoea sp. YR343, the dominant strain in R2A medium, exports a greater range of metabolites than it receives from other community members. FBA modeling predicts that Pantoea excretes organic acids, purine derivatives, and biogenic amines that support the growth of Pseudomonas and Variovorax. Pantoea has the highest number of transporter genes and exchange reactions among community members, enabling utilization of diverse nutrients in the complex medium. Metaproteomics confirms high representation of enzymes involved in these metabolic pathways, supporting the cross-feeding mechanism.

+

PARTIAL - the R2A community FBA model predicts that Pantoea sp. YR343 exports organic acids, purine derivatives and biogenic amines to other modeled members, and predicts a higher Pantoea growth rate in the community than in its individual model. The actual three-member model comprises YR343, Pseudomonas sp. GM17 and Sphingobium sp. AP49, not Variovorax CF313. The listed canonical participants are only the two correctly represented model members; AP49 membership and strain grounding remain unresolved in record metadata (#1533). Models were gapfilled, combined using final-passage 16S ratios and constrained by carbon uptake calibrated to experimental growth rates. These are conditional predictions, not measurements of exchange flux or reciprocal fitness benefit. Metaproteomics detects relevant enzymes but does not confirm metabolite transfer. Pantoea dominance is based on 16S data; protein-based abundance estimates differ.

-

Source Taxon: Pantoea sp. YR343

+

Participating Taxa: + + Pantoea sp. YR343, + + Pseudomonas sp. GM17 + +

@@ -583,7 +588,7 @@

Pantoea Metabolite Cross-Feeding to Community

(CHEBI:64709), - purine + purines (CHEBI:26401) @@ -593,16 +598,6 @@

Pantoea Metabolite Cross-Feeding to Community

-
- Downstream Effects: - -
- → Variovorax Cross-Feeding on Community Metabolites -

Pantoea exports organic acids, purine derivatives, and biogenic amines into the shared extracellular environment that lower-abundance Variovorax uses for persistence in the R2A community.

-
- -
-

Evidence

@@ -614,10 +609,10 @@

Evidence

PMID:33995895 - - SUPPORT (COMPUTATIONAL) + - PARTIAL (COMPUTATIONAL)
-
"the dominant strain Pantoea sp. YR343, based on the 16S rRNA marker data, is expected to export a greater range of metabolites than it receives from the other two members of the community"
+
"Organic acids, purine derivatives and biogenic amines are predicted to be excreted"
@@ -627,10 +622,10 @@

Evidence

PMID:33995895 - - SUPPORT (COMPUTATIONAL) + - SUPPORT (IN_VITRO) -
"Organic acids, purine derivatives and biogenic amines are predicted to be excreted and support the growth of the other community members."
+
"The less abundant strains in R2A medium are Pseudomonas sp. GM17 and Sphingobium sp. AP49."
@@ -643,7 +638,7 @@

Evidence

Pseudomonas Competitive Antagonism

COMPETITION -

Pseudomonas sp. GM17 demonstrates antagonistic interactions toward other community members in pairwise screens, inhibiting growth of Variovorax CF313 and other strains on agar plates. However, in well-mixed liquid R2A medium, these strains co-exist despite the antagonism. This suggests that beneficial effects from metabolic exchanges in the shared extracellular environment overwhelm the antagonistic effects. Fast growth rate and metabolic cooperation enable Pseudomonas to maintain presence as a secondary dominant member.

+

Pseudomonas sp. GM17 inhibited Variovorax sp. CF313 in a pairwise R2A-agar lawn/spot screen: 5 microliters of overnight culture was spotted onto a lawn of the other strain and incubated at 25 degrees C for 48 hours. Preserve this experimentally observed antagonism as an assay-specific pair, not as membership of CF313 in the three-member R2A FBA model. The source reports coexistence during ten-member liquid cultivation despite agar inhibition. HYPOTHESIZED - beneficial shared metabolites could compensate for antagonism, but liquid-versus-static-agar conditions are an explicit alternative explanation. No selective metabolite rescue, inhibitory molecule or causal link from antagonism to cross-feeding was established.

Source Taxon: Pseudomonas sp. GM17

@@ -660,7 +655,7 @@

Pseudomonas Competitive Antagonism

- - - -
-
-

Variovorax Cross-Feeding on Community Metabolites

- CROSS_FEEDING -
-

Variovorax sp. CF313 persists in the R2A community as a cross-feeder, consuming metabolites exported by Pantoea and other dominant members. Despite antagonistic interactions with Pseudomonas in pairwise screens, Variovorax maintains presence in the liquid community by accessing excreted organic acids, purine derivatives, and other metabolites from the shared extracellular environment. This metabolic cooperation enables coexistence with faster-growing competitors.

- - -

Source Taxon: Variovorax sp. CF313

- - - - - -

Metabolites: - - organic acid - (CHEBI:64709) - -

- - - - - - - -

Evidence

-
+
+

Knowledge gaps & discussions (1)

+ +
+

+ KNOWLEDGE_GAP + OPEN + Which R2A exchanges occur in culture, and what explains coexistence despite agar antagonism? +

+

The three-member R2A model contains YR343, GM17 and AP49; CF313 belongs to the four-member MOPS model. The CF313 cross-feeding node and both arrows were removed because they transplant medium-specific predictions and a proposed compensation mechanism into R2A. Preserve the measured GM17-to-CF313 agar assay separately. Model fluxes and enzyme representation do not trace exchange; liquid-versus-agar conditions offer an alternative to metabolic rescue. Canonical membership, AP49 grounding, CF313 role and ten-isolate assembly metadata remain unresolved under #1533 and were not altered or certified here. Full primary extracted main text/Methods/Tables1-2/main captions read; no original figure pixels, supplements, raw data or executed KBase narrative. No new causal structure or Edison spend for this repair.

+ +

Attaches to: ecological_interactions#Predicted R2A Community Metabolite Exchange, ecological_interactions#Pseudomonas Competitive Antagonism

+ + + + +
+ +
@@ -1061,13 +1003,13 @@

Evidence

(function() { var intId = "interaction:0"; - var intType = "CROSS_FEEDING"; + var intType = "UNKNOWN"; var metabolites = []; metabolites.push("organic acid"); - metabolites.push("purine"); + metabolites.push("purines"); var processes = []; @@ -1076,7 +1018,7 @@

Evidence

nodes.push({ id: intId, - label: "Pantoea Metabolite Cross-Feeding to Community", + label: "Predicted R2A Community Metabolite Exchange", type: "interaction", interactionType: intType, metabolites: metabolites, @@ -1085,12 +1027,20 @@

Evidence

}); - var srcKey = "Pantoea sp. YR343"; - if (taxonNodeIds[srcKey]) { - links.push({ source: taxonNodeIds[srcKey], target: intId }); - } + var participantKeys = [ + + "Pantoea sp. YR343", + + "Pseudomonas sp. GM17" + + ]; + participantKeys.forEach(function(key) { + if (taxonNodeIds[key]) { + links.push({ source: taxonNodeIds[key], target: intId }); + } + }); })(); @@ -1102,7 +1052,7 @@

Evidence

var processes = []; - processes.push("interspecies interaction between organisms"); + processes.push("biological process involved in interspecies interaction between organisms"); var evidenceCount = 2; @@ -1130,39 +1080,6 @@

Evidence

links.push({ source: intId, target: taxonNodeIds[tgtKey] }); } - })(); - - (function() { - var intId = "interaction:2"; - var intType = "CROSS_FEEDING"; - var metabolites = []; - - - metabolites.push("organic acid"); - - - var processes = []; - - var evidenceCount = 2; - - nodes.push({ - id: intId, - label: "Variovorax Cross-Feeding on Community Metabolites", - type: "interaction", - interactionType: intType, - metabolites: metabolites, - processes: processes, - evidenceCount: evidenceCount - }); - - - var srcKey = "Variovorax sp. CF313"; - if (taxonNodeIds[srcKey]) { - links.push({ source: taxonNodeIds[srcKey], target: intId }); - } - - - })(); @@ -1184,7 +1101,7 @@

Evidence

var svg = d3.select("#network-svg"); var width = container.clientWidth - 32; // Dynamic height based on node count: minimum 500px, add 40px per node - var nodeCount = 6; + var nodeCount = 5; var height = Math.max(500, 400 + nodeCount * 20); svg.attr("width", width).attr("height", height); diff --git a/history/records/KBase_Synthetic_Bacterial_Community_R2A/2026-10-06T192703Z-codex-a73153.yaml b/history/records/KBase_Synthetic_Bacterial_Community_R2A/2026-10-06T192703Z-codex-a73153.yaml new file mode 100644 index 000000000..a1ee63c11 --- /dev/null +++ b/history/records/KBase_Synthetic_Bacterial_Community_R2A/2026-10-06T192703Z-codex-a73153.yaml @@ -0,0 +1,24 @@ +history_version: 1 +target: + kind: record + path: kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml + slug: KBase_Synthetic_Bacterial_Community_R2A +session: + id: 2026-10-06T192703Z-codex-a73153 + timestamp: '2026-10-06T19:27:03Z' + actors: + - type: ai_agent + name: codex + model: unspecified + agent_tool: codex +links: + issues: + - https://github.com/CultureBotAI/CommunityMech/issues/1532 +events: +- type: EDIT + outcome: changed + sections: + - interactions + - discussions + summary: Separate R2A FBA predictions from MOPS CF313 attribution and agar antagonism. + details: Source-based self-adversarial review. reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml diff --git a/kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml b/kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml index 44941e865..e498dd456 100644 --- a/kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml +++ b/kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml @@ -93,56 +93,58 @@ associated_datasets: url: https://pubmed.ncbi.nlm.nih.gov/33995895/ description: Publication for Populus PD10 synthetic community assembly and modeling. ecological_interactions: -- name: Pantoea Metabolite Cross-Feeding to Community - description: Pantoea sp. YR343, the dominant strain in R2A medium, exports a greater range of metabolites - than it receives from other community members. FBA modeling predicts that Pantoea excretes organic - acids, purine derivatives, and biogenic amines that support the growth of Pseudomonas and Variovorax. - Pantoea has the highest number of transporter genes and exchange reactions among community members, - enabling utilization of diverse nutrients in the complex medium. Metaproteomics confirms high representation - of enzymes involved in these metabolic pathways, supporting the cross-feeding mechanism. - interaction_type: CROSS_FEEDING +- name: Predicted R2A Community Metabolite Exchange + description: PARTIAL - the R2A community FBA model predicts that Pantoea sp. YR343 exports organic acids, purine + derivatives and biogenic amines to other modeled members, and predicts a higher Pantoea growth rate in the community + than in its individual model. The actual three-member model comprises YR343, Pseudomonas sp. GM17 and Sphingobium + sp. AP49, not Variovorax CF313. The listed canonical participants are only the two correctly represented model + members; AP49 membership and strain grounding remain unresolved in record metadata (#1533). Models were gapfilled, + combined using final-passage 16S ratios and constrained by carbon uptake calibrated to experimental growth rates. + These are conditional predictions, not measurements of exchange flux or reciprocal fitness benefit. Metaproteomics + detects relevant enzymes but does not confirm metabolite transfer. Pantoea dominance is based on 16S data; protein-based + abundance estimates differ. scope: COMMUNITY_LEVEL - source_taxon: - preferred_term: Pantoea sp. YR343 - term: - id: NCBITaxon:53335 - label: Pantoea metabolites: - preferred_term: organic acid term: id: CHEBI:64709 label: organic acid - concentration: Excreted by Pantoea to support community growth - - preferred_term: purine + notes: Broad class of model-predicted exchange substrates, not a measured concentration or a compound-specific + transferred flux. + - preferred_term: purines term: id: CHEBI:26401 label: purines - concentration: Purine derivatives excreted by Pantoea - downstream: - - target: Variovorax Cross-Feeding on Community Metabolites - description: Pantoea exports organic acids, purine derivatives, and - biogenic amines into the shared extracellular environment that - lower-abundance Variovorax uses for persistence in the R2A community. + notes: Broad class of model-predicted exchange substrates, not a measured concentration or a compound-specific + transferred flux. evidence: - reference: PMID:33995895 - supports: SUPPORT + supports: PARTIAL evidence_source: COMPUTATIONAL - snippet: the dominant strain Pantoea sp. YR343, based on the 16S rRNA marker data, is expected to - export a greater range of metabolites than it receives from the other two members of the community - explanation: Demonstrates Pantoea's role as the primary metabolite exporter supporting community growth. + snippet: Organic acids, purine derivatives and biogenic amines are predicted to be excreted + explanation: Results3.4.2 identifies predicted R2A exchanges, not observed donor-to-recipient flux. - reference: PMID:33995895 supports: SUPPORT - evidence_source: COMPUTATIONAL - snippet: Organic acids, purine derivatives and biogenic amines are predicted to be excreted and support - the growth of the other community members. - explanation: Identifies specific metabolite classes involved in cross-feeding from Pantoea. + evidence_source: IN_VITRO + snippet: The less abundant strains in R2A medium are Pseudomonas sp. GM17 and Sphingobium sp. AP49. + explanation: Results3.1 identifies the R2A model companions of Pantoea; CF313 belongs to the separate MOPS model. + participating_taxa: + - preferred_term: Pantoea sp. YR343 + term: + id: NCBITaxon:53335 + label: Pantoea + - preferred_term: Pseudomonas sp. GM17 + term: + id: NCBITaxon:306 + label: Pseudomonas sp. - name: Pseudomonas Competitive Antagonism - description: Pseudomonas sp. GM17 demonstrates antagonistic interactions toward other community members - in pairwise screens, inhibiting growth of Variovorax CF313 and other strains on agar plates. However, - in well-mixed liquid R2A medium, these strains co-exist despite the antagonism. This suggests that - beneficial effects from metabolic exchanges in the shared extracellular environment overwhelm the - antagonistic effects. Fast growth rate and metabolic cooperation enable Pseudomonas to maintain presence - as a secondary dominant member. + description: 'Pseudomonas sp. GM17 inhibited Variovorax sp. CF313 in a pairwise R2A-agar lawn/spot screen: 5 microliters + of overnight culture was spotted onto a lawn of the other strain and incubated at 25 degrees C for 48 hours. + Preserve this experimentally observed antagonism as an assay-specific pair, not as membership of CF313 in the + three-member R2A FBA model. The source reports coexistence during ten-member liquid cultivation despite agar + inhibition. HYPOTHESIZED - beneficial shared metabolites could compensate for antagonism, but liquid-versus-static-agar + conditions are an explicit alternative explanation. No selective metabolite rescue, inhibitory molecule or causal + link from antagonism to cross-feeding was established.' interaction_type: COMPETITION scope: PAIRWISE source_taxon: @@ -156,67 +158,23 @@ ecological_interactions: id: NCBITaxon:34072 label: Variovorax biological_processes: - - preferred_term: interspecies interaction between organisms + - preferred_term: biological process involved in interspecies interaction between organisms term: id: GO:0044419 label: biological process involved in interspecies interaction between organisms - downstream: - - target: Variovorax Cross-Feeding on Community Metabolites - description: > - GM17 antagonism is the pairwise inhibitory pressure that Variovorax CF313 - overcomes in the liquid community when beneficial shared metabolites - outweigh agar-plate antagonism. evidence: - reference: PMID:33995895 supports: SUPPORT evidence_source: IN_VITRO - snippet: Pseudomonas sp. GM17 cells were antagonistic to the growth of the majority of the other community - members - explanation: Demonstrates antagonistic interaction between Pseudomonas and other community members - including Variovorax. + snippet: although the growth of strain AP49, CF313 and CF142 were inhibited by strain GM17 in pairwise interaction + screens + explanation: Results3.5 directly identifies the GM17-to-CF313 inhibition; Methods2.4 gives the R2A-agar assay. - reference: PMID:33995895 - supports: SUPPORT - evidence_source: IN_VITRO - snippet: although the growth of strain AP49, CF313 and CF142 were inhibited by strain GM17 in pairwise - interaction screens, these strains still co-existed with strain GM17 during the 10-member community - cultivation - explanation: Shows that despite antagonism in pairwise screens, Variovorax CF313 and Pseudomonas GM17 - co-exist in mixed community conditions. -- name: Variovorax Cross-Feeding on Community Metabolites - description: Variovorax sp. CF313 persists in the R2A community as a cross-feeder, consuming metabolites - exported by Pantoea and other dominant members. Despite antagonistic interactions with Pseudomonas - in pairwise screens, Variovorax maintains presence in the liquid community by accessing excreted organic - acids, purine derivatives, and other metabolites from the shared extracellular environment. This metabolic - cooperation enables coexistence with faster-growing competitors. - interaction_type: CROSS_FEEDING - scope: COMMUNITY_LEVEL - source_taxon: - preferred_term: Variovorax sp. CF313 - term: - id: NCBITaxon:34072 - label: Variovorax - metabolites: - - preferred_term: organic acid - term: - id: CHEBI:64709 - label: organic acid - concentration: Consumed from community metabolite pool - evidence: - - reference: PMID:33995895 - supports: SUPPORT - evidence_source: COMPUTATIONAL - snippet: Accessing excreted metabolites may be vital for the maintenance of those members with minor - content in the community. - explanation: Supports that Variovorax as a minor community member relies on metabolites excreted by - dominant strains like Pantoea. - - reference: PMID:33995895 - supports: SUPPORT + supports: PARTIAL evidence_source: IN_VITRO - snippet: This may be attributed to intertwined metabolic interactions among these four strains, in - which the beneficial effect from the metabolites in a shared extracellular environment for growth - overwhelms antagonistic effects - explanation: Demonstrates that metabolic cooperation enables Variovorax persistence despite competitive - pressures. + snippet: Alternatively, different experimental conditions may account for the unexpected result. + explanation: Results3.5 explicitly contrasts well-mixed liquid cultivation with static agar; metabolic compensation + remains an alternative, not established mediation. external_resources: - name: KBase narrative repository: KBASE @@ -303,3 +261,27 @@ growth_media: with shaking at 200 rpm and passaged every 48 h at a 1:10 dilution for 15 passages.' explanation: Confirms the community was passaged at 30 °C, 200 rpm, 48 h intervals at 1:10 dilution. +discussions: +- discussion_id: r2a_model_membership_and_exchange_validation + prompt: Which R2A exchanges occur in culture, and what explains coexistence despite agar antagonism? + kind: KNOWLEDGE_GAP + status: OPEN + attaches_to: + - ecological_interactions#Predicted R2A Community Metabolite Exchange + - ecological_interactions#Pseudomonas Competitive Antagonism + rationale: 'The three-member R2A model contains YR343, GM17 and AP49; CF313 belongs to the four-member MOPS model. + The CF313 cross-feeding node and both arrows were removed because they transplant medium-specific predictions + and a proposed compensation mechanism into R2A. Preserve the measured GM17-to-CF313 agar assay separately. Model + fluxes and enzyme representation do not trace exchange; liquid-versus-agar conditions offer an alternative to + metabolic rescue. Canonical membership, AP49 grounding, CF313 role and ten-isolate assembly metadata remain + unresolved under #1533 and were not altered or certified here. Full primary extracted main text/Methods/Tables1-2/main + captions read; no original figure pixels, supplements, raw data or executed KBase narrative. No new causal structure + or Edison spend for this repair.' + posed_by: codex + posed_date: '2026-10-06' +curation_history: +- timestamp: '2026-10-06T19:27:02Z' + curator: codex + action: REVIEW_CAUSAL_GRAPH + changes: 'Separate R2A FBA predictions from MOPS CF313 attribution and agar antagonism. Issue #1532; reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml' + llm_assisted: true diff --git a/reports/causal_graph_review/README.md b/reports/causal_graph_review/README.md index 98d2a80d1..b8e95f233 100644 --- a/reports/causal_graph_review/README.md +++ b/reports/causal_graph_review/README.md @@ -5,6 +5,24 @@ source-based self-adversarial review. These records are not independent approval or proof that every graph is complete. The current inventory and summary distinguish `reviewed`, `pending` and `needs_research`. +## Batch58: R2A Model And Agar Antagonism + +[Decisions](decisions/20261006-r2a-batch58.yaml), +[validation](validation-20261006-batch58.json) and +[self-adversarial review](adversarial-review-20261006-batch58.yaml) cover all three +original nodes and both arrows. The misplaced MOPS/CF313 cross-feeding node and +both unsupported arrows are removed. Conditional R2A FBA exchange predictions +and measured GM17-to-CF313 agar inhibition remain, with explicit assay boundaries. +Enzyme detection does not establish transferred flux; liquid-versus-agar conditions +remain an alternative to metabolic rescue. + +The extracted primary main text, Methods, Tables1-2 and main captions were read; +original figure pixels, supplements, raw data and KBase execution were not audited. +All 920 cache files remain unchanged. Repair #1532 awaits protected-main merge; +canonical membership and assembly metadata remain unresolved under #1533. The +pre-source baseline is bound to the later tree-identical restack by its receipt. +Dairy and kefir research is not credited as reviewed in this R2A-only batch. + ## Batch57: DVM Tri-culture [Decisions](decisions/20261006-dvm-batch57.yaml), diff --git a/reports/causal_graph_review/adversarial-review-20261006-batch58.yaml b/reports/causal_graph_review/adversarial-review-20261006-batch58.yaml new file mode 100644 index 000000000..bc71ccbc6 --- /dev/null +++ b/reports/causal_graph_review/adversarial-review-20261006-batch58.yaml @@ -0,0 +1,126 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: 80c56fe71a1a42b4eebbba4b056ce690e031dfd6 +scope: +- kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml +decision_ledger: reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml +validation_report: reports/causal_graph_review/validation-20261006-batch58.json +findings: +- issue: 1532 + severity: P2 + status: addressed_in_this_change + finding: Separate R2A FBA predictions from MOPS CF313 attribution and agar antagonism. + disposition: Close only after protected-main merge. +- issue: 1533 + severity: P2 + status: unresolved_non_graph + finding: R2A canonical membership, strain grounding and assembly metadata. + disposition: Keep open after graph repair merge. +adversarial_checks: +- Whole R2A record, all3 original nodes and2 arrows reviewed against the full extracted primary main text, + Methods2.1-2.6, Results3.1-3.5, Tables1-2 and main captions. No original image pixels, supplements/raw + data or independent KBase execution/model replication. +- R2A uses YR343,GM17,AP49 in the three-member model; CF313 belongs to the four-member MOPS model. Remove + the transplanted CF313 cross-feeding node and Pantoea-to-CF313 arrow rather than silently moving MOPS + predictions into R2A. Partial canonical participants explicitly exclude missing AP49; no invented CURIE. +- Preserve positive R2A exchange predictions and model-dependent Pantoea growth improvement. Gapfilling, + final-passage16S ratios and calibrated uptake bounds are assumptions. Metaproteomics detects relevant + enzymes but does not measure transferred flux or establish mutualism; 16S and protein abundance estimates + differ. +- Preserve experimentally measured GM17-to-CF313 R2A-agar inhibition at25C/48h. It is a distinct pairwise + assay, not evidence of CF313 membership in the R2A model. No inhibitory molecule or selective metabolic + rescue was demonstrated. +- Remove the antagonism-to-cross-feeding arrow. Shared-metabolite compensation is proposed, while liquid-versus-static-agar + conditions are an explicit alternative. Antagonistic pressure does not itself establish a causal cross-feeding + response. +- Both removed arrows and the removed node have individual decisions; retained nodes carry exact OPEN + knowledge-gap anchors. Broad metabolite classes remain without fictitious concentrations. GO and CHEBI + preferred labels align with the retained canonical labels. +- All raw non-graph blocks remain byte-identical, not certified.1533 stays OPEN for canonical membership/strain + grounding, CF313 role and ten-isolate assembly versus selected-member model. All920 caches and459 other + records unchanged; four graph snippets independently matched to fresh primary and cache. +- Complete biological diff, test assertions and decision ledger reviewed. Both-root participant census + unchanged;36 baseline network warnings preserved with zero structural defects. No connectivity matching + rule or canonical membership change. +- 'Initial regression run had535 passes and one failure: the exact participating_taxa USERS set lacked + R2A. Added only that intentional new user after the unchanged census was measured; kept the exact-set + guard and original failed output/digest, then reran the complete suite.' +- Actual schema/strict/term/reference/snippet/history/rank/regression gates and output digests recorded. + Deterministic repeat rendering and456-page exact description parser verification passed; no browser-screenshot + claim. Post-commit docs-current is a separate publication gate. +- 834 all-state issue titles/bodies searched and85 scoped ignored/hidden local matches; relevant issues + read, not every historical comment/PR or matching file.1532 addressed but OPEN until protected-main + merge;1533 unresolved. Exact-head GitHub review must be COMMENT, not independent approval. +- This is an R2A-only repair, without new structure or provider spend. Dairy/kefir source research is + not credited as reviewed. Dairy one-community Edison dry run spent zero credits; the separate paid request/report + remains pending. +verification: + combined_regressions: 536 passed in 179.05s (0:02:59) + new_regression_tests: 5 + schema_strict_terms_history: Passed with actual output digests + references: CLI Total checks counts reported issues, not executed checks. Cache MATCH does not prove + scientific entailment or complete provenance. Full extracted primary main text inspected and all4 + graph snippets independently matched; canonical membership/assembly metadata remains1533. Existing476/1091/1095 + limitations remain. + snippet_counts_by_record: + kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml: + MATCH: 11 + RENDERING: 0 + ASSEMBLED: 0 + WEAK: 0 + MISMATCH: 0 + NOCONTENT: 0 + network: + existing_findings_preserved: 36 + added_findings: {} + removed_findings: {} + black_ruff_diff: passed + tested_file_sha256: + reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml: c5cb8ae0a42a4d951d11f5b75a00fb656aba694fdabae70ddd6799579158bc05 + tests/test_causal_review_batch58.py: 77120b16179c078c9ae2ce8cd15e977d426216cb4df23e2af8544277441b2087 + tests/test_participating_taxa.py: 3b564c447b9cd252546559b0ae5148759a81b81267e8d55c5a35eac49f6662ed + kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml: 8239899f70763acf1aa6be423b37e77737a7e6367b6203888c96e163e9419753 + reports/causal_graph_review/README.md: 16fa7866ee2c8b2c4ff4cc9b4596455c0dc51f21b5495ccec4baf5144813fb23 + post_commit_docs_current: Separate publication gate, not asserted before commit. +participant_census: + measurements: + baseline: + records: 460 + with_community_level: 390 + mixed: 124 + community_level_only: 266 + taxa: 1505 + credited_solely_by_the_rule: 1236 + current: + records: 460 + with_community_level: 390 + mixed: 124 + community_level_only: 266 + taxa: 1505 + credited_solely_by_the_rule: 1236 + interpretation: R2A removes one misassigned community-level node, keeps one model node with a partial + canonical participant list and retains the pairwise agar assay. Canonical taxonomy is preserved. +corpus: + records: 460 + nodes: 1460 + edges: 652 + review_status_counts: + needs_research: 18 + pending: 250 + reviewed: 192 +limitations: +- All three original nodes and both arrows reviewed. Removed one wrong-medium node and both unsupported + arrows; no new causal structure or Edison spend for R2A. +- Full extracted primary main text/Methods/Tables1-2/main captions read. No original figure pixels, external + supplements, raw data or independent KBase execution/model replication. +- 'Canonical taxonomy and all raw non-graph fields preserved, not recertified. #1533 tracks AP49/CF313 + membership, strain grounding and ten-isolate assembly metadata and must remain OPEN after graph merge.' +- All920 cache files unchanged;4 graph fragments matched independently to fresh primary and cache. MATCH + is not provenance certification of the entire cache or non-graph claims. +- 834 all-state issue titles/bodies searched;85 matching ignored/hidden local files, with docs/site/cache + exclusions. Relevant issues read, not every matching file, historical comment or PR. +- 'Self-adversarial review is not independent approval. #1532 stays OPEN until protected-main merge. Existing + SupportingReference coverage476, writer artifact1095 and Linux DOI lookup1091 limitations remain.' +- Dairy and kefir source research is in progress and is NOT credited as reviewed by this R2A-only batch. + Dairy one-community dry run spent zero credits; paid authorization/report pending. diff --git a/reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml b/reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml new file mode 100644 index 000000000..bfd93d44d --- /dev/null +++ b/reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml @@ -0,0 +1,122 @@ +reviewer: codex +review_mode: source_based_self_adversarial_review +independent_approval: false +base_commit: 80c56fe71a1a42b4eebbba4b056ce690e031dfd6 +baseline_commit: 762a708faf1c04a67a4bf71197a90304f3066841 +base_tree: 0e30518fea3ddae8f3443d3913b87deeb91b6941 +pre_source_baseline_sha256: 5ae381b36766903a6f38a1422351f8d3c0670f448880ea255311fa6960f078e2 +ancestry_transition: + old_head: 762a708faf1c04a67a4bf71197a90304f3066841 + new_head: 80c56fe71a1a42b4eebbba4b056ce690e031dfd6 + unchanged_tree: 0e30518fea3ddae8f3443d3913b87deeb91b6941 + pre_source_baseline_sha256: 5ae381b36766903a6f38a1422351f8d3c0670f448880ea255311fa6960f078e2 + completed_restack_receipt: /private/tmp/communitymech-batch25/finish-stack-24.json + receipt_sha256: 7dbd5fa74b1b4f6dfc68d776c5b450a25690f20336b18e650d9bf334f36a4261 + record_hashes_revalidated: 460 + cache_hashes_revalidated: 920 + baseline_log_hashes_revalidated: 4 + exact_head_comment_review: https://github.com/CultureBotAI/CommunityMech/pull/1531#pullrequestreview-5433385890 +issues: +- 1532 +unresolved_non_graph_issues: +- 1533 +issue_deduplication: + all_state_issue_titles_and_bodies: 834 + ignored_hidden_local_search: true + matching_local_files: 85 + related_issues: + - 1527 + - 1471 + - 650 + - 653 +reference_cache_original_hashes: + references_cache/PMID_33995895.md: 05698e06988349c61bbe6a37e2f699dbee0301f3e8a47e36235e513eba13b655 +primary_artifacts: + r2a-primary.html: 1aefb76b7eb063a1d0e8f922b98a4b91f365395c92484b47ab2d705966b1333c + r2a-primary.txt: 712e0679230b132c7b6609371f98850509216b159c54b12e398e05441af97341 +primary_urls: +- https://pmc.ncbi.nlm.nih.gov/articles/PMC8079826/ +primary_graph_fragments_verified: 4 +limitations: +- All three original nodes and both arrows reviewed. Removed one wrong-medium node and both unsupported arrows; + no new causal structure or Edison spend for R2A. +- Full extracted primary main text/Methods/Tables1-2/main captions read. No original figure pixels, external supplements, + raw data or independent KBase execution/model replication. +- 'Canonical taxonomy and all raw non-graph fields preserved, not recertified. #1533 tracks AP49/CF313 membership, + strain grounding and ten-isolate assembly metadata and must remain OPEN after graph merge.' +- All920 cache files unchanged;4 graph fragments matched independently to fresh primary and cache. MATCH is not + provenance certification of the entire cache or non-graph claims. +- 834 all-state issue titles/bodies searched;85 matching ignored/hidden local files, with docs/site/cache exclusions. + Relevant issues read, not every matching file, historical comment or PR. +- 'Self-adversarial review is not independent approval. #1532 stays OPEN until protected-main merge. Existing SupportingReference + coverage476, writer artifact1095 and Linux DOI lookup1091 limitations remain.' +- Dairy and kefir source research is in progress and is NOT credited as reviewed by this R2A-only batch. Dairy one-community + dry run spent zero credits; paid authorization/report pending. +records: +- path: kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml + id: CommunityMech:000039 + original_sha256: e3457fd6a6f0d72ebea718b86fa7e33e989af6bad87f7b553b8b41a8228b331a + record_sha256: 8239899f70763acf1aa6be423b37e77737a7e6367b6203888c96e163e9419753 + status: reviewed + outcome: changed + review_file: reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml + scope: Whole record; all three original nodes and both arrows. Source-bounded repair, no extension. + summary: Separate R2A FBA predictions from MOPS CF313 attribution and agar antagonism. + renamed_nodes: + Pantoea Metabolite Cross-Feeding to Community: Predicted R2A Community Metabolite Exchange + node_decisions: + - node: Predicted R2A Community Metabolite Exchange + rationale: Retain conditional R2A exchange predictions with explicit partial canonical membership, not measured + flux or reciprocal benefit. + - node: Pseudomonas Competitive Antagonism + rationale: Retain observed GM17-to-CF313 R2A-agar inhibition; do not infer liquid-culture rescue or R2A model + membership. + removed_node_decisions: + - node: Variovorax Cross-Feeding on Community Metabolites + rationale: The cited excreted-metabolite paragraph describes the four-member MOPS model; CF313 is not in the + three-member R2A model. No exact R2A CF313 cross-feeding evidence. + edges_before: + - source: Pantoea Metabolite Cross-Feeding to Community + target: Variovorax Cross-Feeding on Community Metabolites + description: Pantoea exports organic acids, purine derivatives, and biogenic amines into the shared extracellular + environment that lower-abundance Variovorax uses for persistence in the R2A community. + - source: Pseudomonas Competitive Antagonism + target: Variovorax Cross-Feeding on Community Metabolites + description: 'GM17 antagonism is the pairwise inhibitory pressure that Variovorax CF313 overcomes in the liquid + community when beneficial shared metabolites outweigh agar-plate antagonism. + + ' + edges_after: [] + retained_edge_decisions: [] + removed_edge_decisions: + - source: Pantoea Metabolite Cross-Feeding to Community + target: Variovorax Cross-Feeding on Community Metabolites + description: Pantoea exports organic acids, purine derivatives, and biogenic amines into the shared extracellular + environment that lower-abundance Variovorax uses for persistence in the R2A community. + rationale: The cited excreted-metabolite paragraph describes the four-member MOPS model; CF313 is not in the + three-member R2A model. No exact R2A CF313 cross-feeding evidence. + - source: Pseudomonas Competitive Antagonism + target: Variovorax Cross-Feeding on Community Metabolites + description: 'GM17 antagonism is the pairwise inhibitory pressure that Variovorax CF313 overcomes in the liquid + community when beneficial shared metabolites outweigh agar-plate antagonism. + + ' + rationale: Agar inhibition does not cause CF313 cross-feeding; metabolic compensation is proposed with a liquid-versus-agar + alternative. + references: + - PMID:33995895 + issues: + - 1532 + - 1533 + allowed_changed_fields: + - curation_history + - discussions + - ecological_interactions + curation_events_added: 1 + history_files: + - history/records/KBase_Synthetic_Bacterial_Community_R2A/2026-10-06T192703Z-codex-a73153.yaml + source_review: + scope: Full extracted primary main text, Methods2.1-2.6, Results3.1-3.5, Tables1-2 and main captions; no figure + pixels, supplements, raw data or KBase execution. Cache header/abstract and relevant source-context fragments + checked separately. + cache_provenance_certified: false diff --git a/reports/causal_graph_review/inventory.tsv b/reports/causal_graph_review/inventory.tsv index 6152a514c..a5225fd9a 100644 --- a/reports/causal_graph_review/inventory.tsv +++ b/reports/causal_graph_review/inventory.tsv @@ -209,7 +209,7 @@ kb/communities/Jiangshui_LAB_Directed_Fermentation_SynCom.yaml CommunityMech:000 kb/communities/KB1_Chlorinated_Ethene_Dechlorinating_Consortium.yaml CommunityMech:000132 2dddd68ddedcbb86e9524066b26f0c3ade41432b515e8bfee9427c5a49a5f1b9 3 1 80.0 reports/causal_graph_review/decisions/20261006-three-records-batch56.yaml reviewed kb/communities/KBase_Models_for_Zahmeeth_Original_PLOS.yaml CommunityMech:000037 848044ac5bcc1eeea7cf6c1496f51aba0484b5ab84d09af30dc7ab20743e835d 3 0 59.2 reports/causal_graph_review/decisions/20261006-three-records-batch56.yaml reviewed kb/communities/KBase_ORT_Workflow_Community_Model.yaml CommunityMech:000038 b4cfa6d608db1e2d04f70537c425d23def58fb2528394a9226b82f4cc609ebf2 3 2 90.0 reports/causal_graph_review/decisions/20261006-three-records-batch56.yaml reviewed -kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml CommunityMech:000039 e3457fd6a6f0d72ebea718b86fa7e33e989af6bad87f7b553b8b41a8228b331a 3 2 100.0 pending +kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml CommunityMech:000039 8239899f70763acf1aa6be423b37e77737a7e6367b6203888c96e163e9419753 2 0 65.0 reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml reviewed kb/communities/Kefir_Flavor_Lentilactobacillus_Kluyveromyces_Coculture.yaml CommunityMech:000332 4485382b7e341df884ca34ff9bf9bd7d3bf0c8f36cd99f91e9714461c67e7234 6 0 75.0 pending kb/communities/Klebsiella_Arthrobacter_KZ_Phenanthrene_Cadmium_SynCom.yaml CommunityMech:000344 1d9b711fa86c876ec1657a114242ebba6cb14cd8be5323a25baeae6511c9b520 1 0 65.0 pending kb/communities/Komagataella_Ecoli_Coinducible_Biosynthesis_Coculture.yaml CommunityMech:000343 e07dcd6b1d7bdfeb955aaca0f93df3aadc7f36b4e83f5869974a44e76c6232d2 0 0 0.0 pending diff --git a/reports/causal_graph_review/summary.json b/reports/causal_graph_review/summary.json index a3a4988d8..3e9c9e1aa 100644 --- a/reports/causal_graph_review/summary.json +++ b/reports/causal_graph_review/summary.json @@ -2,14 +2,14 @@ "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.", "semantic_review_rule": "Structural checks and readiness scores do not establish causal support. Completed reviews must match the current record SHA-256, cover every node once with a rationale, and reproduce the current edge list.", "records": 460, - "nodes": 1461, - "edges": 654, + "nodes": 1460, + "edges": 652, "records_without_nodes": 8, - "records_without_edges": 155, + "records_without_edges": 156, "review_status_counts": { "needs_research": 18, - "pending": 251, - "reviewed": 191 + "pending": 250, + "reviewed": 192 }, "structural_defects": [], "network_audit": [ diff --git a/reports/causal_graph_review/validation-20261006-batch58.json b/reports/causal_graph_review/validation-20261006-batch58.json new file mode 100644 index 000000000..527df3d30 --- /dev/null +++ b/reports/causal_graph_review/validation-20261006-batch58.json @@ -0,0 +1,617 @@ +{ + "base_commit": "80c56fe71a1a42b4eebbba4b056ce690e031dfd6", + "scope": [ + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml" + ], + "reference_validator_version": "0.1.7", + "results": [ + { + "check": "KBase_Synthetic_Bacterial_Community_R2A-schema", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate", + "-s", + "src/communitymech/schema/communitymech.yaml", + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/KBase_Synthetic_Bacterial_Community_R2A-schema.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "KBase_Synthetic_Bacterial_Community_R2A-strict", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/python3", + "scripts/validate_strict.py", + "--workers", + "1", + "--out", + "/private/tmp/communitymech-batch58/KBase_Synthetic_Bacterial_Community_R2A-strict.tsv", + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/KBase_Synthetic_Bacterial_Community_R2A-strict.log", + "log_sha256": "5e5ad229d011d6c7a88d7fcfbfe85adce40bfc310d6d287a215c943434d04917", + "output_tail": "Validating 1 files with 1 workers; schema=/private/tmp/communitymech-causal-batch58/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-batch58/KBase_Synthetic_Bacterial_Community_R2A-strict.tsv\n" + }, + { + "check": "KBase_Synthetic_Bacterial_Community_R2A-terms", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/neDBQyZXv0RYv8B1GH0dI/bin/linkml-term-validator", + "validate-data", + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--labels" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/KBase_Synthetic_Bacterial_Community_R2A-terms.log", + "log_sha256": "23acda1c1d3194d12bc947d897d07de83f4a076a9d93c135148885108530e018", + "output_tail": "\u2705 Validation passed\n" + }, + { + "check": "KBase_Synthetic_Bacterial_Community_R2A-references", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-reference-validator", + "validate", + "data", + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml", + "-s", + "src/communitymech/schema/communitymech.yaml", + "--config", + "conf/reference_validator.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/KBase_Synthetic_Bacterial_Community_R2A-references.log", + "log_sha256": "90db3e6fc3665f25e17b3171604d5da3db0a05bad406f1e4ad5d08217d09b534", + "output_tail": "Validating kb/communities/KBase_Synthetic_Bacterial_Community_R2A.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/KBase_Synthetic_Bacterial_Community_R2A.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": "KBase_Synthetic_Bacterial_Community_R2A-snippets", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/evidence_snippet_audit.py", + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml", + "--list-mismatch", + "--list-nocontent", + "--list-rendering", + "--list-assembled" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/KBase_Synthetic_Bacterial_Community_R2A-snippets.log", + "log_sha256": "aec1f2712a64b5cd549f668dd69d5e1ab54d6d5693d8f53bbce26317b755b383", + "output_tail": "# 11 evidence snippets scanned across 1 files\n MATCH 11\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": "KBase_Synthetic_Bacterial_Community_R2A-rank", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "scripts/rank_causal_graph_readiness.py", + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml", + "--format", + "json" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/KBase_Synthetic_Bacterial_Community_R2A-rank.log", + "log_sha256": "249eeb0c4c258fc6a98573f5ec29173b57b1526df3ee46bdf4911561f07a748b", + "output_tail": "[\n {\n \"rank\": 1,\n \"id\": \"CommunityMech:000039\",\n \"name\": \"KBase Synthetic Bacterial Community in R2A Medium\",\n \"score\": 65.0,\n \"taxonomy\": 3,\n \"connected_taxa\": 3,\n \"disconnected_taxa\": 0,\n \"ecological_interactions\": 2,\n \"downstream_edges\": 0,\n \"interaction_evidence\": 4,\n \"dangling_downstream\": 0,\n \"self_downstream\": 0,\n \"missing\": [\n \"additional_interactions\",\n \"downstream\",\n \"interaction_type\"\n ],\n \"path\": \"kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml\"\n }\n]\n" + }, + { + "check": "KBase_Synthetic_Bacterial_Community_R2A-history-0", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/linkml-validate", + "-s", + "src/communitymech/schema/history.yaml", + "--target-class", + "HistoryRecord", + "history/records/KBase_Synthetic_Bacterial_Community_R2A/2026-10-06T192703Z-codex-a73153.yaml" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/KBase_Synthetic_Bacterial_Community_R2A-history-0.log", + "log_sha256": "de6087f4be8c0adc015333597cd864406ad889bbde42d9ee20db0df5932bb2de", + "output_tail": "No issues found\n" + }, + { + "check": "inventory", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "reports/causal_graph_review/build_inventory.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/inventory.log", + "log_sha256": "d6f51be6e05a5965797d4e92aefdf05f8273714025324665d8708f4541e75cb7", + "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\": 1460,\n \"edges\": 652,\n \"records_without_nodes\": 8,\n \"records_without_edges\": 156,\n \"review_status_counts\": {\n \"needs_research\": 18,\n \"pending\": 250,\n \"reviewed\": 192\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-batch58/network.log", + "log_sha256": "0955d3471f474fec8dcceb846ff932573d11c9833de73b2b2822241553762186", + "output_tail": "{\n \"preferred_term\": \"Legionella MAGs\",\n \"term\": {\n \"id\": \"NCBITaxon:445\",\n \"label\": \"Legionella\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The study detected Legionella-affiliated MAGs and used them in a virulence-gene risk assessment; the source did not assert pathogenicity for a cultured Legionella isolate.\\n\"\n },\n \"abundance_value\": \"Lower-abundance Legionella-affiliated MAGs detected during metagenomic risk assessment.\\n\",\n \"evidence\": [\n {\n \"reference\": \"PMID:41457319\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"COMPUTATIONAL\",\n \"snippet\": \"detection of waterborne pathogens from the Legionella genus\",\n \"explanation\": \"Supports Legionella-affiliated lower-abundance bins as monitored biosafety-relevant members of the consortium.\\n\"\n }\n ]\n },\n \"message\": \"Taxon 'Legionella MAGs' has no interactions\"\n }\n ],\n \"Sclerotinia_Sclerotia_12Strain_Biocontrol_SynCom\": [\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Twelve-Strain SynCom Suppression of Sclerotinia Sclerotia\",\n \"interaction_index\": 0,\n \"taxon\": \"Sclerotinia sclerotiorum\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Sclerotinia sclerotiorum' not found in taxonomy section (community-level scope)\"\n },\n {\n \"type\": \"UNKNOWN_TARGET\",\n \"interaction\": \"Trinickia MC Key Contribution to Sclerotia Mortality\",\n \"interaction_index\": 1,\n \"taxon\": \"Sclerotinia sclerotiorum\",\n \"severity\": \"warning\",\n \"message\": \"Target taxon 'Sclerotinia sclerotiorum' not found in taxonomy section (community-level scope)\"\n }\n ],\n \"Space_Habitat_SevenMember_Stress_Tolerance_SynCom\": [\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Acinetobacter radioresistens 50V1\",\n \"taxon_id\": \"NCBITaxon:40216\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Acinetobacter radioresistens 50V1\",\n \"term\": {\n \"id\": \"NCBITaxon:40216\",\n \"label\": \"Acinetobacter radioresistens\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate came from the preflight Mars Odyssey Orbiter; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"50V1\",\n \"genome_accession\": \"GCA_002834555.1\"\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Acinetobacter radioresistens | 50V1 | Preflight Mars Odyssey Orbiter | \\u2013 | Mccoy et al., 2012 | GCA_002834555.1 | TSYB/TSYA | 37 \\u00b0C | 16\\u201318 h\",\n \"explanation\": \"Identifies A. radioresistens 50V1 as a consortium member and gives its spacecraft-associated source, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Acinetobacter radioresistens 50V1' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Micrococcus luteus W4-Al-K1\",\n \"taxon_id\": \"NCBITaxon:1270\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Micrococcus luteus W4-Al-K1\",\n \"term\": {\n \"id\": \"NCBITaxon:1270\",\n \"label\": \"Micrococcus luteus\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from an ISS aluminum-case touch array; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"W4-Al-K1\",\n \"genome_accession\": \"GCA_057816565.1\"\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Micrococcus luteus | W4-Al-K1 | ISS, Touch Array Aluminum Case | - | Kr\\u00e4mer et al., 2025 | GCA_057816565.1 | NB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies M. luteus W4-Al-K1 as a consortium member and gives its ISS source, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Micrococcus luteus W4-Al-K1' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Propionibacterium cyclohexanicum TA-12T\",\n \"taxon_id\": \"NCBITaxon:64702\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Propionibacterium cyclohexanicum TA-12T\",\n \"term\": {\n \"id\": \"NCBITaxon:64702\",\n \"label\": \"Propionibacterium cyclohexanicum\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the P. cyclohexanicum type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"TA-12T\",\n \"genome_accession\": \"GCA_900111365\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"16859\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Propionibacterium cyclohexanicum | TA-12 T | Spoilt Orange Juice | DSM 16859 T | Kusano et al., 1997 | GCA_900111365 | BHI, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies P. cyclohexanicum TA-12T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Propionibacterium cyclohexanicum TA-12T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Pseudomonas antarctica CMS 35T\",\n \"taxon_id\": \"NCBITaxon:219572\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Pseudomonas antarctica CMS 35T\",\n \"term\": {\n \"id\": \"NCBITaxon:219572\",\n \"label\": \"Pseudomonas antarctica\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the P. antarctica type strain as a biosafety-level-1 Pseudomonas surrogate.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"CMS 35T\",\n \"genome_accession\": \"GCA_010634845\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"15318\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Pseudomonas antarctica | CMS 35 T | Antarctica | DSM 15318 T | Reddy et al., 2004 | GCA_010634845 | TSYB/TSYA | Ambient | 12\\u201316 h\",\n \"explanation\": \"Identifies P. antarctica CMS 35T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Pseudomonas antarctica CMS 35T' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Staphylococcus capitis K1-2-2-23\",\n \"taxon_id\": \"NCBITaxon:29388\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Staphylococcus capitis K1-2-2-23\",\n \"term\": {\n \"id\": \"NCBITaxon:29388\",\n \"label\": \"Staphylococcus capitis\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The isolate was recovered from ISS V2A steel; ontology grounding is at species level.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"K1-2-2-23\",\n \"genome_accession\": \"GCA_025272695\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"111179\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Staphylococcus capitis | K1-2-2-23 | ISS, V2A Steel | DSM 111179 | Sobisch et al., 2019 | GCA_025272695 | TSYB/TSYA | 37 \\u00b0C | 16\\u201324 h\",\n \"explanation\": \"Identifies S. capitis K1-2-2-23 as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Staphylococcus capitis K1-2-2-23' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Streptococcus halotolerans HTS9T\",\n \"taxon_id\": \"NCBITaxon:1814128\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Streptococcus halotolerans HTS9T\",\n \"term\": {\n \"id\": \"NCBITaxon:1814128\",\n \"label\": \"Streptococcus halotolerans\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the S. halotolerans type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"HTS9T\",\n \"genome_accession\": \"GCA_001598035\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"101996\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Streptococcus halotolerans | HTS9 T | Respiratory Tract of Marmota himalayana | DSM 101996 T | Niu et al., 2016 | GCA_001598035 | 2xLB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies S. halotolerans HTS9T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Streptococcus halotolerans HTS9T' has no interactions\"\n }\n ]\n}\n" + }, + { + "check": "rank-all", + "command": [ + "just", + "rank-causal-graphs" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/rank-all.log", + "log_sha256": "ad4ab973eced97fb4f15019952e44e608619de6dc7c596de336bd02d40e53cc1", + "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-batch58/render.log", + "log_sha256": "abba5ef0576895b51d141676bdaeca0c0d262500f497507a6323a7866808700f", + "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch58/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch58/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch58/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-batch58/render-repeat.log", + "log_sha256": "abba5ef0576895b51d141676bdaeca0c0d262500f497507a6323a7866808700f", + "output_tail": "sm.html\n \u2713 Synechococcus_Bacillus_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Bacillus_SPC.html\n \u2713 Synechococcus_Ecoli_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Ecoli_SPC.html\n \u2713 Synechococcus_Halomonas_Light_Driven_PHB_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Halomonas_Light_Driven_PHB_Coculture.html\n \u2713 Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Pseudomonas_PhotoPHA_DNT_Coculture.html\n \u2713 Synechococcus_Saccharomyces_SPC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Saccharomyces_SPC.html\n \u2713 Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechococcus_Shewanella_Dlactate_Biophotovoltaic_Consortium.html\n \u2713 Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synechocystis_Pseudomonas_Acetate_Butanol_Coculture.html\n \u2713 Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synthetic_Lichen_Synechococcus_Rhodotorula_Coculture.html\n \u2713 Synthetic_Periphyton_Freshwater_Biofilm.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Synthetic_Periphyton_Freshwater_Biofilm.html\n \u2713 Syntrophobacter_Methanobacterium_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophobacter_Methanobacterium_Syntrophy.html\n \u2713 Syntrophobacter_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophobacter_Methanospirillum_Syntrophy.html\n \u2713 Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophomonas_Methanococcus_Butyrate_Growth_Coordination_Coculture.html\n \u2713 Syntrophomonas_Methanospirillum_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophomonas_Methanospirillum_Syntrophy.html\n \u2713 Syntrophus_Benzoate_Degrader.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophus_Benzoate_Degrader.html\n \u2713 Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Syntrophus_Methanospirillum_Gentianae_Benzoate_Coculture.html\n \u2713 TCP_NonDehalogenimonas_Groundwater_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/TCP_NonDehalogenimonas_Groundwater_Consortium.html\n \u2713 THOR_Rhizosphere_Model_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/THOR_Rhizosphere_Model_Community.html\n \u2713 TYQ1_Nematode_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/TYQ1_Nematode_Biocontrol_SynCom.html\n \u2713 Teosinte_Maize_Biofertilizer_SynCom7.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Teosinte_Maize_Biofertilizer_SynCom7.html\n \u2713 Thalassiosira_Marinobacter_Marine_Snow_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thalassiosira_Marinobacter_Marine_Snow_Coculture.html\n \u2713 Thalassiosira_Ruegeria_Phycosphere_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thalassiosira_Ruegeria_Phycosphere_Coculture.html\n \u2713 Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermacetogenium_Methanothermobacter_Acetate_Oxidation_Coculture.html\n \u2713 Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermoleptolyngbya_Chelatococcus_Arsenic_Detoxification_Coculture.html\n \u2713 Thermophilic_ExSitu_Biomethanation_Mixed_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermophilic_ExSitu_Biomethanation_Mixed_Culture.html\n \u2713 Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermophilic_Lignocellulose_Composting_SynCom_Biosanitization.html\n \u2713 Thermophilic_Pyrite_QS_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermophilic_Pyrite_QS_Consortium.html\n \u2713 Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thermotoga_Methanocaldococcus_Hyperthermophilic_Syntrophy.html\n \u2713 Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Thiocyanate_Afipia_Thiobacillus_Bioreactor_Community.html\n \u2713 Tinto_River_Iron_Cycling_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tinto_River_Iron_Cycling_Community.html\n \u2713 Tobacco_Chemotactic_Biocontrol_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tobacco_Chemotactic_Biocontrol_SynCom.html\n \u2713 Tomato_Oxylipin_SynCom3.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tomato_Oxylipin_SynCom3.html\n \u2713 Tribromophenol_Anaerobic_Bioremediation_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tribromophenol_Anaerobic_Bioremediation_SynCom.html\n \u2713 Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichococcus_Syntrophomonas_Methanospirillum_Butyrate_Coculture.html\n \u2713 Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichoderma_Ecoli_Cellulosic_Isobutanol_Coculture.html\n \u2713 Trichoderma_Lactate_Platform.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichoderma_Lactate_Platform.html\n \u2713 Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichoderma_Streptomyces_Filamentous_Cellulose_Coculture.html\n \u2713 Trichodesmium_Alteromonas_Marine_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Trichodesmium_Alteromonas_Marine_Consortium.html\n \u2713 Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.html\n \u2713 Urine_Nitrification_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Urine_Nitrification_SynCom.html\n \u2713 Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.html\n \u2713 Viili_Fungus_Bacterium_EPS_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Viili_Fungus_Bacterium_EPS_SynCom.html\n \u2713 Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.html\n \u2713 Watermelon_Rhizosphere_Fusarium_SynCom8.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.html\n \u2713 Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.html\n \u2713 Wheat_Consortium_C1.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_Consortium_C1.html\n \u2713 Wheat_Consortium_C6.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_Consortium_C6.html\n \u2713 Wheat_CrownRot_SixStrain_CrossKingdom_SMC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_CrownRot_SixStrain_CrossKingdom_SMC.html\n \u2713 Wheat_CrownRot_TB_CrossKingdom_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_CrownRot_TB_CrossKingdom_SynCom.html\n \u2713 Wheat_DT_Rhizosphere_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_DT_Rhizosphere_SynCom.html\n \u2713 Wheat_Straw_Biogas_Pretreatment_SynCom.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.html\n \u2713 Wheat_SynCom_SASW01_Drought_Inoculant.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wheat_SynCom_SASW01_Drought_Inoculant.html\n \u2713 Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wine_Yeast_FiveSpecies_Strain_Substitution_Consortium.html\n \u2713 Wine_Yeast_ThreeSpecies_Contact_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wine_Yeast_ThreeSpecies_Contact_Consortium.html\n \u2713 Wolffia_Mankai_Endosphere_Cobamide_Guild.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wolffia_Mankai_Endosphere_Cobamide_Guild.html\n \u2713 Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Wollastonite_Ramichloridium_Talaromyces_Fungal_Consortium.html\n \u2713 Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.html\n \u2713 Yogurt_TwoSpecies_Starter_Culture.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Yogurt_TwoSpecies_Starter_Culture.html\n \u2713 Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.html\n \u2713 hCom2_Complex_Gut_Microbiome.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/hCom2_Complex_Gut_Microbiome.html\n \u2713 mCAFEs_Brachypodium_RCC.yaml \u2192 /private/tmp/communitymech-causal-batch58/docs/communities/mCAFEs_Brachypodium_RCC.html\n\n\u2705 Rendered 456 communities to /private/tmp/communitymech-causal-batch58/docs/communities\n \u2713 Generated browser at /private/tmp/communitymech-causal-batch58/docs/browser.html\n \u2713 Generated landing at /private/tmp/communitymech-causal-batch58/docs/index.html\n" + }, + { + "check": "connectivity-survey", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "-c", + "import json, pathlib, runpy\nfn=runpy.run_path('tests/test_community_level_connectivity_credit.py')['_survey']\nresult={}\nfor name,root in [('baseline',pathlib.Path('/private/tmp/communitymech-causal-batch57')),('current',pathlib.Path.cwd())]:\n paths=sorted(p for r in ['kb/communities','data/isolates'] for p in (root/r).rglob('*.yaml'))\n assert len(paths)==460\n fn.__globals__['record_files']=lambda: paths\n result[name]=fn()\nprint(json.dumps(result))\n" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/connectivity-survey.log", + "log_sha256": "2ebe9a828c3195e89a0931934fd0781047b3b112d0aa63c7a5cdba7fcb0e27ee", + "output_tail": "{\"baseline\": {\"records\": 460, \"with_community_level\": 390, \"mixed\": 124, \"community_level_only\": 266, \"taxa\": 1505, \"credited_solely_by_the_rule\": 1236}, \"current\": {\"records\": 460, \"with_community_level\": 390, \"mixed\": 124, \"community_level_only\": 266, \"taxa\": 1505, \"credited_solely_by_the_rule\": 1236}}\n" + }, + { + "check": "regressions", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "-m", + "pytest", + "-q", + "tests/test_causal_review_batch10.py", + "tests/test_causal_review_batch11.py", + "tests/test_causal_review_batch12.py", + "tests/test_causal_review_batch13.py", + "tests/test_causal_review_batch14.py", + "tests/test_causal_review_batch15.py", + "tests/test_causal_review_batch16.py", + "tests/test_causal_review_batch17.py", + "tests/test_causal_review_batch18.py", + "tests/test_causal_review_batch19.py", + "tests/test_causal_review_batch20.py", + "tests/test_causal_review_batch21.py", + "tests/test_causal_review_batch22.py", + "tests/test_causal_review_batch23.py", + "tests/test_causal_review_batch24.py", + "tests/test_causal_review_batch25.py", + "tests/test_causal_review_batch27.py", + "tests/test_causal_review_batch28.py", + "tests/test_causal_review_batch29.py", + "tests/test_causal_review_batch30.py", + "tests/test_causal_review_batch31.py", + "tests/test_causal_review_batch32.py", + "tests/test_causal_review_batch33.py", + "tests/test_causal_review_batch34.py", + "tests/test_causal_review_batch35.py", + "tests/test_causal_review_batch36.py", + "tests/test_causal_review_batch37.py", + "tests/test_causal_review_batch38.py", + "tests/test_causal_review_batch39.py", + "tests/test_causal_review_batch40.py", + "tests/test_causal_review_batch41.py", + "tests/test_causal_review_batch42.py", + "tests/test_causal_review_batch43.py", + "tests/test_causal_review_batch44.py", + "tests/test_causal_review_batch45.py", + "tests/test_causal_review_batch46.py", + "tests/test_causal_review_batch47.py", + "tests/test_causal_review_batch48.py", + "tests/test_causal_review_batch49.py", + "tests/test_causal_review_batch5.py", + "tests/test_causal_review_batch50.py", + "tests/test_causal_review_batch51.py", + "tests/test_causal_review_batch52.py", + "tests/test_causal_review_batch53.py", + "tests/test_causal_review_batch54.py", + "tests/test_causal_review_batch55.py", + "tests/test_causal_review_batch56.py", + "tests/test_causal_review_batch57.py", + "tests/test_causal_review_batch58.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-batch58/regressions-retry-1.log", + "log_sha256": "dc5129ec0bed322b00275821289b50e3f47a4bdc13d2fc0d1ce0d3df45396490", + "output_tail": "........................................................................ [ 13%]\n........................................................................ [ 26%]\n........................................................................ [ 40%]\n........................................................................ [ 53%]\n........................................................................ [ 67%]\n........................................................................ [ 80%]\n........................................................................ [ 94%]\n................................ [100%]\n536 passed in 179.05s (0:02:59)\n" + }, + { + "check": "black", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/3Q_kifQtLB624D5bBWGIf/bin/black", + "--check", + "tests/test_causal_review_batch58.py", + "tests/test_participating_taxa.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/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_batch58.py", + "tests/test_participating_taxa.py" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/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-batch58/diff-check.log", + "log_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "output_tail": "" + }, + { + "check": "primary-graph-fragments", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "-c", + "import json,pathlib,yaml\nroot=pathlib.Path('/private/tmp/communitymech-batch58')\ndoc=yaml.safe_load(pathlib.Path('kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml').read_text())\nprimary=''.join((root/'r2a-primary.txt').read_text().split())\nfragments=[e['snippet'] for n in doc['ecological_interactions'] for e in n['evidence']]\nassert len(fragments)==4 and all(''.join(q.split()) in primary for q in fragments)\nassert 'differentfromthestaticagarplateconditions' in primary\nassert 'Pseudomonassp.GM17andSphingobiumsp.AP49' in primary\nprint(json.dumps({'primary_matched_graph_fragments':len(fragments),'all_cache_provenance_certified':False,'metabolic_rescue_demonstrated':False,'canonical_membership_repaired':False}))\n" + ], + "exit_code": 0, + "expected_exit_codes": [ + 0 + ], + "log": "/private/tmp/communitymech-batch58/primary-graph-fragments.log", + "log_sha256": "6ebc13f5242bcfa5c54b14ebf61539a1c8a1d2d28a822939c9c8318935b025b0", + "output_tail": "{\"primary_matched_graph_fragments\": 4, \"all_cache_provenance_certified\": false, \"metabolic_rescue_demonstrated\": false, \"canonical_membership_repaired\": false}\n" + } + ], + "limitations": [ + "All three original nodes and both arrows reviewed. Removed one wrong-medium node and both unsupported arrows; no new causal structure or Edison spend for R2A.", + "Full extracted primary main text/Methods/Tables1-2/main captions read. No original figure pixels, external supplements, raw data or independent KBase execution/model replication.", + "Canonical taxonomy and all raw non-graph fields preserved, not recertified. #1533 tracks AP49/CF313 membership, strain grounding and ten-isolate assembly metadata and must remain OPEN after graph merge.", + "All920 cache files unchanged;4 graph fragments matched independently to fresh primary and cache. MATCH is not provenance certification of the entire cache or non-graph claims.", + "834 all-state issue titles/bodies searched;85 matching ignored/hidden local files, with docs/site/cache exclusions. Relevant issues read, not every matching file, historical comment or PR.", + "Self-adversarial review is not independent approval. #1532 stays OPEN until protected-main merge. Existing SupportingReference coverage476, writer artifact1095 and Linux DOI lookup1091 limitations remain.", + "Dairy and kefir source research is in progress and is NOT credited as reviewed by this R2A-only batch. Dairy one-community dry run spent zero credits; paid authorization/report pending.", + "HTML descriptions checked by exact parser and repeat renders, not browser screenshots. Post-commit docs-current is a separate publication gate." + ], + "superseded_checks": [ + { + "check": "regressions", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "-m", + "pytest", + "-q", + "tests/test_causal_review_batch10.py", + "tests/test_causal_review_batch11.py", + "tests/test_causal_review_batch12.py", + "tests/test_causal_review_batch13.py", + "tests/test_causal_review_batch14.py", + "tests/test_causal_review_batch15.py", + "tests/test_causal_review_batch16.py", + "tests/test_causal_review_batch17.py", + "tests/test_causal_review_batch18.py", + "tests/test_causal_review_batch19.py", + "tests/test_causal_review_batch20.py", + "tests/test_causal_review_batch21.py", + "tests/test_causal_review_batch22.py", + "tests/test_causal_review_batch23.py", + "tests/test_causal_review_batch24.py", + "tests/test_causal_review_batch25.py", + "tests/test_causal_review_batch27.py", + "tests/test_causal_review_batch28.py", + "tests/test_causal_review_batch29.py", + "tests/test_causal_review_batch30.py", + "tests/test_causal_review_batch31.py", + "tests/test_causal_review_batch32.py", + "tests/test_causal_review_batch33.py", + "tests/test_causal_review_batch34.py", + "tests/test_causal_review_batch35.py", + "tests/test_causal_review_batch36.py", + "tests/test_causal_review_batch37.py", + "tests/test_causal_review_batch38.py", + "tests/test_causal_review_batch39.py", + "tests/test_causal_review_batch40.py", + "tests/test_causal_review_batch41.py", + "tests/test_causal_review_batch42.py", + "tests/test_causal_review_batch43.py", + "tests/test_causal_review_batch44.py", + "tests/test_causal_review_batch45.py", + "tests/test_causal_review_batch46.py", + "tests/test_causal_review_batch47.py", + "tests/test_causal_review_batch48.py", + "tests/test_causal_review_batch49.py", + "tests/test_causal_review_batch5.py", + "tests/test_causal_review_batch50.py", + "tests/test_causal_review_batch51.py", + "tests/test_causal_review_batch52.py", + "tests/test_causal_review_batch53.py", + "tests/test_causal_review_batch54.py", + "tests/test_causal_review_batch55.py", + "tests/test_causal_review_batch56.py", + "tests/test_causal_review_batch57.py", + "tests/test_causal_review_batch58.py", + "tests/test_causal_review_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-batch58/regressions.log", + "log_sha256": "77f674c0efc49c9457d3a0433d79423cb3d5bbf941c09b4641f009acef9aad56", + "output_tail": "........................................................................ [ 13%]\n........................................................................ [ 26%]\n........................................................................ [ 40%]\n........................................................................ [ 53%]\n........................................................................ [ 67%]\n........................................................................ [ 80%]\n.......................F................................................ [ 94%]\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: 213 records use participating_taxa, expected 212. 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: ['KBase_Synthetic_Bacterial_Community_R2A.yaml']. Removed: []\nE assert {'AMD_Acidoph...re.yaml', ...} == {'AMD_Acidoph...re.yaml', ...}\nE \nE Extra items in the left set:\nE 'KBase_Synthetic_Bacterial_Community_R2A.yaml'\nE Use -v to get more diff\n\ntests/test_participating_taxa.py:397: AssertionError\n=========================== short test summary info ============================\nFAILED tests/test_participating_taxa.py::test_the_corpus_is_unchanged_by_this_feature\n1 failed, 535 passed in 188.18s (0:03:08)\n" + } + ], + "resume_note": "Existing receipts reused only after command identity, exit status, log hash, record hashes and unchanged caches verified. No unexecuted check counted as passed.", + "snippet_counts_by_record": { + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml": { + "MATCH": 11, + "RENDERING": 0, + "ASSEMBLED": 0, + "WEAK": 0, + "MISMATCH": 0, + "NOCONTENT": 0 + } + }, + "unchanged_raw_blocks": 13, + "unchanged_record_files": 459, + "unchanged_cache_files": 920, + "primary_artifacts": { + "r2a-primary.html": "1aefb76b7eb063a1d0e8f922b98a4b91f365395c92484b47ab2d705966b1333c", + "r2a-primary.txt": "712e0679230b132c7b6609371f98850509216b159c54b12e398e05441af97341" + }, + "cache_provenance_caveat": "All cache bytes preserved; four graph snippets independently primary-matched. MATCH does not certify all cached or nongraph content.", + "network_delta": { + "existing_findings_preserved": 36, + "added_findings": {}, + "removed_findings": {} + }, + "render_determinism": true, + "published_description_coverage": { + "pages": 456, + "nodes": 1446, + "arrows": 644 + }, + "participant_census": { + "measurements": { + "baseline": { + "records": 460, + "with_community_level": 390, + "mixed": 124, + "community_level_only": 266, + "taxa": 1505, + "credited_solely_by_the_rule": 1236 + }, + "current": { + "records": 460, + "with_community_level": 390, + "mixed": 124, + "community_level_only": 266, + "taxa": 1505, + "credited_solely_by_the_rule": 1236 + } + }, + "interpretation": "R2A removes one misassigned community-level node, keeps one model node with a partial canonical participant list and retains the pairwise agar assay. Canonical taxonomy is preserved." + }, + "retry_reason": "Initial suite:535 passed,1 failed; explicit participant USERS set lacked newly curated R2A. Added only R2A after measured unchanged both-root connectivity census. Original failed output and digest retained; entire suite rerun.", + "network_warning_count": 36, + "corpus": { + "scope": "Every YAML under kb/communities and data/isolates; filesystem discovery includes hidden/ignored files.", + "records": 460, + "nodes": 1460, + "edges": 652, + "records_without_nodes": 8, + "records_without_edges": 156, + "review_status_counts": { + "needs_research": 18, + "pending": 250, + "reviewed": 192 + }, + "structural_defects": [] + }, + "tested_file_sha256": { + "reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml": "c5cb8ae0a42a4d951d11f5b75a00fb656aba694fdabae70ddd6799579158bc05", + "tests/test_causal_review_batch58.py": "77120b16179c078c9ae2ce8cd15e977d426216cb4df23e2af8544277441b2087", + "tests/test_participating_taxa.py": "3b564c447b9cd252546559b0ae5148759a81b81267e8d55c5a35eac49f6662ed", + "kb/communities/KBase_Synthetic_Bacterial_Community_R2A.yaml": "8239899f70763acf1aa6be423b37e77737a7e6367b6203888c96e163e9419753", + "reports/causal_graph_review/README.md": "16fa7866ee2c8b2c4ff4cc9b4596455c0dc51f21b5495ccec4baf5144813fb23" + }, + "status": "verified_r2a_graph_repair", + "pre_research_baseline": { + "base_commit": "762a708faf1c04a67a4bf71197a90304f3066841", + "base_tree": "0e30518fea3ddae8f3443d3913b87deeb91b6941", + "research_worktree": "/private/tmp/communitymech-causal-batch57", + "checks": [ + { + "name": "rank", + "command": [ + "just", + "rank-causal-graphs" + ], + "exit_code": 0, + "expected_exit_code": 0, + "log": "/private/tmp/communitymech-batch58/baseline-rank.log", + "sha256": "15045236fc89a52b5072edf8022f82b7b8bbca5e0448af52878e76662ba577b4", + "output_tail": "/Tropidoatractus_Magnetotacticus_Tripartite_Syntrophy.yaml\tCommunityMech:000337\tTropidoatractus magnetotacticus Magnetotactic Ciliate Tripartite Syntrophy\t3\t3\t0\t4\t2\t9\t\t0\t0\n450\t100.0\tkb/communities/Urine_Nitrification_SynCom.yaml\tCommunityMech:000117\tUrine Nitrification Synthetic Microbial Community\t5\t5\t0\t3\t2\t5\t\t0\t0\n451\t100.0\tkb/communities/Variovorax_Cryptococcus_Vitamin_Mutualism_Microcosm.yaml\tCommunityMech:000213\tVariovorax-Cryptococcus Vitamin Cross-Feeding Microcosm\t2\t2\t0\t3\t2\t4\t\t0\t0\n452\t100.0\tkb/communities/Waste_Sludge_Electrofermentation_Biofilm_Suspension_Community.yaml\tCommunityMech:000328\tWaste-Sludge Electro-Fermentation Biofilm-Suspension Community\t5\t5\t0\t4\t2\t6\t\t0\t0\n453\t100.0\tkb/communities/Watermelon_Rhizosphere_Fusarium_SynCom8.yaml\tCommunityMech:000098\tWatermelon Rhizosphere Fusarium-Protective SynCom8\t2\t2\t0\t3\t2\t7\t\t0\t0\n454\t100.0\tkb/communities/Wetland_Oxygen_Sulfate_GHG_Microcosm_Community.yaml\tCommunityMech:000255\tWetland Oxygen-Sulfate Greenhouse Gas Microcosm Community\t3\t3\t0\t3\t2\t6\t\t0\t0\n455\t100.0\tkb/communities/Wheat_Straw_Biogas_Pretreatment_SynCom.yaml\tCommunityMech:000118\tWheat Straw Biogas Pretreatment SynCom\t4\t4\t0\t3\t2\t4\t\t0\t0\n456\t100.0\tkb/communities/Yarrowia_lipolytica_Division_of_Labor_Lipid_Consortium.yaml\tCommunityMech:000354\tYarrowia lipolytica Division-of-Labor Lipid Consortium\t2\t2\t0\t3\t2\t3\t\t0\t0\n457\t100.0\tkb/communities/Yogurt_TwoSpecies_Starter_Culture.yaml\tCommunityMech:000164\tYogurt Two-Species Starter Culture\t2\t2\t0\t4\t2\t9\t\t0\t0\n458\t100.0\tkb/communities/Zymomonas_Ecoli_Exometabolomics_Obligate_Mutualism.yaml\tCommunityMech:000210\tZymomonas-E. coli Exometabolomics-Designed Obligate Mutualism\t2\t2\t0\t3\t2\t6\t\t0\t0\n459\t100.0\tkb/communities/hCom2_Complex_Gut_Microbiome.yaml\tCommunityMech:000123\thCom2 Complex Gut Microbiome\t1\t1\t0\t3\t2\t3\t\t0\t0\n460\t100.0\tkb/communities/mCAFEs_Brachypodium_RCC.yaml\tCommunityMech:000078\tm-CAFEs Brachypodium Reduced Complexity Consortia\t10\t10\t0\t6\t2\t11\t\t0\t0\nPYTHONPATH=src uv run python scripts/rank_causal_graph_readiness.py \n" + }, + { + "name": "just-network", + "command": [ + "just", + "audit-network-json" + ], + "exit_code": 2, + "expected_exit_code": 2, + "log": "/private/tmp/communitymech-batch58/baseline-just-network.log", + "sha256": "8595db43420d3f0a01c57acd6ad733a531a72e962486d20b4e1c2840dda55bff", + "output_tail": "uv run communitymech audit-network --json\nerror: Failed to spawn: `communitymech`\n Caused by: No such file or directory (os error 2)\nerror: recipe `audit-network-json` failed on line 574 with exit code 2\n" + }, + { + "name": "network", + "command": [ + "/Users/marcin/.cache/uv/archive-v0/l58VlyFvdmnkl0CcAx5Gk/bin/python3", + "-m", + "communitymech.cli", + "audit-network", + "--json" + ], + "exit_code": 1, + "expected_exit_code": 1, + "log": "/private/tmp/communitymech-batch58/baseline-network.log", + "sha256": "0955d3471f474fec8dcceb846ff932573d11c9833de73b2b2822241553762186", + "output_tail": " \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Staphylococcus capitis | K1-2-2-23 | ISS, V2A Steel | DSM 111179 | Sobisch et al., 2019 | GCA_025272695 | TSYB/TSYA | 37 \\u00b0C | 16\\u201324 h\",\n \"explanation\": \"Identifies S. capitis K1-2-2-23 as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Staphylococcus capitis K1-2-2-23' has no interactions\"\n },\n {\n \"type\": \"DISCONNECTED\",\n \"taxon\": \"Streptococcus halotolerans HTS9T\",\n \"taxon_id\": \"NCBITaxon:1814128\",\n \"taxon_data\": {\n \"taxon_term\": {\n \"preferred_term\": \"Streptococcus halotolerans HTS9T\",\n \"term\": {\n \"id\": \"NCBITaxon:1814128\",\n \"label\": \"Streptococcus halotolerans\"\n },\n \"gtdb_grounding_status\": \"UNRESOLVED\",\n \"notes\": \"The source used the S. halotolerans type strain as a biosafety-level-1 representative.\"\n },\n \"strain_designation\": {\n \"strain_name\": \"HTS9T\",\n \"genome_accession\": \"GCA_001598035\",\n \"culture_collections\": [\n {\n \"collection\": \"DSM\",\n \"accession\": \"101996\"\n }\n ]\n },\n \"evidence\": [\n {\n \"reference\": \"PMID:42577390\",\n \"supports\": \"SUPPORT\",\n \"evidence_source\": \"IN_VITRO\",\n \"snippet\": \"Streptococcus halotolerans | HTS9 T | Respiratory Tract of Marmota himalayana | DSM 101996 T | Niu et al., 2016 | GCA_001598035 | 2xLB, TSYB/TSYA | 37 \\u00b0C | 24 h\",\n \"explanation\": \"Identifies S. halotolerans HTS9T as a consortium member and gives its source, DSM number, genome accession and cultivation conditions.\"\n }\n ]\n },\n \"message\": \"Taxon 'Streptococcus halotolerans HTS9T' has no interactions\"\n }\n ]\n}\n" + }, + { + "name": "downstream", + "command": [ + "rg", + "--no-ignore", + "--hidden", + "-n", + "downstream:", + "kb/communities", + "data/isolates", + "--glob", + "*.yaml" + ], + "exit_code": 0, + "expected_exit_code": 0, + "log": "/private/tmp/communitymech-batch58/baseline-downstream.log", + "sha256": "cdc9e2bdea925e355cbe34484eb284a3fafe26cc531419d3ede3dcccac28b31e", + "output_tail": ":\nkb/communities/Phylogenetically_Diverse_Denitrifying_SynCom.yaml:122: downstream:\nkb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml:147: downstream:\nkb/communities/Clostridium_Autoethanogenum_Kluyveri_Syngas_Coculture.yaml:247: downstream:\nkb/communities/Deepwater_Horizon_Deep_Sea_Oil_Plume_Succession.yaml:197: downstream:\nkb/communities/Deepwater_Horizon_Deep_Sea_Oil_Plume_Succession.yaml:241: downstream:\nkb/communities/Pepper_Phytophthora_SynCom5.yaml:123: downstream:\nkb/communities/Pepper_Phytophthora_SynCom5.yaml:146: downstream:\nkb/communities/Shewanella_Streptococcus_Starch_Microbial_Fuel_Cell.yaml:140: downstream:\nkb/communities/Shewanella_Streptococcus_Starch_Microbial_Fuel_Cell.yaml:221: downstream:\nkb/communities/Emiliania_Phaeobacter_Dynamic_Interaction.yaml:143: downstream:\nkb/communities/SO3_BS3_Lithium_Battery_Bioleaching_Consortium.yaml:141: downstream:\nkb/communities/Desulfovibrio_Methanococcus_Syntrophy.yaml:138: downstream:\nkb/communities/Desulfovibrio_Methanococcus_Syntrophy.yaml:182: downstream:\nkb/communities/Desulfovibrio_Methanococcus_Syntrophy.yaml:232: downstream:\nkb/communities/Avena_Rhizosphere_Detritusphere_Niche_Succession.yaml:104: downstream:\nkb/communities/Avena_Rhizosphere_Detritusphere_Niche_Succession.yaml:127: downstream:\nkb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml:285: downstream:\nkb/communities/Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml:324: downstream:\nkb/communities/Methylotuvimicrobium_Synechococcus_Gas_Feedstock_Coculture.yaml:157: downstream:\nkb/communities/Methylotuvimicrobium_Synechococcus_Gas_Feedstock_Coculture.yaml:203: downstream:\nkb/communities/BioModels_MODEL2204300001_Kefir_Community_Model.yaml:203: downstream:\nkb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml:247: downstream:\nkb/communities/Clostridium_Carboxidivorans_Kluyveri_CO_Chain_Elongation_Coculture.yaml:344: downstream:\n" + } + ], + "baseline_sha256": "5ae381b36766903a6f38a1422351f8d3c0670f448880ea255311fa6960f078e2" + }, + "ancestry_transition": { + "old_head": "762a708faf1c04a67a4bf71197a90304f3066841", + "new_head": "80c56fe71a1a42b4eebbba4b056ce690e031dfd6", + "unchanged_tree": "0e30518fea3ddae8f3443d3913b87deeb91b6941", + "pre_source_baseline_sha256": "5ae381b36766903a6f38a1422351f8d3c0670f448880ea255311fa6960f078e2", + "completed_restack_receipt": "/private/tmp/communitymech-batch25/finish-stack-24.json", + "receipt_sha256": "7dbd5fa74b1b4f6dfc68d776c5b450a25690f20336b18e650d9bf334f36a4261", + "record_hashes_revalidated": 460, + "cache_hashes_revalidated": 920, + "baseline_log_hashes_revalidated": 4, + "exact_head_comment_review": "https://github.com/CultureBotAI/CommunityMech/pull/1531#pullrequestreview-5433385890" + }, + "reference_validator_caveat": "CLI Total checks counts reported issues, not executed checks. Cache MATCH does not prove scientific entailment or complete provenance. Full extracted primary main text inspected and all4 graph snippets independently matched; canonical membership/assembly metadata remains1533. Existing476/1091/1095 limitations remain." +} diff --git a/tests/test_causal_review_batch58.py b/tests/test_causal_review_batch58.py new file mode 100644 index 000000000..ebb168265 --- /dev/null +++ b/tests/test_causal_review_batch58.py @@ -0,0 +1,104 @@ +"""Pin R2A/MOPS attribution, assay boundaries and complete review coverage.""" + +import hashlib +from pathlib import Path + +import yaml + +ROOT = Path(__file__).resolve().parents[1] +LEDGER = ROOT / "reports/causal_graph_review/decisions/20261006-r2a-batch58.yaml" + + +def records(): + ledger = yaml.safe_load(LEDGER.read_text()) + row = ledger["records"][0] + return ledger, row, yaml.safe_load((ROOT / row["path"]).read_text()) + + +def test_r2a_removes_misassigned_node_and_both_unsupported_arrows(): + _, row, doc = records() + nodes = doc["ecological_interactions"] + assert [n["name"] for n in nodes] == [ + "Predicted R2A Community Metabolite Exchange", + "Pseudomonas Competitive Antagonism", + ] + assert len(row["edges_before"]) == 2 + assert not row["edges_after"] + assert all("downstream" not in n for n in nodes) + assert row["removed_node_decisions"][0]["node"] == ( + "Variovorax Cross-Feeding on Community Metabolites" + ) + + +def test_r2a_prediction_does_not_claim_experimental_flux_or_complete_membership(): + _, _, doc = records() + node = doc["ecological_interactions"][0] + assert node["description"].startswith("PARTIAL - ") + assert "Sphingobium sp. AP49, not Variovorax CF313" in node["description"] + assert "not measurements of exchange flux" in node["description"] + assert "does not confirm metabolite transfer" in node["description"] + assert "protein-based abundance estimates differ" in node["description"] + assert "carbon uptake calibrated" in node["description"] + assert "interaction_type" not in node and "source_taxon" not in node + assert [t["preferred_term"] for t in node["participating_taxa"]] == [ + "Pantoea sp. YR343", + "Pseudomonas sp. GM17", + ] + assert node["evidence"][0]["evidence_source"] == "COMPUTATIONAL" + assert all("concentration" not in m for m in node["metabolites"]) + + +def test_r2a_preserves_agar_inhibition_without_metabolite_rescue_claim(): + _, _, doc = records() + node = doc["ecological_interactions"][1] + assert node["scope"] == "PAIRWISE" + assert node["source_taxon"]["preferred_term"] == "Pseudomonas sp. GM17" + assert node["target_taxon"]["preferred_term"] == "Variovorax sp. CF313" + assert "5 microliters" in node["description"] + assert "25 degrees C for 48 hours" in node["description"] + assert "HYPOTHESIZED" in node["description"] + assert "liquid-versus-static-agar" in node["description"] + assert "No selective metabolite rescue" in node["description"] + assert node["evidence"][0]["evidence_source"] == "IN_VITRO" + + +def test_r2a_every_node_arrow_and_open_anchor_is_accounted_for(): + ledger, row, doc = records() + assert ledger["independent_approval"] is False + assert ledger["issues"] == [1532] + assert ledger["unresolved_non_graph_issues"] == [1533] + assert row["status"] == "reviewed" + assert hashlib.sha256((ROOT / row["path"]).read_bytes()).hexdigest() == row["record_sha256"] + names = {n["name"] for n in doc["ecological_interactions"]} + assert {r["node"] for r in row["node_decisions"]} == names + assert len(row["removed_node_decisions"]) == 1 + assert not row["retained_edge_decisions"] + assert len(row["removed_edge_decisions"]) == 2 + assert {(e["source"], e["target"]) for e in row["removed_edge_decisions"]} == { + (e["source"], e["target"]) for e in row["edges_before"] + } + discussion = doc["discussions"][-1] + assert discussion["status"] == "OPEN" and discussion["kind"] == "KNOWLEDGE_GAP" + assert {a.split("#", 1)[1] for a in discussion["attaches_to"]} == names + assert doc["curation_history"][-1]["llm_assisted"] is True + + +def test_r2a_canonical_metadata_and_source_scope_remain_explicit(): + ledger, row, doc = records() + assert [t["taxon_term"]["term"]["id"] for t in doc["taxonomy"]] == [ + "NCBITaxon:53335", + "NCBITaxon:306", + "NCBITaxon:34072", + ] + assert "#1533" in doc["discussions"][-1]["rationale"] + assert ledger["primary_graph_fragments_verified"] == 4 + assert "no figure pixels" in row["source_review"]["scope"] + assert row["source_review"]["cache_provenance_certified"] is False + assert ledger["issue_deduplication"]["ignored_hidden_local_search"] is True + assert ledger["baseline_commit"] != ledger["base_commit"] + transition = ledger["ancestry_transition"] + assert transition["old_head"] == ledger["baseline_commit"] + assert transition["new_head"] == ledger["base_commit"] + assert transition["unchanged_tree"] == ledger["base_tree"] + for path, digest in ledger["reference_cache_original_hashes"].items(): + assert hashlib.sha256((ROOT / path).read_bytes()).hexdigest() == digest diff --git a/tests/test_participating_taxa.py b/tests/test_participating_taxa.py index 936d2a2e2..7b92d8940 100644 --- a/tests/test_participating_taxa.py +++ b/tests/test_participating_taxa.py @@ -303,6 +303,7 @@ def test_a_curie_is_ambiguous_where_members_share_an_id(example): "KB1_Chlorinated_Ethene_Dechlorinating_Consortium.yaml", "KBase_Models_for_Zahmeeth_Original_PLOS.yaml", "KBase_ORT_Workflow_Community_Model.yaml", + "KBase_Synthetic_Bacterial_Community_R2A.yaml", "Legume_Rhizobia_Mars_Simulant_Symbiosis.yaml", "Lunar_Simulant_Phosphate_Solubilizing_Bacteria_Nicotiana.yaml", "MSC1_Dominant_Core.yaml",