Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
235fc4c
Fix disconnected plant hosts in 7 plant-microbe communities
realmarcin Mar 5, 2026
9da8dca
Fix disconnected taxa in 2 large SynComs
realmarcin Mar 5, 2026
9cbc27c
Fix MSC1_Dominant_Core: connect all 13 members via chitin degradation…
realmarcin Mar 5, 2026
7763bfd
Fix 2 degradation consortia: connect all members
realmarcin Mar 5, 2026
6af4eaa
Fix MAMC_M48_Lignocellulose: connect all 5 members
realmarcin Mar 5, 2026
df8a379
Fix missing source in Copper_Biomining_Heap_Leach
realmarcin Mar 5, 2026
e13804b
Fix missing sources in Chromobacterium_Gold_Biocyanidation
realmarcin Mar 5, 2026
eaeb3e4
Fix missing sources in REE and Cr bioleaching consortia
realmarcin Mar 5, 2026
6ebc03f
Fix missing sources in Ewaste_Bioleaching_Consortium
realmarcin Mar 5, 2026
2282602
Fix missing source in Thermophilic_Pyrite_QS_Consortium
realmarcin Mar 5, 2026
39f7895
Fix missing sources in Ferroplasma_Leptospirillum_Syntrophy
realmarcin Mar 5, 2026
67d5cbd
Fix network issues in Industrial_Bioreactor_Consortium
realmarcin Mar 5, 2026
f3ae61a
Fix network issues in Panzhihua_Vanadium_Titanium_Tailings
realmarcin Mar 5, 2026
6792684
Fix network issues in Polaromonas_Vanadium_Reduction_Community
realmarcin Mar 5, 2026
3eea5ea
Fix missing source in Phenol_Carboxylation_Consortium
realmarcin Mar 5, 2026
c7097fb
Fix network issues in Phormidium_Alkaline_Consortium
realmarcin Mar 5, 2026
5d74992
Fix network integrity in Rifle_Uranium_Reducing_Community
realmarcin Mar 5, 2026
58b8220
Fix network integrity in Rammelsberg_Cobalt_Nickel_Tailings
realmarcin Mar 5, 2026
fc06db5
Fix network integrity in Richmond_Mine_AMD_Biofilm
realmarcin Mar 5, 2026
9aacb1a
Fix network integrity in Salar_Atacama_Lithium_Brine_Community
realmarcin Mar 5, 2026
1588804
Fix network integrity in Phenol_Carboxylation_Consortium
realmarcin Mar 5, 2026
0ac2423
Fix network integrity in Phormidium_Alkaline_Consortium
realmarcin Mar 5, 2026
835f034
Fix network integrity in Panzhihua_Vanadium_Titanium_Tailings
realmarcin Mar 5, 2026
3ec4928
Fix network integrity in SF356_Cellulose_Degrader
realmarcin Mar 5, 2026
20d9f1e
Fix network integrity in Tinto_River_Iron_Cycling_Community
realmarcin Mar 5, 2026
ee92221
Fix target taxon name in Tinto_River interaction
realmarcin Mar 5, 2026
16a3765
Fix network integrity in Naica_Deep_Subsurface_Thermophilic
realmarcin Mar 5, 2026
f13ff2a
Fix network integrity in Mixed_Gallium_LED_Recovery_Consortium
realmarcin Mar 5, 2026
bbb3fe0
Fix network integrity in Iberian_Pit_Lake_Stratified_Community
realmarcin Mar 5, 2026
70c0ba4
Fix network integrity in PGM_Spent_Catalyst_Bioleaching (4 issues)
realmarcin Mar 5, 2026
13f943e
Fix network integrity in Ion_Adsorption_REE_Indigenous_Community (6 i…
realmarcin Mar 6, 2026
6379364
Fix ID_MISMATCH and UNKNOWN_TARGET errors (2 issues)
realmarcin Mar 6, 2026
d3fec8e
Fix network integrity in AMD and Australian communities (3 issues)
realmarcin Mar 6, 2026
371d856
Fix network integrity in algal-bacterial synthetic communities (4 iss…
realmarcin Mar 6, 2026
2d8be91
Fix network integrity in Dangl_SynComm_35 (10 issues)
realmarcin Mar 6, 2026
c997405
Fix E. coli DH5α NCBITaxon ID mismatch (668369 not 562)
realmarcin Mar 6, 2026
edf1475
Regenerate HTML for all 76 communities after network integrity fixes
realmarcin Mar 6, 2026
62ec181
Add growth media documentation with CultureMech integration
realmarcin Mar 6, 2026
6418a72
Add LLM-assisted network quality check infrastructure (Phases 1-5)
realmarcin Mar 6, 2026
63222d0
Merge main into manual-network-curation
realmarcin Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# CommunityMech Environment Variables
# Copy this file to .env and fill in your values
# DO NOT commit .env to version control

# Anthropic API Key (required for LLM-assisted network repair)
# Get your API key from: https://console.anthropic.com/
ANTHROPIC_API_KEY=sk-ant-your-api-key-here

# Optional: Email for literature fetching services
UNPAYWALL_EMAIL=your-email@example.com

# Optional: Override LLM model (defaults to claude-opus-4-6 from config)
# Options: claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5
# LLM_MODEL=claude-sonnet-4-6

# Optional: Override cost limits
# MAX_COST_PER_RUN=10.0
# MAX_API_CALLS_PER_RUN=100
160 changes: 160 additions & 0 deletions .github/workflows/network-quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
name: Network Quality Check

on:
pull_request:
paths:
- 'kb/communities/*.yaml'
- 'src/communitymech/network/**'
- 'src/communitymech/schema/**'
push:
branches:
- main
- manual-network-curation
paths:
- 'kb/communities/*.yaml'

jobs:
audit-network:
runs-on: ubuntu-latest
name: Audit Network Integrity

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Install dependencies
run: uv sync --all-extras

- name: Run network integrity audit
id: audit
run: |
uv run communitymech audit-network --check-only
continue-on-error: true

- name: Generate detailed report
if: failure()
run: |
mkdir -p reports
uv run communitymech audit-network --report reports/network_audit.txt
uv run communitymech audit-network --json > reports/network_audit.json

- name: Upload audit reports
if: failure()
uses: actions/upload-artifact@v4
with:
name: network-audit-reports
path: |
reports/network_audit.txt
reports/network_audit.json

- name: Comment on PR with issues
if: failure() && github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const report = fs.readFileSync('reports/network_audit.txt', 'utf8');
const maxLength = 60000;
const truncatedReport = report.length > maxLength
? report.substring(0, maxLength) + '\n\n... (truncated)'
: report;

github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `## ❌ Network Integrity Issues Detected\n\n\`\`\`\n${truncatedReport}\n\`\`\`\n\n📊 Download full reports from the workflow artifacts.`
});

