Symptom: the develop→main release PR economy-explorer#9 got backlink comments + dev-links for every PAR- ref in its body, including PAR-46/85/100/106 which the changelog itself marks as "already staged on develop / 1.1.0" (already shipped, in main). Reported by the user.
Cause: GithubWebhookService.handlePullRequest always ran the generic path — IssueRefScanner.refs(title, body, headRef) → upsertDevLink + transitionTo(onPrOpen) + postIssueContext for each ref — even for release PRs, whose bodies are changelogs that reference historical issues. So it over-links and (if the repo has an on-PR-open status) could regress already-Done issues. (economy-explorer has no on-open mapping, so PAR-46/85/100/106 stayed Done — damage was limited to 4 stray dev-links + 4 backlink comments.)
Fix (tesks): a release PR (head develop → the repo's default branch, on a project-mapped repo) now skips the generic ref scan entirely — the release snapshot (createFromPending on open, freezeByPr→Done on merge) is the single source of truth. Generalised the release detection from hardcoded main to the repo's default_branch, so the ChestShop fork's develop→master release PRs are recognised too. Regression test added (releasePrBodyRefsAreNotLinkedOrTransitioned). Full backend suite green.
Cleanup: removed the 4 stray backlink comments on economy-explorer#9; residual issue_dev_link rows for that PR are harmless (drop on next DB touch / can be cleaned manually).