Examples · a real benchmark sync
Stayed: the agent asked where a change should go
inspectorG4dget/tqdm, a fork of tqdm/tqdm with 5 changes on commit ebda712, between releases, synced onto upstream's v4.70.1. Measured 2026-10-28.
Stayed on commit ebda712, between releases
1 change could not be carried. Three changes kept (they add a new file, tqdm/patch.py, correct); the fourth edits tqdm/_tqdm.py, which upstream moved to std.py, and the agent asked whether to port it.
What the person would do next. Three changes carried cleanly, but the fourth edits tqdm/_tqdm.py, which upstream has since moved into tqdm/std.py. The agent wasn't going to guess whether the change still matters, so it asked, and the copy stayed where it was. The person answers the question in the dashboard (drop it, or port it into std.py); Graft then runs the tests again and opens the pull request only if they pass.
Each change
| Change | Outcome | Why |
|---|---|---|
| Added Additional Base Functionality | kept | applies to the new release as is |
| Added current time | kept | applies to the new release as is |
| Printing also conforms to bar format | kept | applies to the new release as is |
| Hardening the last commit | stuck | agents could not settle it: tqdm/_tqdm.py: it needs your decision: Our right-aligned n_fmt change targets code that now lives in tqdm/std.py, which is not part of this change. Should it be dropped, or ported into std.py as a separate follow-up? |
| Fixes #1,2 | not tried | an earlier change is stuck |
Tests
The sync stopped before the tests ran: a change was stuck, so nothing could move whatever the tests said.
Agents
1 agent call (12 s): Claude Code (opus, high effort). On Graft, Premium does that work automatically, and your first conflict is free.
From data/bench/sync-real.json, run with scripts/bench-sync-real.ts on 2026-10-28. Every result on the results page, moved or stayed. Try your own fork.