fix(recipe-upgrade): stop auto-closing superseded/unrelated open PRs
Per operator: opening a new upgrade PR should stack ON TOP of any other still-open PRs, not close them. Only PRs already merged into upstream main are closed (merging them is a no-op). This prevents the phase-7 incident where an unrelated open ghost PR was auto-closed as 'superseded'. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2304628375
commit
19fda8d2b8
@@ -76,9 +76,10 @@ ssh cc-ci "GITEA_USERNAME='$GITEA_USERNAME' GITEA_PASSWORD='$GITEA_PASSWORD' GIT
|
||||
< /srv/cc-ci/.claude/skills/recipe-upgrade/open-recipe-pr.sh
|
||||
```
|
||||
This (a) re-syncs mirror `main` to true upstream main, (b) **closes any open PR already merged
|
||||
upstream**, (c) **closes any other still-open PR for this recipe as superseded**, then pushes the
|
||||
upgrade branch and opens the new PR **in its place** (so the diff is exactly this upgrade, against the
|
||||
real current upstream main). Capture the `PR_URL`. Optionally export `RECIPE_PR_BODY` first (image-tag
|
||||
upstream** (merging it would be a no-op), then pushes the upgrade branch and opens the new PR
|
||||
**alongside** any other still-open PRs — it does **NOT** close superseded/unrelated open PRs; the
|
||||
operator decides which to merge/close. The new PR's diff is still exactly this upgrade against the
|
||||
real current upstream main. Capture the `PR_URL`. Optionally export `RECIPE_PR_BODY` first (image-tag
|
||||
table + the planned operator-action notes). Re-running with the same target version updates the
|
||||
existing same-branch PR rather than duplicating it.
|
||||
|
||||
@@ -150,8 +151,8 @@ Always state explicitly that **nothing was merged** — the PR(s) await operator
|
||||
explanatory PR **comment**, never a test edit. Only `--with-tests` opens a cc-ci test PR. The weekly
|
||||
`/upgrade-all` cron always runs the **default** — it never auto-updates tests.
|
||||
- **Mirror reflects reality.** Each run force-syncs the `recipe-maintainers/<recipe>` mirror `main` to
|
||||
true upstream main, closes open PRs already merged upstream, and replaces any superseded open PR with
|
||||
the new one — so an open mirror PR always means "genuinely still open against current upstream main".
|
||||
true upstream main and closes open PRs already merged upstream. It does NOT close superseded/unrelated
|
||||
open PRs — a new upgrade PR is opened alongside them and the operator decides which to merge/close.
|
||||
- **Prefer a recipe-only PR.** Only open a cc-ci test PR (under `--with-tests`) when the upgrade is
|
||||
correct but a test is genuinely stale — never to paper over a real upgrade regression.
|
||||
- **Never weaken a test**; **bounded** changes (the upgrade + minimal test update, not rewrites).
|
||||
|
||||
Reference in New Issue
Block a user