From 7088fbc5c7916f6ac7918e36774cdeaad0014694 Mon Sep 17 00:00:00 2001 From: Aurelien Chartier <2567591+achartier@users.noreply.github.com> Date: Tue, 26 May 2026 10:49:01 -0700 Subject: [PATCH 1/2] [None][fix] Exclude post-merge stages from CBTS force-keep filters CBTS force-keep patterns (PerfSanity, PackageSanityCheck) matched post-merge stages by name, causing them to run in pre-merge CI pipelines. Add a top-level guard so Post-Merge stages are only included when explicitly listed in affected_stages. Signed-off-by: Aurelien Chartier <2567591+achartier@users.noreply.github.com> --- jenkins/L0_Test.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/jenkins/L0_Test.groovy b/jenkins/L0_Test.groovy index 69906657c1c2..24298a32c83f 100644 --- a/jenkins/L0_Test.groovy +++ b/jenkins/L0_Test.groovy @@ -4571,6 +4571,7 @@ def launchTestJobs(pipeline, testFilter) def needsPerfSanity = cbts.perfsanity_required parallelJobsFiltered = parallelJobs.findAll { key, _ -> if (key =~ /-Perf-/) return false + if (key =~ /Post-Merge/) return affectedSet.contains(key) return affectedSet.contains(key) || (needsSanity && key =~ /PackageSanityCheck/) || (needsPerfSanity && key =~ /PerfSanity/) From 60743290b3085f7c271cc675fef0773b93b21305 Mon Sep 17 00:00:00 2001 From: Aurelien Chartier <2567591+achartier@users.noreply.github.com> Date: Tue, 26 May 2026 11:00:55 -0700 Subject: [PATCH 2/2] [None][fix] Update CBTS comment to reflect Post-Merge exclusion Signed-off-by: Aurelien Chartier <2567591+achartier@users.noreply.github.com> --- jenkins/L0_Test.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jenkins/L0_Test.groovy b/jenkins/L0_Test.groovy index 24298a32c83f..b42e8b287447 100644 --- a/jenkins/L0_Test.groovy +++ b/jenkins/L0_Test.groovy @@ -4563,7 +4563,8 @@ def launchTestJobs(pipeline, testFilter) // CBTS Layer 2: replace `parallelJobsFiltered` with affected stages plus // PackageSanityCheck (kept iff sanity_required) and PerfSanity (kept iff // perfsanity_required). Pure -Perf- stages always excluded (own trigger - // model, full-list benchmarks). + // model, full-list benchmarks). Post-Merge stages are never force-kept; + // they only run when explicitly listed in affected_stages. def cbts = testFilter[(CBTS_RESULT)] if (cbts != null) { def affectedSet = (cbts.affected_stages ?: []) as Set