From 434f5a354e6ec7db602b3135b226f165151957a0 Mon Sep 17 00:00:00 2001 From: Nikolai Emil Damm Date: Wed, 11 Nov 2026 00:09:26 +0100 Subject: [PATCH] fix(rulesets): let the next platform merge group validate early Part of #892 --- .../require-merge-queue-on-platform.yaml | 8 ++++++-- tests/platform-merge-queue-ruleset.sh | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/deploy/repository-rulesets/require-merge-queue-on-platform.yaml b/deploy/repository-rulesets/require-merge-queue-on-platform.yaml index fa7a46d5..15d7f131 100644 --- a/deploy/repository-rulesets/require-merge-queue-on-platform.yaml +++ b/deploy/repository-rulesets/require-merge-queue-on-platform.yaml @@ -18,9 +18,13 @@ # # A hosted-runner queue delayed a successful required check to 111 minutes # (platform#3097). A bounded 120-minute response window absorbs that measured -# admission delay while preserving every required check and single-build queue. +# admission delay while preserving every required check. # Catalogue runner demand remains a separate root-cause repair in .github#475. # +# Build two candidates so validation can overlap. Platform's production +# preflight requires the first queue entry and an exact parent on main. Keep +# one PR per merge so the validated predecessor can become the next main tip. +# # No Create and no Delete: the ruleset already exists, and removing this file # must orphan it on GitHub rather than delete the production merge gate. apiVersion: repo.github.m.upbound.io/v1alpha1 @@ -56,7 +60,7 @@ spec: mergeQueue: - checkResponseTimeoutMinutes: 120 groupingStrategy: ALLGREEN - maxEntriesToBuild: 1 + maxEntriesToBuild: 2 maxEntriesToMerge: 1 mergeMethod: SQUASH minEntriesToMerge: 1 diff --git a/tests/platform-merge-queue-ruleset.sh b/tests/platform-merge-queue-ruleset.sh index cec33aec..7716c9a3 100755 --- a/tests/platform-merge-queue-ruleset.sh +++ b/tests/platform-merge-queue-ruleset.sh @@ -58,7 +58,7 @@ assert_json "bypass actors" '[{"actorType":"OrganizationAdmin","bypassMode":"alw assert_json "target branch" '["~DEFAULT_BRANCH"]' '.spec.forProvider.conditions[0].refName[0].include' assert_json "excluded branches" '[]' '.spec.forProvider.conditions[0].refName[0].exclude' assert_value "rule count" "1" '.spec.forProvider.rules | length' -assert_json "merge queue" '[{"checkResponseTimeoutMinutes":120,"groupingStrategy":"ALLGREEN","maxEntriesToBuild":1,"maxEntriesToMerge":1,"mergeMethod":"SQUASH","minEntriesToMerge":1,"minEntriesToMergeWaitMinutes":5}]' '.spec.forProvider.rules[0].mergeQueue' +assert_json "merge queue" '[{"checkResponseTimeoutMinutes":120,"groupingStrategy":"ALLGREEN","maxEntriesToBuild":2,"maxEntriesToMerge":1,"mergeMethod":"SQUASH","minEntriesToMerge":1,"minEntriesToMergeWaitMinutes":5}]' '.spec.forProvider.rules[0].mergeQueue' # The platform#3097 probe has served its purpose and must not come back. probe="$(yq -N 'select(.kind == "RepositoryRuleset" and .metadata.name == "platform-template-probe-bypass-roundtrip") | .metadata.name' "${render}" | grep -c . || true)"