fix(git): keep the bundle chain disjoint when pushing master
A push bundle's basis covered only the remote tips present locally. A tip absent from the pusher's clone was dropped, so pushing a new branch from a stale working copy re-bundled shared history; and history that only a superseded head reaches (a force push, a deleted branch) was never excluded at all. Either way the chain repeated objects, and the smart HTTP merge then served a pack a clone rejects: index-pack runs --check-self-contained-and-connected and dies on "the same object appears twice in the pack". A plain fetch tolerates the repeat, which is why only clones broke. The basis now covers the current tips plus every recorded bundle head, and the helper replays the chain to obtain any it lacks locally, so each new bundle is disjoint from the whole chain. A chain that already repeats an object still needs one repack to serve clones. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>