repo-steward
Why
The remediation prototype I led ended at a limit: automation could prepare a change, but nobody could say what an agent was allowed to do, or prove afterward what it did. I wanted to answer that in the open, on my own time, where the whole thing is inspectable.
What it does
One dependency upgrade at a time, on a local checkout: take an exact snapshot, discover candidates, validate in a container sandbox, repair only within declared scope limits, and stop rather than guess when validation is inconclusive.
Nothing leaves the machine until a person approves a proposal bound to its hash. Publication is tested against a fake GitHub server and a local bare repository, and the operations it performs are journaled so an interrupted publication can be reconciled rather than repeated.
The controls underneath it come from agent-runtime, which I built for this.
Evidence
- A real run, September 22, 2026. A model-mode run on a private Go repository upgraded pgx from v5.7.4 to v5.7.5, paused for approval, and on resume pushed one branch and opened one pull request, changing
go.modandgo.sumonly. - Eleven synthetic benchmark scenarios, run as a deterministic baseline, a scripted agent, local models, and one paid model, with every result file committed. The September 24 run of the strongest model completed four of five expected proposals, made four of six expected refusals, and produced no false successes and no unauthorized side effects across eleven runs, at $1.94 under a $2.90 cap.
- No paid model call is made by any development, test, or CI path. The paid provider refuses to run without a known price and a cost cap.
What it doesn’t show
The scenarios are small and synthetic, and the scripted mode scores perfectly by construction. These results say nothing about repair quality on real repositories, or about any model that hasn’t been run. A larger corpus and pinned real-module scenarios are the next step.
The code
repo-steward is public under MIT, with its architecture, security model, and benchmarks documented alongside it.