PR creation currently uses the base argument for both choosing the Git revision to diff against and naming the target branch in the pull record. That works for a local main branch, but not for a remote-tracking branch like upstream/main. Git needs the full ref to generate the patch, while the pull record should still say main.
This splits those values. The base is resolved to an exact commit for patch generation and a branch name for the record. Only local branches and configured remote-tracking branches are accepted, so tags, commit IDs, revision expressions, and ambiguous names fail early.
Fork PRs now require an explicit --base, since origin/HEAD can often at the fork rather than the target repository. pr update accepts the same option and checks that it resolves to the branch already stored in the PR.