graft

Examples · a real benchmark sync

Upstream merged the fix, so both changes were dropped

emmanuel-ferdman/marshmallow, a fork of marshmallow-code/marshmallow with 2 changes on commit ba8b512, between releases, synced onto upstream's 4.3.1. Measured 2026-10-28.

Moved onto 4.3.1, tests pass

2 dropped. Read by hand afterwards: correct. As for 4.2.2.

Each change

ChangeOutcomeWhy
Fix Constant field rejecting None values during loaddroppedagents judged the new release covers it: src/marshmallow/fields.py: The new release already fixes this: when the constant is None and allow_none was not set, Constant.__init__ now sets allow_none to True. It also overrides _validate_missing, so passing load_default through kwargs is redundant, and...
Update changelog and AUTHORSdroppedagents judged the new release covers it: AUTHORS.rst: The new release already lists the fork's author in AUTHORS.rst with the same line our change added, so there is nothing left to carry.; CHANGELOG.rst: The new release already has the same Constant(None) entry for issue 2868 under 4.2.2, so the...

Tests

pass The project's own tests ran on the carried copy (3.3 s) and on 4.3.1 as shipped (3.4 s), and the changes added no failure.

Agents

4 agent calls (23 s): Claude Code (opus, high effort). On Graft, Premium does that work automatically, and your first conflict is free.

The carried diff against 4.3.1

Empty: 4.3.1 already has everything this fork changed, so the moved copy is the release itself. The pull request would point the fork at upstream's release.

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.