atproto git client atgc.codes

fix(git): exit 6 or 7 for unreachable and moved pushes, and refuse a resubmit from the wrong branch #1441

targeting main from claude/push-and-lease
Merged opened by and assigned to orbit-nodachi.test.pds.did.bot
targeting main from claude/push-and-lease

Push failures now carry the statuses docs/output.md already defines. A knot that never answered exits 6 with a retry hint and no fork advice, and a ref that moved exits 7 with git fetch and git log --oneline HEAD..<remote>/<branch> advice. A lost lease in check_lease also exits 7 instead of 1.

pr resubmit refuses with exit 2 when the newest version came from another branch or source repo, rather than silently re-sourcing the pull to the current checkout. pr merge and pr resubmit refuse with exit 6 when the knot's patch listing was cut short, since a prefix in CID order can name an older version as the newest.

before and after

🤖 Generated with Claude Code

Commits 3

fix(pr): refuse merge and resubmit on a cut-short patch listing
fix(pr): refuse to resubmit from a branch the pull did not come from
fix(git): classify unreachable and moved pushes, and a lost lease as 7