- name: Fail if issues found
if: steps.audit.outcome == 'failure'
run: exit 1

# LLM-assisted repair suggestions (requires ANTHROPIC_API_KEY secret)
suggest-repairs:
runs-on: ubuntu-latest
needs: audit-network
if: failure()
name: Generate Repair Suggestions

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"

- name: Install dependencies
run: uv sync --all-extras

- name: Generate LLM repair suggestions
if: ${{ secrets.ANTHROPIC_API_KEY != '' }}
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
mkdir -p reports
uv run communitymech repair-network-batch --report-only \
--output reports/repair_suggestions.yaml \
--max-communities 20 \
--max-issues 3
continue-on-error: true

- name: Upload repair suggestions
if: ${{ secrets.ANTHROPIC_API_KEY != '' }}
uses: actions/upload-artifact@v4
with:
name: network-repair-suggestions
path: reports/repair_suggestions.yaml

- name: Comment on PR with suggestions summary
if: github.event_name == 'pull_request' && secrets.ANTHROPIC_API_KEY != ''
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
try {
const report = fs.readFileSync('reports/repair_suggestions.yaml', 'utf8');
const yaml = require('js-yaml');
const data = yaml.load(report);

const summary = `## 🤖 LLM Repair Suggestions Available

**Communities with Issues**: ${data.communities_with_issues}
**Total Suggestions**: ${data.total_suggestions}
**Estimated Cost**: $${data.cost_estimate.total_cost_usd.toFixed(2)}

📥 Download the full repair report from the workflow artifacts.

**Next Steps**:
1. Download \`network-repair-suggestions\` artifact
2. Review suggested repairs
3. Set \`approved: true\` for suggestions to apply
4. Run \`just apply-batch-repairs reports/repair_suggestions.yaml\`
`;

github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: summary
});
} catch (error) {
console.log('Could not post suggestions summary:', error);
}
Loading