Problem
A PR-<n> branch identity (#950) names the branch and artifact directory, but the manifest's pr_url stays null, so the identity's PR number never becomes a usable URL. PR-consuming skills (review-pr, respond-to-review, merge-pr) can't resolve the PR from the identity that names it — the caller must supply it explicitly each session.
Context
#950 established PR-<n> as a recognized branch identity. The manifest already carries a pr_url field with --set-pr-url / --clear-pr-url mutation flags; pr-source-resolution.md governs how PR-consuming skills resolve and persist a PR URL, and pr-resolution.md documents the per-platform URL shapes. Those shapes take host and path from the platform (github.com/{owner}/{repo}/pull/{n}, bitbucket.org/{workspace}/{repo}/pull-requests/{n}, Cloud only), so only owner/repo comes from the git remote; the manifest's scm field selects the shape.
Proposed solution
When the branch-derived identifier is a PR-<n> sentinel, seed pr_url in the manifest by building the scm-selected URL shape from the remote's owner/repo and the PR number — mirroring how ticket_url is seeded from a base URL and a ticket id. An explicitly stored pr_url still overrides the seeded default. Builds on #950.
Acceptance criteria
Must have
Should have
Problem
A
PR-<n>branch identity (#950) names the branch and artifact directory, but the manifest'spr_urlstays null, so the identity's PR number never becomes a usable URL. PR-consuming skills (review-pr,respond-to-review,merge-pr) can't resolve the PR from the identity that names it — the caller must supply it explicitly each session.Context
#950 established
PR-<n>as a recognized branch identity. The manifest already carries apr_urlfield with--set-pr-url/--clear-pr-urlmutation flags;pr-source-resolution.mdgoverns how PR-consuming skills resolve and persist a PR URL, andpr-resolution.mddocuments the per-platform URL shapes. Those shapes take host and path from the platform (github.com/{owner}/{repo}/pull/{n},bitbucket.org/{workspace}/{repo}/pull-requests/{n}, Cloud only), so onlyowner/repocomes from the git remote; the manifest'sscmfield selects the shape.Proposed solution
When the branch-derived identifier is a
PR-<n>sentinel, seedpr_urlin the manifest by building thescm-selected URL shape from the remote'sowner/repoand the PR number — mirroring howticket_urlis seeded from a base URL and a ticket id. An explicitly storedpr_urlstill overrides the seeded default. Builds on #950.Acceptance criteria
Must have
PR-<n>identity, the manifest'spr_urlis populated with thescm-selected URL built from the remote'sowner/repoand the PR number (null when the remote cannot be resolved).scm(GitHub…/pull/{n}vs Bitbucket…/pull-requests/{n}).pr_urlseeding unchanged (stays null).pr_urloverrides the seeded value.Should have
pr-source-resolution.mddocuments thatpr_urlis seeded from aPR-<n>identity, mirroring theticket_urlseeding note inticket-source-resolution.md.