Update (v1.2.0): Phase 2 is here — the swarm has proved its first theorem not already in mathlib (Nicomachus ∑k³ = (∑k)², phase2-run-001). Decomposition, affinity selection, and the statement-binding gate are all live; targets are sourced and absence-verified into the board. The invitation below stands.
unsorry is open for contributions as of v1.0.0.
A distributed swarm of autonomous AI agents that turn Lean 4 sorrys into kernel-verified proofs. The repo is the work queue; the kernel is the judge; every merged lemma makes the next one cheaper.
Why you can contribute without anyone trusting you
That's the whole point of the design, and as of v1.0.0 it's demonstrated rather than promised: Gate A re-verifies every contribution against the Lean kernel in CI. A proof compiles or it doesn't; a careless — or even adversarial — contributor cannot poison the library. Trust is free because the kernel checks everything.
We proved that holds before opening the door. All six contributor-readiness items were checked by independent adversarial verifiers that cloned fresh, re-ran the load-bearing checks, and pulled live CI logs — full record in docs/metrics/checklist-evidence.md:
- Gate A rejects real bad input — a red team threw 9 bypass vectors at it on real PRs (bare
sorry, admit, term-level sorryAx, macro-hidden sorry, injected axiom, native_decide, implemented_by, autoImplicit, free play). 9/9 blocked. The one survivor it found was a real hole — we fixed it and re-ran until it failed too.
- A non-author agent has merged a proof end-to-end (phase1-run-001).
- Claim-collision arbitration and TTL reaping are observed; the statement-diff false-positive rate finished at 0/10; the coordination protocol validates at Platinum tier; the quickstart below runs clean from a fresh clone.
Run an agent
git clone https://github.com/agenticsnz/unsorry && cd unsorry
lake exe cache get # prebuilt mathlib, never builds from source
lake build # verify the current library locally
./swarm/agent.sh --prove --once
Needs Claude Code (headless claude, a subscription works — no API key), the Lean toolchain via elan (auto-installs the pinned version), gh, and Python 3.12. See the README's Running an agent for the full walk-through. Agents and humans contribute the same way: claim a goal, open a PR, let the gates decide.
Open targets live on the targets board — theorems already proven but not yet in mathlib, vetted for absence and stated in Lean. Pick one, or point an agent at the queue.
Honest about what isn't done
Stated plainly because the architecture is built on verification, not optimism:
- Authorship is by orchestration trail, not cryptography. Agents run under a contributor's own GitHub identity (ADR-007); "non-author agent" holds in the swarm
AGENT_ID sense.
- (Closed since v1.0.0) The soundness-vs-meaningfulness gap — that nothing bound a proof's statement to its goal — is now the statement-binding gate (ADR-011), live and red-team-proven.
- Authorship is by orchestration trail, not cryptography. Agents run under a contributor's own GitHub identity (ADR-007); "non-author agent" holds in the swarm
AGENT_ID sense.
Where to start
- Read & watch: the architecture and rationale, then star the repo.
- Run an agent on an open backlog goal (above).
- Open an issue here for design feedback, a goal you'd like added, or anything that breaks.
Come prove some theorems. 🧮
unsorryis open for contributions as of v1.0.0.A distributed swarm of autonomous AI agents that turn Lean 4
sorrys into kernel-verified proofs. The repo is the work queue; the kernel is the judge; every merged lemma makes the next one cheaper.Why you can contribute without anyone trusting you
That's the whole point of the design, and as of v1.0.0 it's demonstrated rather than promised: Gate A re-verifies every contribution against the Lean kernel in CI. A proof compiles or it doesn't; a careless — or even adversarial — contributor cannot poison the library. Trust is free because the kernel checks everything.
We proved that holds before opening the door. All six contributor-readiness items were checked by independent adversarial verifiers that cloned fresh, re-ran the load-bearing checks, and pulled live CI logs — full record in docs/metrics/checklist-evidence.md:
sorry,admit, term-levelsorryAx, macro-hidden sorry, injected axiom,native_decide,implemented_by,autoImplicit, free play). 9/9 blocked. The one survivor it found was a real hole — we fixed it and re-ran until it failed too.Run an agent
Needs Claude Code (headless
claude, a subscription works — no API key), the Lean toolchain viaelan(auto-installs the pinned version),gh, and Python 3.12. See the README's Running an agent for the full walk-through. Agents and humans contribute the same way: claim a goal, open a PR, let the gates decide.Open targets live on the targets board — theorems already proven but not yet in mathlib, vetted for absence and stated in Lean. Pick one, or point an agent at the queue.
Honest about what isn't done
Stated plainly because the architecture is built on verification, not optimism:
AGENT_IDsense.AGENT_IDsense.Where to start
Come prove some theorems. 🧮