Skip to content

chore(promote): develop → main — fr-gate promotion-PR transparency - #95

Merged
LukasWodka merged 2 commits into
mainfrom
develop
Jul 28, 2026
Merged

chore(promote): develop → main — fr-gate promotion-PR transparency#95
LukasWodka merged 2 commits into
mainfrom
develop

Conversation

@LukasWodka

@LukasWodka LukasWodka commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Promotes the fr-gate fix from #94 to main (callers reference fr-gate.yml@main, so the fix only takes effect here). Merge-commit per the promotion-hop rule.

🤖 Generated with Claude Code


Note

Medium Risk
Changes promotion gate attribution logic for main/staging merges; incorrect filtering could block valid promotions or miss unattributed commits.

Overview
FR gate commit→PR discovery now ignores merged PRs whose head branch is release-train/*. Those promotion PRs are documented as train plumbing: they are not gated items, do not vouch for their merge range in Pass 1, and are stripped from Pass 2 attribution so the gate evaluates the cargo feature PRs instead.

Pass 1 only counts a merge commit as vouching when the matched PR is not a release-train head. Pass 2 applies the same filter on commits/{sha}/pulls; commits attributed only to a promotion PR stay unattributed (direct push on the train).

Reviewed by Cursor Bugbot for commit 79f3293. Bugbot is set up for automated code reviews on this repo. Configure here.

LukasWodka and others added 2 commits July 28, 2026 10:41
Without this, the staging->prod hop gates the PREVIOUS promotion PRs
themselves: a release-train/to-staging merge is that PR's merge_commit_sha,
so Pass 1 pulls e.g. averaging-service#211 / frontend-app#709 into the
checked set, where they sit at 'FR on staging' forever (nobody FRs plumbing)
and block the prod promotion. Worse, commits/pulls lists the promotion PR
for every commit it carried, so Pass 2 could attribute a direct push to the
promotion PR and launder it into 'covered'.

Fix: filter head release-train/* out of attribution in both passes. The
promotion merge neither vouches for its range nor appears as a gated item;
its cargo attributes individually (feature merges in Pass 1, squash commits
in Pass 2). A commit whose only merged PR is a promotion PR is a direct
push that rode the train -- it stays unattributed and fails closed (D27-L1).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…arency

fix(fr-gate): release-train promotion PRs are transparent plumbing
@LukasWodka
LukasWodka merged commit 0d023b5 into main Jul 28, 2026
6 checks passed
LukasWodka added a commit that referenced this pull request Jul 28, 2026
A push routinely carries commits that already shipped further down the
pipeline: a staging->develop back-merge re-pushes Prod PRs to develop, and
a develop==main fast-forward does the same. advance-deploy-env blindly set
every PR in the push to the branch's column, un-shipping those cards (seen
live: .github #87/#88/#89/#92 stranded at On dev after yesterday's ff, #95
demoted from Prod today; engine#540's back-merge would demote its whole
staging history next). Now the per-PR query also reads the current Status
and the update is skipped unless the target rank is strictly higher.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant