From 7493ee603b5ccc5a51b40bbb0d6ecc9cd6748df2 Mon Sep 17 00:00:00 2001 From: Chip Wolf Date: Mon, 15 Jun 2026 21:10:38 +0100 Subject: [PATCH 1/2] chore(renovate): enable platform auto-merge for green PRs The Friday-only `schedule` gates Renovate's own merge step, so green PRs sat unmerged for up to a week. Hand merging to GitHub's native auto-merge instead: Renovate flags each PR during the Friday window and GitHub merges it the moment required checks pass, on any day, decoupled from `schedule`. `platformAutomerge` defaults to true; making it explicit documents the dependency on the repo-level prerequisites configured alongside this: - repo setting "Allow auto-merge" enabled - branch protection on `main` requiring the CI checks (MegaLinter, source-tests ubuntu+windows), non-strict, admins exempt Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/renovate.json5 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index d971cd33..4d2a6705 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -8,6 +8,12 @@ ], schedule: ["after 11am and before 1pm on Friday"], prHourlyLimit: 0, + // Hand merging to GitHub's native auto-merge so green PRs merge the moment + // checks pass, on any day, rather than being gated by the Friday `schedule` + // window above (Renovate's own merge only runs during scheduled processing). + // Requires the repo's "Allow auto-merge" setting plus branch protection on + // `main` with the CI checks marked required (MegaLinter, source-tests). + platformAutomerge: true, customManagers: [ { customType: "regex", From 910c32e066ff626c9347b151af34c77b7d8c3e2b Mon Sep 17 00:00:00 2001 From: Chip Wolf Date: Mon, 15 Jun 2026 21:15:57 +0100 Subject: [PATCH 2/2] chore(agents): document Renovate platform auto-merge prerequisites Captures the lesson from wiring up auto-merge: a restrictive Renovate `schedule` gates Renovate's own merge step, so platform (GitHub-native) auto-merge is needed to merge green PRs outside the window, which in turn needs the repo "Allow auto-merge" setting plus branch protection with the CI checks required (non-strict, admins exempt). Co-Authored-By: Claude Opus 4.8 (1M context) --- home/dot_agents/AGENTS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/home/dot_agents/AGENTS.md b/home/dot_agents/AGENTS.md index 3ccabeac..bcbf6bdf 100644 --- a/home/dot_agents/AGENTS.md +++ b/home/dot_agents/AGENTS.md @@ -62,6 +62,7 @@ Always edit the source, not the deployed file. When updating any memory file: re - **Inspecting a PR's diff.** Always diff the remote PR branch against `origin/main` (e.g. `git diff origin/main...origin/`), not local HEAD. Local HEAD may be on an unrelated branch, so a diff against it is meaningless and returns empty output without any error. - **Before opening a PR: clean up history.** Squash messy work-in-progress or AI-attributed commits into a clean, atomic commit sequence on the branch. The branch is yours until `gh pr create` succeeds. - **Once a PR is open: never amend or force-push.** Use follow-up commits so reviewers see exactly what changed between their review and your response. The branch now belongs to the reviewer; rewriting it erases the diff they expect to see. Preserve every change as a separate commit. +- **Renovate auto-merge needs platform prerequisites, not just `automerge: true`.** With a restrictive top-level `schedule`, Renovate's own merge step only runs inside that window, so green PRs can sit unmerged for days. To merge whenever checks pass, rely on GitHub-native auto-merge (`platformAutomerge`, default true): it requires the repo's "Allow auto-merge" setting enabled AND branch protection on the target branch with the CI checks marked required. Set those required checks non-strict (do not require the branch be up to date) so a rebase schedule cannot deadlock merges, and leave admins exempt so the owner's direct pushes still work. Diagnose "automerge configured but PRs piling up" by correlating the last successful auto-merge against recent `schedule`/config commits, then verify the fix non-destructively by enabling auto-merge on a failing PR: GitHub should accept it but hold it (BLOCKED), not merge. ---