Skip to content

Commit 774bffa

Browse files
Merge pull request #203 from ChrisRackauckas-Claude/blog-sciml-health-bots
Blog post: Introducing SciML Health Bots
2 parents d84445d + bfe02aa commit 774bffa

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

news/2026/01/04/SciMLHealthBots.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
@def rss_pubdate = Date(2026,1,4)
2+
@def rss = """Introducing SciML Health Bots: Lowering Barriers While Raising Standards"""
3+
@def published = " 4 January 2026 "
4+
@def title = "Introducing SciML Health Bots: Lowering Barriers While Raising Standards"
5+
@def authors = """<a href="https://github.com/ChrisRackauckas">Chris Rackauckas</a>"""
6+
7+
# Introducing SciML Health Bots: Lowering Barriers While Raising Standards
8+
9+
**How do you make contributing easier while demanding more from the code?**
10+
11+
SciML has 200+ packages with stricter standards than most of the Julia ecosystem. We test for static compilability, type stability, and interface consistency. Many upstream packages don't—AD packages like Zygote and Enzyme frequently introduce regressions, and foundational packages like Distributions.jl don't test for `juliac --trim` compatibility or static interfaces.
12+
13+
This means SciML is often the first to discover upstream bugs. We file issues, contribute fixes, and wait. But in the meantime, CI stays red. Maintainers have to remember "oh yeah, that's the Zygote issue." Contributors unfamiliar with the repo see red badges and don't know if their PR broke something or if it's a known issue. Merging requires manually checking logs to verify "the right test" is failing. This process is time-consuming and error-prone.
14+
15+
We want to raise standards even higher:
16+
17+
- Every SciML package compatible with `juliac --trim`
18+
- Well-defined interfaces with tested assumptions (no relying on 1-based indexing, proper number type compatibility, GPU support)
19+
- Explicit imports only—no `using` in package code
20+
- Pull the rest of the Julia ecosystem toward these stricter coding practices
21+
22+
The question is: **how do we do this without sacrificing the ease of contributions SciML has always had for mathematicians and scientists?** How do we make contributing *even easier* while making code requirements *stricter*?
23+
24+
Our answer: **AI agents that enforce the hard stuff, track upstream issues, keep CI green, and let humans focus on the science.**
25+
26+
## The Key Insight
27+
28+
Strictness and accessibility only conflict when *humans* enforce the rules. With bots:
29+
30+
- Contributors don't memorize rules—bots explain violations
31+
- No tribal knowledge about "known failures"—red means your code, green means merge
32+
- Maintainers review architecture, not compliance
33+
34+
## New Standards
35+
36+
- **Always-green CI.** Green means merge. Red means your PR. No ambiguity.
37+
- **Trim compatibility.** Explicit imports, static dispatch, no runtime codegen.
38+
- **Static interfaces.** Type-stable APIs, consistent patterns.
39+
- **Performance is a bug.** Regressions tracked and fixed automatically.
40+
41+
## Bot Types
42+
43+
13 specialized agents run continuously across all SciML repositories:
44+
45+
| Bot | Purpose |
46+
|-----|---------|
47+
| **CI Health Check** | Diagnose and fix CI failures, keep all repos green |
48+
| **Issue Solver** | Investigate bugs, prioritize `bug`-labeled issues |
49+
| **Dependency Update** | Handle upstream version bumps and breaking changes |
50+
| **Explicit Imports** | Add explicit imports for trim compatibility |
51+
| **Static Improvement** | Fix type instabilities and interface inconsistencies |
52+
| **Performance Check** | Detect regressions, track benchmarks |
53+
| **Deprecation Fix** | Update deprecated API usage |
54+
| **Interface Check** | Verify consistent APIs across packages |
55+
| **Docs Improvement** | Fix documentation issues |
56+
| **Version Bump** | Check for needed releases |
57+
| **Min Version Bump** | Update compat bounds |
58+
| **Precompilation** | Improve load times |
59+
| **Benchmark Check** | Monitor SciMLBenchmarks.jl |
60+
61+
Up to 48 agents run concurrently. Control which types are active:
62+
63+
```bash
64+
sciml-ctl tasks show # See enabled bots
65+
sciml-ctl tasks only ci_health_check # Focus on CI health
66+
sciml-agents list # See running agents
67+
```
68+
69+
## The Bug Fix Flow
70+
71+
When CI Health Check detects a failure, it follows a resolution hierarchy:
72+
73+
**1. Try to fix it directly:**
74+
- Cap a dependency version in `[compat]`?
75+
- Fix the code?
76+
- Make behavior conditional on Julia version?
77+
- Add a missing explicit import?
78+
79+
**2. If it can't fix it, keep CI green anyway:**
80+
- Mark the failing test as `@test_broken` or skip conditionally
81+
- Open a `bug`-labeled issue with full diagnostics
82+
- PR merges, CI stays green
83+
84+
**3. Issue Solver picks it up:**
85+
- Issue Solver prioritizes `bug`-labeled issues
86+
- It attempts deeper fixes the CI Health Check couldn't do
87+
- If solved, removes the `@test_broken` marker and closes the issue
88+
89+
This creates a cycle: **CI stays green, but regressions are tracked as issues and continuously worked on.** Contributors never see mysterious red badges from problems that predate their PR. Maintainers see a clear issue queue of known problems being actively resolved.
90+
91+
## For Contributors
92+
93+
Submit your PR. If something's wrong, a bot explains what and suggests a fix. Green CI? Merge. You never see failures that aren't yours.
94+
95+
## The Result
96+
97+
Standards rise. Barriers fall. Contributors ship with confidence. Maintainers focus on code quality, not rule enforcement.
98+
99+
---
100+
101+
*The bots are running now across SciML repositories. Questions? [GitHub Discussions](https://github.com/orgs/SciML/discussions) or [Julia Discourse](https://discourse.julialang.org/).*

0 commit comments

Comments
 (0)