Upkeep points Bob 2.0 at a live repository, has it triage every piece of accumulated debt, and dispatches parallel subagents to fix what's safe — leaving a clear, reviewable trail for the rest.
A repository never stays clean on its own. Upkeep runs Bob 2.0 on a fixed cadence, turns whatever it finds into a scored, auditable backlog, and only auto-ships the fixes a developer would have approved anyway.
Bob reads the whole repository, not just the latest diff, so debt from six months ago surfaces too.
Every item gets a risk and effort score. Nothing is fixed until it's been classified.
Safe items go to subagents at once; each fix is re-tested before it's marked done.
Debt gets found by accident — during an outage, a slow PR review, or a new hire asking why a function still exists. By then it's expensive to fix.
Bob scans on schedule, classifies each item by risk and effort, fixes the safe ones in parallel, and hands the rest to a developer with full context attached.
Drop in a real function or file. Upkeep runs the same kind of quick check Bob does during a scan: what it does, what looks risky, and a plain-language read for anyone newer to the codebase.
Every item moves through the same five gates. Press "Run maintenance scan" above to watch Bob move items through live.
Bob's scan surfaces every stale dependency, dead branch, and untested path across the repository.
Each item is scored for risk and effort before anything is touched.
Subagents work the safe items in parallel, each on its own branch.
Every fix is re-run against the existing suite before it counts as done.
Fixes ship with a changelog; anything out of scope stays visible, not hidden.
Nine items from checkout-service, each classified by risk and effort before any fix was attempted.
lodash 4.17.11 sat three majors behind, flagged in the audit log for months.
Fixed · call sites patchedlegacyDiscount() had no callers left after last quarter's pricing rewrite.
Fixed · removed, tests passThe retry handler shipped without coverage for its timeout branch.
Fixed · 6 new tests addedTwo modules validated postal codes with slightly different rules.
Fixed · consolidated to oneA webhook handler could fail silently under load.
Fixed · error path addedA launch flag from an old rollout was still being checked on every request.
Fixed · flag and branch removedThree different log shapes made the error dashboard hard to query.
Fixed · unified to one schemaUpgrading touches routing conventions across 40+ files.
Held for maintainer reviewSame repository, one scan apart. The log on the right is what Bob reported during the run.
Estimated against a manual review of the same repository by one developer.