diff --git a/AGENTS.md b/AGENTS.md index 438c6bd076..627064d5b1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -594,6 +594,18 @@ inside your feature branch (a base-red fix is its own freeze-gated `fix/release- PR); and if you must open a PR anyway, add `⚠️ base-red inherited: #` to the PR body so reviewers and CI babysitters do not chase ghosts. +### Sync-back landings are fast-forward, never squash + +A `main → release/vX+1` sync-back (Phase 5 of `/generate-release`, or any later "bring main's +post-release commits over" PR) must reach the release branch as the merge commit it already is: +`git merge-base --is-ancestor origin/release/vX+1 ` then +`git push origin :refs/heads/release/vX+1` (GitHub marks the PR merged). Squash-merging it +drops `main` from the release branch's ancestry and the next sync-back re-conflicts on every file +main touched (551 conflicts on the v3.8.50 → v3.8.51 sync before the two-step merge). After +landing, `git merge-base --is-ancestor origin/main origin/release/vX+1` must be true — and check +that `config/quality/eslint-suppressions.json` / `quality-baseline.json` carried main's freezes +(they merge as "ours" silently). Details: `.agents/skills/generate-release/phases/phase-5-next-cycle.md`. + --- ## Upstream contributions