fix(release): suppress overridden release PR subjects

This commit is contained in:
Vincent Koc
2026-07-12 01:31:01 -07:00
parent 05bf1709cb
commit 2ff289866d
2 changed files with 32 additions and 2 deletions
@@ -810,6 +810,21 @@ export function resolvedReleasePullRequests(
);
}
export function releasePullRequestReferencesToSuppress(
currentPullRequests,
subject,
associatedPullRequests,
hasProvenanceOverride,
) {
const candidates = new Set(currentPullRequests);
if (hasProvenanceOverride) {
for (const match of subject.matchAll(/\(#(\d+)\)\s*$/g)) {
candidates.add(Number(match[1]));
}
}
return [...candidates].filter((number) => !associatedPullRequests.includes(number));
}
function changedPathsForCommit(hash) {
return new Set(
git(["diff-tree", "--root", "--no-commit-id", "--name-only", "-r", hash, "--"])
@@ -1187,15 +1202,21 @@ function sourceCommits(base, target, mainRef) {
(hash) => canonicalMainPullRequests.get(hash) ?? [],
);
const matchedMainCommits = canonicalMainCommitsByReleaseCommit.get(commit.hash) ?? [];
const provenanceOverride = provenanceOverrides.get(commit.hash);
const associatedPullRequests = resolvedReleasePullRequests(
currentPullRequests,
mainPullRequests,
matchedMainCommits.length > 0,
provenanceOverrides.get(commit.hash),
provenanceOverride,
);
commit.pullRequests = associatedPullRequests;
const suppressedBackportPullRequests = new Set(
currentPullRequests.filter((number) => !associatedPullRequests.includes(number)),
releasePullRequestReferencesToSuppress(
currentPullRequests,
commit.subject,
associatedPullRequests,
provenanceOverride !== undefined,
),
);
commit.references = commit.references.filter(
(number) => !suppressedBackportPullRequests.has(number),
@@ -16,6 +16,7 @@ import {
highlightCountError,
persistGithubSnapshot,
releaseNoteReferences,
releasePullRequestReferencesToSuppress,
releaseProvenanceMarkers,
renderedContributionRecordReferences,
resolvedReleasePullRequests,
@@ -67,6 +68,14 @@ describe("release-note verification", () => {
expect(resolvedReleasePullRequests([104939], [], false, [104905, 102980, 104956])).toEqual([
104905, 102980, 104956,
]);
expect(
releasePullRequestReferencesToSuppress(
[],
"test(live): harden GPT-5.6 nonce retries for July (#104939)",
[104905, 102980, 104956],
true,
),
).toEqual([104939]);
});
it("rejects malformed, out-of-range, or conflicting release provenance markers", () => {