Skip to content

Commit afb408b

Browse files
committed
run-sweep: add non-canary-full-sweep-enabled label (full sweep, no canary)
New label that triggers the full sweep without running the canary gate. Acts as an escape hatch when: - The canary is known to be flaky / unreliable for this config - The user wants the full sweep without the canary delay - The canary's chosen entry is not a representative smoke test Behavior matrix: sweep-enabled - trims to max(conc) per parallelism, with canary full-sweep-enabled - full intermediate conc sweep, with canary non-canary-full-sweep-enabled - full intermediate conc sweep, NO canary How it works (no changes to existing label semantics): - Setup gate triggers on any of the 3 labels (was: 2) - canary-select gate still requires `full-sweep-enabled` (exact array match, so `non-canary-full-sweep-enabled` does NOT match) → canary skips → all fan-out jobs run on full search space via the `== 'skipped'` allowlist - TRIM_CONC env is unchanged — only `sweep-enabled` enables trim, so the new label correctly behaves as "full sweep" - The reject-conflicting-labels step is now a 3-way exclusion: at most one of {sweep-enabled, full-sweep-enabled, non-canary-full-sweep-enabled} - The same gate updates apply to the comment-visualizer job - Concurrency-group filter excludes the new label too so toggling it uses the same `'active'` group key as the other sweep labels
1 parent 81bfc26 commit afb408b

1 file changed

Lines changed: 17 additions & 8 deletions

File tree

.github/workflows/run-sweep.yml

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ concurrency:
88
(github.event.action == 'labeled' || github.event.action == 'unlabeled') &&
99
github.event.label.name != 'sweep-enabled' &&
1010
github.event.label.name != 'full-sweep-enabled' &&
11+
github.event.label.name != 'non-canary-full-sweep-enabled' &&
1112
github.run_id ||
1213
'active'
1314
}}
@@ -39,7 +40,8 @@ jobs:
3940
(
4041
(github.event.action != 'labeled' && github.event.action != 'unlabeled') ||
4142
github.event.label.name == 'sweep-enabled' ||
42-
github.event.label.name == 'full-sweep-enabled'
43+
github.event.label.name == 'full-sweep-enabled' ||
44+
github.event.label.name == 'non-canary-full-sweep-enabled'
4345
)
4446
steps:
4547
- name: Checkout code
@@ -61,12 +63,14 @@ jobs:
6163
!github.event.pull_request.draft &&
6264
(
6365
contains(github.event.pull_request.labels.*.name, 'sweep-enabled') ||
64-
contains(github.event.pull_request.labels.*.name, 'full-sweep-enabled')
66+
contains(github.event.pull_request.labels.*.name, 'full-sweep-enabled') ||
67+
contains(github.event.pull_request.labels.*.name, 'non-canary-full-sweep-enabled')
6568
) &&
6669
(
6770
(github.event.action != 'labeled' && github.event.action != 'unlabeled') ||
6871
github.event.label.name == 'sweep-enabled' ||
69-
github.event.label.name == 'full-sweep-enabled'
72+
github.event.label.name == 'full-sweep-enabled' ||
73+
github.event.label.name == 'non-canary-full-sweep-enabled'
7074
)
7175
) ||
7276
(
@@ -85,10 +89,13 @@ jobs:
8589
- name: Reject conflicting sweep labels
8690
if: >-
8791
github.event_name == 'pull_request' &&
88-
contains(github.event.pull_request.labels.*.name, 'sweep-enabled') &&
89-
contains(github.event.pull_request.labels.*.name, 'full-sweep-enabled')
92+
(
93+
(contains(github.event.pull_request.labels.*.name, 'sweep-enabled') && contains(github.event.pull_request.labels.*.name, 'full-sweep-enabled')) ||
94+
(contains(github.event.pull_request.labels.*.name, 'sweep-enabled') && contains(github.event.pull_request.labels.*.name, 'non-canary-full-sweep-enabled')) ||
95+
(contains(github.event.pull_request.labels.*.name, 'full-sweep-enabled') && contains(github.event.pull_request.labels.*.name, 'non-canary-full-sweep-enabled'))
96+
)
9097
run: |
91-
echo "::error::PR has both 'sweep-enabled' and 'full-sweep-enabled' labels. Remove one — 'full-sweep-enabled' runs the full intermediate concurrency sweep; 'sweep-enabled' trims to max(conc) per parallelism config."
98+
echo "::error::PR has multiple conflicting sweep labels. Pick exactly one of: 'sweep-enabled' (trims to max(conc) per parallelism config), 'full-sweep-enabled' (full intermediate concurrency sweep, with canary gate), or 'non-canary-full-sweep-enabled' (full sweep, no canary gate)."
9299
exit 1
93100
94101
- name: Checkout code
@@ -726,12 +733,14 @@ jobs:
726733
!github.event.pull_request.draft &&
727734
(
728735
contains(github.event.pull_request.labels.*.name, 'sweep-enabled') ||
729-
contains(github.event.pull_request.labels.*.name, 'full-sweep-enabled')
736+
contains(github.event.pull_request.labels.*.name, 'full-sweep-enabled') ||
737+
contains(github.event.pull_request.labels.*.name, 'non-canary-full-sweep-enabled')
730738
) &&
731739
(
732740
(github.event.action != 'labeled' && github.event.action != 'unlabeled') ||
733741
github.event.label.name == 'sweep-enabled' ||
734-
github.event.label.name == 'full-sweep-enabled'
742+
github.event.label.name == 'full-sweep-enabled' ||
743+
github.event.label.name == 'non-canary-full-sweep-enabled'
735744
)
736745
runs-on: ubuntu-latest
737746
permissions:

0 commit comments

Comments
 (0)