An AT Protocol Personal Data Server written in JavaScript pdsjs.dev
pds atproto

feat(git): a pull request is a branch, named by who pushed it master

The identity of a proposal moves off the Change-Id trailer and onto the account whose copy holds the work and the ref that holds it. The pair survives amend, rebase, force-push and a commit added on top, which is every case the trailer was bought for and one it failed: the trailer sat on the tip commit, so appending gave the tip a new id and detached every review and check keyed to the old one. The commit-msg hook and `install-hook` go with it. Contributor-side discipline was the weak part of the design, and the hook wrote one id per commit while the reader wanted one per branch, so a merged branch of eleven commits opened as its tip alone against any real history. The runner logs every ref that moves to a copy it watches, as a dev.pdsjs.git.versions record. A rebase throws the previous tip away and the graph keeps no record of it, so without the log a version nobody reviewed and no runner checked never existed. A deleted ref ends its entry and a push under the name again starts a fresh list: ancestry cannot tell a rebase from a name reused for other work, and the deletion is the event that separates them. The page reads the versions three ways. A bar over the diffs opens the changes since any earlier version, saying plainly that two trees are compared. The timeline gains a push event, which is the one thing about a pull request the graph cannot date. The card counts versions. An author writes their own title, note and draft or withdrawn word from the page, as a record in their own repo. The vocabulary follows the concept where the concept matches: change becomes pull request, landed becomes merged, contributors become collaborators, /work becomes /pulls, and the offered tier folds into one list with a fork badge. version and withdrawn stay, because a forge's "patch set" needs a glossary and its "closed" promises a button no account here can press. docs/plans/2026-08-24-pull-requests.md is the record. None of these lexicons is published, so there is nothing to migrate. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RomHvaB4nyAckbRD7W36Ue