Inspiration

A tiny code change can break behavior several calls away. AI can suggest where the problem is, but reviewers still need proof they can trust.

What it does

ChangeProof turns a GitLab merge request into an interactive blast-radius graph. GitLab Duo investigates the change, writes a new regression test, and proposes a repair. Independent CI runs the exact same test before and after the change and records whether the regression and repair were actually proven.

How we built it

We combined GitLab Duo custom flows, GitLab CI/CD, SAST, dependency scanning, container packaging, Python, FastAPI, tree-sitter, JavaScript, and Docker. Every result is tied to exact commit SHAs, test hashes, contracts, and CI artifacts.

Challenges we ran into

The hardest part was separating an AI claim from trustworthy evidence. We also had to safely execute generated tests, prevent stale results from applying to new commits, support different repository structures, and avoid calling an unproven behavior change a bug.

Accomplishments that we're proud of

ChangeProof completed a real Duo investigation, generated a previously nonexistent test, independently proved a regression, and verified a separate repair. We also tested the proof engine on 22 real regressions from 10 open-source projects. Five GitLab lifecycle stages currently have executed evidence: Plan, Create, Verify, Package, and Secure.

What we learned

A dependency graph can show where to investigate, but only execution can prove what broke. We also learned that a green test does not prove an entire merge request is safe—it only provides evidence within that test’s scope.

What's next for ChangeProof

We want to support more languages and repository structures, post verified results directly back to the original merge request, and complete CI-backed Configure, Release, Monitor, and Govern evidence.

Built With

Share this project:

Updates

Submission history