95%
of vulnerable open-source components downloaded already had a fixed version available.
Sonatype, State of the Software Supply Chain 2024IBM Bob 2.0 Hackathon · Release & maintenance workflow
Uptake takes a vulnerable dependency's upgrade, reproduces what breaks, has IBM Bob rewrite your code to the new API with tests and build files locked read-only, and proves it green in the original container. When the fix needs a file Bob may not touch, you get a one-line patch that is already proven. Every run ends in a receipt anyone can re-verify.
95%
of vulnerable open-source components downloaded already had a fixed version available.
Sonatype, State of the Software Supply Chain 202413%
of Log4j downloads are still vulnerable versions, four years after Log4Shell. About 40 million downloads in 2025.
Sonatype via ITPro, 202527%
of breaking upgrades fully repaired by the best published AI system on the BUMP benchmark.
Reyes et al., Byam, Empirical Software Engineering 202676%
of the time, a frontier coding agent exploited the tests instead of solving the task, when the two conflicted. In an upgrade that means pinning the old version: CI goes green and the vulnerability stays.
Zhong et al., ImpossibleBench, ICLR 2026| Case | Real PR | Opened | What happened | Days | Bob with Uptake | Bob time |
|---|
| Project | Upgrade | Adv. | Break | Uptake | Tests | Rules only | + Notes | Byam | Cost |
|---|
Same IBM Bob, same cases, same offline build tool. Uptake: the locked mode, rules and evidence tools. Rules only: Bob's Agent mode with the same rules written down. No Uptake: Agent mode and a normal request, "get the build and all tests passing". The auditor that judges all three never reads what the agent says about itself.
| Case | Uptake mode | Rules only | No Uptake |
|---|
What this shows: Bob 2.0 does not game tests when it is told the rules, and the rules plus proven patches are what turn a stuck upgrade into one approval. Without them, Bob fixes the build however it can, including editing tests and poms nobody asked it to touch, once by downgrading a logging library to a 2008 release. On this sample, the mode lock changed nothing because the rules were already followed; it is there so that stays true when they are not.
Asking an agent not to cheat is a prompt. Making it unable to cheat is a permission. Uptake uses IBM Bob's own permission system as the guarantee, then checks the result independently anyway.
The upgrade is replayed in its original BUMP container, offline. The exact compile errors and failing tests become the work order.
An MCP server tells Bob where each missing symbol lived in the old version, what exists in the new one, and what is actually on the build classpath.
Bob works in the Uptake mode. It can edit only the project's production sources (read from its poms), has no shell, and may delegate call-site search only to read-only explore subagents. If the fix needs anything else, it proposes a patch and stops.
An auditor that does not trust the agent diffs everything, rebuilds, and writes UPGRADE_RECEIPT.md with a patch hash. uptake verify reruns it from scratch.
Bob refuses any edit whose path fails this pattern before the file is touched. Uptake computes it from each project's own poms, so src/java, ${project.basedir}/src and multi-module builds all get the right lock. Tests, pom.xml, .bob/ and ../ escapes are outside it, checked by the test suite in both Python and JavaScript, the engine Bob uses.
# .bob/custom_modes.yaml
- slug: uptake
groups:
- read
- - edit
- fileRegex: '<source roots from pom>/**.java | .uptake/proposed.patch'
- mcp # evidence + offline verifier
- subagent # explore only
# no "execute" group: no shell, no mvn -DskipTests
Pick a case to see exactly what Bob did: every tool call, the diff it produced, its rationale, and the receipt.
Loading…
Every case is a real Dependabot or Renovate pull request that broke a real open-source build, taken from BUMP (Reyes et al., SANER 2024, MIT). BUMP has 571 reproducible breaking updates. We queried OSV for each one: 146 of them remove at least one known advisory, 759 advisory IDs in total. Our cases are drawn from those 146, including two that are the Log4Shell patch itself. We did not write any of them.
.uptake/proposed.patch and stopped; Uptake applied it in a scratch copy and the build and all tests went green. One human approval unblocks the upgrade. If the patch needs a library version the original image never downloaded, that proof runs online and the receipt says so.Both arms are IBM Bob 2.0, the same prompt ("Repair this dependency upgrade."), the same MCP evidence tools and the same written rules. Plain Bob gets the rules as ordinary project rules in its built-in Agent mode. Uptake gets them enforced by the custom mode. The only difference is enforcement.
Byam (Reyes et al., EMSE 2026) is the strongest published system for repairing breaking dependency updates. It fully repaired 27% of 103 BUMP compilation failures with its best model. For each of our cases that Byam attempted, we report whether any of its 40 model and prompt configurations succeeded, from its public replication package. That is a generous baseline. Byam did not attempt test-failure cases, where the library's behaviour changed; nobody has published results on those.
src/main/java, before proposals were proven) are kept in bench/runs/dev. Two runs were re-audited after we fixed a Maven offline-cache bug in our harness; Bob's code was not re-run or changed.